是否有可能在没有装配的情况下在C中创建pow(双a,双b)功能?

时间:2013-08-03 06:45:57

标签: c assembly double

是否有可能创建一个带有double的函数并将其提升到纯C中另一个double的幂?如(3.5 2.7 )。我被告知只有在使用汇编来编写函数时才可以这样做。

3 个答案:

答案 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. EuclidArchimedes都精通指数概念。
  2. John Napier在1614年发表了他的对数理论。几年后,Henry Briggs改进了这个概念,他也发表了第一个常用的对数表。 William Oughtred因在1622年发明了规则而受到赞誉。
  3. 可悲的是,由表的数学可能正在从现代课程删除,因为它不利于提高标准化考试成绩,并用计算器是如此容易得多。
  4. Taylor Series早在300年前Brook Taylor为其创作提供了数学方法,就为几个不同的函数生成了。

答案 1 :(得分:0)

有些事情只能在汇编中完成,因为否则无法访问说明。对于普通算法,例如caluclations,情况并非如此。关于pow功能你不能用C语言编写它会有什么特别之处?如果你在汇编中写它可能会更快,但这不是实现它的障碍。

答案 2 :(得分:-1)

你可以在没有装配的情况下计算任何东西(就像你手动计算它一样),但它会慢;这就是没有使用特殊硬件支持就没有人做这些事情的原因。