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 26 of file cmath_wrap.hpp.

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

00027   {
00028   return true;
00029   }

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

Definition at line 36 of file cmath_wrap.hpp.

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

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

Definition at line 57 of file cmath_wrap.hpp.

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

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

Definition at line 78 of file cmath_wrap.hpp.

References arma_isfinite().

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