C++ 如何查找<;的C numerics库的exp()内置函数的内容;cmath>;

C++ 如何查找<;的C numerics库的exp()内置函数的内容;cmath>;,c++,function,cmath,C++,Function,Cmath,我最近决定建立一个简单的计算器程序,但当涉及到指数时,我不知所措。好的,你可以使用,但我更想知道他们是如何解决这个函数的问题的,而不是不可能的if语句。 如果(y==2){ x=xx; } 如果(y==3),则为else{ x=xx*x; } 等等那么,的exp()是如何做到的,我如何才能知道呢?来自: 计算exp(x)或e^x的算法 该算法使得计算exp(x)或e^x成为可能 仅使用加法、减法、乘法和 分部。其基本思想是使用多项式近似 第3步计算e^x。但是因为这个近似只是 对于小参数x,我

我最近决定建立一个简单的计算器程序,但当涉及到指数时,我不知所措。好的,你可以使用,但我更想知道他们是如何解决这个函数的问题的,而不是不可能的if语句。 如果(y==2){ x=xx; } 如果(y==3),则为else{ x=xx*x; } 等等那么,的exp()是如何做到的,我如何才能知道呢?

来自:

计算exp(x)或e^x的算法

该算法使得计算exp(x)或e^x成为可能 仅使用加法、减法、乘法和 分部。其基本思想是使用多项式近似 第3步计算e^x。但是因为这个近似只是 对于小参数x,我们必须采取步骤1和2来减少x 到较小的值

  • 拆分x:写入x=n+r,其中n是 距离x和r最近的整数是介于−½和+½。那么e^x=e^n·e^r

  • 计算e^n:将数字e自身乘以n次。至14位,e = 2.7182818284590. 乘法运算可以非常有效地进行。例如,E8可以用3次乘法计算,如果它是 写为(((e)2)2)2。为了进一步提高效率 e的整数幂可以计算一次并存储在查找中 桌子

  • 使用多项式计算e^r:EXP(r)=e^r=1+r+(r^2)/2+(r^3)/6+(r^4)/24+(r^5)/120

    对于r介于−½和+½此多项式的精度在 ±0.00003

  • 编辑


    如果您对GNU libc库中的原始实现感兴趣,那么您可以从下载源代码。

    @stark OK。如果我删除这篇文章,我的声誉会恢复到我问之前的状态吗?而且这不是一个问题,这是一个问题,试图弄清楚。我怎样才能在预处理目录中看到Exp()。@nightwawk,你应该小心删除太多的问题。无论如何,这些主要的C标准库实现大多是开源的。整数指数的情况可以简单地用一个循环而不是成吨的
    if
    语句来完成,但是
    exp
    处理分数指数。您可以查看开放源代码库的源代码,如或。你也可以在对@chris的回答中看到一些成功的例子,如果我删除了许多问题,为什么会发生什么,这要感谢你的真诚回应,而不是你的一些同行在youtube上的心态。@Nightwawk,我的想法是这样的,其中包括“大量被否决、零票或被删除的帖子”。不过,我不能说我对它的工作原理了解很多,包括删除你自己的许多帖子是否有帮助。我不可靠的记忆告诉我,网站上的其他用户已经表示可以。谢谢。但是有没有办法找到exp()的确切内容呢?我知道指数是如何工作的。@NightHawk我用GNU libc库资源的链接编辑了我的答案。你可以在那里找到数学图书馆。祝你好运