|
template<Operator::Hint H = Operator::Hint::None, class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) && (R::size(0) == R::size(1)) |
| static constexpr auto | cholesky (X &&a) |
| |
| template<class T , Size M, Size N> |
| | JacobiRotation (Tensor< T, M, N > const &a, Index const p, Index const q) -> JacobiRotation< T > |
| |
| template<class V , class T , Size M, Size N> |
| | JacobiRotation (TensorViews::View< T, Sizes< M, N >, V > const &a, Index const p, Index const q) -> JacobiRotation< T > |
| |
| template<class T , Size N> |
| | JacobiRotation (Tensor< T, N > const &a, Index const p, Index const q) -> JacobiRotation< T > |
| |
| template<class V , class T , Size N> |
| | JacobiRotation (TensorViews::View< T, Sizes< N >, V > const &a, Index const p, Index const q) -> JacobiRotation< T > |
| |
| template<class TA , class TB > |
| static constexpr auto | operator== (JacobiRotation< TA > const &a, JacobiRotation< TB > const &b) |
| |
| template<class TA , class TB > |
| static constexpr auto | operator!= (JacobiRotation< TA > const &a, JacobiRotation< TB > const &b) |
| |
| template<class TA , class TB > |
| static constexpr auto | operator* (JacobiRotation< TA > const &a, JacobiRotation< TB > const &b) |
| |
| template<class T > |
| static constexpr auto | transpose (JacobiRotation< T > const &a) |
| |
| template<class T > |
| static constexpr auto | adjoint (JacobiRotation< T > const &a) |
| |
template<class T , class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) && ((IsTensor<R> && !IsReference<X>) || IsAssignable<X>) |
| static constexpr decltype(auto) | apply (JacobiRotation< T > const &r, X &&m, Index const p, Index const q) |
| |
template<class T , class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) && ((IsTensor<R> && !IsReference<X>) || IsAssignable<X>) |
| static constexpr decltype(auto) | apply (X &&m, JacobiRotation< T > const &r, Index const p, Index const q) |
| |
template<class T , class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 1) && ((IsTensor<R> && !IsReference<X>) || IsAssignable<X>) |
| static constexpr decltype(auto) | apply (JacobiRotation< T > const &r, X &&v, Index const p, Index const q) |
| |
template<class T , class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 1) && ((IsTensor<R> && !IsReference<X>) || IsAssignable<X>) |
| static constexpr decltype(auto) | apply (X &&v, JacobiRotation< T > const &r, Index const p, Index const q) |
| |
template<Size B = 32, class X , IsTensorish R = RemoveReference<X>>
requires IsFloat<Value<R>> && (R::Dimension == 2) |
| static constexpr auto | lq (X &&input) |
| |
template<Operator::Hint H = Operator::Hint::None, class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) && (R::size(0) == R::size(1)) |
| static constexpr auto | lu (X &&a) |
| | LU decomposition of a square matrix.
|
| |
template<class Optimizer , class XX , class FF , class FC , class VT >
requires IsInvocable<Optimizer, XX, FF, FC, VT> |
| static constexpr auto | optimize (Optimizer &&optimizer, XX &&x, FF &&function, FC &&callback, VT const &tolerance=NumericLimits< Value< RemoveReference< XX > > >::tolerance()) |
| |
template<class Optimizer , class XX , class FF , class VT >
requires IsInvocable<Optimizer, XX, FF, void(RemoveConstReference<ResultOf<Eval, XX>> const), VT> |
| static constexpr auto | optimize (Optimizer &&optimizer, XX &&x, FF &&function, VT const &tolerance=NumericLimits< Value< RemoveReference< XX > > >::tolerance()) |
| |
template<class Optimizer , class XX , class FF , class FC , class VT >
requires IsInvocable<Optimizer, XX, FF, FC, VT> |
| static constexpr auto | optimize (XX &&x, FF &&function, FC &&callback, VT const &tolerance=NumericLimits< Value< RemoveReference< XX > > >::tolerance()) |
| |
template<class Optimizer , class XX , class FF , class VT >
requires IsInvocable<Optimizer, XX, FF, void(RemoveConstReference<ResultOf<Eval, XX>> const), VT> |
| static constexpr auto | optimize (XX &&x, FF &&function, VT const &tolerance=NumericLimits< Value< RemoveReference< XX > > >::tolerance()) |
| |
template<Size B = 32, class X , IsTensorish R = RemoveReference<X>>
requires IsFloat<Value<R>> && (R::Dimension == 2) |
| static constexpr auto | qr (X &&input) |
| |
template<Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class Solver , class XA , class XB >
requires IsInvocable<Solver, XA, XB> |
| static constexpr decltype(auto) | solve (Solver &&solver, XA &&A, XB &&b) |
| |
template<Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class Solver , class XA , class XB , class XX >
requires IsInvocable<Solver, XA, XB, XX> |
| static constexpr decltype(auto) | solve (Solver &&solver, XA &&A, XB &&b, XX &&x0) |
| |
template<Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class Solver , class XA , class XB , class VT >
requires IsInvocable<Solver, XA, XB, VT> |
| static constexpr decltype(auto) | solve (Solver &&solver, XA &&A, XB &&b, VT const &tolerance) |
| |
template<Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class Solver , class XA , class XB , class XX , class VT >
requires IsInvocable<Solver, XA, XB, XX, VT> |
| static constexpr decltype(auto) | solve (Solver &&solver, XA &&A, XB &&b, XX &&x0, VT const &tolerance) |
| |
template<class Solver , Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class XA , class XB >
requires IsInvocable<Solver, XA, XB> |
| static constexpr decltype(auto) | solve (XA &&A, XB &&b) |
| |
template<class Solver , Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class XA , class XB , class XX >
requires IsInvocable<Solver, XA, XB, XX> |
| static constexpr decltype(auto) | solve (XA &&A, XB &&b, XX &&x0) |
| |
template<class Solver , Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class XA , class XB , class VT >
requires IsInvocable<Solver, XA, XB, VT> |
| static constexpr decltype(auto) | solve (XA &&A, XB &&b, VT const &tolerance) |
| |
template<class Solver , Operator::Transform T = Operator::Transform::None, Operator::Restrict R = Operator::Restrict::None, Operator::Hint H = Operator::Hint::None, class XA , class XB , class XX , class VT >
requires IsInvocable<Solver, XA, XB, XX, VT> |
| static constexpr decltype(auto) | solve (XA &&A, XB &&b, XX &&x0, VT const &tolerance) |
| |
template<class C , IsSubscriptable T, class S = ResultOf<Subscript, T &, Index>>
requires IsInvocable<C, S, S> && IsAssignable<S> |
| static constexpr void | sort (C const &compare, T &a, Size const k=T::size(), Size const d=0) |
| |
template<class C = Less, IsSubscriptable T, class S = ResultOf<Subscript, T &, Index>>
requires IsInvocable<C, S, S> && IsAssignable<S> |
| static constexpr void | sort (T &a, Size const k=T::size(), Size const d=0) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires IsFloat<Value<R>> && (R::Dimension == 2) |
| static constexpr auto | svd (X &&input) |
| |
template<Size C, class X , IsTensorish R = RemoveReference<X>, IsFloat V = Value<R>, IsFloat VT = V>
requires (R::Dimension == 2) && (C < reduce<Min>(typename R::Sizes())) |
| static constexpr auto | svd (X &&input, VT const &tolerance=NumericLimits< VT >::tolerance()) |
| |
template<Size C, class X , IsTensorish R = RemoveReference<X>, IsFloat V = Value<R>, IsFloat VT = V>
requires (R::Dimension == 2) && (C == reduce<Min>(typename R::Sizes())) |
| static constexpr auto | svd (X &&input, VT const &tolerance=NumericLimits< VT >::tolerance()) |
| |
| template<class... Xs> |
| static constexpr auto | forwardAsTuple (Xs &&...args) |
| |
| template<class X > |
| static constexpr AddConst< X > & | asConst (X &a) |
| |
| template<class X > |
| static constexpr RemoveConst< X > | asConst (X &&a) |
| |
| template<class X > |
| static constexpr RemoveConst< X > | as (X &&a) |
| |
| static constexpr auto | reverse (Direction const D) |
| |
| template<IsUnsignedIntegral TA, IsUnsignedIntegral TB> |
| static constexpr auto | bitRotateLeft (TA const value, TB count) |
| |
| template<IsUnsignedIntegral TA, IsUnsignedIntegral TB> |
| static constexpr auto | bitRotateRight (TA const value, TB count) |
| |
| template<IsUnsignedIntegral TA, IsUnsignedIntegral TB> |
| static constexpr auto | ceilDiv (TA const a, TB const b) |
| |
| template<Bool C = true, class X > |
| static constexpr Conditional< C, RemoveConstReference< X >, RemoveConst< X > > | copy (X &&a) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator== (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator== (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator== (TA< Void > const, TB< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator> (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator> (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator> (TA< Void > const, TB< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator>= (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator>= (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator>= (TA< Void > const, TB< Void > const) |
| |
template<class T >
requires IsDefined<Identity<T>> && IsConstructible<Identity<T>> && IsInvocable<Identity<T>> |
| static constexpr auto | identity () |
| |
| static constexpr auto | identity () |
| |
template<class T , class X >
requires IsDefined<Identity<T>> && IsConstructible<Identity<T>> && IsInvocable<Identity<T>, X> |
| static constexpr auto | identity (X &&value) |
| |
| template<Size B, IsUnsignedIntegral T> |
| static constexpr T | iLog (T const a) |
| |
| template<IsIntegral B, IsUnsignedIntegral N> |
| static constexpr B | iPow (B const base, N const exp) |
| |
| template<IsIntegral T> |
| static constexpr auto | isEven (T const a) |
| |
| template<IsIntegral T, T V> |
| static constexpr auto | isEven (Constant< T, V > const) |
| |
| template<IsIntegral T> |
| static constexpr auto | isIdentity (T const a) |
| |
| template<IsIntegral T, T V> |
| static constexpr auto | isIdentity (Constant< T, V > const) |
| |
| template<IsIntegral T> |
| static constexpr auto | isOdd (T const a) |
| |
| template<IsIntegral T, T V> |
| static constexpr auto | isOdd (Constant< T, V > const) |
| |
| template<IsIntegral T> |
| static constexpr auto | isPowerOfTwo (T const v) |
| |
| template<class X , class... Xs> |
| static constexpr auto | isSame (X &&arg, Xs &&...args) |
| |
| template<IsIntegral T> |
| static constexpr auto | isUnit (T const a) |
| |
| template<IsIntegral T, T V> |
| static constexpr auto | isUnit (Constant< T, V > const) |
| |
| template<IsIntegral T> |
| static constexpr auto | isZero (T const a) |
| |
| template<IsIntegral T, T V> |
| static constexpr auto | isZero (Constant< T, V > const) |
| |
| template<IsUnsignedIntegral T> |
| static constexpr T | iSqrt (T const a) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator< (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator< (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator< (TA< Void > const, TB< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator<= (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator<= (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator<= (TA< Void > const, TB< Void > const) |
| |
| template<class X > |
| static constexpr decltype(auto) | max (X &&a) |
| |
template<class XA , class XB >
requires IsInvocable<Greater, XA, XB> |
| static constexpr decltype(auto) | max (XA &&a, XB &&b) |
| |
template<class XA , class XB , class... Xs>
requires IsInvocable<Greater, XA, XB> && (IsInvocable<Greater, ResultOf<Where, ResultOf<Greater, XA, XB>, XA, XB>, Xs> && ...) |
| static constexpr decltype(auto) | max (XA &&a, XB &&b, Xs &&...args) |
| |
| template<class X > |
| static constexpr decltype(auto) | min (X &&a) |
| |
template<class XA , class XB >
requires IsInvocable<Less, XA, XB> |
| static constexpr decltype(auto) | min (XA &&a, XB &&b) |
| |
template<class XA , class XB , class... Xs>
requires IsInvocable<Less, XA, XB> && (IsInvocable<Less, ResultOf<Where, ResultOf<Less, XA, XB>, XA, XB>, Xs> && ...) |
| static constexpr decltype(auto) | min (XA &&a, XB &&b, Xs &&...args) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator!= (X &&a, T< Void > const) |
| |
template<class X , template< class > class T>
requires IsSame<T<Void>, Identity<>> || IsSame<T<Void>, Unit<>> || IsSame<T<Void>, Zero<>> |
| static constexpr auto | operator!= (T< Void > const, X &&b) |
| |
template<template< class > class TA, template< class > class TB>
requires ((IsSame<TA<Void>, Identity<>> || IsSame<TA<Void>, Unit<>> || IsSame<TA<Void>, Zero<>>) && (IsSame<TB<Void>, Identity<>> || IsSame<TB<Void>, Unit<>> || IsSame<TB<Void>, Zero<>>)) |
| static constexpr auto | operator!= (TA< Void > const, TB< Void > const) |
| |
| template<Size N> |
| static auto | print (String< N > const &string, std::FILE *stream) |
| |
| template<class T , T... Is, class S > |
| static auto | print (Sequence< T, Is... > const, S &&stream) |
| |
| template<class S > |
| static auto | print (Direction const direction, S &&stream) |
| |
| template<class S > |
| static auto | print (Context const context, S &&stream) |
| |
template<class T , IsRandomEngine URNG, IsRandomDistribution D>
requires IsDefined<Random<T, URNG, D>> && IsConstructible<Random<T, URNG, D>, URNG &, D &> |
| static constexpr auto | random (URNG &rng, D &distribution) |
| |
template<class T >
requires IsDefined<Unit<T>> && IsConstructible<Unit<T>> && IsInvocable<Unit<T>> |
| static constexpr auto | unit () |
| |
| static constexpr auto | unit () |
| |
template<class T , class X >
requires IsDefined<Unit<T>> && IsConstructible<Unit<T>> && IsInvocable<Unit<T>, X> |
| static constexpr auto | unit (X &&value) |
| |
| template<IsBool TE, class XA , class XB > |
| static constexpr decltype(auto) | where (TE const e, XA &&a, XB &&b) |
| |
template<class T >
requires IsDefined<Zero<T>> && IsConstructible<Zero<T>> |
| static constexpr auto | zero () |
| |
| static constexpr auto | zero () |
| |
| static constexpr auto | operator! (Position const P) |
| |
template<Context C, Size I, Size L, Direction D = Direction::Forwards, Size S = 1, class F , class... Xs>
requires (D == Direction::Forwards || D == Direction::Backwards) && (C == Context::CompileTime) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Context C, Size I, Size L, Direction D = Direction::Forwards, Size S = 1, class F , class... Xs>
requires (D == Direction::Forwards) && (C == Context::RunTime) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Context C, Size I, Size L, Direction D = Direction::Forwards, Size S = 1, class F , class... Xs>
requires (D == Direction::Backwards) && (C == Context::RunTime) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Size I, Size L, Direction D = Direction::Forwards, Size S = 1, class F , class... Xs>
requires (D == Direction::Forwards || D == Direction::Backwards) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Size L, Direction D = Direction::Forwards, Size S = 1, class F , class... Xs>
requires (D == Direction::Forwards || D == Direction::Backwards) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Context C, IsSizes I, IsSizes L, Direction O = Direction::LeftToRight, IsSequence D = decltype(makeConstantSequence<Direction, L::Dimension, Direction::Forwards>()), IsSizes S = decltype(makeConstantSequence<Size, L::Dimension, 1>()), class F , class... Xs>
requires IsSame<Direction, typename D::Type> && (L::Dimension == I::Dimension) && (L::Dimension == D::Dimension) && (L::Dimension == S::Dimension) && (O == Direction::LeftToRight || O == Direction::RightToLeft) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<IsSizes I, IsSizes L, Direction O = Direction::LeftToRight, IsSequence D = decltype(makeConstantSequence<Direction, L::Dimension, Direction::Forwards>()), IsSizes S = decltype(makeConstantSequence<Size, L::Dimension, 1>()), class F , class... Xs>
requires IsSame<Direction, typename D::Type> && (L::Dimension == I::Dimension) && (L::Dimension == D::Dimension) && (L::Dimension == S::Dimension) && (O == Direction::LeftToRight || O == Direction::RightToLeft) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<Context C, IsSizes L, Direction O = Direction::LeftToRight, IsSequence D = decltype(makeConstantSequence<Direction, L::Dimension, Direction::Forwards>()), IsSizes S = decltype(makeConstantSequence<Size, L::Dimension, 1>()), class F , class... Xs>
requires IsSame<Direction, typename D::Type> && (L::Dimension == D::Dimension) && (L::Dimension == S::Dimension) && (O == Direction::LeftToRight || O == Direction::RightToLeft) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
template<IsSizes L, Direction O = Direction::LeftToRight, IsSequence D = decltype(makeConstantSequence<Direction, L::Dimension, Direction::Forwards>()), IsSizes S = decltype(makeConstantSequence<Size, L::Dimension, 1>()), class F , class... Xs>
requires IsSame<Direction, typename D::Type> && (L::Dimension == D::Dimension) && (L::Dimension == S::Dimension) && (O == Direction::LeftToRight || O == Direction::RightToLeft) |
| static constexpr auto | range (F &&f, Xs &&...args) |
| |
| template<class X > |
| | RecursiveLambda (X &&) -> RecursiveLambda< RemoveReference< X > > |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Add, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator+ (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Add, T, T> |
| static constexpr auto | operator+ (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Add, T, T> |
| static constexpr auto | operator+ (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Sub, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator- (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Sub, T, T> |
| static constexpr auto | operator- (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Sub, T, T> |
| static constexpr auto | operator- (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Mul, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator* (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Mul, T, T> |
| static constexpr auto | operator* (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Mul, T, T> |
| static constexpr auto | operator* (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Div, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator/ (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Div, T, T> |
| static constexpr auto | operator/ (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Div, T, T> |
| static constexpr auto | operator/ (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Mod, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator% (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Mod, T, T> |
| static constexpr auto | operator% (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Mod, T, T> |
| static constexpr auto | operator% (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... Is>
requires IsInvocable<Minus, T> |
| static constexpr auto | operator- (Sequence< T, Is... > const) |
| |
| template<class T , T... As, T... Bs> |
| static constexpr auto | operator, (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
| template<IsSequence A, IsSequence B> |
| static constexpr auto | operator== (A const, B const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Equal, T, T> |
| static constexpr auto | operator== (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Equal, T, T> |
| static constexpr auto | operator== (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
| template<IsSequence A, IsSequence B> |
| static constexpr auto | operator!= (A const, B const) |
| |
template<class T , T... As, T B>
requires IsInvocable<NotEqual, T, T> |
| static constexpr auto | operator!= (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<NotEqual, T, T> |
| static constexpr auto | operator!= (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<LessEqual, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator<= (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<LessEqual, T, T> |
| static constexpr auto | operator<= (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<LessEqual, T, T> |
| static constexpr auto | operator<= (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<GreaterEqual, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator>= (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<GreaterEqual, T, T> |
| static constexpr auto | operator>= (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<GreaterEqual, T, T> |
| static constexpr auto | operator>= (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Less, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator< (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Less, T, T> |
| static constexpr auto | operator< (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Less, T, T> |
| static constexpr auto | operator< (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T... Bs>
requires IsInvocable<Greater, T, T> && (sizeof...(As) == sizeof...(Bs)) |
| static constexpr auto | operator> (Sequence< T, As... > const, Sequence< T, Bs... > const) |
| |
template<class T , T... As, T B>
requires IsInvocable<Greater, T, T> |
| static constexpr auto | operator> (Sequence< T, As... > const, Constant< T, B > const) |
| |
template<class T , T A, T... Bs>
requires IsInvocable<Greater, T, T> |
| static constexpr auto | operator> (Constant< T, A > const, Sequence< T, Bs... > const) |
| |
template<class T , T... Seq, class F , class... Xs>
requires IsInvocable<F, Xs..., Constant<T, Seq>...> |
| static constexpr decltype(auto) | expand (Sequence< T, Seq... > const, F &&f, Xs &&...args) |
| |
| template<class T , T N> |
| static constexpr auto | makeSeries () |
| |
| template<class T > |
| static constexpr auto | makeSeriesFor () |
| |
template<class T , class... Ts>
requires (sizeof...(Ts) > 0) |
| static constexpr auto | makeSeriesFor () |
| |
template<class T , T First, T Last, Direction D = Direction::Forwards, T Step = T(1)>
requires (D == Direction::Forwards) |
| static constexpr auto | makeRange () |
| |
template<class T , T First, T Last, Direction D = Direction::Forwards, T Step = T(1)>
requires (D == Direction::Backwards) |
| static constexpr auto | makeRange () |
| |
| template<class T , Size N, T V> |
| static constexpr auto | makeConstantSequence () |
| |
template<class F , class T , T I1, T I2, T... Is>
requires IsInvocable<F, T, T> |
| static constexpr auto | reduce (Sequence< T, I1, I2, Is... > const) |
| |
| template<class F , class T , T I> |
| static constexpr auto | reduce (Sequence< T, I > const) |
| |
| template<class F , class T > |
| static constexpr auto | reduce (Sequence< T > const) |
| |
template<Index... Ps, class T , T... Is>
requires ((sizeof...(Is) == sizeof...(Ps))) && (((Ps < sizeof...(Is)) && ...)) |
| static constexpr auto | permute (Sequence< T, Is... > const) |
| |
| template<class T , T... Is> |
| static constexpr auto | reverse (Sequence< T, Is... > const) |
| |
template<Direction D, Size Step, class T , T... Is>
requires (D == Direction::Leftwards || D == Direction::Rightwards) |
| static constexpr auto | rotate (Sequence< T, Is... > const) |
| |
template<Index O = 0, class T , T... Is, class... Seqs>
requires ((Sequence<T, Is...>::size() == Seqs::size()) && ...) |
| static constexpr auto | zip (Sequence< T, Is... > const, Seqs const ...) |
| |
| template<class F , class T , T... Is> |
| static constexpr auto | filter (Sequence< T, Is... > const) |
| |
template<class F , class T , T... As, T... Bs, class... Seqs>
requires IsInvocable<F, T, T> && (sizeof...(As) == sizeof...(Bs)) && ((sizeof...(As) == Seqs::Dimension) && ...) |
| static constexpr auto | pick (Sequence< T, As... > const, Sequence< T, Bs... > const, Seqs const ...) |
| |
template<Index D, Index... Ds, class T , T... Is>
requires (sizeof...(Ds) < sizeof...(Is) && max(D, Ds...) < sizeof...(Is)) |
| static constexpr auto | chip (Sequence< T, Is... > const) |
| |
| template<class T , T... Is> |
| static constexpr auto | chip (Sequence< T, Is... > const) |
| |
template<Index S, Index... Ss, class T , T... Is>
requires (sizeof...(Ss) < sizeof...(Is) && max(S, Ss...) < sizeof...(Is)) |
| static constexpr auto | select (Sequence< T, Is... > const) |
| |
| template<class T , T... Is> |
| static constexpr auto | select (Sequence< T, Is... > const) |
| |
template<Index B, Index P, class T , T... Is>
requires (sizeof...(Is) % B == 0 && P < B) |
| static constexpr auto | cut (Sequence< T, Is... > const) |
| |
template<Index I, Index L, class T , T... Is>
requires (L <= sizeof...(Is) && I < L) |
| static constexpr auto | trim (Sequence< T, Is... > const) |
| |
template<class F = Less, class T , T I, T... Is>
requires IsPredicate<F, T, T> |
| static constexpr auto | sort (Sequence< T, I, Is... > const) |
| |
template<class T , T From, T... Froms, T To, T... Tos, T P, T... Ps>
requires (sizeof...(Froms) == sizeof...(Tos) && sizeof...(Froms) == sizeof...(Ps)) |
| static constexpr auto | getPermutation (Sequence< T, From, Froms... > const, Sequence< T, To, Tos... > const, Sequence< T, P, Ps... > const) |
| |
template<class T , T... Froms, T... Tos>
requires (sizeof...(Froms) == sizeof...(Tos)) |
| static constexpr auto | getPermutation (Sequence< T, Froms... > const, Sequence< T, Tos... > const) |
| |
| template<class T , T... Froms> |
| static constexpr auto | getPermutation (Sequence< T, Froms... > const) |
| |
| template<class T , T N, T... Ps> |
| static constexpr auto | integerFactorization (Constant< T, N > const, Sequence< T, Ps... > const =Sequence< T >()) |
| |
| | String (char const &) -> String< 1 > |
| |
| template<Size N> |
| | String (char const (&)[N]) -> String< N - 1 > |
| |
| template<Size M, Size N> |
| static constexpr auto | operator+ (String< M > const &lhs, String< N > const &rhs) |
| |
| template<Size M, Size N> |
| static constexpr auto | operator+ (String< M > const &lhs, char const (&rhs)[N]) |
| |
| template<Size M, Size N> |
| static constexpr auto | operator+ (char const (&lhs)[M], String< N > const &rhs) |
| |
| template<class T > |
| static constexpr auto | name () |
| |
| template<IsFloat T> |
| | Complex (T const &) -> Complex< T > |
| |
| template<IsFloat R, IsFloat I> |
| | Complex (R const &, I const &) -> Complex< Common< R, I > > |
| |
| template<IsComplex T> |
| static constexpr auto | abs (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | acos (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | acosh (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator+ (TA const &a, TB const &b) |
| |
| template<IsComplex T> |
| static constexpr auto | arg (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | asin (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | asinh (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | atan (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | atanh (T const &a) |
| |
| template<IsValue C, IsComplex T> |
| static constexpr auto | cast (T const &a) |
| |
template<class X >
requires IsComplex<RemoveReference<X>> |
| static constexpr decltype(auto) | complexify (X &&a) |
| |
| template<IsComplex T> |
| static constexpr auto | conj (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | cos (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | cosh (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | delta (TA const &a, TB const &b) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator/ (TA const &a, TB const &b) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator== (TA const &a, TB const &b) |
| |
template<class X >
requires IsComplex<RemoveReference<X>> |
| static constexpr decltype(auto) | eval (X &&a) |
| |
| template<IsComplex T> |
| static constexpr auto | exp (T const &a) |
| |
template<class X >
requires IsComplex<RemoveReference<X>> |
| static constexpr decltype(auto) | imag (X &&a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | innerProduct (TA const &a, TB const &b) |
| |
| template<IsComplex T> |
| static constexpr auto | log (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | log10 (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | log2 (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | operator- (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator* (TA const &a, TB const &b) |
| |
template<Index P, Index Q = P, IsComplex T>
requires (P == 1 && Q == 1) |
| static constexpr auto | norm (T const &a) |
| |
template<Index P, Index Q, IsComplex T>
requires (P == 2 && Q == 1) |
| static constexpr auto | norm (T const &a) |
| |
template<Index P = 2, Index Q = P, IsComplex T>
requires (P == 2 && Q == 2) |
| static constexpr auto | norm (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator!= (TA const &a, TB const &b) |
| |
| template<IsComplex T> |
| static constexpr auto | operator+ (T const &a) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | polar (TA const &rho, TB const &theta) |
| |
| template<IsComplex X, IsComplex Y> |
| static constexpr auto | pow (X const &x, Y const &y) |
| |
| template<IsComplex T, class S > |
| static auto | print (T const &value, S &&stream) |
| |
| template<IsComplex T> |
| static constexpr auto | rcp (T const &b) |
| |
template<class X >
requires IsComplex<RemoveReference<X>> |
| static constexpr decltype(auto) | real (X &&a) |
| |
| template<Size D = 0, IsComplex T> |
| static constexpr auto | round (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | scalarProduct (TA const &a, TB const &b) |
| |
| template<IsComplex T> |
| static constexpr auto | sign (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | sin (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | sinh (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | sqrt (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | square (T const &a) |
| |
| template<IsComplex TA, IsComplex TB> |
| static constexpr auto | operator- (TA const &a, TB const &b) |
| |
| template<IsComplex T> |
| static constexpr auto | tan (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | tanh (T const &a) |
| |
| template<IsComplex T> |
| static constexpr auto | trunc (T const &a) |
| |
| static constexpr auto | isProperAlignment (Size const alignment) |
| |
template<Size S, Size P = cMaxDefaultAlignment>
requires (isProperAlignment(P)) |
| static consteval auto | alignment () |
| |
| static auto | alloc (Size size, Size const alignment=cMaxDefaultAlignment) |
| |
| static auto | dealloc (void *ptr) |
| |
| template<class T , Size N> |
| | CommonArray (T const (&)[N]) -> CommonArray< Allocation::Stack, T, N > |
| |
template<Allocation A1, Allocation A2, class TA , class TB , Size... Ns>
requires IsInvocable<Equal, TA, TB> |
| static constexpr auto | operator== (CommonArray< A1, TA, Ns... > const &lhs, CommonArray< A2, TB, Ns... > const &rhs) |
| |
template<Allocation A1, Allocation A2, class TA , class TB , Size... Ns>
requires IsPredicate<Equal, CommonArray<A1, TA, Ns...>, CommonArray<A2, TA, Ns...>> |
| static constexpr auto | operator!= (CommonArray< A1, TA, Ns... > const &lhs, CommonArray< A2, TB, Ns... > const &rhs) |
| |
| template<class S > |
| static auto | print (Allocation const alloc, S &&stream) |
| |
| template<Size... Ns, class S > |
| static auto | print (Subscripts< Ns... > const &a, S &&stream) |
| |
| template<Allocation A, class T , Size... Ns, class S > |
| static auto | print (CommonArray< A, T, Ns... > const &arg, S &&stream) |
| |
| template<Size... Ns> |
| static constexpr auto | operator+ (Subscripts< Ns... > const &lhs, Subscripts< Ns... > const &rhs) |
| |
| template<Size... Ns> |
| static constexpr auto | operator- (Subscripts< Ns... > const &lhs, Subscripts< Ns... > const &rhs) |
| |
template<Size... Ns, Size... Ss>
requires (sizeof...(Ns) == sizeof...(Ss)) |
| static constexpr auto | operator* (Subscripts< Ns... > const &lhs, Sizes< Ss... > const) |
| |
template<Size... Ns, Size... Ss>
requires (sizeof...(Ns) == sizeof...(Ss)) |
| static constexpr auto | operator* (Sizes< Ss... > const, Subscripts< Ns... > const &rhs) |
| |
template<Size... Ns, Size... Ss>
requires (sizeof...(Ns) == sizeof...(Ss)) |
| static constexpr auto | operator/ (Subscripts< Ns... > const &lhs, Sizes< Ss... > const) |
| |
template<Size... Ns, Size... Ss>
requires (sizeof...(Ns) == sizeof...(Ss)) |
| static constexpr auto | operator% (Subscripts< Ns... > const &lhs, Sizes< Ss... > const) |
| |
| template<Size... Ns> |
| static constexpr auto | operator== (Subscripts< Ns... > const &lhs, Subscripts< Ns... > const &rhs) |
| |
| template<Size... Ns> |
| static constexpr auto | operator!= (Subscripts< Ns... > const &lhs, Subscripts< Ns... > const &rhs) |
| |
template<Index... Ps, Size... Ns>
requires requires { permute<Ps...>(makeSeriesFor<Index, Ns...>()); } |
| static constexpr auto | permute (Subscripts< Ns... > const &arg) |
| |
| template<Size... Ns> |
| static constexpr auto | reverse (Subscripts< Ns... > const &arg) |
| |
template<Direction D, Size Step, Size... Ns>
requires requires { rotate<D, Step>(makeSeriesFor<Index, Ns...>()); } |
| static constexpr auto | rotate (Subscripts< Ns... > const &arg) |
| |
template<Index... Ds, Size... Ns>
requires requires { chip<Ds...>(Sequence<Index, Ns...>()); } |
| static constexpr auto | chip (Subscripts< Ns... > const &arg) |
| |
| template<class T > |
| static constexpr auto | name () |
| |
| template<class T , T V, class S > |
| static auto | print (Constant< T, V > const, S &&stream) |
| |
| static auto | print (Bool const value, std::FILE *stream) |
| |
| template<IsIntegral T> |
| static auto | print (T const value, std::FILE *stream) |
| |
| static auto | print (char const *const string, std::FILE *stream) |
| |
| static auto | print (std::string const &string, std::FILE *stream) |
| |
| template<class... Ps> |
| static constexpr auto | help (Ps &&...parameters) |
| |
template<Context C, class T , class A , class N , class D >
requires (C == Context::CompileTime || C == Context::RunTime) && requires { String(declval<A>()); String(declval<N>()); String(declval<D>()); } |
| static constexpr auto | parameter (A &&argument, N &&name, D &&description, T const &defaultValue) |
| |
template<Context C, class T , class A , class N , class D >
requires (C == Context::CompileTime || C == Context::RunTime) && requires { String(declval<A>()); String(declval<N>()); String(declval<D>()); } |
| static constexpr auto | parameter (A &&argument, N &&name, D &&description) |
| |
template<Context C, class T , class A , class N , class D >
requires (C == Context::RunTime) && requires { String(declval<A>()); String(declval<N>()); String(declval<D>()); } |
| static constexpr auto | parameter (A &&argument, N &&name, D &&description, T(*convert)(char const *const)) |
| |
template<Context C, class T , class A , class N , class D >
requires (C == Context::RunTime) && requires { String(declval<A>()); String(declval<N>()); String(declval<D>()); } |
| static constexpr auto | parameter (A &&argument, N &&name, D &&description, T(*convert)(char const *const), T const &defaultValue) |
| |
template<class N , class D , class... Ps>
requires requires { Logging::log(declval<N>()); Logging::log(declval<D>()); } |
| static constexpr auto | parse (int const argc, char const *const *const argv, N &&appName, D &&appDescription, Ps &...parameters) |
| |
| template<class... Ps> |
| static constexpr auto | report (Ps &&...parameters) |
| |
| template<class T , class... Ts> |
| static auto | optimizationBarrier (const T &basic, Ts &...basics) |
| |
| static Float< 64 > | getTimeInSeconds () |
| |
template<IsFloat T, IsRandomEngine RNG>
requires (RNG::max() - RNG::min() < NumericLimits<Size>::max()) |
| static constexpr auto | generateCanonical (RNG &rng) |
| |
| template<class T > |
| constexpr auto | operator== (GaussianDistribution< T > const &lhs, GaussianDistribution< T > const &rhs) |
| |
| template<class T > |
| constexpr auto | operator!= (GaussianDistribution< T > const &lhs, GaussianDistribution< T > const &rhs) |
| |
| template<class T > |
| constexpr auto | operator== (LaplaceDistribution< T > const &lhs, LaplaceDistribution< T > const &rhs) |
| |
| template<class T > |
| constexpr auto | operator!= (LaplaceDistribution< T > const &lhs, LaplaceDistribution< T > const &rhs) |
| |
| template<class T > |
| constexpr auto | operator== (UniformDistribution< T > const &lhs, UniformDistribution< T > const &rhs) |
| |
| template<class T > |
| constexpr auto | operator!= (UniformDistribution< T > const &lhs, UniformDistribution< T > const &rhs) |
| |
| template<Size N, class S > |
| static auto | print (SeedSequence< N > const &seq, S &&stream) |
| |
| template<class... Ts> |
| | SeedSequence (Ts &&...) -> SeedSequence< sizeof...(Ts)> |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Abs>, X> |
| static constexpr auto | abs (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Acos>, X> |
| static constexpr auto | acos (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Acosh>, X> |
| static constexpr auto | acosh (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Add>, XA, XB> |
| static constexpr auto | operator+ (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Arg>, X> |
| static constexpr auto | arg (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Asin>, X> |
| static constexpr auto | asin (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Asinh>, X> |
| static constexpr auto | asinh (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Atan>, X> |
| static constexpr auto | atan (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Atan2>, XA, XB> |
| static constexpr auto | atan2 (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Atanh>, X> |
| static constexpr auto | atanh (X &&a) |
| |
| template<class X , IsTensorish R = RemoveReference<X>> |
| static constexpr auto | backwards (X &&a) |
| |
template<Size... Bs, class X , IsConvertible< Index >... Os, IsTensorish R = RemoveReference<X>>
requires (sizeof...(Bs) == R::Dimension && sizeof...(Os) == R::Dimension && typename R::Sizes() % Sizes<Bs...>() == Constant<Size, 0>()) |
| static constexpr auto | block (X &&a, Os const ... offsets) |
| |
template<Size... Bs, class X , IsTensorish R = RemoveReference<X>>
requires (sizeof...(Bs) == R::Dimension) |
| static constexpr auto | broadcast (X &&a) |
| |
template<class C , class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Cast<C>>, X> |
| static constexpr auto | cast (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Ceil>, X> |
| static constexpr auto | ceil (X &&a) |
| |
template<Index... Ds, class X , IsConvertible< Index >... Is, IsTensorish R = RemoveReference<X>>
requires (sizeof...(Is) == sizeof...(Ds)) && requires { chip<Ds...>(typename R::Sizes()); } |
| static constexpr auto | chip (X &&a, Is const ... indices) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Complexify>, X> |
| static constexpr auto | complexify (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Conj>, X> |
| static constexpr auto | conj (X &&a) |
| |
template<Index... Is, class X , IsTensorish R = RemoveReference<X>>
requires (isEven(sizeof...(Is)) && sizeof...(Is) <= R::Dimension) && (max(Is...) < R::Dimension) && (cut<2, 0>(select<Is...>(typename R::Sizes())) == cut<2, 1>(select<Is...>(typename R::Sizes()))) |
| static constexpr auto | contract (X &&a) |
| |
template<Index... Is, class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (isEven(sizeof...(Is)) && sizeof...(Is) / 2 <= min(RA::Dimension, RB::Dimension)) && (reduce<Max>(cut<2, 0>(Sizes<Is...>())) < RA::Dimension && reduce<Max>(cut<2, 1>(Sizes<Is...>())) < RB::Dimension) && (expand(cut<2, 0>(Sizes<Is...>()), [](auto const... indices) { return select<indices...>(typename RA::Sizes()); }) == expand(cut<2, 1>(Sizes<Is...>()), [](auto const... indices) { return select<indices...>(typename RB::Sizes()); })) |
| static constexpr auto | contract (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Cos>, X> |
| static constexpr auto | cos (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Cosh>, X> |
| static constexpr auto | cosh (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Delta>, XA, XB> |
| static constexpr auto | delta (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (RA::Dimension == RB::Dimension) && HasCommon<typename RA::Type, typename RB::Type> |
| static constexpr auto | directSum (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Div>, XA, XB> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Equal>, XA, XB> |
| static constexpr auto | operator== (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensor<RemoveReference<X>> |
| static constexpr decltype(auto) | eval (X &&a) |
| |
template<class X >
requires IsTensorView<RemoveReference<X>> |
| static constexpr auto | eval (X &&a) |
| |
template<Index... Es, class F , class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && (sizeof...(Xs) > 0) && ((select<Es...>(typename TupleElement<0, Tuple<RemoveReference<Xs>...>>::Sizes()) == select<Es...>(typename RemoveReference<Xs>::Sizes())) && ...) && IsInvocable<F, ResultOf<Chip<Es...>, Xs, decltype(Es)...>...> |
| static constexpr auto | exclude (F &&f, Xs &&...args) |
| |
template<class F , Index... Es, class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && requires { exclude<Es...>(declval<F>(), declval<Xs>()...); } |
| static constexpr auto | exclude (Xs &&...args) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Exp>, X> |
| static constexpr auto | exp (X &&a) |
| |
template<Index K, class X , IsTensorish R = RemoveReference<X>>
requires (K < R::Dimension) |
| static constexpr auto | flatten (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Floor>, X> |
| static constexpr auto | floor (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<FMod>, XA, XB> |
| static constexpr auto | fmod (XA &&a, XB &&b) |
| |
template<Position P, class X , IsTensorish R = RemoveReference<X>>
requires (P == Position::Left) && IsInvocable<Unfolding<R::Dimension - 2>, X> |
| static constexpr auto | folding (X &&a) |
| |
template<Position P, class X , IsTensorish R = RemoveReference<X>>
requires (P == Position::Right) && IsInvocable<Unfolding<0>, X> |
| static constexpr auto | folding (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Greater>, XA, XB> |
| static constexpr auto | operator> (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<GreaterEqual>, XA, XB> |
| static constexpr auto | operator>= (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Mul>, XA, XB> |
| static constexpr auto | hadamardProduct (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Imag>, X> |
| static constexpr auto | imag (X &&a) |
| |
template<Size... Is, class X , IsTensorish R = RemoveReference<X>>
requires (sizeof...(Is) == R::Dimension) |
| static constexpr auto | inflate (X &&a) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires IsInvocable<ScalarProduct, ResultOf<Conj, XA>, XB> |
| static constexpr auto | innerProduct (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (RA::Dimension == RB::Dimension) && IsInvocable<Mul, ResultOf<XA, typename RA::Subscripts>, ResultOf<XB, typename RB::Subscripts>> |
| static constexpr auto | kroneckerProduct (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Less>, XA, XB> |
| static constexpr auto | operator< (XA &&a, XB &&b) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<LessEqual>, XA, XB> |
| static constexpr auto | operator<= (XA &&a, XB &&b) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension > 0) |
| static constexpr auto | linearize (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Log>, X> |
| static constexpr auto | log (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Log10>, X> |
| static constexpr auto | log10 (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Log2>, X> |
| static constexpr auto | log2 (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<LogicalAnd>, XA, XB> |
| static constexpr auto | operator&& (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<LogicalNot>, X> |
| static constexpr auto | operator! (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<LogicalOr>, XA, XB> |
| static constexpr auto | operator|| (XA &&a, XB &&b) |
| |
template<class F , class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && (sizeof...(Xs) > 0) && (IsSame<typename TupleElement<0, Tuple<RemoveReference<Xs>...>>::Sizes, typename RemoveReference<Xs>::Sizes> && ...) && IsInvocable<F, ResultOf<Xs, typename RemoveReference<Xs>::Subscripts>...> |
| static constexpr auto | loop (F &&f, Xs &&...args) |
| |
template<class F , class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && requires { loop(declval<F>(), declval<Xs>()...); } |
| static constexpr auto | loop (Xs &&...args) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Minus>, X> |
| static constexpr auto | operator- (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Mod>, XA, XB> |
| static constexpr auto | operator% (XA &&a, XB &&b) |
| |
template<Index... Ns, class F , class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && (sizeof...(Xs) > 0) && ((chip<Ns...>(typename TupleElement<0, Tuple<RemoveReference<Xs>...>>::Sizes()) == chip<Ns...>(RemoveReference<Xs>::Sizes())) && ...) |
| static constexpr auto | narrow (F &&f, Xs &&...args) |
| |
template<class F , Index... Ns, class... Xs>
requires (IsTensorish<RemoveReference<Xs>> && ...) && requires { narrow<Ns...>(declval<F>(), declval<Xs>()...); } |
| static constexpr auto | exclude (Xs &&...args) |
| |
template<Index P, Index Q = P, class X >
requires IsTensorish<RemoveReference<X>> && (Q == 1) && IsInvocable<Loop<Norm<P, 1>>, X> |
| static constexpr auto | norm (X &&a) |
| |
template<Index P = 2, Index Q = P, class X >
requires IsTensorish<RemoveReference<X>> && (Q == 2) && IsInvocable<Loop<Norm<P, 1>>, X> |
| static constexpr auto | norm (X &&a) |
| |
template<Index P, Index Q, class X >
requires IsTensorish<RemoveReference<X>> && (Q == 0 && P != 0) && IsInvocable<Loop<Norm<P, P>>, X> |
| static constexpr auto | norm (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<NotEqual>, XA, XB> |
| static constexpr auto | operator!= (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires IsInvocable<TensorProduct, XA, ResultOf<Conj, XB>> |
| static constexpr auto | outerProduct (XA &&a, XB &&b) |
| |
template<Index... Ps, class X , IsTensorish R = RemoveReference<X>>
requires requires { permute<Ps...>(typename R::Sizes()); } |
| static constexpr auto | permute (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Plus>, X> |
| static constexpr auto | operator+ (X &&a) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Pow>, XA, XB> |
| static constexpr auto | pow (XA &&a, XB &&b) |
| |
template<class X , class S , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 0) |
| static void | print (X &&arg, S &&stream) |
| |
| template<class X , class S , IsTensorish R = RemoveReference<X>> |
| static void | print (X &&arg, S &&stream) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Rcp>, X> |
| static constexpr auto | rcp (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Real>, X> |
| static constexpr auto | real (X &&a) |
| |
template<class F , Index... Is, class X , IsTensorish R = RemoveReference<X>, class E = ResultOf<X, typename R::Subscripts>>
requires (sizeof...(Is) <= R::Dimension && max(Is...) < R::Dimension) && IsInvocable<F, E, E> && IsInvocable<F, decltype(F::template Identity<typename R::Type>()), E> && requires { chip<Is...>(typename R::Sizes()); } |
| static constexpr auto | reduce (X &&a) |
| |
template<class F , class X , IsTensorish R = RemoveReference<X>, class E = ResultOf<X, typename R::Subscripts>>
requires IsInvocable<F, E, E> && IsInvocable<F, decltype(F::template Identity<typename R::Type>()), E> |
| static constexpr auto | reduce (X &&a) |
| |
template<Size... Ns, class X , IsTensorish R = RemoveReference<X>>
requires (Sizes<Ns...>::size() == R::size()) |
| static constexpr auto | reshape (X &&a) |
| |
template<Bool... Rs, class X , IsTensorish R = RemoveReference<X>>
requires (sizeof...(Rs) == R::Dimension) |
| static constexpr auto | reverse (X &&a) |
| |
template<Direction D, Size S = 1, class X , IsTensorish R = RemoveReference<X>>
requires (D == Direction::Leftwards || D == Direction::Rightwards) |
| static constexpr auto | rotate (X &&a) |
| |
template<Size D = 0, class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Round<D>>, X> |
| static constexpr auto | round (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires IsInvocable<Reshape<>, X> |
| static constexpr auto | scalar (X &&a) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires IsInvocable<HadamardProduct, XA, XB> |
| static constexpr auto | scalarProduct (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (RA::Dimension == 0 || RB::Dimension == 0) && IsInvocable<TensorProduct, XA, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (RA::Dimension == 0 && RB::Dimension != 0) && IsInvocable<Div, typename RB::template ChangeType<typename RA::Type>, XB> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (RA::Dimension != 0 && RB::Dimension == 0) && IsInvocable<Div, XA, typename RA::template ChangeType<typename RB::Type>> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires IsDefined<Tensor<RB>> && IsInvocable<Mul, XA, Tensor<RB>> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires IsDefined<Tensor<RA>> && IsInvocable<Mul, Tensor<RA>, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires IsDefined<Tensor<RB>> && IsInvocable<Div, XA, Tensor<RB>> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires IsDefined<Tensor<RA>> && IsInvocable<Div, Tensor<RA>, XB> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Sign>, X> |
| static constexpr auto | sign (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Sin>, X> |
| static constexpr auto | sin (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Sinh>, X> |
| static constexpr auto | sinh (X &&a) |
| |
template<Size... Es, class X , IsConvertible< Index >... Os, IsTensorish R = RemoveReference<X>>
requires (sizeof...(Es) == R::Dimension && sizeof...(Os) == R::Dimension && Sizes<Es...>() <= typename R::Sizes()) |
| static constexpr auto | slice (X &&a, Os const ... offsets) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Sqrt>, X> |
| static constexpr auto | sqrt (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Square>, X> |
| static constexpr auto | square (X &&a) |
| |
| template<class X , IsTensorish R = RemoveReference<X>> |
| static constexpr auto | squeeze (X &&a) |
| |
template<Size... Ss, class X , IsConvertible< Index >... Os, IsTensorish R = RemoveReference<X>>
requires (sizeof...(Ss) == R::Dimension && sizeof...(Os) == R::Dimension && typename R::Sizes() % Sizes<Ss...>() == Constant<Size, 0>()) |
| static constexpr auto | stride (X &&a, Os const ... offsets) |
| |
template<class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Sub>, XA, XB> |
| static constexpr auto | operator- (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>, class EA = ResultOf<XA, typename RA::Subscripts>, class EB = ResultOf<XB, typename RB::Subscripts>>
requires IsSame<typename RA::Sizes, typename RB::Sizes> && IsInvocable<Swap, EA, EB> && IsInvocable<View, XA> && IsInvocable<View, XB> |
| static constexpr auto | swap (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Tan>, X> |
| static constexpr auto | tan (X &&a) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Tanh>, X> |
| static constexpr auto | tanh (X &&a) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>, class EA = ResultOf<XA, typename RA::Subscripts>, class EB = ResultOf<XB, typename RB::Subscripts>>
requires IsInvocable<Mul, EA, EB> |
| static constexpr auto | tensorProduct (XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Loop<Trunc>, X> |
| static constexpr auto | trunc (X &&a) |
| |
template<Index K, class X , IsTensorish R = RemoveReference<X>>
requires (K + 1 < R::Dimension) |
| static constexpr auto | unfolding (X &&a) |
| |
template<class X >
requires IsTensorView<RemoveReference<X>> |
| static constexpr decltype(auto) | view (X &&a) |
| |
| template<class T , Size... Ns> |
| static constexpr auto | view (Tensor< T, Ns... > const &a) |
| |
| template<class T , Size... Ns> |
| static constexpr auto | view (Tensor< T, Ns... > &a) |
| |
| template<class T , Size... Ns> |
| static constexpr auto | view (Tensor< T, Ns... > const &&)=delete |
| |
template<class XE , class XA , class XB >
requires IsTensorish<RemoveReference<XE>> && IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Loop<Where>, XE, XA, XB> |
| static constexpr auto | where (XE &&e, XA &&a, XB &&b) |
| |
template<class X >
requires IsTensorish<RemoveReference<X>> && IsInvocable<Transpose, X> |
| static constexpr auto | adjoint (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, Operator::Restrict OR = Operator::Restrict::None, Operator::Hint OH = Operator::Hint::None, class XA , class XB >
requires IsTensorish<RemoveReference<XA>> && IsTensorish<RemoveReference<XB>> && IsInvocable<Transform<OT>, XA> && IsInvocable<Mul, ResultOf<Restrict<OR>, ResultOf<Transform<OT>, XA>>, XB> |
| static constexpr auto | apply (XA &&a, XB &&b) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (isEven(R::Dimension)) |
| static constexpr auto | diagonal (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (isEven(R::Dimension)) |
| static constexpr auto | extractDiagonal (X &&a) |
| |
template<Size... Ds, class X , IsTensorish R = RemoveReference<X>>
requires (isEven(sizeof...(Ds))) && (sizeof...(Ds) / 2 == R::Dimension) && (cut<2, 0>(Sizes<Ds...>()) == typename R::Sizes() || cut<2, 1>(Sizes<Ds...>()) == typename R::Sizes()) |
| static constexpr auto | fromDiagonal (X &&a) |
| |
| template<class X , IsTensorish R = RemoveReference<X>> |
| static constexpr auto | fromDiagonal (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<Diagonal, X> |
| static constexpr auto | isDiagonal (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<LowerTriangular, X> |
| static constexpr auto | isLowerTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<OffDiagonal, X> |
| static constexpr auto | isOffDiagonal (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<Adjoint, X> |
| static constexpr auto | isSelfAdjoint (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<StrictlyLowerTriangular, X> |
| static constexpr auto | isStrictlyLowerTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<StrictlyUpperTriangular, X> |
| static constexpr auto | isStrictlyUpperTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<Transpose, X> |
| static constexpr auto | isSymmetric (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<UnitLowerTriangular, X> |
| static constexpr auto | isUnitLowerTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<UnitUpperTriangular, X> |
| static constexpr auto | isUnitUpperTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<Adjoint, X> |
| static constexpr auto | isUnitary (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsInvocable<UpperTriangular, X> |
| static constexpr auto | isUpperTriangular (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | lowerTriangular (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension > 0 && isEven(R::Dimension)) |
| static constexpr auto | matricize (X &&a) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (isEven(RA::Dimension)) && (RA::Dimension / 2 == RB::Dimension) && IsSame<decltype(cut<2, 1>(typename RA::Sizes())), typename RB::Sizes> && IsInvocable<Contract<RB::Dimension, 0>, XA, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (isEven(RB::Dimension)) && (RA::Dimension == RB::Dimension / 2) && IsSame<typename RA::Sizes, decltype(cut<2, 0>(typename RB::Sizes()))> && IsInvocable<Contract<0, 0>, XA, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , IsTensorish RA = RemoveReference<XA>, IsTensorish RB = RemoveReference<XB>>
requires (isEven(RA::Dimension)) && (isEven(RB::Dimension)) && (RA::Dimension == RB::Dimension) && IsSame<decltype(cut<2, 1>(typename RA::Sizes())), decltype(cut<2, 0>(typename RB::Sizes()))> && IsInvocable<Contract<RA::Dimension / 2, 0>, XA, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (isEven(R::Dimension)) |
| static constexpr auto | offDiagonal (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::Diagonal) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::LowerTriangular) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::StrictlyLowerTriangular) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::UpperTriangular) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::StrictlyUpperTriangular) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::OffDiagonal) |
| static constexpr auto | restrict (X &&a) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires IsTensorish<RemoveReference<X>> && (OR == Operator::Restrict::None) |
| static constexpr decltype(auto) | restrict (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | strictlyLowerTriangular (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | strictlyUpperTriangular (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires IsInvocable<ExtractDiagonal, X> |
| static constexpr auto | trace (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires IsTensorish<RemoveReference<X>> && (OT == Operator::Transform::Transpose) |
| static constexpr auto | transform (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires IsTensorish<RemoveReference<X>> && (OT == Operator::Transform::Adjoint) |
| static constexpr auto | transform (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires IsTensorish<RemoveReference<X>> && (OT == Operator::Transform::None) |
| static constexpr decltype(auto) | transform (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (isEven(R::Dimension)) |
| static constexpr auto | transpose (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | unitLowerTriangular (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | unitUpperTriangular (X &&a) |
| |
template<class X , IsTensorish R = RemoveReference<X>>
requires (R::Dimension == 2) |
| static constexpr auto | upperTriangular (X &&a) |
| |
| template<class F , class T , Size... Ns> |
| | Tensor (TensorViews::View< T, Sizes< Ns... >, F > const &) -> Tensor< T, Ns... > |
| |
| static constexpr auto | isnan (BFloat16 const a) |
| |
| | Float (Float< 16 >::Fundamental const) -> Float< 16 > |
| |
| | Float (Float< 32 >::Fundamental const) -> Float< 32 > |
| |
| | Float (Float< 64 >::Fundamental const) -> Float< 64 > |
| |
| template<IsValue T> |
| static constexpr auto | abs (T const &a) |
| |
template<class XA , class XB >
requires IsInvocable<Sub, XA, XB> && IsInvocable<Norm<>, ResultOf<Sub, XA, XB>> |
| static constexpr auto | absoluteError (XA &&a, XB &&b) |
| |
| template<IsFloat T> |
| static constexpr auto | acos (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | acosh (T const a) |
| |
| template<IsFloat TA, IsFloat TB> |
| static constexpr auto | operator+ (TA const &a, TB const &b) |
| |
| template<IsFloat T> |
| static constexpr auto | arg (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | asin (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | asinh (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | atan (T const &a) |
| |
| template<IsFloat Y, IsFloat X> |
| static constexpr auto | atan2 (Y const &y, X const &x) |
| |
| template<IsFloat T> |
| static constexpr auto | atanh (T const &a) |
| |
template<IsValue C, IsValue T>
requires IsConstructible<C, typename T::Fundamental> |
| static constexpr auto | cast (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | ceil (T const a) |
| |
template<IsValue T>
requires IsConstructible<Complex<T>, T> |
| static constexpr auto | complexify (T const &a) |
| |
| template<IsValue T> |
| static constexpr auto | conj (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | cos (T const a) |
| |
| template<IsFloat T> |
| static constexpr auto | cosh (T const &a) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | delta (TA const &a, TB const &b) |
| |
template<IsValue TA, IsValue TB>
requires IsUnsignedInteger<TA> || IsUnsignedInteger<TB> |
| static constexpr auto | delta (TA const &a, TB const &b) |
| |
| template<IsFloat TA, IsFloat TB> |
| static constexpr auto | operator/ (TA const &a, TB const &b) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator== (TA const &a, TB const &b) |
| |
template<class X >
requires IsValue<RemoveReference<X>> || IsBool<RemoveReference<X>> |
| static constexpr decltype(auto) | eval (X &&a) |
| |
| template<IsFloat T> |
| static constexpr auto | exp (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | floor (T const &a) |
| |
| template<IsFloat TA, IsFloat TB> |
| static constexpr auto | fmod (TA const &a, TB const &b) |
| |
template<class F , Bool E = false, Direction D = Direction::Forwards, class X >
requires (D == Direction::Forwards || D == Direction::Backwards) |
| static constexpr decltype(auto) | fold (X &&a) |
| |
template<class F , Bool E = false, Direction D = Direction::Forwards, class XA , class XB >
requires IsInvocable<F, XA, XB> && (D == Direction::Forwards || D == Direction::Backwards) |
| static constexpr decltype(auto) | fold (XA &&a, XB &&b) |
| |
template<class F , Bool E = false, Direction D = Direction::Forwards, class XA , class XB , class... Xs>
requires IsInvocable<F, XA, XB> && ((D == Direction::Forwards || D == Direction::Backwards) && sizeof...(Xs) > 0) && requires { fold<F, E, D>(fold<F, E, D>(declval<XA>(), declval<XB>()), declval<Xs>()...); } |
| static constexpr decltype(auto) | fold (XA &&a, XB &&b, Xs &&...args) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator> (TA const &a, TB const &b) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator>= (TA const &a, TB const &b) |
| |
| template<IsValue T> |
| static constexpr auto | imag (T const) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | innerProduct (TA const &a, TB const &b) |
| |
template<class XE , class XA , IsValue TT = Value<RemoveReference<XE>>>
requires IsInvocable<RelativeError, XE, XA> |
| static constexpr auto | isApprox (XE &&expected, XA &&approx, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
| template<IsFloat T> |
| static constexpr auto | isFinite (T const &a) |
| |
template<class X , class R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsDefined<Identity<R>> && IsConstructible<Identity<R>> && IsInvocable<RelativeError, decltype(identity<R>()), X> |
| static constexpr auto | isIdentity (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
| template<IsFloat T> |
| static constexpr auto | isNaN (T const &a) |
| |
template<class X , class R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsDefined<Unit<R>> && IsConstructible<Unit<R>> && IsInvocable<RelativeError, decltype(unit<R>()), X> |
| static constexpr auto | isUnit (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
template<class X , class R = RemoveReference<X>, IsValue TT = Value<R>>
requires IsDefined<Zero<R>> && IsConstructible<Zero<R>> && IsInvocable<AbsoluteError, decltype(zero<R>()), X> |
| static constexpr auto | isZero (X &&a, TT const &tolerance=NumericLimits< TT >::tolerance()) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator< (TA const &a, TB const &b) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator<= (TA const &a, TB const &b) |
| |
| template<IsFloat T> |
| static constexpr auto | log (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | log10 (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | log2 (T const &a) |
| |
template<class... Xs>
requires IsInvocable<Fold<Add>, Xs...> |
| static constexpr auto | mean (Xs &&...args) |
| |
| template<IsFloat T> |
| static constexpr auto | operator- (T const &a) |
| |
| template<IsInteger TA, IsInteger TB> |
| static constexpr auto | operator% (TA const &a, TB const &b) |
| |
| template<IsFloat TA, IsFloat TB> |
| static constexpr auto | operator* (TA const &a, TB const &b) |
| |
template<Index P, Index Q, IsValue T>
requires (P == 2 && Q == 1) |
| static constexpr auto | norm (T const &a) |
| |
template<Index P = 2, Index Q = P, IsValue T>
requires (P == Q) |
| static constexpr auto | norm (T const &a) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | operator!= (TA const &a, TB const &b) |
| |
| template<IsFloat T> |
| static constexpr T | pi () |
| |
| static constexpr auto | pi () |
| |
| template<IsFloat T> |
| static constexpr auto | operator+ (T const &a) |
| |
| template<IsFloat B, IsFloat N> |
| static constexpr auto | pow (B const &base, N const &exp) |
| |
| template<IsFloat T> |
| static auto | print (T const &value, std::FILE *stream) |
| |
| template<IsValue T> |
| static constexpr auto | rcp (T const &a) |
| |
template<class X >
requires IsValue<RemoveReference<X>> |
| static constexpr decltype(auto) | real (X &&a) |
| |
template<class XE , class XA >
requires IsInvocable<AbsoluteError, XE, XA> && IsInvocable<Norm<>, XE> |
| static constexpr auto | relativeError (XE &&expected, XA &&approx) |
| |
template<Size D = 0, Position P = Position::Right, IsFloat T>
requires (P == Position::Right) || (P == Position::Left) |
| static constexpr auto | round (T const &a) |
| |
| template<IsValue TA, IsValue TB> |
| static constexpr auto | scalarProduct (TA const &a, TB const &b) |
| |
| template<IsValue T> |
| static constexpr auto | sign (T const &a) |
| |
template<IsValue T>
requires IsUnsignedInteger<T> |
| static constexpr auto | sign (T const &a) |
| |
| template<IsFloat T> |
| static constexpr auto | sin (T const a) |
| |
| template<IsFloat T> |
| static constexpr auto | sinh (T const a) |
| |
| template<IsFloat T> |
| static constexpr auto | sqrt (T const &a) |
| |
| template<IsValue T> |
| static constexpr auto | square (T const &a) |
| |
| template<IsFloat TA, IsFloat TB> |
| static constexpr auto | operator- (TA const &a, TB const &b) |
| |
| template<IsFloat T> |
| static constexpr auto | tan (T const a) |
| |
| template<IsFloat T> |
| static constexpr auto | tanh (T const a) |
| |
| template<IsFloat T> |
| static constexpr auto | trunc (T const &a) |
| |
| | Integer (Integer< true, 8 >::Fundamental const) -> Integer< true, 8 > |
| |
| | Integer (Integer< true, 16 >::Fundamental const) -> Integer< true, 16 > |
| |
| | Integer (Integer< true, 32 >::Fundamental const) -> Integer< true, 32 > |
| |
| | Integer (Integer< true, 64 >::Fundamental const) -> Integer< true, 64 > |
| |
| | Integer (Integer< false, 8 >::Fundamental const) -> Integer< false, 8 > |
| |
| | Integer (Integer< false, 16 >::Fundamental const) -> Integer< false, 16 > |
| |
| | Integer (Integer< false, 32 >::Fundamental const) -> Integer< false, 32 > |
| |
| | Integer (Integer< false, 64 >::Fundamental const) -> Integer< false, 64 > |
| |
template<Position P, class X , IsTensorish R = RemoveReference<X>>
requires (P == Position::Left) |
| static constexpr auto | orthogonalize (X &&a) |
| |
template<Position P, class X , IsTensorish R = RemoveReference<X>>
requires (P == Position::Right) |
| static constexpr auto | orthogonalize (X &&a) |
| |
template<Size C, Position P, class X , IsTensorish R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (C < reduce<Min>(RemoveReference<decltype(folding<!P>( declval<X>()))>::Sizes())) && (P == Position::Right) |
| static constexpr auto | truncate (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<Size C, Position P, class X , IsTensorish R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (C < reduce<Min>(RemoveReference<decltype(folding<!P>( declval<X>()))>::Sizes())) && (P == Position::Left) |
| static constexpr auto | truncate (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
| template<Size C, Position P, class X , IsTensorish R = RemoveReference<X>, IsFloat VT = Value<R>> |
| static constexpr auto | truncate (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<class X , class R = RemoveReference<X>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsInvocable<Loop<Conj>, X> |
| static constexpr auto | conj (X &&a) |
| |
template<class F , class... Xs>
requires ((TensorTrain::IsTensorish<RemoveReference<Xs>> || TensorTrain::IsOperatorish<RemoveReference<Xs>>) && ...) && (sizeof...(Xs) > 0) && (isSame(RemoveReference<Xs>::Dimension...)) && requires { declval<F>().template operator()<0>( declval<Xs>().template core<0>()...); } |
| static constexpr auto | enumerate (F &&f, Xs &&...args) |
| |
template<class F , class... Xs>
requires ((TensorTrain::IsTensorish<RemoveReference<Xs>> || TensorTrain::IsOperatorish<RemoveReference<Xs>>) && ...) && requires { enumerate(declval<F>(), declval<Xs>()...); } |
| static constexpr auto | enumerate (Xs &&...args) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires ((TensorTrain::IsTensorish<RA> && TensorTrain::IsTensorish<RB>) || (TensorTrain::IsOperatorish<RA> && TensorTrain::IsOperatorish<RB>)) && IsInvocable<Conj, XA> && IsInvocable<ScalarProduct, ResultOf<Conj, XA>, XB> |
| static constexpr auto | innerProduct (XA &&a, XB &&b) |
| |
template<class F , class... Xs>
requires ((TensorTrain::IsTensorish<RemoveReference<Xs>> || TensorTrain::IsOperatorish<RemoveReference<Xs>>) && ...) && (sizeof...(Xs) > 0) && (isSame(RemoveReference<Xs>::Dimension...)) && requires { declval<F>()(declval<Xs>().template core<0>()...); } |
| static constexpr auto | loop (F &&f, Xs &&...args) |
| |
template<class F , class... Xs>
requires ((TensorTrain::IsTensorish<RemoveReference<Xs>> || TensorTrain::IsOperatorish<RemoveReference<Xs>>) && ...) && requires { loop(declval<F>(), declval<Xs>()...); } |
| static constexpr auto | loop (Xs &&...args) |
| |
template<class X , class R = RemoveReference<X>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) |
| static constexpr auto | operator- (X &&a) |
| |
template<Index P = 2, Index Q = P, class X , class R = RemoveReference<X>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && (P == 2 && Q == 2) |
| static constexpr auto | norm (X &&a) |
| |
template<class X , class R = RemoveReference<X>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsInvocable<Loop<Plus>, X> |
| static constexpr auto | operator+ (X &&a) |
| |
template<class X , class S , class R = RemoveReference<X>>
requires TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R> |
| static void | print (X &&arg, S &&stream) |
| |
template<IsSizes Ranks, class X , class R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsFloat<Value<R>> && (Ranks::Dimension == R::Dimension - 1) |
| static constexpr auto | round (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<class X , class R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsFloat<Value<R>> |
| static constexpr auto | round (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<Size C, class X , class R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsFloat<Value<R>> |
| static constexpr auto | round (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<Size... Cs, class X , class R = RemoveReference<X>, IsFloat VT = Value<R>>
requires (TensorTrain::IsTensorish<R> || TensorTrain::IsOperatorish<R>) && IsFloat<Value<R>> && (sizeof...(Cs) > 1) && (sizeof...(Cs) == R::Dimension - 1) |
| static constexpr auto | round (X &&a, VT const &tolerance=NumericLimits< VT >::epsilon()) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (TensorTrain::IsTensorish<RA> || TensorTrain::IsOperatorish<RA>) && (IsValue<RB> || IsComplex<RB>) && IsInvocable<Mul, typename RA::Type, RB const &> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (IsValue<RA> || IsComplex<RA>) && (TensorTrain::IsTensorish<RB> || TensorTrain::IsOperatorish<RB>) && IsInvocable<Mul, RA const &, typename RB::Type> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (TensorTrain::IsTensorish<RA> || TensorTrain::IsOperatorish<RA>) && (IsValue<RB> || IsComplex<RB>) && IsInvocable<Div, typename RA::Type, RB const &> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (TensorTrain::IsTensorish<RA> || TensorTrain::IsOperatorish<RA>) && IsTensorish<RB> && IsInvocable<Mul, XA, typename RB::Type> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires IsTensorish<RA> && (TensorTrain::IsTensorish<RB> || TensorTrain::IsOperatorish<RB>) && IsInvocable<Mul, typename RA::Type, XB> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (TensorTrain::IsTensorish<RA> || TensorTrain::IsOperatorish<RA>) && IsTensorish<RB> && IsInvocable<Div, XA, typename RB::Type> |
| static constexpr auto | operator/ (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires ((TensorTrain::IsTensorish<RA> && TensorTrain::IsTensorish<RB>) || (TensorTrain::IsOperatorish<RA> && TensorTrain::IsOperatorish<RB>)) && IsInvocable<Minus, XB> && IsInvocable<Add, XA, ResultOf<Minus, XB>> |
| static constexpr auto | operator- (XA &&a, XB &&b) |
| |
template<class XA , class XB , TensorTrain::IsOperatorish RA = RemoveReference<XA>, TensorTrain::IsOperatorish RB = RemoveReference<XB>>
requires IsSame<typename RA::Sizes, typename RB::Sizes> |
| static constexpr auto | operator+ (XA &&a, XB &&b) |
| |
template<class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && IsInvocable<Transpose, X> && IsInvocable<Conj, ResultOf<Transpose, X>> |
| static constexpr auto | adjoint (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, Operator::Restrict OR = Operator::Restrict::None, Operator::Hint OH = Operator::Hint::None, class XA , class XB , TensorTrain::IsOperatorish RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires (TensorTrain::IsOperatorish<RB> || TensorTrain::IsTensorish<RemoveReference<XB>>) && IsInvocable<Transform<OT>, XA> && IsInvocable<Mul, ResultOf<Restrict<OR>, ResultOf<Transform<OT>, XA>>, XB> |
| static constexpr auto | apply (XA &&a, XB &&b) |
| |
| template<class X , TensorTrain::IsOperatorish R = RemoveReference<X>> |
| static constexpr auto | backwards (X &&a) |
| |
template<class X >
requires TensorTrain::IsOperator<RemoveReference<X>> |
| static constexpr decltype(auto) | eval (X &&a) |
| |
template<class X >
requires TensorTrain::IsOperatorView<RemoveReference<X>> |
| static constexpr auto | eval (X &&a) |
| |
template<class XA , class XB , TensorTrain::IsOperatorish RA = RemoveReference<XA>, TensorTrain::IsOperatorish RB = RemoveReference<XB>>
requires IsSame<typename RA::Sizes, typename RB::Sizes> |
| static constexpr auto | hadamardProduct (XA &&a, XB &&b) |
| |
template<class XA , class XB , TensorTrain::IsOperatorish RA = RemoveReference<XA>, TensorTrain::IsTensorish RB = RemoveReference<XB>>
requires IsSame<typename RA::N, typename RB::N> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<class XA , class XB , TensorTrain::IsTensorish RA = RemoveReference<XA>, TensorTrain::IsOperatorish RB = RemoveReference<XB>>
requires IsSame<typename RA::N, typename RB::M> |
| static constexpr auto | operator* (XA &&a, XB &&b) |
| |
template<Operator::Restrict OR = Operator::Restrict::None, class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && (OR == Operator::Restrict::None) |
| static constexpr decltype(auto) | restrict (X &&a) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires TensorTrain::IsOperatorish<RA> && TensorTrain::IsOperatorish<RB> && IsInvocable<HadamardProduct, XA, XB> |
| static constexpr auto | scalarProduct (XA &&a, XB &&b) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && (OT == Operator::Transform::Transpose) |
| static constexpr auto | transform (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && (OT == Operator::Transform::Adjoint) |
| static constexpr auto | transform (X &&a) |
| |
template<Operator::Transform OT = Operator::Transform::None, class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && (OT == Operator::Transform::None) |
| static constexpr auto | transform (X &&a) |
| |
template<class X >
requires TensorTrain::IsOperatorish<RemoveReference<X>> && IsInvocable<Loop<Permute<0, 2, 1, 3>>, X> |
| static constexpr auto | transpose (X &&a) |
| |
template<class X >
requires TensorTrain::IsOperatorView<RemoveReference<X>> |
| static constexpr decltype(auto) | view (X &&a) |
| |
| template<class T , class M , class N , class R > |
| static constexpr auto | view (TensorTrain::Operator< T, M, N, R > const &a) |
| |
| template<class T , class M , class N , class R > |
| static constexpr auto | view (TensorTrain::Operator< T, M, N, R > &a) |
| |
| template<class T , class M , class N , class R > |
| static constexpr auto | view (TensorTrain::Operator< T, M, N, R > const &&)=delete |
| |
| template<class T , Size... Ms, Size... Ns, class R > |
| | Tensor (TensorTrain::Operator< T, Sizes< Ms... >, Sizes< Ns... >, R > const &) -> Tensor< T, Ms..., Ns... > |
| |
| template<class T , Size... Ms, Size... Ns, class R , class F > |
| | Tensor (TensorTrain::OperatorViews::View< T, Sizes< Ms... >, Sizes< Ns... >, R, F > const &) -> Tensor< T, Ms..., Ns... > |
| |
template<class XA , class XB , TensorTrain::IsTensorish RA = RemoveReference<XA>, TensorTrain::IsTensorish RB = RemoveReference<XB>>
requires IsSame<typename RA::Sizes, typename RB::Sizes> |
| static constexpr auto | operator+ (XA &&a, XB &&b) |
| |
| template<class X , TensorTrain::IsTensorish R = RemoveReference<X>> |
| static constexpr auto | backwards (X &&a) |
| |
template<class X >
requires TensorTrain::IsTensor<RemoveReference<X>> |
| static constexpr decltype(auto) | eval (X &&a) |
| |
template<class X >
requires TensorTrain::IsTensorView<RemoveReference<X>> |
| static constexpr auto | eval (X &&a) |
| |
template<class XA , class XB , TensorTrain::IsTensorish RA = RemoveReference<XA>, TensorTrain::IsTensorish RB = RemoveReference<XB>>
requires IsSame<typename RA::Sizes, typename RB::Sizes> |
| static constexpr auto | hadamardProduct (XA &&a, XB &&b) |
| |
template<class XA , class XB , class RA = RemoveReference<XA>, class RB = RemoveReference<XB>>
requires TensorTrain::IsTensorish<RA> && TensorTrain::IsTensorish<RB> && IsInvocable<HadamardProduct, XA, XB> |
| static constexpr auto | scalarProduct (XA &&a, XB &&b) |
| |
template<class X >
requires TensorTrain::IsTensorView<RemoveReference<X>> |
| static constexpr decltype(auto) | view (X &&a) |
| |
| template<class T , class N , class R > |
| static constexpr auto | view (TensorTrain::Tensor< T, N, R > const &a) |
| |
| template<class T , class N , class R > |
| static constexpr auto | view (TensorTrain::Tensor< T, N, R > &a) |
| |
| template<class T , class N , class R > |
| static constexpr auto | view (TensorTrain::Tensor< T, N, R > const &&)=delete |
| |
| template<class T , Size... Ns, class R > |
| | Tensor (TensorTrain::Tensor< T, Sizes< Ns... >, R > const &) -> Tensor< T, Ns... > |
| |
| template<class T , Size... Ns, class R , class F > |
| | Tensor (TensorTrain::TensorViews::View< T, Sizes< Ns... >, R, F > const &) -> Tensor< T, Ns... > |
| |