10 #ifndef EIGEN_STABLENORM_H
11 #define EIGEN_STABLENORM_H
20 template <
typename ExpressionType,
typename Scalar>
22 Scalar maxCoeff = bl.cwiseAbs().maxCoeff();
24 if (maxCoeff > scale) {
29 scale =
Scalar(1) / invScale;
38 }
else if (maxCoeff != maxCoeff)
46 ssq += (bl * invScale).squaredNorm();
49 template <
typename VectorType,
typename RealScalar>
51 const Index blockSize = 4096;
55 for (
Index i = 0;
i < blockEnd;
i += blockSize) {
63 template <
typename VectorType>
65 std::enable_if_t<VectorType::IsVectorAtCompileTime>* = 0) {
79 return scale *
sqrt(ssq);
82 template <
typename MatrixType>
84 std::enable_if_t<!MatrixType::IsVectorAtCompileTime>* = 0) {
93 return scale *
sqrt(ssq);
96 template <
typename Derived>
111 static const int ibeta = std::numeric_limits<RealScalar>::radix;
127 const Derived& vec(_vec.
derived());
134 for (
Index j = 0;
j < vec.outerSize(); ++
j) {
135 for (
typename Derived::InnerIterator iter(vec,
j); iter; ++iter) {
145 if (amed != amed)
return amed;
158 amed =
sqrt(asml) / s1m;
160 return sqrt(asml) / s1m;
165 if (asml <= abig *
relerr)
183 template <
typename Derived>
197 template <
typename Derived>
207 template <
typename Derived>
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
#define EIGEN_PREDICT_FALSE(x)
Definition: Macros.h:1179
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
boost::multiprecision::number< boost::multiprecision::cpp_dec_float< 100 >, boost::multiprecision::et_on > Real
Definition: boostmultiprec.cpp:77
RealScalar hypotNorm() const
Definition: StableNorm.h:208
RealScalar blueNorm() const
Definition: StableNorm.h:198
RealScalar stableNorm() const
Definition: StableNorm.h:184
Index outerSize() const
Definition: SparseMatrix.h:166
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
Derived::RealScalar relerr(const MatrixBase< Derived > &A, const MatrixBase< OtherDerived > &B)
Definition: matrix_functions.h:54
double eps
Definition: crbond_bessel.cc:24
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
VectorType::RealScalar stable_norm_impl(const VectorType &vec, std::enable_if_t< VectorType::IsVectorAtCompileTime > *=0)
Definition: StableNorm.h:64
void stable_norm_impl_inner_step(const VectorType &vec, RealScalar &ssq, RealScalar &scale, RealScalar &invScale)
Definition: StableNorm.h:50
NumTraits< typename traits< Derived >::Scalar >::Real blueNorm_impl(const EigenBase< Derived > &_vec)
Definition: StableNorm.h:97
void stable_norm_kernel(const ExpressionType &bl, Scalar &ssq, Scalar &scale, Scalar &invScale)
Definition: StableNorm.h:21
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
Definition: MathFunctions.h:926
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE std::enable_if_t< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typename NumTraits< T >::Real > abs(const T &x)
Definition: MathFunctions.h:1355
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE EIGEN_CONSTEXPR T round_down(T a, U b)
Definition: MathFunctions.h:1266
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition: MathFunctions.h:920
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition: MathFunctions.h:1102
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: Eigen_Colamd.h:49
ax
Definition: plotDoE.py:39
Definition: EigenBase.h:33
constexpr EIGEN_DEVICE_FUNC Derived & derived()
Definition: EigenBase.h:49
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: ForwardDeclarations.h:320
Definition: fft_test_shared.h:66
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2