- 主题:快速开平方算法
double x;//放一个正数
(* (long *)&x)>>=1;
然后进行牛顿迭代。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
只要把double右移一位就是根近似值,大家可以试试。
【 在 ylh1969 的大作中提到: 】
: double x;//放一个正数
: (* (long *)&x)>>=1;
: 然后进行牛顿迭代。
--
FROM 221.218.61.*
这种 C/C++ 的数值算法窍门在哪些地方能找到
【 在 ylh1969 的大作中提到: 】
: double x;//放一个正数
: (* (long *)&x)>>=1;
: 然后进行牛顿迭代。
: ...................
--
FROM 120.253.228.*
这是受了微信公众号一文的启发,想起40年前干的一件事。
当时是研究了浮点二进制格式。现在觉得有点不靠谱,请你们验证一下。
我手边没有合适的开发环境。
【 在 easior 的大作中提到: 】
: 这种 C/C++ 的数值算法窍门在哪些地方能找到
:
--
FROM 221.218.61.*
0.0好像不行,你们试试。单独处理。
如果指数部分的偏移码算不对,就把指数部分变换成补码,按补码全体右移一位,然后再把指数部分变回偏移码。
算法可以被证明。
参见ieee754格式。
【 在 easior 的大作中提到: 】
: 这种 C/C++ 的数值算法窍门在哪些地方能找到
:
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
hacker's delight
【 在 easior 的大作中提到: 】
: 这种 C/C++ 的数值算法窍门在哪些地方能找到
--
FROM 71.198.4.*
这书不错,可惜早几年无缘得见
【 在 BigCarrot 的大作中提到: 】
: hacker's delight
--
FROM 120.253.228.*
其实不值得花时间去读
无聊的时候消遣还行
【 在 easior 的大作中提到: 】
: 这书不错,可惜早几年无缘得见
--
FROM 71.198.4.*
看来不见也算幸运,省得花时间了
【 在 BigCarrot 的大作中提到: 】
: 其实不值得花时间去读
: 无聊的时候消遣还行
--
FROM 120.253.228.*
右移一位难道不是除以2?x/2本来也是一个不错的迭代初值
【 在 ylh1969 的大作中提到: 】
: 只要把double右移一位就是根近似值,大家可以试试。
--
FROM 202.120.11.*