Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 功能如何;“罪”;实现?_C - Fatal编程技术网

C 功能如何;“罪”;实现?

C 功能如何;“罪”;实现?,c,C,任何人都可以解释或展示函数“sin”(或“sinf”、“sinl”)是如何在C语言中实现的。 直觉表明它应该在数学中的某个地方。h但我没有看到任何东西有几种方法我可以马上想到: 查找表 通过泰勒级数进行近似(可以很容易地精确到许多有效数字) 我可以马上想到几个方法: 查找表 通过泰勒级数进行近似(可以很容易地精确到许多有效数字) 你说的“实现”是什么意思?而且math.h的内容在不同的编译平台上有所不同,因此没有通用的答案。它通常可能包括操作系统或硬件相关的头文件,并遵循#includes链直至

任何人都可以解释或展示函数“sin”(或“sinf”、“sinl”)是如何在C语言中实现的。
直觉表明它应该在数学中的某个地方。h但我没有看到任何东西

有几种方法我可以马上想到:

  • 查找表
  • 通过泰勒级数进行近似(可以很容易地精确到许多有效数字)

  • 我可以马上想到几个方法:

  • 查找表
  • 通过泰勒级数进行近似(可以很容易地精确到许多有效数字)

  • 你说的“实现”是什么意思?而且math.h的内容在不同的编译平台上有所不同,因此没有通用的答案。它通常可能包括操作系统或硬件相关的头文件,并遵循#includes链直至您要查找的内容。在
    math.h
    中,您只能看到函数的声明(例如签名),而不能看到它们的定义(例如函数体)。查看
    glibc
    源代码,在那里可以找到实现。是的,
    sin
    使用快速算法(不幼稚,需要数学技能)注意,编译器可能使用CPU指令(如果可用)而不是软件实现来计算sin。不,通常不使用泰勒级数。问题是错误会随着参数的增加而增加。可以采用高次泰勒近似,并用低阶切比雪夫多项式近似逼近高阶项。帕德近似也是可能的。在某些情况下,甚至还有查表和插值。你所说的“实现”是什么意思?而且math.h的内容在不同的编译平台上有所不同,因此没有通用的答案。它通常可能包括操作系统或硬件相关的头文件,并遵循#includes链直至您要查找的内容。在
    math.h
    中,您只能看到函数的声明(例如签名),而不能看到它们的定义(例如函数体)。查看
    glibc
    源代码,在那里可以找到实现。是的,
    sin
    使用快速算法(不幼稚,需要数学技能)注意,编译器可能使用CPU指令(如果可用)而不是软件实现来计算sin。不,通常不使用泰勒级数。问题是错误会随着参数的增加而增加。可以采用高次泰勒近似,并用低阶切比雪夫多项式近似逼近高阶项。帕德近似也是可能的。在某些情况下,甚至可以进行查表和插值。有关全函数近似,请参阅傅立叶分析。谢谢链接。不过,这确实让我好奇,您是否可以简单地使用两个系列:一个是关于0的本地系列,另一个是关于PI/2的本地系列?然后,你可以简单地将你的域划分为应该由函数A计算的区域和应该由函数B计算的区域。不过,我可能忘记了泰勒级数的一些基本方面。你可以将域划分为任意多个间隔,这确实是交换空间的技术之一(这些多项式系数需要存储在某处)和时间(选择正确的间隔并加载带有缓存未命中的系数)为了精确起见,但在任何单个区间上,使用Remez算法计算的系数仍将优于泰勒展开。因此,这就是所使用的。有意义。感谢!关于全函数近似,请参阅傅里叶分析。感谢链接。不过,这确实让我好奇,是否可以简单地使用两个级数:一个是0附近的局部级数然后,你可以简单地把你的域分成应该由函数A计算的区域和应该由函数B计算的区域。不过,我可能忘记了泰勒级数的一些基本方面。你可以把域分成任意多的间隔,这确实是一种技术为了保证准确性,需要交换空间(这些多项式系数需要存储在某处)和时间(选择正确的间隔并加载带有缓存未命中的系数),但在任何单个间隔上,使用Remez算法计算的系数仍将执行泰勒展开。这就是所使用的。有意义。谢谢!