我想知道Math.sin()
,Math.cos()
是否为O(1),以及它是如何转换为编译器的。
我们可以为它创建一个匹配表。
或者我们可以创建一个不太详细的匹配表,并使用线性公式来计算值。
或者我们可以将其分解。
我想在任何意义上Math.sin()
都是sorta O(1),因为输入是有界的,但它在编译器中是如何完成的以及它有多复杂?
答案 0 :(得分:1)
可能无法给出明确的答案,因此我会尽力为您提供尽可能多的信息。
Math
对象实现在浏览器和操作系统之间可能有所不同(“请注意,许多数学函数具有与实现相关的精度。这意味着不同的浏览器可以提供不同的结果,甚至是相同的JS引擎在不同的操作系统或体系结构上可以提供不同的结果。[1]“)。
有几种主要的方法可以实现正弦函数:
复杂性取决于实施。据我所知,CORDIC算法比较常见。