2016-11-06 24 views
0

Eiffel中,類DOUBLE_MATH定義了三角函數。當我看到這個類的接口,如圖here,它說埃菲爾三角函數域是什麼?是[-pi/4,+ pi/4]嗎?

餘弦(ν:REAL_64):REAL_64 - 弧度`V」近似 的三角餘弦 - 在範圍[-pi/4 ,+π/ 4]

正弦(ν:REAL_64):REAL_64 - 弧度`v」近似 的正弦三角函數 - 在範圍[-pi/4,+ pi/4]

正切(ν:REAL_64):REAL_64 - 在範圍[-pi/4,+π/ 4]

- 弧度`V」近似 的三角正切

它似乎聲稱三角函數只能在域[-pi/4,+ pi/4]中工作。但是,當我嘗試將它們用於其他值時,它們似乎起作用。

我擔心它偶爾會失敗,或者我看到的成功實際上是一種不可靠的不確定行爲。

使用給定域以外的函數安全嗎?如果是這樣,爲什麼指定這個域?如果沒有,爲什麼它只能在這個領域發揮作用?

+0

請注意,弧線函數的文檔是錯誤的,參數不是弧度而是數字,並且給定的範圍不是與其他函數一樣的域=「範圍參數」,而是範圍(值)的功能。即使是'arc_tangent'也失敗了。 – LutzL

+0

@LutzL哦,是的,我沒有注意到這一點。那麼你是否說他們不可靠? – GoodDeeds

+0

我認爲你可以使用沒有限制的功能。但是,對準確性的保證只適用於小的論點。 – LutzL

回答

2

這些函數被實現爲來自math.h的相應C函數的包裝。由於Eiffel幾乎可以在任何帶有C編譯器的平臺上編譯,因此該註釋確保將該域限制爲C編譯器實現的最嚴格的域。另外,一些CPU可以直接支持三角函數,但是如果輸入值超出給定範圍,它們的精度會下降。總而言之,您需要檢查C編譯器的手冊,以瞭解您要用於特定三角函數範圍的平臺,或者,確保輸入值處於評論。

+0

謝謝你的回答。 – GoodDeeds