/* Example programs from the book Scientific and Engineering Programming in C++: An Introduction with Advanced Techniques and Examples, Addison-Wesley, 1994. (c) COPYRIGHT INTERNATIONAL BUSINESS MACHINES CORPORATION 1994. ALL RIGHTS RESERVED. See README file for further details. */ #ifndef RigidArithmeticH #define RigidArithmeticH #include "Algebra/DivisionAlgebraCategory.h" #include "Vector/DistributingDivisionAlgebra.h" #include "Vector/DistributingEquivalentCategory.h" #include "Array/RigidArray.h" template class RigidArithmetic1d : public DivisionAlgebraCategory< RigidArithmetic1d, T >, public DistributingDivisionAlgebra,T, T>, public DistributingEquivalentCategory >, public ConcreteRigidArray1d { public: RigidArithmetic1d() : ConcreteRigidArray1d() {} RigidArithmetic1d(Subscript n) : ConcreteRigidArray1d(n) {} RigidArithmetic1d(const RigidArithmetic1d& a) : ConcreteRigidArray1d(a) {} const RigidArithmetic1d& operator=(const RigidArithmetic1d& rhs) { ConcreteRigidArray1d::operator=(rhs); return *this; } const RigidArithmetic1d& operator=(const T& rhs) { ConcreteRigidArray1d::operator=(rhs); return *this; } }; template class RigidArithmetic2d : public DivisionAlgebraCategory< RigidArithmetic2d, T >, public DistributingDivisionAlgebra, T>, public ConcreteRigidArray2d { public: RigidArithmetic2d(Subscript n1, Subscript n2) : ConcreteRigidArray2d(n1, n2) {} const RigidArithmetic2d& operator=(const RigidArithmetic2d& rhs) { ConcreteRigidArray2d::operator=(rhs); return *this; } const RigidArithmetic2d& operator=(const T& rhs) { ConcreteRigidArray2d::operator=(rhs); return *this; } }; #endif