是否有可能创建一个带有double的函数并将其提升到纯C中另一个double的幂?如(3.5 2.7 )。我被告知只有在使用汇编来编写函数时才可以这样做。
答案 0 :(得分:5)
谁告诉你只有在使用程序集时才能实现pow()
函数是错误的。这显然是错误的,因为取幂的数学概念早于2000年就超过了计算机。 1 对数是大约400年前发明的(作为一种简化涉及取幂的计算的方法),以及滑动规则紧随其后。 2 在数字计算器发明之前,幻灯片规则是用于计算算术表达式的主要工具。
你可能有一个数学课,涉及在对数和取幂表条目上使用插值来执行计算。 3 如果你还记得这样的课程,这是一个暗示可以执行这些使用常规数学计算。无论如何,这也是教授对数和指数属性的地方。
在微积分中,有一个关于泰勒级数的教训,以及如何使用泰勒多项式近似函数。 4 由于Maclaurin级数(以0为中心的泰勒级数)的对数只收敛如果参数在区间(-1,1)内,您可以使用常规数学来缩小参数,并使用数学来调整计算的答案以获得所需的答案。例如,要计算 ln
(2.7),您可以计算 ln
(2.7) - ln
(2 2 )+ ln
(2 2 )= ln
(2.7 / 2 2 )+ ln
(2 2 )= ln
(0.675)+ 2× ln
(2)。在第一学期使用Maclaurin系列,并查找 ln
(2)的表格,您就可以得到答案。
pow()
函数是否在带有程序集的库中实现,它只计算人类告诉它计算的内容。硬件无法通过软件或纸张完成。
答案 1 :(得分:0)
有些事情只能在汇编中完成,因为否则无法访问说明。对于普通算法,例如caluclations,情况并非如此。关于pow功能你不能用C语言编写它会有什么特别之处?如果你在汇编中写它可能会更快,但这不是实现它的障碍。
答案 2 :(得分:-1)
你可以在没有装配的情况下计算任何东西(就像你手动计算它一样),但它会多慢;这就是没有使用特殊硬件支持就没有人做这些事情的原因。