![]() |
Prev | Next | numeric_type.cpp | Headings |
# include <cppad/cppad.hpp> namespace { // Empty namespace // ------------------------------------------------------------------- class MyType { private: double d; public: // constructor from void MyType(void) : d(0.) { } // constructor from an int MyType(int d_) : d(d_) { } // copy constructor MyType(const MyType &x) { d = x.d; } // assignment operator void operator = (const MyType &x) { d = x.d; } // member function that converts to double double Double(void) const { return d; } // unary plus MyType operator + (void) const { MyType x; x.d = d; return x; } // unary plus MyType operator - (void) const { MyType x; x.d = - d; return x; } // binary addition MyType operator + (const MyType &x) const { MyType y; y.d = d + x.d ; return y; } // binary subtraction MyType operator - (const MyType &x) const { MyType y; y.d = d - x.d ; return y; } // binary multiplication MyType operator * (const MyType &x) const { MyType y; y.d = d * x.d ; return y; } // binary division MyType operator / (const MyType &x) const { MyType y; y.d = d / x.d ; return y; } // compound assignment addition void operator += (const MyType &x) { d += x.d; } // compound assignment subtraction void operator -= (const MyType &x) { d -= x.d; } // compound assignment multiplication void operator *= (const MyType &x) { d *= x.d; } // compound assignment division void operator /= (const MyType &x) { d /= x.d; } }; } bool NumericType(void) { bool ok = true; using CppAD::AD; using CppAD::CheckNumericType; CheckNumericType<MyType> (); CheckNumericType<int> (); CheckNumericType<double> (); CheckNumericType< AD<double> > (); CheckNumericType< AD< AD<double> > >(); return ok; }