【发布时间】:2016-11-06 06:09:06
【问题描述】:
在Eiffel 中,DOUBLE_MATH 类定义了三角函数。当我看到这个类的界面如图here,它说
余弦 (v: REAL_64): REAL_64 -- 近似弧度“v”的三角余弦 -- 在 [-pi/4, +pi/4] 范围内
和
正弦 (v: REAL_64): REAL_64 -- 近似弧度“v”的三角正弦 -- 在 [-pi/4, +pi/4] 范围内
和
切线(v:REAL_64):REAL_64 -- 近似弧度“v”的三角正切 -- 在 [-pi/4, +pi/4] 范围内
似乎声称三角函数只能在域 [-pi/4,+pi/4] 中工作。但是,当我尝试将它们用于其他值时,它们似乎起作用了。
我担心它可能偶尔会失败,或者我看到的成功实际上是一种无法依赖的未定义行为。
在给定域之外使用函数是否安全?如果是这样,为什么要指定这个域?如果不是,为什么要让函数只在这个域中起作用?
【问题讨论】:
-
请注意,arcus 函数的文档是完全错误的,参数不是弧度而是数字,给定的范围不是 domain="range of arguments" 与其他函数一样,而是函数的(值的)范围。对于
arc_tangent,即使这样也失败了。 -
@LutzL 哦,是的,我没有注意到这一点。所以你是说他们不可靠?
-
我认为您可以不受限制地使用这些功能。但是,准确性保证仅适用于小参数。
标签: math trigonometry eiffel