3 #include <funcy/concepts.h> 4 #include <funcy/util/chainer.h> 5 #include <funcy/util/exceptions.h> 6 #include <funcy/util/macros.h> 22 struct ASin : Chainer< ASin >
25 explicit ASin(
double x = 0. ) FUNCY_NOEXCEPT
31 void update(
double x ) FUNCY_NOEXCEPT
33 #ifdef FUNCY_ENABLE_EXCEPTIONS 34 if ( x < -1 || x > 1 )
38 firstDerivative = 1 /
::sqrt( 1 - ( x * x ) );
39 firstDerivative3 = firstDerivative * firstDerivative * firstDerivative;
44 [[nodiscard]]
double d0() const noexcept
50 [[nodiscard]]
double d1(
double dx = 1 ) const noexcept
52 return firstDerivative * dx;
56 [[nodiscard]]
double d2(
double dx = 1,
double dy = 1 ) const noexcept
58 return x_ * firstDerivative3 * dx * dy;
62 [[nodiscard]]
double d3(
double dx = 1,
double dy = 1,
double dz = 1 ) const noexcept
64 return firstDerivative3 *
65 ( 1 + ( 3 * x_ * x_ / ( firstDerivative * firstDerivative ) ) ) * dx * dy * dz;
69 double value = 0., firstDerivative = 1., firstDerivative3 = 1., x_ = 0.;
78 template < Function F >
79 [[nodiscard]]
auto asin(
const F& f )
Exception for scalar function arguments that are outside the domain of the function.
Definition: exceptions.h:21
void update(double x) FUNCY_NOEXCEPT
Set point of evaluation.
Definition: arcsine.h:31
auto sqrt(const F &f)
Generate .
Definition: pow.h:404
double d2(double dx=1, double dy=1) const noexcept
Second (directional) derivative.
Definition: arcsine.h:56
auto asin(const F &f)
Generate .
Definition: arcsine.h:79
Main namespace of the funcy library.
Arc sine function (based on asin(double) in <cmath>).
Definition: arcsine.h:22
double d1(double dx=1) const noexcept
First (directional) derivative.
Definition: arcsine.h:50
double d3(double dx=1, double dy=1, double dz=1) const noexcept
Third (directional) derivative.
Definition: arcsine.h:62
double d0() const noexcept
Function value.
Definition: arcsine.h:44
ASin(double x=0.) FUNCY_NOEXCEPT
Constructor.
Definition: arcsine.h:25