12#ifndef ARCCORE_ALINA_VALUETYPEINTERFACE_H
13#define ARCCORE_ALINA_VALUETYPEINTERFACE_H
29namespace Arcane::Alina::math
33template <
class T,
class Enable =
void>
40template <
class T,
class Enable =
void>
47template <
class T,
class Enable =
void>
54template <
class T,
class S,
class Enable =
void>
61template <
class T,
class Enable =
void>
66template <
class T,
class Enable =
void>
71template <
class T,
class Enable =
void>
77template <
typename ValueType,
class Enable =
void>
90template <
typename ValueType,
class Enable =
void>
103template <
typename ValueType,
class Enable =
void>
106 static typename scalar_of<ValueType>::type get(
ValueType x)
114template <
typename ValueType,
class Enable =
void>
125template <
typename ValueType,
class Enable =
void>
130 return x == zero_impl<ValueType>::get();
136template <
typename ValueType,
class Enable =
void>
147template <
typename ValueType,
class Enable =
void>
150 static ValueType get(
typename scalar_of<ValueType>::type c)
158template <
typename ValueType,
class Enable =
void>
163 return identity_impl<ValueType>::get() / x;
168template <
typename ValueType>
169typename adjoint_impl<ValueType>::return_type
172 return adjoint_impl<ValueType>::get(x);
176template <
typename ValueType>
177typename inner_product_impl<ValueType>::return_type
180 return inner_product_impl<ValueType>::get(x, y);
184template <
typename ValueType>
185typename scalar_of<ValueType>::type norm(
const ValueType& a)
187 return norm_impl<ValueType>::get(a);
191template <
typename ValueType>
194 return zero_impl<ValueType>::get();
198template <
typename ValueType>
199bool is_zero(
const ValueType& x)
201 return is_zero_impl<ValueType>::get(x);
205template <
typename ValueType>
208 return identity_impl<ValueType>::get();
212template <
typename ValueType>
213ValueType constant(
typename scalar_of<ValueType>::type c)
215 return constant_impl<ValueType>::get(c);
219template <
typename ValueType>
220ValueType inverse(
const ValueType& x)
222 return inverse_impl<ValueType>::get(x);
Default implementation for conjugate transpose.
Default implementation for the constant element.
Element type of a non-scalar type.
Default implementation for the identity element.
Default implementation for inner product.
Default implementation of inversion operation.
Whether the value type is a statically sized matrix.
Default implementation for zero check.
Default implementation for element norm.
Replace scalar type in the static matrix.
RHS type corresponding to a non-scalar type.
Scalar type of a non-scalar type.
Number of columns for statically sized matrix types.
Number of rows for statically sized matrix types.
Default implementation for the zero element.