Eigen::internal::std_fallback Namespace Reference

Functions

template<typename Scalar >
EIGEN_DEVICE_FUNC Scalar expm1 (const Scalar &x)
 
template<typename Scalar >
EIGEN_DEVICE_FUNC Scalar log1p (const Scalar &x)
 

Function Documentation

◆ expm1()

template<typename Scalar >
EIGEN_DEVICE_FUNC Scalar Eigen::internal::std_fallback::expm1 ( const Scalar x)
inline
433  {
435  typedef typename NumTraits<Scalar>::Real RealScalar;
436 
438  Scalar u = exp(x);
439  if (numext::equal_strict(u, Scalar(1))) {
440  return x;
441  }
442  Scalar um1 = u - RealScalar(1);
443  if (numext::equal_strict(um1, Scalar(-1))) {
444  return RealScalar(-1);
445  }
446 
448  Scalar logu = log(u);
449  return numext::equal_strict(u, logu) ? u : (u - RealScalar(1)) * x / logu;
450 }
#define EIGEN_USING_STD(FUNC)
Definition: Macros.h:1090
#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE)
Definition: StaticAssert.h:74
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T log(const T &x)
Definition: MathFunctions.h:1332
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool equal_strict(const X &x, const Y &y)
Definition: Meta.h:571
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T exp(const T &x)
Definition: MathFunctions.h:1424
list x
Definition: plotDoE.py:28
T Real
Definition: NumTraits.h:183

References EIGEN_STATIC_ASSERT_NON_INTEGER, EIGEN_USING_STD, Eigen::numext::equal_strict(), Eigen::numext::exp(), Eigen::numext::log(), and plotDoE::x.

Referenced by Eigen::numext::EIGEN_MATHFUNC_RETVAL(), and Eigen::internal::expm1_impl< Scalar >::run().

◆ log1p()

template<typename Scalar >
EIGEN_DEVICE_FUNC Scalar Eigen::internal::std_fallback::log1p ( const Scalar x)
inline
496  {
498  typedef typename NumTraits<Scalar>::Real RealScalar;
500  Scalar x1p = RealScalar(1) + x;
501  Scalar log_1p = log_impl<Scalar>::run(x1p);
502  const bool is_small = numext::equal_strict(x1p, Scalar(1));
503  const bool is_inf = numext::equal_strict(x1p, log_1p);
504  return (is_small || is_inf) ? x : x * (log_1p / (x1p - RealScalar(1)));
505 }
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317

References EIGEN_STATIC_ASSERT_NON_INTEGER, EIGEN_USING_STD, Eigen::numext::equal_strict(), Eigen::numext::log(), Eigen::internal::log_impl< Scalar >::run(), and plotDoE::x.

Referenced by Eigen::internal::log1p_impl< Scalar >::run(), and Eigen::internal::log1p_impl< std::complex< RealScalar > >::run().