Higher order function objects similar to `std::plus`

, etc.
More...

## Classes | |

struct | Abs |

Functional for computing `abs` on an object. More... | |

struct | Acos |

Functional for computing `acos` on an object. More... | |

struct | Acosh |

Functional for computing `acosh` on an object. More... | |

struct | Asin |

Functional for computing `asin` on an object. More... | |

struct | Asinh |

Functional for computing `asinh` on an object. More... | |

struct | AssertEqual |

Functional that asserts that the function object `C` applied to the first and second arguments are equal and returns the function object C applied to the first argument. More... | |

struct | Atan |

Functional for computing `atan` on an object. More... | |

struct | Atan2 |

Functional for computing `atan2` from two objects. More... | |

struct | Atanh |

Functional for computing `atanh` on an object. More... | |

struct | Cbrt |

Functional for computing `cbrt` on an object. More... | |

struct | Conj |

Functional for computing `conj` on an object. More... | |

struct | Cos |

Functional for computing `cos` on an object. More... | |

struct | Cosh |

Functional for computing `cosh` on an object. More... | |

struct | DivAssign |

Functional for computing `/=` of two objects. More... | |

struct | Divides |

Functional for computing `/` of two objects. More... | |

struct | Erf |

Functional for computing `erf` on an object. More... | |

struct | Exp |

Functional for computing `exp` on an object. More... | |

struct | Exp2 |

Functional for computing `exp2` on an object. More... | |

struct | Fabs |

Functional for computing `fabs` on an object. More... | |

struct | GetArgument |

Functional to retrieve the `ArgumentIndex` th argument. More... | |

struct | Hypot |

Functional for computing `hypot` from two objects. More... | |

struct | Identity |

The identity higher order function object. More... | |

struct | Imag |

Functional for computing `imag` on an object. More... | |

struct | InvCbrt |

Functional for computing `invcbrt` on an object. More... | |

struct | InvSqrt |

Functional for computing `invsqrt` on an object. More... | |

struct | Literal |

struct | Log |

Functional for computing `log` on an object. More... | |

struct | Log10 |

Functional for computing `log10` on an object. More... | |

struct | Log2 |

Functional for computing `log2` on an object. More... | |

struct | Max |

Functional for computing `max` from two objects. More... | |

struct | Min |

Functional for computing `min` from two objects. More... | |

struct | Minus |

Functional for computing `-` of two objects. More... | |

struct | MinusAssign |

Functional for computing `-=` of two objects. More... | |

struct | MultAssign |

Functional for computing `*=` of two objects. More... | |

struct | Multiplies |

Functional for computing `*` of two objects. More... | |

struct | Negate |

Functional for computing `-` on an object. More... | |

struct | Plus |

Functional for computing `+` of two objects. More... | |

struct | PlusAssign |

Functional for computing `+=` of two objects. More... | |

struct | Pow |

Functional for computing `pow` from two objects. More... | |

struct | Real |

Functional for computing `real` on an object. More... | |

struct | Sin |

Functional for computing `sin` on an object. More... | |

struct | Sinh |

Functional for computing `sinh` on an object. More... | |

struct | Sqrt |

Functional for computing `sqrt` on an object. More... | |

struct | Square |

Function for squaring a quantity. More... | |

struct | StepFunction |

Functional for computing `step_function` on an object. More... | |

struct | Tan |

Functional for computing `tan` on an object. More... | |

struct | Tanh |

Functional for computing `tanh` on an object. More... | |

struct | UnaryPow |

Function for computing an integer power, forwards to template pow<N>() More... | |

## Functions | |

MAKE_LITERAL_VAL (Pi, M_PI) | |

MAKE_LITERAL_VAL (E, M_E) | |

Higher order function objects similar to `std::plus`

, etc.

These chaining function objects can be used to represent highly general mathematical operations

- as types, which can be passed around in template arguments, and
- such that any time they can be evaluated at compile time, they will be.

As an illustrative example, consider the definition of a general sinusoid function object type :

using Sinusoid = funcl::Multiplies<

which then gives a type which when instantiated and evaluated will give the answer \( a\times\sin(b + c \times d)\) from calling `Sinusoid{}(a,b,c,d)`

As a more creative example, we can take advantage of literals to make, for instance, distributions. Let's make a Gaussian with mean at 5.0 and unity variance

using GaussianExp =

using Gaussian = funcl::Exp<GaussianExp>;

This gives us a function object whose call operator takes one argument that gives the value of the desired Gaussian distribution \( e^{-(x - 5.0)^2} \)

© Copyright 2017 - 2019 SXS Collaboration, Distributed under the MIT License