35#ifndef _BLAZE_MATH_EXPRESSIONS_SVECNORMEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_SVECNORMEXPR_H_
107decltype(
auto) norm_backend(
const SparseVector<VT,TF>& sv, Abs
abs, Power power, Root root )
109 using CT = CompositeType_t<VT>;
110 using ET = ElementType_t<VT>;
111 using PT = RemoveCVRef_t< decltype( power( abs( std::declval<ET>() ) ) ) >;
112 using RT = RemoveCVRef_t< decltype( evaluate( root( std::declval<PT>() ) ) ) >;
114 if( (*sv).size() == 0UL )
return RT{};
118 const auto end( tmp.end() );
119 auto element( tmp.begin() );
121 if( element ==
end )
return RT{};
123 PT
norm( power(
abs( element->value() ) ) );
126 for( ; element!=
end; ++element ) {
127 norm += power(
abs( element->value() ) );
323 return norm_backend( *sv,
Abs(), UnaryPow(
Pow(), p ), UnaryPow(
Pow(),
inv( p ) ) );
355 using Norm =
typename TypeAt< Norms,
min( P-1UL, 4UL ) >::Type;
357 return Norm()( *sv );
Header file for auxiliary alias declarations.
Header file for run time assertion macros.
Header file for the Bind2nd functor.
Header file for the evaluate shim.
Header file for the function trace functionality.
Header file for the invert shim.
Header file for the L1Norm functor.
Header file for the L2Norm functor.
Header file for the L3Norm functor.
Header file for the L4Norm functor.
Header file for the LpNorm functor.
Header file for the multiplication trait.
Header file for the Noop functor.
Header file for the RemoveCVRef type trait.
Header file for the SqrAbs functor.
Header file for the type list functionality.
Header file for the UnderlyingBuiltin type trait.
Base class for sparse vectors.
Definition: SparseVector.h:72
Header file for the SparseVector base class.
Header file for the Abs functor.
Header file for the Cbrt functor.
Header file for the Pow2 functor.
Header file for the Pow3 functor.
Header file for the Pow functor.
Header file for the Qdrt functor.
Header file for the Sqrt functor.
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1339
decltype(auto) max(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise maximum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1375
decltype(auto) abs(const DenseMatrix< MT, SO > &dm)
Applies the abs() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1296
decltype(auto) inv(const DenseMatrix< MT, SO > &dm)
Calculation of the inverse of the given dense matrix.
Definition: DMatInvExpr.h:405
bool isZero(const DenseMatrix< MT, SO > &dm)
Checks if the given dense matrix is a zero matrix.
Definition: DenseMatrix.h:1819
typename MultTrait< T1, T2 >::Type MultTrait_t
Auxiliary alias declaration for the MultTrait class template.
Definition: MultTrait.h:165
MT::ResultType evaluate(const Matrix< MT, SO > &matrix)
Evaluates the given matrix expression.
Definition: Matrix.h:1282
MT::Iterator end(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:584
#define BLAZE_USER_ASSERT(expr, msg)
Run time assertion macro for user checks.
Definition: Assert.h:117
decltype(auto) maxNorm(const SparseVector< VT, TF > &sv)
Computes the maximum norm for the given sparse vector.
Definition: SVecNormExpr.h:405
decltype(auto) l4Norm(const SparseVector< VT, TF > &sv)
Computes the L4 norm for the given sparse vector.
Definition: SVecNormExpr.h:283
decltype(auto) norm(const SparseVector< VT, TF > &sv)
Computes the L2 norm for the given sparse vector.
Definition: SVecNormExpr.h:153
decltype(auto) sqrLength(const SparseVector< VT, TF > &sv)
Calculation of the square length (magnitude) of the sparse vector .
Definition: SVecNormExpr.h:452
decltype(auto) linfNorm(const SparseVector< VT, TF > &sv)
Computes the infinity norm for the given sparse vector.
Definition: SVecNormExpr.h:379
decltype(auto) length(const SparseVector< VT, TF > &sv)
Calculation of the length (magnitude) of the sparse vector .
Definition: SVecNormExpr.h:471
decltype(auto) minNorm(const SparseVector< VT, TF > &sv)
Computes the minimum norm for the given sparse vector.
Definition: SVecNormExpr.h:431
decltype(auto) l3Norm(const SparseVector< VT, TF > &sv)
Computes the L3 norm for the given sparse vector.
Definition: SVecNormExpr.h:257
decltype(auto) l2Norm(const SparseVector< VT, TF > &sv)
Computes the L2 norm for the given sparse vector.
Definition: SVecNormExpr.h:231
decltype(auto) lpNorm(const SparseVector< VT, TF > &sv)
Computes the Lp norm for the given sparse vector.
Definition: SVecNormExpr.h:350
decltype(auto) sqrNorm(const SparseVector< VT, TF > &sv)
Computes the squared L2 norm for the given sparse vector.
Definition: SVecNormExpr.h:179
decltype(auto) l1Norm(const SparseVector< VT, TF > &sv)
Computes the L1 norm for the given sparse vector.
Definition: SVecNormExpr.h:205
#define BLAZE_STATIC_ASSERT_MSG(expr, msg)
Compile time assertion macro.
Definition: StaticAssert.h:123
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Header file for the isZero shim.
Generic wrapper for the abs() function.
Definition: Abs.h:85
Generic wrapper for an operation with fixed 2nd argument.
Definition: Bind2nd.h:66
Generic wrapper for the cbrt() function.
Definition: Cbrt.h:83
Generic wrapper for the null function.
Definition: Noop.h:62
Generic wrapper for the pow2() function.
Definition: Pow2.h:80
Generic wrapper for the pow3() function.
Definition: Pow3.h:80
Generic wrapper for the pow() function.
Definition: Pow.h:65
Generic wrapper for the qdrt() function.
Definition: Qdrt.h:84
Generic wrapper for the squared abs() function.
Definition: SqrAbs.h:86
Generic wrapper for the sqrt() function.
Definition: Sqrt.h:85
Indexing a type list.
Definition: TypeAt.h:75
Implementation of a type list.
Definition: TypeList.h:120