[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]
![]() |
Algebraic Concepts | ![]() |
---|
The algebraic concepts describe requirements for algebraic types, that is for types that support arithmetic operations. The built-in types are concepts of AlgebraicField and DivisionAlgebra.
Assignable
, Default Constructible
, Equality Comparable
and Strict Weakly Comparable
as defined in the C++ standard (cf. the Standard Template Library documentation).
ModelOfAlgebraicRing a, b; NumericTraits<ModelOfAlgebraicRing>::Promote c; ModelOfAlgebraicRing zero = NumericTraits<ModelOfAlgebraicRing>::zero(); b += a; b -= a; b = -a; c = a + b; c = a - b; c = a; a = NumericTraits<ModelOfAlgebraicRing>::fromPromote(c); assert(a + zero == a); assert(a + b == b + a); assert(a - b == a + (-b));
ModelOfAlgebraicRing1 a; ModelOfAlgebraicRing2 b; PromoteTraits<ModelOfAlgebraicRing1, ModelOfAlgebraicRing2>::Promote c; c = a + b;
ModelOfAlgebraicRing a, b; NumericTraits<ModelOfAlgebraicRing>::RealPromote c; ModelOfAlgebraicRing one = NumericTraits<ModelOfAlgebraicRing>::one(); b *= a; c = a * b; c = a; a = NumericTraits<ModelOfAlgebraicRing>::fromRealPromote(c); assert(a * one == a);
ModelOfAlgebraicField a, b; typename NumericTraits<ModelOfAlgebraicField>::RealPromote c; ModelOfAlgebraicField zero = NumericTraits<ModelOfAlgebraicField>::zero(); if(a != zero) b /= a; if(a != zero) c = b / a;
Assignable
, Default Constructible
and Equality Comparable
as defined in the C++ standard (cf. the Standard Template Library documentation).
ModelOfAlgebraicRing a, b; NumericTraits<ModelOfAlgebraicRing>::Promote c; ModelOfAlgebraicRing zero = NumericTraits<ModelOfAlgebraicRing>::zero(); b += a; b -= a; b = -a; c = a + b; c = a - b; c = a; a = NumericTraits<ModelOfAlgebraicRing>::fromPromote(c); assert(a + zero == a); assert(a + b == b + a); assert(a - b == a + (-b));
ModelOfAlgebraicRing1 a; ModelOfAlgebraicRing2 b; PromoteTraits<ModelOfAlgebraicRing1, ModelOfAlgebraicRing2>::Promote c; c = a + b;
ModelOfAlgebraicRing a; double f; NumericTraits<ModelOfAlgebraicRing>::RealPromote c; a *= f; c = a * f; c = f * a; if(f != 0.0) a /= f; if(f != 0.0) c = a / f; c = a; a = NumericTraits<ModelOfAlgebraicRing>::fromRealPromote(c);
© Ullrich Köthe (koethe@informatik.uni-hamburg.de) |
html generated using doxygen and Python
|