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 LN : Chainer< LN >
25 explicit LN(
double x = 1. ) FUNCY_NOEXCEPT
31 void update(
double x ) FUNCY_NOEXCEPT
33 #ifdef FUNCY_ENABLE_EXCEPTIONS 42 [[nodiscard]]
double d0() const noexcept
48 [[nodiscard]]
double d1(
double dx = 1. ) const noexcept
54 [[nodiscard]]
double d2(
double dx = 1.,
double dy = 1. ) const noexcept
56 return -x_inv * x_inv * dx * dy;
60 [[nodiscard]]
double d3(
double dx = 1.,
double dy = 1.,
double dz = 1. ) const noexcept
62 return 2 * x_inv * x_inv * x_inv * dx * dy * dz;
66 double value = 0., x_inv = 1.;
79 explicit Log10(
double x = 1. ) FUNCY_NOEXCEPT
85 void update(
double x ) FUNCY_NOEXCEPT
87 #ifdef FUNCY_ENABLE_EXCEPTIONS 96 [[nodiscard]]
double d0() const noexcept
102 [[nodiscard]]
double d1(
double dx = 1. ) const noexcept
104 return ln10inv * x_inv * dx;
108 [[nodiscard]]
double d2(
double dx = 1.,
double dy = 1. ) const noexcept
110 return -ln10inv * x_inv * x_inv * dx * dy;
114 [[nodiscard]]
double d3(
double dx = 1.,
double dy = 1.,
double dz = 1. ) const noexcept
116 return 2 * ln10inv * x_inv * x_inv * x_inv * dx * dy * dz;
120 double value = 0., x_inv = 1., ln10inv = 1 / log( 10. );
133 explicit Log2(
double x = 1. ) FUNCY_NOEXCEPT
141 #ifdef FUNCY_ENABLE_EXCEPTIONS 150 [[nodiscard]]
double d0() const noexcept
156 [[nodiscard]]
double d1(
double dx = 1. ) const noexcept
158 return ln2inv * x_inv * dx;
162 [[nodiscard]]
double d2(
double dx = 1.,
double dy = 1. ) const noexcept
164 return -ln2inv * x_inv * x_inv * dx * dy;
168 [[nodiscard]]
double d3(
double dx = 1.,
double dy = 1.,
double dz = 1. ) const noexcept
170 return 2 * ln2inv * x_inv * x_inv * x_inv * dx * dy * dz;
174 double value = 0., x_inv = 1., ln2inv = 1 / log( 2. );
177 [[nodiscard]]
inline auto ln(
double x )
187 template < Function F >
188 [[nodiscard]]
auto ln(
const F& f )
198 template < Function F >
199 [[nodiscard]]
auto log10(
const F& f )
209 template < Function F >
210 [[nodiscard]]
auto log2(
const F& f )
void update(double x) FUNCY_NOEXCEPT
Set point of evaluation.
Definition: log.h:31
double d1(double dx=1.) const noexcept
First (directional) derivative.
Definition: log.h:156
Common (base 10) logarithm.
Definition: log.h:76
void update(double x) FUNCY_NOEXCEPT
Set point of evaluation.
Definition: log.h:139
double d2(double dx=1., double dy=1.) const noexcept
Second (directional) derivative.
Definition: log.h:108
double d0() const noexcept
Function value.
Definition: log.h:42
Log10(double x=1.) FUNCY_NOEXCEPT
Constructor.
Definition: log.h:79
Exception for scalar function arguments that are outside the domain of the function.
Definition: exceptions.h:21
double d0() const noexcept
Function value.
Definition: log.h:96
LN(double x=1.) FUNCY_NOEXCEPT
Constructor.
Definition: log.h:25
auto log10(const F &f)
Generate .
Definition: log.h:199
double d0() const noexcept
Function value.
Definition: log.h:150
Base 2 logarithm.
Definition: log.h:130
Main namespace of the funcy library.
double d1(double dx=1.) const noexcept
First (directional) derivative.
Definition: log.h:48
double d2(double dx=1., double dy=1.) const noexcept
Second (directional) derivative.
Definition: log.h:162
void update(double x) FUNCY_NOEXCEPT
Set point of evaluation.
Definition: log.h:85
Natural logarithm.
Definition: log.h:22
Log2(double x=1.) FUNCY_NOEXCEPT
Constructor.
Definition: log.h:133
double d1(double dx=1.) const noexcept
First (directional) derivative.
Definition: log.h:102
double d2(double dx=1., double dy=1.) const noexcept
Second (directional) derivative.
Definition: log.h:54
double d3(double dx=1., double dy=1., double dz=1.) const noexcept
Third (directional) derivative.
Definition: log.h:114
auto log2(const F &f)
Generate .
Definition: log.h:210
double d3(double dx=1., double dy=1., double dz=1.) const noexcept
Third (directional) derivative.
Definition: log.h:60
double d3(double dx=1., double dy=1., double dz=1.) const noexcept
Third (directional) derivative.
Definition: log.h:168