Math 埃菲尔铁塔中的三角函数域是什么?它是[-pi/4,&x2B;pi/4]吗?

Math 埃菲尔铁塔中的三角函数域是什么?它是[-pi/4,&x2B;pi/4]吗?,math,trigonometry,eiffel,Math,Trigonometry,Eiffel,在中,类DOUBLE\u MATH定义三角函数。当我看到如图所示的这个类的接口时,它说 余弦(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]中工作。然

在中,类
DOUBLE\u MATH
定义三角函数。当我看到如图所示的这个类的接口时,它说

余弦(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]中工作。然而,当我尝试将它们用于其他价值观时,它们似乎起了作用

我担心它可能偶尔会失败,或者我看到的成功实际上是一种无法依赖的未定义的行为


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

这些函数被实现为
math.h
中相应C函数的包装器。由于Eiffel几乎可以为任何使用C编译器的平台编译,因此该注释确保将域限制为C编译器实现中限制最严格的域。此外,一些CPU直接支持三角函数,但如果输入值超出给定范围,则其精度会下降


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

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


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

谢谢您的回答。虽然为true,这使得那些埃菲尔函数毫无用处。谢谢你的回答。虽然这是真的,但是这些埃菲尔函数毫无用处。请注意,arcus函数的文档是错误的,参数不是弧度而是数字,给定的范围不是domain=“arguments range”与其他函数一样,但函数的范围(值)。即使对于
弧切
@LutzL,这也失败了哦,是的,我没有注意到这一点。你是说它们不可靠吗?我想你可以不受限制地使用这些功能。但是,精度保证仅适用于小参数。请注意,arcus函数的文档完全错误,参数不是弧度而是数字,给定的范围与其他函数不同,不是domain=“range of arguments”,而是函数的范围(值)。即使对于
弧切
@LutzL,这也失败了哦,是的,我没有注意到这一点。你是说它们不可靠吗?我想你可以不受限制地使用这些功能。但是,对准确性的保证仅适用于小参数。