Microsoft Windows Logo(MSWLogo)中的基础数学函数及补充

痴心易碎 提交于 2019-12-17 16:52:13

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

今天看了下 Microsoft Windows Logo(下文简称MSWLogo)与数学有关的函数,对比了下.NET4.0提供的基础数学函数库(System.Math,在动态库文件mscorlib.dll内实现),计划写篇文章总结并补充了部分命令。

一、System.Math 中有且 MSWLogo 也有的函数

  1. Abs( MSWLogo中为ABS):求绝对值
  2. Acos( MSWLogo中为ARCCOS):求反余弦
  3. Asin(MSWLogo中为ARCSIN):求反正弦
  4. Atan( MSWLogo中为ARCTAN) :求反正切
  5. Cos ( MSWLogo中为COS) :求余弦
  6. Exp( MSWLogo中为EXP) :求e的指定次幂
  7. Floor( MSWLogo中为INT):求不大于当前数字的最大的整数
  8. Log( MSWLogo中为LN):求以e为底的对数
  9. Log10( MSWLogo中为LOG10) :求以10为底的对手
  10. Pow( MSWLogo中为POWER) :求幂
  11. Round( MSWLogo中为ROUND) :对指定数字四舍五入
  12. Sin( MSWLogo中为ROUND) :求正弦
  13. Sqrt( MSWLogo中为SQRT) :开平方
  14. Tan( MSWLogo中为TAN) :求正切

二、 MSWLogo 特有的函数

  1. DIFFERENCE:求两数差
  2. MINUS:取相反数
  3. PRODUCT:求两数积
  4. QUOTIENT:求两数商
  5. RADARCTAN:求反正切(传入角度数)
  6. RADCOS:求余弦(传入角度数)
  7. RADSIN:求正弦(传入角度数)
  8. REMAINDER:求两数相除后的余数
  9. SUM:求两数和

三、System.Math中有但MSWLogo中没有,或二者都没有的函数

这些函数需要我们自己实现:

  1. ARCCOT:求反余切
  2. ARCCSC:求反余割
  3. ARCSEC:求反正割
  4. CEILING:求不小于当前数字的最小整数
  5. COT:求余切
  6. COTH:求双曲余切
  7. COSH:求双曲余弦
  8. CSC:求余割
  9. CSCH:求双曲余割
  10. MAX:取两数中大者
  11. MIN:取两数中小者
  12. SEC:求正割
  13. SECH:求双曲正割
  14. SIGN:符号函数(正数返回1,负数返回-1,0返回0)
  15. SINH:求双曲正弦
  16. TANH:求双曲正切
  17. TRUNCATE:去除指定数字小数部分

实现代码如下:

TO ARCCOT :NUM
  OUTPUT CONST_PI / 2 - (ARCTAN :NUM)
END

TO ARCCSC :NUM
  OUTPUT ARCSIN(1 / :NUM)
END

TO ARCSEC :NUM
  OUTPUT ARCCOS(1 / :NUM)
END

TO CEILING :NUM
  OUTPUT ROUND (:NUM + 0.5 - 0.0000000000001)
END 

TO COSH :NUM
  OUTPUT ((EXP :NUM) + (EXP (MINUS :NUM))) / 2
END

TO COT :NUM
  OUTPUT 1 / (TAN :NUM)
END

TO COTH :NUM
  OUTPUT 1 / (TANH :NUM)
END

TO CSC :NUM
  OUTPUT 1 / (SIN :NUM)
END

TO CSCH :NUM
  OUTPUT 1 / (SINH :NUM)
END

TO MAX :NUM1 :NUM2
  TEST :NUM1 > :NUM2
  IFTRUE [OUTPUT :NUM1]
  IFFALSE [OUTPUT :NUM2]
END

TO MIN :NUM1 :NUM2
  TEST :NUM1 < :NUM2
  IFTRUE [OUTPUT :NUM1]
  IFFALSE [OUTPUT :NUM2]
END

TO SEC :NUM
  OUTPUT 1 / (COS :NUM)
END

TO SECH :NUM
  OUTPUT 1 / (COSH :NUM)
END

TO SIGN :NUM
  IF :NUM > 0 [OUTPUT 1]
  IF :NUM = 0 [OUTPUT 0]
  IF :NUM < 0 [OUTPUT -1]
END

TO SINH :NUM
  OUTPUT ((EXP :NUM) - (EXP (MINUS :NUM))) / 2
END

TO TANH :NUM
  OUTPUT (SINH :NUM) / (COSH :NUM)
END

TO TRUNCATE :NUM
  TEST OR :NUM > 0  :NUM = 0
  IFTRUE [OUTPUT (INT :NUM)]
  IFFALSE [OUTPUT (CEILING :NUM)]
END

END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!