valvector_base_require

View page source

The valvector Implementation of CppAD Base Type Requirements

Output Operator

The Output Operator requirement is satisfied by valvector_output .

Constructors

The Constructors requirements are satisfied by valvector_ctor .

Unary Operators

The Unary Operators requirements are satisfied by valvector_unary_op .

Assignment Operators

The Assignment Operators requirements are satisfied by valvector_assign and valvector_compound_op .

Binary Operators

The Binary Operators requirements are satisfied by valvector_binary_op .

Bool Operators

The Bool Operators requirements are satisfied by valvector_compare_op .

Conditional Expressions

The base_cond_exp requirements are satisfied by valvector_condexp .

Standard Math

The base_std_math requirements are satisfied by valvector_unary_math and valvector_pow .

azmul

The Absolute Zero, azmul requirement is satisfied by valvector_azmul .

Features Implemented Here

Integer

The Integer requirement is satisfied by:

namespace CppAD {
   inline int Integer(const valvector& x) { return int( x[0] ); }
}

numeric_limits

The base_limits requirement is satisfied by:

namespace CppAD {
   CPPAD_NUMERIC_LIMITS(valvector::scalar_type, valvector)
}

to_string

The base_to_string requirement is satisfied by:

namespace CppAD {
   CPPAD_TO_STRING(valvector)
}

EqualOpSeq

The EqualOpSeq requirement is satisfied by:

namespace CppAD {
   inline bool EqualOpSeq(const valvector& left, const valvector& right)
   {  return left == right; }
}

Identical

namespace CppAD {
   inline bool IdenticalCon(const valvector& x)  {  return true; }
   inline bool IdenticalZero(const valvector& x) {  return x == valvector(0); }
   inline bool IdenticalOne(const valvector& x)  {  return x == valvector(1); }
   inline bool IdenticalEqualCon(const valvector& x, const valvector& y)
   {  return x == y; }
}

Not Ordered

The Not Ordered requirement is satisfied by:

# define CPPAD_VALVECTOR_NOT_AVAILABLE(fun) \
   inline bool fun(const valvector& x) \
   {  CPPAD_VALVECTOR_ASSERT_KNOWN( false, #fun " is not available" ) \
      return false; \
   }
namespace CppAD {
   CPPAD_VALVECTOR_NOT_AVAILABLE(GreaterThanZero)
   CPPAD_VALVECTOR_NOT_AVAILABLE(GreaterThanOrZero)
   CPPAD_VALVECTOR_NOT_AVAILABLE(LessThanZero)
   CPPAD_VALVECTOR_NOT_AVAILABLE(LessThanOrZero)
   //
   // abs_geq
   inline bool abs_geq(const valvector& x, const valvector& y)
   {  CPPAD_VALVECTOR_ASSERT_KNOWN(
         x.size() == 1 || y.size() == 1 || x.size() == y.size() ,
         "size error in abs_geq functions"
      )
      size_t max_size = std::max( x.size(), y.size() );
      valvector::scalar_type abs_x(0), abs_y(0);
      for(size_t i = 0; i < max_size; ++i)
      {  abs_x += fabs( x[i] );
         abs_y += fabs( y[i] );
      }
      return abs_x >= abs_y;
   }
}

Example

The file valvector_base_require.cpp is an example and test of the valvector Features Implemented Here .