這個單元包含高性能的算術、三角、對數、統計和金融方面的計算及FPU程序函數用於補充Delphi語言System.pas 單元中的數學常規程序函數
參考:
1) P.J. Plauger, "The Standard C Library", Prentice-Hall, 1992, Ch. 7.
《標准C程序庫》2) W.J. Cody, Jr., and W. Waite, "Software Manual For the Elementary Functions", Prentice-Hall, 1980.《軟件手冊初步》
3) Namir Shammas, "C/C++ Mathematical Algorithms for ScIEntists and Engineers", McGraw-Hill, 1995, Ch 8.《C/C++ 數學的運算法則對於科學家和工程師》
4) H.T. Lau, "A Numerical Library in C for ScIEntists and Engineers", CRC Press, 1994, Ch. 6.
《C語言中的數字的程序庫對於科學家和工程師》5) "Pentium(tm) Processor User's Manual, Volume 3: Architecture and Programming Manual", Intel, 1994《Pentium(tm) 處理器使用手冊,第 3 冊: 體系結構和程序手冊》
注意
1) 對於有些函數,這個單元中涉及的概念或常數由Earl F. Glynn (www.efg2.com) 和 Ray Lischner (www.tempest-sw.com)提供。
2) 所有的角度參數三角函數的結果都用弧度表示
3) 下列大部分的三角和對數程序直接的映射到Intel 80387 FPU
4) 浮點機指令、輸入域、輸出范圍和錯誤處理主要由 FPU 硬件決定
5) 匯編程序中的代碼支持Pentium FPU 管線體系
l 常數
IEEE 浮點類型的范圍, 包括非正規的
1) MinSingle = 1.5e-45; 最小Single數
2) MaxSingle = 3.4e+38; 最大Single數
3) MinDouble = 5.0e-324; 最小Double數
4) MaxDouble = 1.7e+308; 最大Double數
5) MinExtended = 3.4e-4932; 最小Extended數
6) MaxExtended = 1.1e+4932; 最大Extended數
7) MinComp = -9.223372036854775807e+18; 最小Comp數
8) MaxComp = 9.223372036854775807e+18; 最大Comp數
下列常數不應當被用於比較關系,僅僅用於分配。若要用於比較關系請使用IsNan 和 IsInfinity 函數。(已提供在後面)
9) NaN = 0.0 / 0.0; 非數 (*$EXTERNALSYM NaN*) (*$HPPEMIT 'static const Extended NaN = 0.0 / 0.0;'*)
Infinity = 1.0 / 0.0; 正無窮大 (*$EXTERNALSYM Infinity*) (*$HPPEMIT 'static
1) const Extended Infinity = 1.0 / 0.0;'*)
2) NegInfinity = -1.0 / 0.0; 負無窮大 (*$EXTERNALSYM NegInfinity*) (*$HPPEMIT 'static const Extended NegInfinity = -1.0 / 0.0;'*)
一、 三角函數
1) 函數 ArcCos(const X: Extended): Extended; ( IN: |X| <= 1 OUT: [0..PI] 弧度)
2) 函數 ArcSin(const X: Extended): Extended; (IN: |X| <= 1 OUT: [-PI/2..PI/2] 弧度)
3) 函數 ArcTan2(const Y, X: Extended): Extended; IN: |Y| < 2^64, |X| < 2^64, X <> 0 OUT: [-PI..PI] 弧度)。計算 ArcTan(Y/X), 並且返回一個正確象限內的角度
4) 過程 SinCos(const Theta: Extended; var Sin, Cos: Extended) register;
SinCos:比分別調用Sin 和Cos 計算同一個角度快兩倍
5) 函數 Tan(const X: Extended): Extended;
6) 函數 Cotan(const X: Extended): Extended; { 1 / tan(X), X <> 0 }
7) 函數 Secant(const X: Extended): Extended; { 1 / cos(X) }
8) 函數 Cosecant(const X: Extended): Extended; { 1 / sin(X) }
9) 函數 Hypot(const X, Y: Extended): Extended; { Sqrt(X**2 + Y**2) }
二、 角度單位換算程序
1) 函數 RadToDeg(const Radians: Extended): Extended; { 度數:= 弧度 * 180 / PI }
2) 函數 RadToGrad(const Radians: Extended): Extended; { 梯度:= 弧度 * 200 / PI }
3) 函數 RadToCycle(const Radians: Extended): Extended;{ 圓周:= 弧度 / 2PI }
4) 函數DegToRad(const Degrees: Extended): Extended; {弧度:= 度數* PI / 180}
5) 函數DegToGrad(const Degrees: Extended): Extended;
6) 函數DegToCycle(const Degrees: Extended): Extended;
7) 函數GradToRad(const Grads: Extended): Extended; {弧度:= 梯度 * PI / 200 }
8) 函數GradToDeg(const Grads: Extended): Extended;
9) 函數GradToCycle(const Grads: Extended): Extended;
10) 函數CycleToRad(const Cycles: Extended): Extended; {弧度:= 圓周* 2PI }
11) 函數CycleToDeg(const Cycles: Extended): Extended;
12) 函數CycleToGrad(const Cycles: Extended): Extended;
三、雙曲線函數
1) 弧度 Cot(const X: Extended): Extended; { 別名為 Cotan }
2) 函數 Sec(const X: Extended): Extended; { 別名為 Secant }
3) 函數 Csc(const X: Extended): Extended; { 別名為 Cosecant }
4) 函數 Cosh(const X: Extended): Extended;
5) 函數 Sinh(const X: Extended): Extended;
6) 函數 Tanh(const X: Extended): Extended;
7) 函數 CotH(const X: Extended): Extended;
8) 函數 SecH(const X: Extended): Extended;
9) 函數 CscH(const X: Extended): Extended;
10) 函數 ArcCot(const X: Extended): Extended; { IN: X <> 0 }
11) 函數 ArcSec(const X: Extended): Extended; { IN: X <> 0 }
12) 函數 ArcCsc(const X: Extended): Extended; { IN: X <> 0 }
13) 函數 ArcCosh(const X: Extended): Extended; { IN: X >= 1 }
14) 函數 ArcSinh(const X: Extended): Extended;
15) 函數 ArcTanh(const X: Extended): Extended; { IN: |X| <= 1 }
16) 函數 ArcCotH(const X: Extended): Extended; { IN: X <> 0 }
17) 函數 ArcSecH(const X: Extended): Extended; { IN: X <> 0 }
18) 函數 ArcCscH(const X: Extended): Extended; { IN: X <> 0 }