[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | 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     (ullrich.koethe@iwr.uni-heidelberg.de)  | 
html generated using doxygen and Python
 |