Initial Commit.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# MathClassify
|
||||
|
||||
Determines the type of a real number and returns a result as a value from the [ENUM_FP_CLASS](/en/docs/math/mathclassify#enum_fp_class) enumeration
|
||||
|
||||
```
|
||||
ENUM_FP_CLASS MathClassify(
|
||||
double value // real number
|
||||
);
|
||||
|
||||
```
|
||||
|
||||
Parameters
|
||||
|
||||
value
|
||||
|
||||
[in] The real number to be checked
|
||||
|
||||
Return Value
|
||||
|
||||
A value from the ENUM_FP_CLASS enumeration
|
||||
|
||||
ENUM_FP_CLASS
|
||||
|
||||
| ID | Description |
|
||||
| --- | --- |
|
||||
| FP_SUBNORMAL | A subnormal number which is closer to zero than the smallest representable normal number DBL_MIN (2.2250738585072014e-308) |
|
||||
| FP_NORMAL | A normal number in the range between 2.2250738585072014e-308 and 1.7976931348623158e+308 |
|
||||
| FP_ZERO | A positive or a negative zero |
|
||||
| FP_INFINITE | A number which cannot be represented by the appropriate type, positive or negative infinity |
|
||||
| FP_NAN | Not a number. |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
//+------------------------------------------------------------------+
|
||||
//| Script program start function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnStart()
|
||||
{
|
||||
//--- test NaN
|
||||
double nan=double("nan");
|
||||
PrintFormat("Test NaN: %G is %s, MathIsValidNumber(NaN)=%s",
|
||||
nan,
|
||||
EnumToString(MathClassify(nan)),
|
||||
(string)MathIsValidNumber(nan));
|
||||
//--- test infinity
|
||||
double inf=double("inf");
|
||||
PrintFormat("Test Inf: %G is %s, MathIsValidNumber(inf)=%s",
|
||||
inf,
|
||||
EnumToString(MathClassify(inf)),
|
||||
(string)MathIsValidNumber(inf));
|
||||
//--- test normal value
|
||||
double normal=1.2345e6;
|
||||
PrintFormat("Test Normal: %G is %s, MathIsValidNumber(normal)=%s",
|
||||
normal,
|
||||
EnumToString(MathClassify(normal)),
|
||||
(string)MathIsValidNumber(normal));
|
||||
//--- test subnormal value
|
||||
double sub_normal=DBL_MIN/2.0;
|
||||
PrintFormat("Test Subnormal: %G is %s, MathIsValidNumber(sub_normal)=%s",
|
||||
sub_normal,
|
||||
EnumToString(MathClassify(sub_normal)),
|
||||
(string)MathIsValidNumber(sub_normal));
|
||||
//--- test zero value
|
||||
double zero=0.0/(-1);
|
||||
PrintFormat("Test Zero: %G is %s, MathIsValidNumber(zero)=%s",
|
||||
zero,
|
||||
EnumToString(MathClassify(zero)),
|
||||
(string)MathIsValidNumber(zero));
|
||||
}
|
||||
/*
|
||||
Result:
|
||||
Test NaN: NAN is FP_NAN, MathIsValidNumber(NaN)=false
|
||||
Test Inf: INF is FP_INFINITE, MathIsValidNumber(inf)=false
|
||||
Test Normal: 1.2345E+06 is FP_NORMAL, MathIsValidNumber(normal)=true
|
||||
Test Subnormal: 1.11254E-308 is FP_SUBNORMAL, MathIsValidNumber(sub_normal)=true
|
||||
Test Zero: -0 is FP_ZERO, MathIsValidNumber(zero)=true
|
||||
*/
|
||||
//+------------------------------------------------------------------+
|
||||
|
||||
```
|
||||
|
||||
See also
|
||||
|
||||
[Real types (double, float)](/en/docs/basis/types/double), [MathIsValidNumber](/en/docs/math/mathisvalidnumber)
|
||||
Reference in New Issue
Block a user