Geant4
10.03.p03
|
Provides the headers for the general c2_function algebra which fast, flexible operations on piecewise-twice-differentiable functions. More...
#include <cmath>
#include <vector>
#include <utility>
#include <string>
#include <stdexcept>
#include <typeinfo>
#include <sstream>
#include <limits>
#include "c2_function.icc"
Go to the source code of this file.
Classes | |
class | c2_exception |
the exception class for c2_function operations. More... | |
class | c2_composed_function_p< float_type > |
class | c2_sum_p< float_type > |
class | c2_diff_p< float_type > |
class | c2_product_p< float_type > |
create a c2_function which is the product of two other c2_functions.This should always be constructed using c2_function::operator*() More... | |
class | c2_ratio_p< float_type > |
create a c2_function which is the ratio of two other c2_functions.This should always be constructed using c2_function::operator/() More... | |
class | c2_piecewise_function_p< float_type > |
create a c2_function which is a piecewise assembly of other c2_functions.The functions must have increasing, non-overlapping domains. Any empty space between functions will be filled with a linear interpolation. More... | |
class | c2_quadratic_p< float_type > |
create a quadratic mapping of another functionfor example, given a c2_function f More... | |
class | c2_ptr< float_type > |
class | c2_fblock< float_type > |
structure used to hold evaluated function data at a point. More... | |
class | c2_function< float_type > |
the parent class for all c2_functions.c2_functions know their value, first, and second derivative at almost every point. They can be efficiently combined with binary operators, via c2_binary_function, composed via c2_composed_function_, have their roots found via find_root(), and be adaptively integrated via partial_integrals() or integral(). They also can carry information with them about how to find 'interesting' points on the function. This information is set with set_sampling_grid() and extracted with get_sampling_grid(). More... | |
class | c2_classic_function_p< float_type > |
a container into which any conventional c-style function can be dropped, to create a degenerate c2_function without derivatives. Mostly useful for sampling into interpolating functions. construct a reference to this with c2_classic_function() More... | |
class | c2_const_ptr< float_type > |
create a container for a c2_function which handles the reference counting. It is useful as a smart container to hold a c2_function and keep the reference count correct. The recommended way for a class to store a c2_function which is handed in from the outside is for it to have a c2_ptr member into which the passed-in function is stored. This way, when the class instance is deleted, it will automatically dereference any function which it was handed. More... | |
class | c2_ptr< float_type > |
class | c2_typed_ptr< float_type, c2_class > |
class | c2_plugin_function_p< float_type > |
class | c2_const_plugin_function_p< float_type > |
class | c2_binary_function< float_type > |
class | c2_scaled_function_p< float_type > |
class | c2_cached_function_p< float_type > |
A container into which any other c2_function can be dropped.It allows a function to be pre-evaluated at a point, and used at multiple places in an expression efficiently. If it is re-evaluated at the previous point, it returns the remembered values; otherwise, it re-evauates the function at the new point. More... | |
class | c2_composed_function_p< float_type > |
class | c2_sum_p< float_type > |
class | c2_diff_p< float_type > |
class | c2_product_p< float_type > |
create a c2_function which is the product of two other c2_functions.This should always be constructed using c2_function::operator*() More... | |
class | c2_ratio_p< float_type > |
create a c2_function which is the ratio of two other c2_functions.This should always be constructed using c2_function::operator/() More... | |
class | c2_constant_p< float_type > |
a c2_function which is constantThe factory function c2_factory::constant() creates *new c2_constant_p() More... | |
class | c2_transformation< float_type > |
a transformation of a coordinate, including an inverse More... | |
class | c2_transformation_linear< float_type > |
the identity transform More... | |
class | c2_transformation_log< float_type > |
log axis transform More... | |
class | c2_transformation_recip< float_type > |
reciprocal axis transform More... | |
class | c2_function_transformation< float_type > |
a transformation of a function in and out of a coordinate space, using 2 c2_transformations More... | |
class | c2_lin_lin_function_transformation< float_type > |
a transformation of a function in and out of lin-lin space More... | |
class | c2_log_log_function_transformation< float_type > |
a transformation of a function in and out of log-log space More... | |
class | c2_lin_log_function_transformation< float_type > |
a transformation of a function in and out of lin-log space More... | |
class | c2_log_lin_function_transformation< float_type > |
a transformation of a function in and out of log-lin space More... | |
class | c2_arrhenius_function_transformation< float_type > |
a transformation of a function in and out of Arrhenius (1/x vs. log(y)) space More... | |
class | interpolating_function_p< float_type > |
create a cubic spline interpolation of a set of (x,y) pairsThis is one of the main reasons for c2_function objects to exist. More... | |
class | log_lin_interpolating_function_p< float_type > |
A spline with X transformed into log space. More... | |
class | lin_log_interpolating_function_p< float_type > |
A spline with Y transformed into log space.Most useful for functions looking like y=exp(x) More... | |
class | log_log_interpolating_function_p< float_type > |
A spline with X and Y transformed into log space.Most useful for functions looking like y=x^n or any other function with a huge X and Y dynamic range. More... | |
class | arrhenius_interpolating_function_p< float_type > |
A spline with X in reciprocal space and Y transformed in log space.Most useful for thermodynamic types of data where Y is roughly A*exp(-B/x). Typical examples are reaction rate data, and thermistor calibration data. More... | |
class | c2_sin_p< float_type > |
compute sin(x) with its derivatives.The factory function c2_factory::sin() creates *new c2_sin_p More... | |
class | c2_cos_p< float_type > |
compute cos(x) with its derivatives.The factory function c2_factory::cos() creates *new c2_cos_p More... | |
class | c2_tan_p< float_type > |
compute tan(x) with its derivatives.The factory function c2_factory::tan() creates *new c2_tan_p More... | |
class | c2_log_p< float_type > |
compute log(x) with its derivatives.The factory function c2_factory::log() creates *new c2_log_p More... | |
class | c2_exp_p< float_type > |
compute exp(x) with its derivatives.The factory function c2_factory::exp() creates *new c2_exp_p More... | |
class | c2_sqrt_p< float_type > |
compute sqrt(x) with its derivatives.The factory function c2_factory::sqrt() creates *new c2_sqrt_p() More... | |
class | c2_recip_p< float_type > |
compute scale/x with its derivatives.The factory function c2_factory::recip() creates *new c2_recip_p More... | |
class | c2_identity_p< float_type > |
compute x with its derivatives.The factory function c2_factory::identity() creates *new c2_identity_p More... | |
class | c2_linear_p< float_type > |
create a linear mapping of another functionfor example, given a c2_function f More... | |
class | c2_quadratic_p< float_type > |
create a quadratic mapping of another functionfor example, given a c2_function f More... | |
class | c2_power_law_p< float_type > |
create a power law mapping of another functionfor example, given a c2_function f More... | |
class | c2_inverse_function_p< float_type > |
create the formal inverse function of another functionfor example, given a c2_function f More... | |
class | accumulated_histogram< float_type > |
An interpolating_function_p which is the cumulative integral of a histogram.Note than binedges should be one element longer than binheights, since the lower & upper edges are specified. Note that this is a malformed spline, since the second derivatives are all zero, so it has less continuity. Also, note that the bin edges can be given in backwards order to generate the reversed accumulation (starting at the high end) More... | |
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). More... | |
class | c2_piecewise_function_p< float_type > |
create a c2_function which is a piecewise assembly of other c2_functions.The functions must have increasing, non-overlapping domains. Any empty space between functions will be filled with a linear interpolation. More... | |
Macros | |
#define | c2_isnan std::isnan |
#define | c2_isfinite std::isfinite |
Provides the headers for the general c2_function algebra which fast, flexible operations on piecewise-twice-differentiable functions.
Definition in file c2_function.hh.
#define c2_isfinite std::isfinite |
Definition at line 52 of file c2_function.hh.
#define c2_isnan std::isnan |
Definition at line 51 of file c2_function.hh.