Eiffel 中三角函数的定义域是什么?是[-pi/4,+pi/4]吗?

What is the domain of trigonometric functions in Eiffel? Is it [-pi/4,+pi/4]?

Eiffel, the class DOUBLE_MATH defines trigonometric functions. When I see the interface of this class as shown here中说

cosine (v: REAL_64): REAL_64 -- Trigonometric cosine of radian `v' approximated -- in the range [-pi/4, +pi/4]

sine (v: REAL_64): REAL_64 -- Trigonometric sine of radian `v' approximated -- in range [-pi/4, +pi/4]

tangent (v: REAL_64): REAL_64 -- Trigonometric tangent of radian `v' approximated -- in range [-pi/4, +pi/4]

似乎声称三角函数只能在域 [-pi/4,+pi/4] 中起作用。但是,当我尝试将它们用于其他值时,它们似乎有效。

我担心它偶尔会失败,或者我看到的成功实际上是一种不可靠的未定义行为。

在给定域之外使用函数是否安全?如果是这样,为什么指定这个域?如果不是,为什么要让函数只在这个域中工作?

这些函数是作为 math.h 中相应 C 函数的包装器实现的。因为 Eiffel 可以针对几乎任何带有 C 编译器的平台进行编译,所以注释确保将域限制为 C 编译器实现的最严格的域。此外,一些 CPU 直接支持三角函数,但如果输入值超出给定范围,它们的精度会下降。

总而言之,对于三角函数的特定范围,您需要查看您将要使用的平台的C编译器手册,或者,确保输入值在中指定的范围内评论。