首页 > 试题

cocant

更新时间:2022-12-09 04:58:26 阅读: 评论:0

七亿中产阶级的名单-王子猷雪夜访戴


2022年12月9日发(作者:长号把位)大富翁论坛版权所有



作者ue5e5: suger

标题ue5e5: 单元中的数学常规程序函数



注 : 这个单元包含高性能的算术、三角、对数、统计和金融方面的计算及FPU程序函数用于补充Delphi 语言单元中的数学 常规程序函数



参考:



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 Ur's Manual, Volume 3: Architecture and Programming Manual", Intel, 1994《Pentium(tm) 处理器使用手册,第 3 册: 体系结构和程序手册》



注意:



1) 对于有些函数,这个单元中涉及的概念或常数由Earl F. Glynn () 和 Ray Lischner ()提供。

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.223372e+18; 最小Comp数

8) MaxComp = 9.223372e+18; 最大Comp数



下列常数不应当被用于比较关系,仅仅用于分配。若要用于比较关系请使用IsNan 和 IsInfinity 函数。(已提供在后面)

9) NaN = 0.0 / 0.0; 非数 (*$EXTERNALSYM NaN*) (*$HPPEMIT 'static const Extended NaN = 0.0 / 0.0;'*)

10) Infinity = 1.0 / 0.0; 正无穷大 (*$EXTERNALSYM Infinity*) (*$HPPEMIT 'static const Extended Infinity = 1.0 / 0.0;'*)

11) 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) 函数 Cocant(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; { 别名为 Cocant }

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 }



四、对数函数

1) 函数 LnXP1(const X: Extended): Extended; {Ln(X + 1), accurate for X near zero }

2) 函数 Log10(const X: Extended): Extended; {基

数为10的X对数}

3) 函数 Log2(const X: Extended): Extended; {基数为2的X对数}

4) 函数 LogN(const Ba, X: Extended): Extended; {基数为N的X对数}



五、指数函数

1) 函数 IntPower(const Ba: Extended; const Exponent: Integer): Extended register;

IntPower:任意基数Ba的Exponent整数幂。快

2) 函数 Power(const Ba, Exponent: Extended): Extended;

Power:任意基数的任意幂; 对于分指数或 |指数| > MaxInt, 基数必须> 0.



六、各种例程

1) 过程 Frexp(const X: Extended; var Mantissa: Extended; var Exponent: Integer) register;

Frexp:分离X 的尾数和指数

2) 函数 Ldexp(const X: Extended; const P: Integer): Extended register;

Ldexp:返回 X*2^P

3) 函数 Ceil(const X: Extended):Integer;

Ceil:最小整数> = X, |X| < MaxInt

4) 函数 Floor(const X: Extended): Integer;

Floor:最大整数< = X, |X| < MaxInt

5) 函数 Poly(const X: Extended; const Coefficients: array of Double): Extended;

Ploy:计算一元多项式A[0] + A[1]*X + ... + A[N]*X^N 在变量为X时的值。



七、统计函数

对于这些统计的和财政函数,普通的商业表宏名字已经写在每个函数后面的注释中

1) 函数 Mean(const Data: array of Double): Extended;

算术平均值(AVG): SUM / N ;SUM(Data) / (High(Data) - Low(Data) + 1)

2) 函数 Sum(const Data: array of Double): Extended register; 求Double数的和 (SUM) }

3) 函数 SumInt(const Data: array of Integer): Integer register; 求Integer数和

4) 函数 SumOfSquares(const Data: array of Double): Extended;Double平方和

5) 过程 SumsAndSquares(const Data: array of Double; var Sum, SumOfSquares: Extended) register;返回Double总和、平方和

6) 函数 MinValue(const Data: array of Double): Double; 返回Double数组中最小数(MIN)

7) 函数 MinIntValue(const Data: array of Integer): Integer; 返回Integer数组中最小数(MIN)

8) 函数 Min(const A, B: Integer): Integer; overload; 返回最小整数

9) 函数 Min(const A, B: Int64): Int64; overload; 返回最小Int64数

10) 函数 Min(const A, B: Single): Single; overload; 返回最小Single数

11) 函数 Min(const A, B: Double): Double; overload; 返回最小Double数

12) 函数 Min(const A, B: Extended): Extended; overload ; 返回最小Extended数

13) 函数 MaxValue(const Data: array of Double): Double; 返回Double数组最大数(MAX)

14) 函数 MaxIntValue(const Data: array of Integer): Integer; 返回Integer

数组最大数

15) 函数 Max(const A, B: Integer): Integer; overload; 返回最大Integer数

16) 函数 Max(const A, B: Int64): Int64; overload; 返回最大Int64数

17) 函数 Max(const A, B: Single): Single; overload; 返回最大Single数

18) 函数 Max(const A, B: Double): Double; overload; 返回最大Double数

19) 函数 Max(const A, B: Extended): Extended; overload; 返回最大Extended数



20) 函数 StdDev(const Data: array of Double): Extended;

样本标准偏差STD; Sqrt(Variance(Data))



21) 过程 MeanAndStdDev(const Data: array of Double; var Mean, StdDev: Extended);

在一次调用中计算算术平均值(Mean)和标准偏差(StdDev)



22) 函数 PopnStdDev(const Data: array of Double): Extended;

总体标准差;Sqrt(PopnVariance(Data))



23) 函数 Variance(const Data: array of Double): Extended;

采样方差(样品方差);TotalVariance(Data) / (High(Data) - Low(Data))



24) 函数 PopnVariance(const Data: array of Double): Extended;

总体方差:(VAR or VARP): TotalVariance/ N }; TotalVariance(Data) / (High(Data) - Low(Data) + 1)



25) 函数 TotalVariance(const Data: array of Double): Extended;

方差总合:SUM(i=1,N)[(X(i) - Mean)**2] ;SumSquares - Sqr(Sum)/(High(Data) - Low(Data) + 1)



26) 函数 Norm(const Data: array of Double): Extended;

欧几里得L2-范数Sqrt(SumOfSquares)



27) 过程 MomentSkewKurtosis(const Data: array of Double; var M1, M2, M3, M4, Skew, Kurtosis: Extended);

MomentSkewKurtosis::计算统计分解的核心因数

M1:平均值(Mean)

M2:方差(Variance)

Skew:反映分布的对称性[M3 / (M2**(3/2))]

Kurtosis:反映分布的平坦性[M4 / Sqr(M2)]

28) 函数 RandG(Mean, StdDev: Extended): Extended;

RandG:产生一个随机数,随机数符合正态分布于Mean数附近,用于模拟数据抽取样品误差



八、普通/混杂函数

1.极端测试:

1) 函数 IsNan(const AValue: Double): Boolean; overload;

比如infinity, NaN 双精度值有7FF指数, 而且NaN 值有不为0的分数域

2) 函数 IsNan(const AValue: Single): Boolean; overload;

3) 函数 IsNan(const AValue: Extended): Boolean; overload;

4) 函数 IsInfinite(const AValue: Double): Boolean;

比如 NaN, 一个infinity 双精度值有一个7FF指数, 但是infinity 值有一个0分数域(have a fraction field of 0)。Infinity 值能够在最高符号位被指定为正数或负数



2.简单符号测试

type

TValueSign = -1..1;

const

NegativeValue = Low(TValueSign);

ZeroValue = 0;

PositiveValue = High(TValueSign);

1) 函数 Sign(const AValue: Integer): T

tended;

折旧{ Sum-of-Years-Digits depreciation (SYD) }



十、FPU 异常/精度/舍入管理

以下函数允许你控制FPU行为。控制FPU异常处理,FPU默认精度设置,FPU怎样舍入控制

type

TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);

1) 函数 GetRoundMode: TFPURoundingMode; 返回当前舍入模式

2) 函数 SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;

设置新的舍入模式并且返回旧的模式



type

TFPUPrecisionMode = (pmSingle, pmRerved, pmDouble, pmExtended);

3) 函数 GetPrecisionMode: TFPUPrecisionMode; 返回当前精度控制模式

4) 函数 SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;

设置新的精度控制模式并且返回旧的模式



type

TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,

exOverflow, exUnderflow, exPrecision);

TFPUExceptionMask = t of TFPUException;

掩码中任何元素设置防止FPU产生各种异常。它企图返回一个最好的数值,经常是NaN 或 infinity。数值依靠运算和当前的舍入模式



5) 函数 GetExceptionMask: TFPUExceptionMask;

从控制字中返回异常掩码



6) 函数 SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;

设置新的异常掩码并返回旧的



7) 过程 ClearExceptions(RaiPending: Boolean = True);

清除状态字中任何未定的异常位









本文发布于:2022-12-09 04:58:26,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/70474.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:牡丹英文
标签:cosecant
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图