Cmath_wrap


Functions

template<typename eT >
arma_inline bool arma_isfinite (eT val)
template<>
arma_inline bool arma_isfinite (float x)
template<>
arma_inline bool arma_isfinite (double x)
template<typename T >
arma_inline bool arma_isfinite (const std::complex< T > &x)

Function Documentation

template<typename eT >
arma_inline bool arma_isfinite ( eT  val  )  [inline]

Definition at line 25 of file cmath_wrap.hpp.

Referenced by arma_isfinite(), Mat< eT >::is_finite(), and log_add().

00026   {
00027   return true;
00028   }

template<>
arma_inline bool arma_isfinite ( float  x  )  [inline]

Definition at line 35 of file cmath_wrap.hpp.

00036   {
00037   #if defined(ARMA_HAVE_STD_ISFINITE)
00038     {
00039     return (std::isfinite(x) != 0);
00040     }
00041   #else
00042     {
00043     const bool x_is_inf = ( (x == x) && ((x - x) != float(0)) );
00044     const bool x_is_nan = (x != x);
00045 
00046     return ( (x_is_inf == false) && (x_is_nan == false) );
00047     }
00048   #endif
00049   }

template<>
arma_inline bool arma_isfinite ( double  x  )  [inline]

Definition at line 56 of file cmath_wrap.hpp.

00057   {
00058   #if defined(ARMA_HAVE_STD_ISFINITE)
00059     {
00060     return (std::isfinite(x) != 0);
00061     }
00062   #else
00063     {
00064     const bool x_is_inf = ( (x == x) && ((x - x) != double(0)) );
00065     const bool x_is_nan = (x != x);
00066 
00067     return ( (x_is_inf == false) && (x_is_nan == false) );
00068     }
00069   #endif
00070   }

template<typename T >
arma_inline bool arma_isfinite ( const std::complex< T > &  x  )  [inline]

Definition at line 77 of file cmath_wrap.hpp.

References arma_isfinite().

00078   {
00079   if( (arma_isfinite(x.real()) == false) || (arma_isfinite(x.imag()) == false) )
00080     {
00081     return false;
00082     }
00083   else
00084     {
00085     return true;
00086     }
00087   }