我为Atmel的AVR架构编写了许多整数乘法例程。我发现跟随乘数的一个简单模式(以及对于被乘数的类似的模式)是有用的,如果不相信(从零开始,在每个字节中逐步加一(除了最终的进位))。
关于测试硬件乘法器实现似乎有很多,但是:
什么可以推荐用于测试整数乘法的软件实现?彻底的测试失控 - 如果不是,则超过16×16位。
答案 0 :(得分:0)
大多数方法都使用 Genere&测试强>
生成测试操作数
最安全的是使用操作数的所有组合。但是使用bignums或小型计算能力或内存是不可能或不实用的。在这种情况下,通常使用一些测试用例,这些测试用例(很可能)会对测试的算法施加压力(如传播进位...或接近安全限制)并仅使用它们。另一种选择是使用伪随机操作数并希望获得有效的测试样本。或以某种方式将所有这些结合在一起
计算乘法
只需将测试算法应用于生成的输入数据。
评估结果
所以你需要将算法(乘法)结果与某些东西进行比较。大多使用相同过程的不同算法进行比较。或者使用反函数(如c=a*b; if (a!=c/b) ...
)。这个问题是你无法区分比较中的错误或与算法比较......除非你使用100%工作或比较多于一个操作......还有可能有预先计算的结果表(在不同平台上计算100%无错误)并与之比较。
AVR Tag让这个问题变得棘手。所以有些提示: