1 # ifndef CPPAD_UTILITY_ROMBERG_ONE_HPP
2 # define CPPAD_UTILITY_ROMBERG_ONE_HPP
151 template <
class Fun,
class Float>
164 Float zero = Float(0);
165 Float two = Float(2);
168 CheckNumericType<Float>();
172 "RombergOne: n must be greater than or equal 2"
177 r[0] = ( F(a) + F(b) ) * (b - a) / two;
178 for(i = 1; i < n; i++)
181 pow2 = Float(
int(ipow2));
183 for(k = 1; k < ipow2; k += 2)
185 x = ( (pow2 - Float(
double(k))) * a +
double(k) * b ) / pow2;
189 r[i] = r[i-1] / two + sum * (b - a) / pow2;
194 Float pow4, pow4minus;
195 for(i = 0; i < p; i++)
199 pow4 = Float(
int(ipow4));
200 pow4minus = Float(ipow4-1);
201 for(k = n-1; k > i; k--)
202 r[k] = ( pow4 * r[k] - r[k-1] ) / pow4minus;
#define CPPAD_ASSERT_KNOWN(exp, msg)
Check that exp is true, if not print msg and terminate execution.
The CppAD Simple Vector template class.
Define the CppAD error checking macros (all of which begin with CPPAD_ASSERT_)
Float RombergOne(Fun &F, const Float &a, const Float &b, size_t n, size_t p, Float &e)
File used to define CppAD::vector and CppAD::vectorBool.