ieee-754

    8热度

    1回答

    我正在挖掘一些Java数学函数原生C源代码。特别是tanh(),因为我很好奇他们是如何实现这一点的。 然而,what I found出乎我的意料: double tanh(double x) { ... if (ix < 0x40360000) { /* |x|<22 */ if (ix<0x3c800000) /* |x|<2**-55 */

    0热度

    1回答

    我已经看过很多关于这个问题的问题,但是我还没有找到解决方案。希望这不是一个重复的问题。 问题 如果我做任何的: INSERT INTO `Numbers`(`Number`) VALUES ('NaN') INSERT INTO `Numbers`(`Number`) VALUES ('Inf') INSERT INTO `Numbers`(`Number`) VALUES ('+Inf')

    0热度

    1回答

    我想通过IEEE 754 32位将$ 14.83984375 $转换为二进制。 真正的解决方案是:$ 01000001011011010111000000000000 $。 但我不明白。 我的解决办法是: 1.符号为正:0 2.二进制14等于$ 1110 $ $ 0.83984375 $等于110101100 ... $ 0 $ 3.因此,指数是3,我们得到:$ 3 + 127 = 1000001

    0热度

    1回答

    math.ldexp(0.5, 1025)结果在OverflowError。 Numpy的等效函数返回inf。在另一端,但是,math.ldexp(0.5, -1074)没有引发异常,而是返回0.0,如下图所示: In [275]: math.ldexp(0.5, 1024) Out[275]: 8.98846567431158e+307 In [276]: math.ldexp(0.5,

    2热度

    2回答

    我在16位的二进制记数法两个浮点数,当我试图加入他们,我偶然发现一个问题: A = 0 11110 1111000000 B = 0 11010 1101110000 现在A + B就是我想要做的,但这是我的问题;我如何以16位格式表示总和? A = 63488 B = 3808 A + B = 67296 可装配到16位在IEEE 754符号是65504,所表示的最大十进制数: MAX

    1热度

    1回答

    我想编译一些老的源代码,它使用ieee754.h和ieee854.h在它的依赖关系中。 问题是,在任何新的官方存储库中找不到ieee854.h。从我的理解,ieee754.h代替854. 现在,我不确定是否从其他地方复制和粘贴ieee854.h并使用它,将其替换为754,或删除链接到854

    2热度

    1回答

    我在很多正弦/余弦实现中见过所谓的扩展模块化精度算法。但它是为了什么? 例如在cephes implemetation中,在缩小到[0,pi/4]范围后,他们正在进行模块化精度算法以提高精度。 下文的代码: z = ((x - y * DP1) - y * DP2) - y * DP3; 其中DP1,DP2和DP3有一些硬编码的系数。 如何从数学上找到这些系数?我已经理解了大数字的“模块化扩展

    0热度

    1回答

    给定两个浮点数(IEEE单精度或双精度),我想找到它们之间中间的数字,但不是在(x + y)/ 2的意义上,但是关于实际可表示的数字。 如果x和y是正的,下面的工作 float ieeeMidpoint(float x, float y) { assert(x >= 0 && y >= 0); int xi = *(int*)&x; int yi = *(int*)

    -1热度

    1回答

    这里是关于IEEE-754浮点数表示法中的圆和数字的问题。根据标准,另外两位数字被保留用于计算。假设点后两位数字是可用的并且 2.3400 + 0.0256 -------- 2.3656 现在,后卫是5和圆是6,并且自56> 50,则将其四舍五入为100,因此,结果是2.37 然而,如果你不假设守卫和圆形数字,只是假设附加数字在5到9之间,那么你将它再次舍入到10,结果

    1热度

    4回答

    在C++中,我有一些关于(隐式)类型转换的小问题。 1.浮子到int float f = 554344.76; int x1 = f; std::cout << x1 << std::endl; 打印554344(向下舍入或小数的切割),但具有float f = 5543444.76;更换它时,它打印5543445(四舍五入)。为什么在第一种情况下四舍五入,在第二种情况下四舍五入呢?除此之