首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Dev C++检查数学库函数sqrt()中的代码?

如何使用Dev C++检查数学库函数sqrt()中的代码?
EN

Stack Overflow用户
提问于 2012-03-05 19:34:23
回答 3查看 2.2K关注 0票数 1

我想检查数学库函数 sqrt()中的代码,怎么可能呢?

我使用的是DEV C++。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-05 19:42:05

这些内容被编译到工具链运行时中,但是由于GCC和它的Windows (这是您的Dev-C++ IDE调用的)是开源的,所以您可以看看源代码。

这是最新的MinGW GCC版;这两个版本似乎基本上都把所有的工作都推迟到了处理器上(这并不令人惊讶,就像x86一样--通过指令集的x87部分-- 支持平方根计算)。

代码语言:javascript
运行
复制
#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;
    }
}

代码语言:javascript
运行
复制
#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;
    }
}
票数 7
EN

Stack Overflow用户

发布于 2012-03-05 19:37:23

平方根是由处理器的浮点单元计算的,因此没有多少C++需要学习。

编辑:

x86指令

列单

http://en.wikipedia.org/wiki/X87

FSQRT平方根

甚至回到过去:en.wikipara.org/wiki/8087

票数 1
EN

Stack Overflow用户

发布于 2012-03-05 19:51:59

如果您的sqrt()没有源代码,则始终可以对其进行反汇编。检查代码将是一种检查。

您还可以为sqrt()编写测试。那将是另一种检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9572748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档