是否可以在纯 C 中创建一个接受 double 并将其计算为另一个 double 次方的函数?如(3.5 2.7)。有人告诉我这只有在使用汇编来编写函数时才有可能。
最佳答案
谁告诉您 pow()
函数只有在使用汇编的情况下才可能实现,这是错误的。这显然是错误的,因为求幂的数学概念比计算机早了 2000 多年。1对数大约在 400 年前发明(作为简化求幂计算的一种方法),而计算尺2计算尺是计算算术表达式的主要工具,直到数字计算器发明为止。
您可能上过一堂数学课,其中涉及对对数和指数表条目使用插值来执行计算。3如果您记得这样的类(class),则提示您可以执行这些计算使用常规数学进行计算。无论如何,这也是教授对数和指数性质的地方。
在微积分中,有一门关于泰勒级数的类(class),以及如何使用泰勒多项式来逼近函数。4由于对数的麦克劳林级数(以 0 为中心的泰勒级数)仅收敛如果参数在区间 (-1, 1) 内,则可以使用常规数学来缩小参数,并使用数学来调整计算的答案以获得所需的答案。例如,要计算 ln
(2.7),您可以计算 ln
(2.7) - ln
(22) + ln
(22) = ln
(2.7/22) + ln
(22 ) = ln
(0.675) + 2×ln
(2)。使用第一项的麦克劳林级数,并查找 ln
(2) 的表格,您就可以得到答案。
无论pow()
函数是否在库中通过汇编实现,它都只是计算人类告诉它计算的内容。硬件上没有什么魔法是软件或一张纸上无法完成的。
- 两者Euclid和 Archimedes两人都精通指数的概念。
- John Napier 1614 年发表了他的对数理论。几年后,这个概念被 Henry Briggs 改进。 ,他还发表了第一个常用对数表。 William Oughtred被誉为 1622 年发明计算尺的人。
- 遗憾的是,表格数学可能已从现代类(class)中删除,因为它无助于提高标准化考试成绩,而且使用计算器要容易得多。
- Taylor Series早在 Brook Taylor 之前 300 年前就为几种不同的功能生成了推导了其创作的数学方法。
关于c - 是否可以在 C 中创建 pow(double a, double b) 函数而无需汇编?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030169/