Alexandria 2.32.0
SDC-CH common library for the Euclid project
|
Typedefs | |
using | Function = NAryFunction<1> |
Alias for an unary function. | |
using | BinaryFunction = NAryFunction<2> |
Alias for a binary function. | |
using | TernaryFunction = NAryFunction<3> |
Alias for a ternary function. | |
typedef std::unique_ptr< Function >(* | MultiplyFunction) (const Function &, const Function &) |
Alias of a function which multiplies Function objects. | |
template<std::size_t N> | |
using | Coordinates = std::array<std::vector<double>, N> |
Used to pass the grid coordinates to interpn. Internally will make a copy of the required values. |
Enumerations | |
enum class | InterpolationType { LINEAR , CUBIC_SPLINE } |
Enumeration of the different supported interpolation types. More... | |
enum class | SecantEndReason { SUCCESS , MAX_ITER , GRADIENT , OUT_OF_BOUNDS , VALUE_ERROR } |
Functions | |
ELEMENTS_API double | integrate (const Function &function, const double min, const double max, std::unique_ptr< NumericalIntegrationScheme > numericalIntegrationScheme=nullptr) |
ELEMENTS_API std::unique_ptr< Function > | multiply (const Function &f1, const Function &f2) |
std::pair< double, double > | solveSquare (double a, double b, double c, double y) |
template<std::size_t N> | |
std::unique_ptr< NAryFunction< N > > | interpn (const Coordinates< N > &grid, const NdArray::NdArray< double > &values, InterpolationType type, bool extrapolate) |
ELEMENTS_API std::unique_ptr< Function > | interpolate (const std::vector< double > &x, const std::vector< double > &y, InterpolationType type, bool extrapolate=false) |
ELEMENTS_API std::unique_ptr< Function > | interpolate (const Euclid::XYDataset::XYDataset &dataset, InterpolationType type, bool extrapolate=false) |
template<std::size_t N> | |
ELEMENTS_API std::unique_ptr< NAryFunction< N > > | interpn (const Coordinates< N > &grid, const NdArray::NdArray< double > &values, InterpolationType type, bool extrapolate=false) |
ELEMENTS_API double | simple_interpolation (double x, const std::vector< double > &xp, const std::vector< double > &yp, bool extrapolate=false) |
ELEMENTS_API double | simple_interpolation (double x, double x0, double x1, double y0, double y1, bool extrapolate) noexcept |
double | derivative (const Function &f, const double x) |
double | derivative2nd (const Function &f, const double x) |
template<typename... Axes> | |
std::unique_ptr< NdSampler< Axes... > > | createSamplerFromGrid (const GridContainer::GridContainer< std::vector< double >, Axes... > &grid) |
template<typename CellAxis, typename... GridAxes> | |
std::unique_ptr< NdSampler< CellAxis, GridAxes... > > | createSamplerFromGrid (const GridContainer::GridContainer< std::vector< std::vector< double > >, GridAxes... > &grid, const std::vector< CellAxis > &cell_axis) |
template<typename... GridAxes> | |
std::unique_ptr< NdSampler< std::size_t, GridAxes... > > | createSamplerFromGrid (const GridContainer::GridContainer< std::vector< std::vector< double > >, GridAxes... > &grid) |
std::vector< ModeInfo > | extractNHighestModes (const XYDataset::XYDataset &pdf, double merge_ratio, size_t n) |
std::vector< ModeInfo > | extractNHighestModes (std::vector< double > &x_sampling, std::vector< double > &pdf_sampling, double merge_ratio, size_t n) |
std::vector< ModeInfo > | extractNBigestModes (const XYDataset::XYDataset &pdf, double merge_ratio, size_t n) |
std::vector< ModeInfo > | extractNBigestModes (std::vector< double > &x_sampling, std::vector< double > &pdf_sampling, double merge_ratio, size_t n) |
std::pair< double, double > | linearRegression (const std::vector< double > &x, const std::vector< double > &y) |
SecantReturn | secantMethod (const Function &func, double x0, double x1, const SecantParams ¶ms=SecantParams{}) |
std::unique_ptr< Function > | multiplyPolynomials (const Function &f1, const Function &f2) |
Function for multiplying two Polynomials. It multiplies their coefficients. | |
std::unique_ptr< Function > | multiplyPiecewiseWithGeneric (const Function &f1, const Function &f2) |
template<typename Iter> | |
static std::pair< Iter, Iter > | overlappingStart (Iter start1, Iter end1, Iter start2, Iter end2) |
std::vector< double > | overlappingKnots (const std::vector< double > &knots1, const std::vector< double > &knots2) |
Returns a vector of the overlapping knots from the given vectors. | |
std::unique_ptr< Function > | multiplyPiecewises (const Function &f1, const Function &f2) |
std::unique_ptr< Function > | linearInterpolation (const std::vector< double > &x, const std::vector< double > &y, bool extrapolate) |
Performs linear interpolation for the given set of data points. | |
std::unique_ptr< Function > | splineInterpolation (const std::vector< double > &x, const std::vector< double > &y, bool extrapolate) |
Performs cubic spline interpolation for the given set of data points. | |
static double | guess_h (double initial_h, double x) |
std::pair< std::vector< double >, std::vector< double > > | getXYs (const XYDataset::XYDataset &pdf) |
size_t | findMaximumIndex (const std::vector< double > &pdf) |
std::pair< size_t, size_t > | catchPeak (const std::vector< double > &pdf, size_t center_index, double merge_ratio) |
std::pair< double, double > | avgArea (std::pair< std::vector< double >, std::vector< double > > &pdf, size_t min_x, size_t max_x) |
double | getInterpolationAround (const std::pair< std::vector< double >, std::vector< double > > &pdf, size_t x_index) |
std::pair< std::vector< double >, std::vector< double > > | flatternPeak (const std::pair< std::vector< double >, std::vector< double > > &pdf, size_t min_x, size_t max_x, double value) |
using Euclid::MathUtils::BinaryFunction = NAryFunction<2> |
Alias for a binary function.
Definition at line 119 of file Function.h.
using Euclid::MathUtils::Coordinates = std::array<std::vector<double>, N> |
Used to pass the grid coordinates to interpn. Internally will make a copy of the required values.
Alias for an array of references to vectors of doubles
N | Number of dimensions |
Definition at line 86 of file interpolation.h.
using Euclid::MathUtils::Function = NAryFunction<1> |
Alias for an unary function.
Definition at line 116 of file Function.h.
typedef std::unique_ptr< Function >(* Euclid::MathUtils::MultiplyFunction) (const Function &, const Function &) |
Alias of a function which multiplies Function objects.
Definition at line 40 of file multiplication.h.
using Euclid::MathUtils::TernaryFunction = NAryFunction<3> |
Alias for a ternary function.
Definition at line 122 of file Function.h.
|
strong |
Enumeration of the different supported interpolation types.
Enumerator | |
---|---|
LINEAR | |
CUBIC_SPLINE |
Definition at line 43 of file interpolation.h.
|
strong |
Enumerator | |
---|---|
SUCCESS | |
MAX_ITER | |
GRADIENT | |
OUT_OF_BOUNDS | |
VALUE_ERROR |
Definition at line 28 of file SecantMethod.h.
std::pair< double, double > Euclid::MathUtils::avgArea | ( | std::pair< std::vector< double >, std::vector< double > > & | pdf, |
size_t | min_x, | ||
size_t | max_x ) |
Definition at line 99 of file PdfModeExtraction.cpp.
References std::make_pair().
Referenced by extractNBigestModes(), and extractNHighestModes().
std::pair< size_t, size_t > Euclid::MathUtils::catchPeak | ( | const std::vector< double > & | pdf, |
size_t | center_index, | ||
double | merge_ratio ) |
Definition at line 65 of file PdfModeExtraction.cpp.
References std::make_pair(), and std::vector< T >::size().
Referenced by extractNBigestModes(), and extractNHighestModes().
std::unique_ptr< NdSampler< Axes... > > Euclid::MathUtils::createSamplerFromGrid | ( | const GridContainer::GridContainer< std::vector< double >, Axes... > & | grid | ) |
Helper function to generate a NdSampler from a GridContainer with a vector of double as a cell manager
Axes | Grid axes |
The compiler should be able to infer the axis types. Example:
Definition at line 57 of file NdSamplerFromGrid.h.
References Euclid::make_unique(), and std::move().
Referenced by createSamplerFromGrid().
std::unique_ptr< NdSampler< std::size_t, GridAxes... > > Euclid::MathUtils::createSamplerFromGrid | ( | const GridContainer::GridContainer< std::vector< std::vector< double > >, GridAxes... > & | grid | ) |
Helper function to generate a NdSampler from a GridContainer with a vector of vector of doubles as a cell manager. It works similarly to createSamplerFromGrid, except that the cell content is considered an extra, implicit, axis. Assumes the embedded axis to be discrete, with its knots being sequential between 0 and the size of the cell.
GridAxes | Grid axes |
Definition at line 117 of file NdSamplerFromGrid.h.
References std::vector< T >::begin(), createSamplerFromGrid(), std::vector< T >::end(), and std::iota().
std::unique_ptr< NdSampler< CellAxis, GridAxes... > > Euclid::MathUtils::createSamplerFromGrid | ( | const GridContainer::GridContainer< std::vector< std::vector< double > >, GridAxes... > & | grid, |
const std::vector< CellAxis > & | cell_axis ) |
Helper function to generate a NdSampler from a GridContainer with a vector of vector of doubles as a cell manager. It works similarly to createSamplerFromGrid, except that the cell content is considered an extra, implicit, axis.
GridAxes | Grid axes |
CellAxis | Axis embedded into the cell |
The compiler should be able to infer the axis types. Example:
grid | The GridContainer |
cell_axis | User-defined knots for the embedded axis |
Definition at line 84 of file NdSamplerFromGrid.h.
References Euclid::NdArray::NdArray< T >::at(), std::make_tuple(), Euclid::make_unique(), std::move(), std::vector< T >::size(), std::tuple_cat(), and Euclid::NdArray::unravel_index().
double Euclid::MathUtils::derivative | ( | const Function & | f, |
const double | x ) |
Derivative using finite differences: \( f'(x) = \frac{f(x+h) - f(x)}{h} \)
f | The Function to derive |
x | The point where to do the derivation |
Definition at line 41 of file FiniteDifference.cpp.
References std::numeric_limits::epsilon(), guess_h(), and std::sqrt().
double Euclid::MathUtils::derivative2nd | ( | const Function & | f, |
const double | x ) |
Second derivative using finite differences: \( f''(x) = \frac{f(x+h) - 2f(x) + f(x - h)}{h^2} \)
f | The Function to derive |
x | The point where to do the derivation |
Definition at line 50 of file FiniteDifference.cpp.
References std::numeric_limits::epsilon(), guess_h(), and std::sqrt().
std::vector< ModeInfo > Euclid::MathUtils::extractNBigestModes | ( | const XYDataset::XYDataset & | pdf, |
double | merge_ratio, | ||
size_t | n ) |
Extract the n modes with biggest area in the provided pdf and compute for each of them the location of the mode and its area. A mode is discovered as the highest point of the pdf, then, on both sides, samples are added until the pdf starts to rise again. In order to avoid truncating the mode due to a noisy pdf it is possible to specify a merge_ratio. In this case the samples are added until their values is below the hight of the peak times the merge ratio, then additional point are added until the pdf rise again.
The sampling of the pdf to be analysed. | |
merge_ratio | The parameter for mode cutting. |
n | The (maximum) number of modes to be returned. |
Definition at line 239 of file PdfModeExtraction.cpp.
References extractNBigestModes(), and getXYs().
Referenced by extractNBigestModes().
std::vector< ModeInfo > Euclid::MathUtils::extractNBigestModes | ( | std::vector< double > & | x_sampling, |
std::vector< double > & | pdf_sampling, | ||
double | merge_ratio, | ||
size_t | n ) |
Extract the n modes with biggest area in the provided pdf and compute for each of them the location of the mode and its area. A mode is discovered as the highest point of the pdf, then, on both sides, samples are added until the pdf starts to rise again. In order to avoid truncating the mode due to a noisy pdf it is possible to specify a merge_ratio. In this case the samples are added until their values is below the hight of the peak times the merge ratio, then additional point are added until the pdf rise again.
x_sampling | The horizontal sampling of the pdf to be analysed. |
pdf_sampling | The sampling of the pdf to be analysed. |
merge_ratio | The parameter for mode cutting. |
n | The (maximum) number of modes to be returned. |
Definition at line 198 of file PdfModeExtraction.cpp.
References avgArea(), std::vector< T >::back(), std::vector< T >::begin(), catchPeak(), std::vector< T >::end(), findMaximumIndex(), flatternPeak(), getInterpolationAround(), std::vector< T >::insert(), std::make_pair(), std::vector< T >::push_back(), and std::vector< T >::size().
std::vector< ModeInfo > Euclid::MathUtils::extractNHighestModes | ( | const XYDataset::XYDataset & | pdf, |
double | merge_ratio, | ||
size_t | n ) |
Extract the n highest modes in the provided pdf and compute for each of them the location of the mode and its area. A mode is discovered as the highest point of the pdf, then, on both sides, samples are added until the pdf starts to rise again. In order to avoid truncating the mode due to a noisy pdf it is possible to specify a merge_ratio. In this case the samples are added until their values is below the hight of the peak times the merge ratio, then additional point are added until the pdf rise again.
The sampling of the pdf to be analysed. | |
merge_ratio | The parameter for mode cutting. |
n | The (maximum) number of modes to be returned. |
Definition at line 193 of file PdfModeExtraction.cpp.
References extractNHighestModes(), and getXYs().
Referenced by extractNHighestModes().
std::vector< ModeInfo > Euclid::MathUtils::extractNHighestModes | ( | std::vector< double > & | x_sampling, |
std::vector< double > & | pdf_sampling, | ||
double | merge_ratio, | ||
size_t | n ) |
Extract the n highest modes in the provided pdf and compute for each of them the location of the mode and its area. A mode is discovered as the highest point of the pdf, then, on both sides, samples are added until the pdf starts to rise again. In order to avoid truncating the mode due to a noisy pdf it is possible to specify a merge_ratio. In this case the samples are added until their values is below the hight of the peak times the merge ratio, then additional point are added until the pdf rise again.
x_sampling | The horizontal sampling of the pdf to be analysed. |
pdf_sampling | The sampling of the pdf to be analysed. |
merge_ratio | The parameter for mode cutting. |
n | The (maximum) number of modes to be returned. |
Definition at line 176 of file PdfModeExtraction.cpp.
References avgArea(), catchPeak(), findMaximumIndex(), flatternPeak(), getInterpolationAround(), std::make_pair(), and std::vector< T >::push_back().
size_t Euclid::MathUtils::findMaximumIndex | ( | const std::vector< double > & | ) |
Definition at line 50 of file PdfModeExtraction.cpp.
References std::vector< T >::begin(), and std::vector< T >::end().
Referenced by extractNBigestModes(), and extractNHighestModes().
std::pair< std::vector< double >, std::vector< double > > Euclid::MathUtils::flatternPeak | ( | const std::pair< std::vector< double >, std::vector< double > > & | pdf, |
size_t | min_x, | ||
size_t | max_x, | ||
double | value ) |
Definition at line 168 of file PdfModeExtraction.cpp.
References std::make_pair().
Referenced by extractNBigestModes(), and extractNHighestModes().
double Euclid::MathUtils::getInterpolationAround | ( | const std::pair< std::vector< double >, std::vector< double > > & | pdf, |
size_t | x_index ) |
Definition at line 121 of file PdfModeExtraction.cpp.
Referenced by extractNBigestModes(), and extractNHighestModes().
std::pair< std::vector< double >, std::vector< double > > Euclid::MathUtils::getXYs | ( | const XYDataset::XYDataset & | ) |
Definition at line 36 of file PdfModeExtraction.cpp.
References Euclid::XYDataset::XYDataset::begin(), Euclid::XYDataset::XYDataset::end(), std::make_pair(), and std::vector< T >::push_back().
Referenced by extractNBigestModes(), and extractNHighestModes().
|
static |
Definition at line 32 of file FiniteDifference.cpp.
References std::numeric_limits::max(), and std::nextafter().
Referenced by derivative(), and derivative2nd().
double Euclid::MathUtils::integrate | ( | const Function & | function, |
const double | min, | ||
const double | max, | ||
std::unique_ptr< NumericalIntegrationScheme > | numericalIntegrationScheme = nullptr ) |
Returns the integral of the given function inside the range [min,max]. This method will take advantage of Functions which also implement the Integrable interface. For other Function the integration will be delegated to the NumericalIntegrationScheme. Note that at the moment there is no default numerical implementation, so if the given function is not Integrable and no numerical integration scheme is provided an exception will be thrown.
function | The function to integrate |
min | The minimum range of the integration |
max | The maximum range of the integration |
numericalIntegrationScheme | The class in charge of the numerical integration (if the function do not implement the Integrable interface). |
Definition at line 35 of file function_tools.cpp.
References Euclid::MathUtils::Integrable::integrate().
Referenced by Euclid::MathUtils::Piecewise::integrate().
std::unique_ptr< NAryFunction< N > > Euclid::MathUtils::interpn | ( | const Coordinates< N > & | grid, |
const NdArray::NdArray< double > & | values, | ||
InterpolationType | type, | ||
bool | extrapolate ) |
Definition at line 62 of file interpolation.icpp.
References Euclid::make_unique().
ELEMENTS_API std::unique_ptr< NAryFunction< N > > Euclid::MathUtils::interpn | ( | const Coordinates< N > & | grid, |
const NdArray::NdArray< double > & | values, | ||
InterpolationType | type, | ||
bool | extrapolate = false ) |
Definition at line 62 of file interpolation.icpp.
References Euclid::make_unique().
std::unique_ptr< Function > Euclid::MathUtils::interpolate | ( | const Euclid::XYDataset::XYDataset & | dataset, |
InterpolationType | type, | ||
bool | extrapolate = false ) |
Returns a Function which performs interpolation for the data points of the given dataset.
dataset | The dataset containing the data points |
type | The type of the interpolation to perform |
InterpolationException | if there are decreasing x values |
InterpolationException | if there are (X,Y) pairs with same X value but different Y value (step functions) |
Definition at line 88 of file interpolation.cpp.
References std::vector< T >::back(), CUBIC_SPLINE, std::vector< T >::emplace_back(), std::vector< T >::empty(), Euclid::XYDataset::XYDataset::front(), LINEAR, linearInterpolation(), Euclid::make_unique(), std::vector< T >::reserve(), Euclid::XYDataset::XYDataset::size(), and splineInterpolation().
std::unique_ptr< Function > Euclid::MathUtils::interpolate | ( | const std::vector< double > & | x, |
const std::vector< double > & | y, | ||
InterpolationType | type, | ||
bool | extrapolate = false ) |
Returns a Function which performs interpolation for the given set of data points. Duplicate (x,y) pairs are ignored and treated as a single one.
x | The x values of the data points |
y | The y values of the data points |
type | The type of the interpolation to perform |
InterpolationException | if the x and y vectors do not have the same size |
InterpolationException | if there are decreasing x values |
InterpolationException | if there are (X,Y) pairs with same X value but different Y value (step functions) |
Definition at line 40 of file interpolation.cpp.
References CUBIC_SPLINE, std::vector< T >::emplace_back(), std::vector< T >::front(), LINEAR, linearInterpolation(), Euclid::make_unique(), std::vector< T >::reserve(), std::vector< T >::size(), and splineInterpolation().
Referenced by Euclid::MathUtils::Cumulative::eval().
std::unique_ptr< Function > Euclid::MathUtils::linearInterpolation | ( | const std::vector< double > & | x, |
const std::vector< double > & | y, | ||
bool | extrapolate ) |
Performs linear interpolation for the given set of data points.
Definition at line 129 of file linear.cpp.
References std::vector< T >::back(), std::vector< T >::front(), std::numeric_limits::lowest(), std::numeric_limits::max(), std::move(), and std::vector< T >::size().
Referenced by interpolate(), and interpolate().
std::pair< double, double > Euclid::MathUtils::linearRegression | ( | const std::vector< double > & | x, |
const std::vector< double > & | y ) |
Computes factors a and b such that y = a * x + b
x | Independent variable |
y | Dependent variable |
Definition at line 25 of file LinearRegression.cpp.
References std::vector< T >::empty(), std::make_pair(), and std::vector< T >::size().
std::unique_ptr< Function > Euclid::MathUtils::multiply | ( | const Function & | f1, |
const Function & | f2 ) |
Returns a function which represents the multiplication of the two parameters. This method makes use of the multiplySpecificSpecificMap and multiplySpecificGenericMap maps for detecting efficient ways of multiplying the parameters.
f1 | The first function to multiply |
f2 | The second function to multiply |
Definition at line 72 of file function_tools.cpp.
References multiplySpecificGenericMap, and multiplySpecificSpecificMap.
Referenced by multiplyPiecewises().
std::unique_ptr< Function > Euclid::MathUtils::multiplyPiecewises | ( | const Function & | f1, |
const Function & | f2 ) |
Definition at line 101 of file multiplication.cpp.
References Euclid::make_unique(), std::move(), multiply(), overlappingKnots(), and std::vector< T >::push_back().
std::unique_ptr< Function > Euclid::MathUtils::multiplyPiecewiseWithGeneric | ( | const Function & | f1, |
const Function & | f2 ) |
Function for multiplying a Piecewise with any other type. It multiplies each sub-function of the Piecewise with the other function.
Definition at line 53 of file multiplication.cpp.
References std::vector< T >::begin(), Euclid::MathUtils::Piecewise::getFunctions(), Euclid::make_unique(), and std::transform().
std::unique_ptr< Function > Euclid::MathUtils::multiplyPolynomials | ( | const Function & | f1, |
const Function & | f2 ) |
Function for multiplying two Polynomials. It multiplies their coefficients.
Definition at line 39 of file multiplication.cpp.
References Euclid::make_unique(), std::move(), and std::vector< T >::size().
std::vector< double > Euclid::MathUtils::overlappingKnots | ( | const std::vector< double > & | knots1, |
const std::vector< double > & | knots2 ) |
Returns a vector of the overlapping knots from the given vectors.
Definition at line 82 of file multiplication.cpp.
References std::set< K >::begin(), std::vector< T >::begin(), std::set< K >::end(), std::vector< T >::end(), std::set< K >::insert(), overlappingStart(), and std::tie().
Referenced by multiplyPiecewises().
|
static |
Definition at line 64 of file multiplication.cpp.
Referenced by overlappingKnots().
SecantReturn Euclid::MathUtils::secantMethod | ( | const Function & | func, |
double | x0, | ||
double | x1, | ||
const SecantParams & | params = SecantParams{} ) |
Find the root of the function func (i.e. func(root) = 0) applying the secant method. The solution should be close to the initial guesses x0, x1
func | The function to solve |
x0 | |
x1 | |
params |
Definition at line 25 of file SecantMethod.cpp.
References Euclid::MathUtils::SecantParams::atol, GRADIENT, std::isfinite(), Euclid::MathUtils::SecantReturn::iterations, Euclid::MathUtils::SecantParams::max, Euclid::MathUtils::SecantParams::max_iter, Euclid::MathUtils::SecantParams::min, OUT_OF_BOUNDS, Euclid::MathUtils::SecantReturn::reason, Euclid::MathUtils::SecantReturn::root, SUCCESS, and VALUE_ERROR.
double Euclid::MathUtils::simple_interpolation | ( | double | x, |
const std::vector< double > & | xp, | ||
const std::vector< double > & | yp, | ||
bool | extrapolate = false ) |
Simple linear interpolation
x | Target value |
xp | x samples |
yp | Function samples (yp = f(xp)) |
extrapolate | If true, extrapolate |
Definition at line 125 of file interpolation.cpp.
References std::vector< T >::back(), std::vector< T >::begin(), std::vector< T >::empty(), std::vector< T >::end(), std::vector< T >::front(), simple_interpolation(), std::vector< T >::size(), and std::upper_bound().
Referenced by Euclid::MathUtils::InterpolationImpl< T, typename std::enable_if< std::is_floating_point< T >::value >::type >::interpolate(), Euclid::MathUtils::InterpolationImpl< T, typename std::enable_if< std::is_floating_point< T >::value >::type >::interpolate(), and simple_interpolation().
|
noexcept |
Linear interpolation on a segment
Definition at line 153 of file interpolation.cpp.
std::pair< double, double > Euclid::MathUtils::solveSquare | ( | double | a, |
double | b, | ||
double | c, | ||
double | y ) |
Solve x for y = a * x^2 + b * x + c
Elements::Exception | If a == b == 0. (can not be solved) |
Definition at line 25 of file Solvers.cpp.
References std::make_pair(), and std::sqrt().
std::unique_ptr< Function > Euclid::MathUtils::splineInterpolation | ( | const std::vector< double > & | x, |
const std::vector< double > & | y, | ||
bool | extrapolate ) |
Performs cubic spline interpolation for the given set of data points.
Definition at line 139 of file spline.cpp.
References std::vector< T >::back(), std::vector< T >::front(), std::numeric_limits::lowest(), std::numeric_limits::max(), std::move(), and std::vector< T >::size().
Referenced by interpolate(), and interpolate().
std::map< std::type_index, MultiplyFunction > Euclid::MathUtils::multiplySpecificGenericMap |
A map for retrieving specific function multiplication implementations. The keys of the map are the type of a Function which can be multiplied with any other function and the value of the map is the function which can be used for performing this multiplication in an efficient way.
Definition at line 136 of file multiplication.cpp.
Referenced by multiply().
std::map< std::pair< std::type_index, std::type_index >, MultiplyFunction > Euclid::MathUtils::multiplySpecificSpecificMap |
A map for retrieving specific function multiplication implementations. The keys of the map are the pairs of the Function types and the value of the map is the function which can be used for performing this multiplication in an efficient way.
Definition at line 132 of file multiplication.cpp.
Referenced by multiply().