Prev Next Index-> contents reference index search external Up-> CppAD utility NumericType CppAD-> Install Introduction AD ADFun preprocessor multi_thread utility ipopt_solve Example speed Appendix utility-> ErrorHandler NearEqual speed_test SpeedTest time_test test_boolofvoid NumericType CheckNumericType SimpleVector CheckSimpleVector nan pow_int Poly LuDetAndSolve RombergOne RombergMul Runge45 Rosen34 OdeErrControl OdeGear OdeGearControl CppAD_vector thread_alloc index_sort to_string set_union sparse_rc sparse_rcv NumericType-> numeric_type.cpp Headings-> Type Requirements Default Constructor Constructor From Integer Copy Constructor Assignment Operators Example Exercise

Definition of a Numeric Type

Type Requirements
A NumericType is any type that satisfies the requirements below. The following is a list of some numeric types: int, float, double, AD<double>, AD< AD<double> >. The routine CheckNumericType can be used to check that a type satisfies these conditions.

Default Constructor
The syntax       NumericType x;  creates a NumericType object with an unspecified value.

Constructor From Integer
If i is an int, the syntax       NumericType x(i);  creates a NumericType object with a value equal to i where i can be const.

Copy Constructor
If x is a NumericType object the syntax       NumericType y(x);  creates a NumericType object y with the same value as x where x can be const.

Assignment
If x and y are NumericType objects, the syntax       x = y  sets the value of x equal to the value of y where y can be const. The expression corresponding to this operation is unspecified; i.e., it could be void and hence       x = y = z  may not be legal.

Operators
Suppose x , y and z NumericType objects where x and y may be const. In the result type column, NumericType can be replaced by any type that can be used just like a NumericType object.
 Operation Description Result Type +x unary plus NumericType -x unary minus NumericType x +  y binary addition NumericType x -  y binary subtraction NumericType x *  y binary multiplication NumericType x /  y binary division NumericType z += y compound assignment addition unspecified z -= y compound assignment subtraction unspecified z *= y compound assignment multiplication unspecified z /= y compound assignment division unspecified

Example
The file numeric_type.cpp contains an example and test of using numeric types. It returns true if it succeeds and false otherwise. (It is easy to modify to test additional numeric types.)

Exercise
1. List three operators that are not supported by every numeric type but that are supported by the numeric types int, float, double.
2. Which of the following are numeric types: std::complex<double>, std::valarray<double>, std::vector<double> ?

Input File: omh/numeric_type.omh