MCPcopy Create free account
hub / github.com/VectorDB-NTU/RaBitQ-Library / expm1

Function expm1

include/rabitqlib/third/Eigen/src/Core/MathFunctions.h:653–670  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

651 // attributed to Kahan. See: http://www.plunk.org/~hatch/rightway.php.
652 template<typename Scalar>
653 EIGEN_DEVICE_FUNC inline Scalar expm1(const Scalar& x) {
654 EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
655 typedef typename NumTraits<Scalar>::Real RealScalar;
656
657 EIGEN_USING_STD(exp);
658 Scalar u = exp(x);
659 if (numext::equal_strict(u, Scalar(1))) {
660 return x;
661 }
662 Scalar um1 = u - RealScalar(1);
663 if (numext::equal_strict(um1, Scalar(-1))) {
664 return RealScalar(-1);
665 }
666
667 EIGEN_USING_STD(log);
668 Scalar logu = log(u);
669 return numext::equal_strict(u, logu) ? u : (u - RealScalar(1)) * x / logu;
670 }
671}
672
673template<typename Scalar>

Callers 2

pexpm1Function · 0.70
runMethod · 0.70

Calls 4

equal_strictFunction · 0.85
runFunction · 0.85
expFunction · 0.70
logFunction · 0.70

Tested by

no test coverage detected