# MathClassify

Determines the type of a real number and returns a result as a value from the 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 */  //+------------------------------------------------------------------+