我想检查数学库函数 sqrt()
中的代码,怎么可能呢?
我使用的是DEV C++。
发布于 2012-03-05 19:42:05
这些内容被编译到工具链运行时中,但是由于GCC和它的Windows (这是您的Dev-C++ IDE调用的)是开源的,所以您可以看看源代码。
这是最新的MinGW GCC版;这两个版本似乎基本上都把所有的工作都推迟到了处理器上(这并不令人惊讶,就像x86一样--通过指令集的x87部分-- 支持平方根计算)。
值
#include <math.h>
#include <errno.h>
extern long double __QNANL;
long double
sqrtl (long double x)
{
if (x < 0.0L )
{
errno = EDOM;
return __QNANL;
}
else
{
long double res;
asm ("fsqrt" : "=t" (res) : "0" (x));
return res;
}
}
值
#include <math.h>
#include <errno.h>
extern float __QNANF;
float
sqrtf (float x)
{
if (x < 0.0F )
{
errno = EDOM;
return __QNANF;
}
else
{
float res;
asm ("fsqrt" : "=t" (res) : "0" (x));
return res;
}
}
发布于 2012-03-05 19:37:23
平方根是由处理器的浮点单元计算的,因此没有多少C++需要学习。
编辑:
x86指令
列单
http://en.wikipedia.org/wiki/X87
FSQRT平方根
甚至回到过去:en.wikipara.org/wiki/8087
发布于 2012-03-05 19:51:59
如果您的sqrt()
没有源代码,则始终可以对其进行反汇编。检查代码将是一种检查。
您还可以为sqrt()
编写测试。那将是另一种检查。
https://stackoverflow.com/questions/9572748
复制相似问题