【问题标题】:sin() of libm.so gives the wrong resultlibm.so 的 sin() 给出错误的结果
【发布时间】:2014-05-08 04:08:07
【问题描述】:

这个..

awk 'BEGIN{print sin(2.6261)}'

应该(并且通常会)产生 0.492964,但在我运行 BusyBox linux 的嵌入式主板上产生 0.909297。我的板子是 DMP Vortex 86SX。我认为它没有数学协处理器。板子的规格在这里...

http://www.dmp.com.tw/tech/vortex86sx/

我需要一些方法在我用 C 语言编写并用 Kdevelop 构建的应用程序中做一个罪过 - 没有它我真的卡住了 - 非常感谢任何帮助 - 谢谢 - 丰富

【问题讨论】:

  • 您是否尝试过要求罪(0.5155)?三角函数可能只在某个域中起作用。 (0.5155 = pi - 2.6261,并且应该产生原始值的结果)。
  • 谢谢詹姆斯,你是对的。 pi-x 确实产生了正确的结果,所以我已经测试了我想要的 sin 的值。如果它大于 pi/2,我会取 pi-x 的 sin。那让我走了。再次感谢。
  • 我已将此作为正确答案添加,因为它似乎是正确的。

标签: busybox trigonometry libm


【解决方案1】:

您是否尝试过要求 sin (0.5155) 代替?三角函数可能只在某个域中起作用。 (0.5155 = pi - 2.6261,并且应该产生原始值的结果)。

Trig 函数通常会为您缩小域,然后计算结果。但是,对于嵌入式系统而言,减少可能会很昂贵(如果您知道值的范围,通常可以自己更有效地完成)。

【讨论】:

    猜你喜欢
    • 2014-07-14
    • 2014-09-16
    • 2011-11-15
    • 2019-02-06
    • 2014-01-30
    • 2018-08-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多