几年前,我为一个朋友定制的基于堆栈的 16 位 CPU 编写了一个 Ansi C 编译器,但我一直没有时间实现所有数据类型。现在我想完成这项工作,所以我想知道是否有任何数学库可以用来填补空白。我可以处理 16 位整数数据类型,因为它们是 CPU 原生的,因此我为它们完成了所有的数学例程(即 +、-、*、/、%)。但是,由于他的 CPU 不处理浮点数,所以我必须自己实现浮点数/双精度数。我还必须实现 8 位和 32 位数据类型(整数和浮点数/双精度数)。我很确定这已经完成并重做了很多次,因为我并不特别期待重新创建轮子,如果有人能指点我一个可以帮助我的图书馆,我将不胜感激。
现在我在看 GMP,但它似乎有点矫枉过正(库必须绝对巨大,不确定我的自定义编译器是否能够处理它)并且它需要字符串形式的数字,由于显而易见的原因,这将是浪费的。例如 :
mpz_set_str(x, "7612058254738945", 10);
mpz_set_str(y, "9263591128439081", 10);
mpz_mul(result, x, y);
这看起来很简单,我喜欢 api……但我宁愿传入一个数组而不是一个字符串。例如,如果我想将两个 32 位 long 相乘,我希望能够将两个大小为 2 的数组传递给它,其中每个数组包含两个 16 位值,它们实际上代表一个 32 位 long 并具有库位置输出到输出数组。如果我需要浮点,那么我也应该能够指定精度。
这似乎要求太多,但我希望有人看到这样的东西。
提前谢谢了!