Jpp 21.0.0-rc.1-88-g0130508c4
the software that should make you happy
Loading...
Searching...
No Matches
JMATH::JPow< ID_t, JF1_t > Struct Template Reference

Power of function. More...

#include <JMathlib.hh>

Inheritance diagram for JMATH::JPow< ID_t, JF1_t >:
JMATH::JMathlib< JPow< ID_t, JX > > JMATH::JX JMATH::JMathlib< JX > JMATH::JCalculus< JX >

Public Member Functions

 JPow ()
 Default constructor.
 
 JPow (const double alpha)
 Constructor.
 
 JPow (const JF1_t &f1, const double alpha)
 Constructor.
 
double getValue (const double x) const
 Function value.
 
double getDerivative (const double x) const
 Derivative value.
 
JPow getGradient (const double x) const
 Get gradient.
 
double operator() (const Args &...args) const
 Function value.
 
double operator[] (const size_t i) const
 Get value of parameter at given index.
 
double & operator[] (const size_t i)
 Get value of parameter at given index.
 
double operator() (const Args &...args) const
 Function value.
 
double operator[] (const size_t i) const
 Get value of parameter at given index.
 
double & operator[] (const size_t i)
 Get value of parameter at given index.
 
JXnegate ()
 Negate function.
 
JXadd (const JX &f1)
 Add function.
 
JXsub (const JX &f1)
 Subtract function.
 
JXmul (const double factor)
 Scale function.
 
JXdiv (const double factor)
 Scale function.
 

Public Attributes

double alpha
 f(x)^alpha
 

Static Public Attributes

static const int ID = ID_t
 
static constexpr parameter_list< JPow, 1 > parameters { &JPow::alpha }
 

Detailed Description

template<int ID_t, class JF1_t = JX>
struct JMATH::JPow< ID_t, JF1_t >

Power of function.

Definition at line 2149 of file JMathlib.hh.

Constructor & Destructor Documentation

◆ JPow() [1/3]

template<int ID_t, class JF1_t = JX>
JMATH::JPow< ID_t, JF1_t >::JPow ( )
inline

Default constructor.

Definition at line 2162 of file JMathlib.hh.

2162 :
2163 JF1_t(),
2164 alpha(0.0)
2165 {}
double alpha
f(x)^alpha
Definition JMathlib.hh:2241

◆ JPow() [2/3]

template<int ID_t, class JF1_t = JX>
JMATH::JPow< ID_t, JF1_t >::JPow ( const double alpha)
inline

Constructor.

Parameters
alphavalue

Definition at line 2173 of file JMathlib.hh.

2173 :
2174 JF1_t(),
2175 alpha(alpha)
2176 {}

◆ JPow() [3/3]

template<int ID_t, class JF1_t = JX>
JMATH::JPow< ID_t, JF1_t >::JPow ( const JF1_t & f1,
const double alpha )
inline

Constructor.

Parameters
f1function
alphavalue

Definition at line 2185 of file JMathlib.hh.

2185 :
2186 JF1_t(f1),
2187 alpha(alpha)
2188 {}

Member Function Documentation

◆ getValue()

template<int ID_t, class JF1_t = JX>
double JMATH::JPow< ID_t, JF1_t >::getValue ( const double x) const
inline

Function value.

Parameters
xabscissa value
Returns
function value

Definition at line 2197 of file JMathlib.hh.

2198 {
2199 const double u = static_cast<const JF1_t&>(*this).getValue(x);
2200
2201 return pow(u, alpha);
2202 }
T pow(const T &x, const double y)
Power .
Definition JMath.hh:97

◆ getDerivative()

template<int ID_t, class JF1_t = JX>
double JMATH::JPow< ID_t, JF1_t >::getDerivative ( const double x) const
inline

Derivative value.

Parameters
xabscissa value
Returns
derivative value

Definition at line 2211 of file JMathlib.hh.

2212 {
2213 const double u = static_cast<const JF1_t&>(*this).getValue(x);
2214 const double v = static_cast<const JF1_t&>(*this).getDerivative(x);
2215
2216 return alpha * pow(u, alpha - 1) * v;
2217 }

◆ getGradient()

template<int ID_t, class JF1_t = JX>
JPow JMATH::JPow< ID_t, JF1_t >::getGradient ( const double x) const
inline

Get gradient.

Parameters
xabscissa value
Returns
gradient

Definition at line 2226 of file JMathlib.hh.

2227 {
2228 JPow gradient;
2229
2230 const double u = static_cast<const JF1_t&>(*this).getValue(x);
2231 const double w = pow(u, alpha);
2232
2233 gradient.alpha = w * log(u);
2234
2235 static_cast<JF1_t&>(gradient) = static_cast<const JF1_t&>(*this).getGradient(x);
2236 static_cast<JF1_t&>(gradient) *= alpha * w / u;
2237
2238 return gradient;
2239 }
JPow()
Default constructor.
Definition JMathlib.hh:2162

◆ operator()() [1/2]

double JMATH::JMathlib< JPow< ID_t, JX > >::operator() ( const Args &... args) const
inlineinherited

Function value.

Parameters
argsabscissa value(s)
Returns
function value

Definition at line 330 of file JMathlib.hh.

331 {
332 return static_cast<const JF1_t&>(*this).getValue(args...);
333 }

◆ operator[]() [1/4]

double JMATH::JMathlib< JPow< ID_t, JX > >::operator[] ( const size_t i) const
inlineinherited

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 538 of file JMathlib.hh.

539 {
540 return static_cast<const JF1_t&>(*this).*JF1_t::parameters[i];
541 }

◆ operator[]() [2/4]

double & JMATH::JMathlib< JPow< ID_t, JX > >::operator[] ( const size_t i)
inlineinherited

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 550 of file JMathlib.hh.

551 {
552 return static_cast<JF1_t&>(*this).*JF1_t::parameters[i];
553 }

◆ operator()() [2/2]

double JMATH::JMathlib< JX >::operator() ( const Args &... args) const
inlineinherited

Function value.

Parameters
argsabscissa value(s)
Returns
function value

Definition at line 330 of file JMathlib.hh.

331 {
332 return static_cast<const JF1_t&>(*this).getValue(args...);
333 }

◆ operator[]() [3/4]

double JMATH::JMathlib< JX >::operator[] ( const size_t i) const
inlineinherited

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 538 of file JMathlib.hh.

539 {
540 return static_cast<const JF1_t&>(*this).*JF1_t::parameters[i];
541 }

◆ operator[]() [4/4]

double & JMATH::JMathlib< JX >::operator[] ( const size_t i)
inlineinherited

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 550 of file JMathlib.hh.

551 {
552 return static_cast<JF1_t&>(*this).*JF1_t::parameters[i];
553 }

◆ negate()

JX & JMATH::JCalculus< JX >::negate ( )
inlineinherited

Negate function.

Returns
this function

Definition at line 169 of file JMathlib.hh.

170 {
171 for (const auto& i : JF1_t::parameters) {
172 static_cast<JF1_t&>(*this).*i = -(static_cast<JF1_t&>(*this).*i);
173 }
174
175 return static_cast<JF1_t&>(*this);
176 }

◆ add()

JX & JMATH::JCalculus< JX >::add ( const JX & f1)
inlineinherited

Add function.

Parameters
f1function
Returns
this function

Definition at line 185 of file JMathlib.hh.

186 {
187 for (const auto& i : JF1_t::parameters) {
188 static_cast<JF1_t&>(*this).*i += f1.*i;
189 }
190
191 return static_cast<JF1_t&>(*this);
192 }

◆ sub()

JX & JMATH::JCalculus< JX >::sub ( const JX & f1)
inlineinherited

Subtract function.

Parameters
f1function
Returns
this function

Definition at line 201 of file JMathlib.hh.

202 {
203 for (const auto& i : JF1_t::parameters) {
204 static_cast<JF1_t&>(*this).*i -= f1.*i;
205 }
206
207 return static_cast<JF1_t&>(*this);
208 }

◆ mul()

JX & JMATH::JCalculus< JX >::mul ( const double factor)
inlineinherited

Scale function.

Parameters
factorfactor
Returns
this function

Definition at line 217 of file JMathlib.hh.

218 {
219 for (const auto& i : JF1_t::parameters) {
220 static_cast<JF1_t&>(*this).*i *= factor;
221 }
222
223 return static_cast<JF1_t&>(*this);
224 }

◆ div()

JX & JMATH::JCalculus< JX >::div ( const double factor)
inlineinherited

Scale function.

Parameters
factorfactor
Returns
this function

Definition at line 233 of file JMathlib.hh.

234 {
235 for (const auto& i : JF1_t::parameters) {
236 static_cast<JF1_t&>(*this).*i /= factor;
237 }
238
239 return static_cast<JF1_t&>(*this);
240 }

Member Data Documentation

◆ ID

template<int ID_t, class JF1_t = JX>
const int JMATH::JPow< ID_t, JF1_t >::ID = ID_t
static

Definition at line 2153 of file JMathlib.hh.

◆ alpha

template<int ID_t, class JF1_t = JX>
double JMATH::JPow< ID_t, JF1_t >::alpha

f(x)^alpha

Definition at line 2241 of file JMathlib.hh.

◆ parameters

template<int ID_t, class JF1_t = JX>
parameter_list<JPow, 1> JMATH::JPow< ID_t, JF1_t >::parameters { &JPow::alpha }
staticconstexpr

Definition at line 2243 of file JMathlib.hh.

2243{ &JPow::alpha };

The documentation for this struct was generated from the following file: