问题标签 [elementary-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1220 浏览

python - 在 Python 中计算以 10 为底的对数的算法

我试图创建一个程序来根据“数学函数计算手册”中描述的基于泰勒级数的算法计算以 10 为底的对数(我通过我的大学图书馆找到了在线副本)。

StackOverflow 上的另一个问题给出了类似的算法,我现在找不到链接。

10.3.2 计算以十进制为底的对数

对于十进制基数,以 10 为底的对数是自然选择,将参数分解为指数和分数给我们一个十进制表示:x = (−1)^s × f × 10^n,或者 f = 0,或者 f 在 [1/10, 1) 中。

如果 f ≤√1/10,设 f = 10 × f 和 n = n - 1,使得 f 现在在区间 (√1/10,√10] 内。然后引入变量的变化,泰勒级数展开,以及该展开的多项式表示:

z = (f - 1)/( f + 1),

f = (1 + z)/(1 - z),

D = 2 log10(e)

= 2/ 对数 (10)

log10( f) = D × (z + z3/3 + z5/5 + z7/7 + z9/9 + z11/11 + · · · )

≈ D × z + z3Q(z2),多项式拟合将 D 包含在 Q(z2) 中。

对于 f in (√1/10,√10],我们的 z 大约在 [−0.5195,+0.5195] 范围内。与二进制情况相比,z 的范围更广需要更长的多项式,并且还使得校正项 z3Q(z2)相对较大。它的大小不超过 |0.35z|,因此它只提供一个额外的十进制数字,而不是两个。z 的准确计算比二进制情况更容易:只需设置 z = fl(fl(f− 12)-12)/fl(f+1)。

为此,我用 Python 编写了这个程序:

我将结果与math.log10函数进行了比较,结果并不像预期的那样。调试时我最大的问题是理解算法及其工作原理。

0 投票
1 回答
78 浏览

matlab - CORDIC算法中的初始点

我试图减少使用 CORDIC 算法计算乘法所需的迭代次数,因为我在连续函数中使用该算法来计算平方函数。这是假设的算法-1<x<1'

我已经知道乘法结果的接近值(来自上一个结果(调用它pr))和值x(x 的值是连续的)。无论如何它有助于减少迭代次数吗?

0 投票
1 回答
31 浏览

c - 是否有任何运算符可用于附加 2 个计算?

我正在做一些作业,我只使用基本操作。我需要编写一个给定正数的函数,计算该数字的整个一半。

我的问题是:

我不知道是否存在任何运算符或连接这些计算的东西。在该行代码上,我尝试使用(,)。

我尝试使用 ( | ) 和 ( & ) 替换 ( , )。但我有很多错误。

在这段代码中,我希望 6/2 的输出为 3,而 5/2 的输出为 2。

注意:函数 sum 虽然没有做任何事情,但我无法删除,因为作业说不要从代码中删除,也许我需要使用它。

0 投票
1 回答
59 浏览

php - PHP:没有可读的输出,当我使用小于符号时,结合 var_dump() 函数

为什么在 PHP 中这个代码片段没有返回可读的输出,

但是这个

正在返回

0 投票
1 回答
116 浏览

c - 这段代码中查找表的用途是什么?

下面我改编了William Kahan 和 KC Ng于 1986 年编写的代码(查看底部的注释块),以产生 1 / sqrt(x) 的近似值,其中 x 是 IEEE-754 双精度浮点数。正是这个密码,Cleve Moler 和 Greg Walsh 改编成了以 Quake III 闻名的“快速反平方根”。

看起来它正在做与 Quake 版本相同的事情(减去 newton-raphson 步骤)

我们首先将 double 的位转换为整数,这是我们开始使用的 double 的近似二进制对数(米切尔方法)。

我们将这些位右移并从一个常数中减去它们(对于这个比较,丢弃低 32 位并不重要),这是对数域中的近似除法。

下一步我不太清楚,因为查找表由非常少量的原始数字索引 - 主要是指数位。所以发生了更正,但我不确定如何解释它。

最后,我们将整数位(加上 LS 一半的 32 个 0)转换为浮点双精度,给我们一个近似的反对数。

所以我理解(或认为我理解)这里 4 个步骤中的 3 个,但是第三步——查找表在做什么,它是如何在双打范围内索引的,为什么?