15 #ifndef _PASL_DATA_ALGEBRA_H_
16 #define _PASL_DATA_ALGEBRA_H_
104 template <
class Algebra1,
class Algebra2>
117 algebra1_type::has_inverse
118 && algebra2_type::has_inverse;
122 algebra2_type::identity());
132 algebra2_type::inverse(x.
value2));
147 template <
class Algebra>
150 assert(Algebra::has_inverse);
151 return combine(x, Algebra::inverse(y));
static value_type inverse(value_type)
static constexpr bool has_inverse
static value_type identity()
static value_type identity()
typename Algebra1::value_type value1_type
static value_type combine(value_type x, value_type y)
static constexpr bool has_inverse
static constexpr bool has_inverse
[int_group_under_addition_and_negation]
static value_type inverse(value_type x)
static value_type combine(value_type, value_type)
Definitions of a few standard measure functors.
static value_type combine(value_type x, value_type y)
measured_pair< Measured1, Measured2 > make_measured_pair(Measured1 m1, Measured2 m2)
static value_type inverse(value_type x)
static value_type identity()
typename Algebra2::value_type value2_type
Algebra::value_type subtract(typename Algebra::value_type x, typename Algebra::value_type y)
[combiner]