|
| c2_connector_function_p (float_type x0, const c2_function< float_type > &f0, float_type x2, const c2_function< float_type > &f2, bool auto_center, float_type y1) |
| construct the container from two functions More...
|
|
| c2_connector_function_p (float_type x0, float_type y0, float_type yp0, float_type ypp0, float_type x2, float_type y2, float_type yp2, float_type ypp2, bool auto_center, float_type y1) |
| construct the container from numerical values More...
|
|
| c2_connector_function_p (const c2_fblock< float_type > &fb0, const c2_fblock< float_type > &fb2, bool auto_center, float_type y1) |
| construct the container from c2_fblock<float_type> objects More...
|
|
virtual | ~c2_connector_function_p () |
| destructor More...
|
|
virtual float_type | value_with_derivatives (float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception) |
| get the value and derivatives. More...
|
|
const std::string | cvs_header_vers () const |
| get versioning information for the header file More...
|
|
const std::string | cvs_file_vers () const |
| get versioning information for the source file More...
|
|
virtual | ~c2_function () |
| destructor More...
|
|
float_type | operator() (float_type x) const throw (c2_exception) |
| evaluate the function in the classic way, ignoring derivatives. More...
|
|
float_type | operator() (float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception) |
| get the value and derivatives. More...
|
|
float_type | find_root (float_type lower_bracket, float_type upper_bracket, float_type start, float_type value, int *error=0, float_type *final_yprime=0, float_type *final_yprime2=0) const throw (c2_exception) |
| solve f(x)==value very efficiently, with explicit knowledge of derivatives of the function More...
|
|
float_type | partial_integrals (std::vector< float_type > xgrid, std::vector< float_type > *partials=0, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const throw (c2_exception) |
| solve f(x)=value partial_integrals uses a method with an error O(dx**10) with full information from the derivatives, and falls back to lower order methods if informed of incomplete derivatives. It uses exact midpoint splitting of the intervals for recursion, resulting in no recomputation of the function during recursive descent at previously computed points. More...
|
|
float_type | integral (float_type amin, float_type amax, std::vector< float_type > *partials=0, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const throw (c2_exception) |
| a fully-automated integrator which uses the information provided by the get_sampling_grid() function to figure out what to do. More...
|
|
c2_piecewise_function_p
< float_type > * | adaptively_sample (float_type amin, float_type amax, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, std::vector< float_type > *xvals=0, std::vector< float_type > *yvals=0) const throw (c2_exception) |
| create a c2_piecewise_function_p from c2_connector_function_p segments which is a representation of the parent function to the specified accuracy, but maybe much cheaper to evaluate More...
|
|
float_type | xmin () const |
|
float_type | xmax () const |
|
void | set_domain (float_type amin, float_type amax) |
|
size_t | get_evaluations () const |
| and sampler do increment it. More...
|
|
void | reset_evaluations () const |
| reset the counter More...
|
|
void | increment_evaluations () const |
| count evaluations More...
|
|
bool | check_monotonicity (const std::vector< float_type > &data, const char message[]) const throw (c2_exception) |
| check that a vector is monotonic, throw an exception if not, and return a flag if it is reversed More...
|
|
virtual void | set_sampling_grid (const std::vector< float_type > &grid) throw (c2_exception) |
| establish a grid of 'interesting' points on the function. More...
|
|
std::vector< float_type > * | get_sampling_grid_pointer () const |
| get the sampling grid, which may be a null pointer More...
|
|
virtual void | get_sampling_grid (float_type amin, float_type amax, std::vector< float_type > &grid) const |
|
void | preen_sampling_grid (std::vector< float_type > *result) const |
| The grid is modified in place. More...
|
|
void | refine_sampling_grid (std::vector< float_type > &grid, size_t refinement) const |
|
c2_function< float_type > & | normalized_function (float_type amin, float_type amax, float_type norm=1.0) const throw (c2_exception) |
| create a new c2_function from this one which is normalized on the interval More...
|
|
c2_function< float_type > & | square_normalized_function (float_type amin, float_type amax, float_type norm=1.0) const throw (c2_exception) |
|
c2_function< float_type > & | square_normalized_function (float_type amin, float_type amax, const c2_function< float_type > &weight, float_type norm=1.0) const throw (c2_exception) |
| create a new c2_function from this one which is square-normalized with the provided weight on the interval More...
|
|
c2_sum_p< float_type > & | operator+ (const c2_function< float_type > &rhs) const |
| factory function to create a c2_sum_p from a regular algebraic expression. More...
|
|
c2_diff_p< float_type > & | operator- (const c2_function< float_type > &rhs) const |
| factory function to create a c2_diff_p from a regular algebraic expression. More...
|
|
c2_product_p< float_type > & | operator* (const c2_function< float_type > &rhs) const |
| factory function to create a c2_product_p from a regular algebraic expression. More...
|
|
c2_ratio_p< float_type > & | operator/ (const c2_function< float_type > &rhs) const |
|
c2_composed_function_p
< float_type > & | operator() (const c2_function< float_type > &inner) const |
| compose this function outside another. More...
|
|
float_type | get_trouble_point () const |
| Find out where a calculation ran into trouble, if it got a nan. If the most recent computation did not return a nan, this is undefined. More...
|
|
void | claim_ownership () const |
| increment our reference count. Destruction is only legal if the count is zero. More...
|
|
size_t | release_ownership_for_return () const throw (c2_exception) |
| decrement our reference count. Do not destroy at zero. More...
|
|
void | release_ownership () const throw (c2_exception) |
|
size_t | count_owners () const |
| get the reference count, mostly for debugging More...
|
|
void | fill_fblock (c2_fblock< float_type > &fb) const throw (c2_exception) |
| fill in a c2_fblock<float_type>... a shortcut for the integrator & sampler More...
|
|
template<typename float_type = double>
class c2_connector_function_p< float_type >
create a c2_function which smoothly connects two other c2_functions.
This takes two points and generates a polynomial which matches two c2_function arguments at those two points, with two derivatives at each point, and an arbitrary value at the center of the region. It is useful for splicing together functions over rough spots (0/0, for example).
If auto_center is true, the value at the midpoint is computed so that the resulting polynomial is of order 5. If auto_center is false, the value y1 is used at the midpoint, resulting in a polynomial of order 6.
This is usually used in conjunction with c2_piecewise_function_p to assemble an apparently seamless function from a series of segments.
- See also
- Sample Applications and Adaptive sampling
Definition at line 2215 of file c2_function.hh.