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

forward declaration for multiplication of fuction. More...

#include <JMathlib.hh>

Inheritance diagram for JMATH::JDiv< JF1_t, JF2_t >:
JMATH::JMathlib< JDiv< JF1_t, JF2_t > > JMATH::JPair_t< JF1_t, JF2_t > JMATH::JPair< JF1_t, JF2_t, v1, v2 > JMATH::JCalculus< JPair_t< JF1_t, JF2_t > >

Public Member Functions

 JDiv ()
 Default constructor.
 
 JDiv (const JF1_t &f1, const JF2_t &f2)
 Constructor.
 
template<class ... Args>
double getValue (const Args &...args) const
 Function value.
 
double getDerivative (const double x) const
 Derivative value.
 
template<class ... Args>
JDiv getGradient (const Args &...args) 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.
 
JF1_t & negate ()
 Negate function.
 
JF1_t & add (const JF1_t &f1)
 Add function.
 
JF1_t & sub (const JF1_t &f1)
 Subtract function.
 
JF1_t & mul (const double factor)
 Scale function.
 
JF1_t & div (const double factor)
 Scale function.
 

Static Public Attributes

static constexpr parameter_list< JPair, JF1_t::parameters.size()+JF2_t::parameters.size()> parameters = join<JPair>(JF1_t::parameters, JF2_t::parameters)
 

Detailed Description

template<class JF1_t, class JF2_t>
struct JMATH::JDiv< JF1_t, JF2_t >

forward declaration for multiplication of fuction.

Division of two functions.

Definition at line 1328 of file JMathlib.hh.

Constructor & Destructor Documentation

◆ JDiv() [1/2]

template<class JF1_t , class JF2_t >
JMATH::JDiv< JF1_t, JF2_t >::JDiv ( )
inline

Default constructor.

Definition at line 1339 of file JMathlib.hh.

1340 {}

◆ JDiv() [2/2]

template<class JF1_t , class JF2_t >
JMATH::JDiv< JF1_t, JF2_t >::JDiv ( const JF1_t & f1,
const JF2_t & f2 )
inline

Constructor.

Parameters
f1first function
f2second function

Definition at line 1349 of file JMathlib.hh.

1349 :
1350 JPair_t<JF1_t, JF2_t>(f1, f2)
1351 {}
JPair_t()
Default constructor.
Definition JMathlib.hh:1077

Member Function Documentation

◆ getValue()

template<class JF1_t , class JF2_t >
template<class ... Args>
double JMATH::JDiv< JF1_t, JF2_t >::getValue ( const Args &... args) const
inline

Function value.

Parameters
argsabscissa value(s)
Returns
function value

Definition at line 1361 of file JMathlib.hh.

1362 {
1363 return (static_cast<const JF1_t&>(*this).getValue(args...) /
1364 static_cast<const JF2_t&>(*this).getValue(args...));
1365 }

◆ getDerivative()

template<class JF1_t , class JF2_t >
double JMATH::JDiv< JF1_t, JF2_t >::getDerivative ( const double x) const
inline

Derivative value.

Parameters
xabscissa value
Returns
derivative value

Definition at line 1374 of file JMathlib.hh.

1375 {
1376 const double v = static_cast<const JF1_t&>(*this).getValue(x);
1377 const double w = static_cast<const JF2_t&>(*this).getValue(x);
1378
1379 return (static_cast<const JF1_t&>(*this).getDerivative(x) * w -
1380 v * static_cast<const JF2_t&>(*this).getDerivative(x)) / (w*w);
1381 }

◆ getGradient()

template<class JF1_t , class JF2_t >
template<class ... Args>
JDiv JMATH::JDiv< JF1_t, JF2_t >::getGradient ( const Args &... args) const
inline

Get gradient.

Parameters
argsabscissa value(s)
Returns
gradient

Definition at line 1391 of file JMathlib.hh.

1392 {
1393 JDiv gradient;
1394
1395 const double v = static_cast<const JF1_t&>(*this).getValue(args...);
1396 const double w = static_cast<const JF2_t&>(*this).getValue(args...);
1397
1398 static_cast<JF1_t&>(gradient) = static_cast<const JF1_t&>(*this).getGradient(args...);
1399 static_cast<JF1_t&>(gradient) *= 1.0/w;
1400 static_cast<JF2_t&>(gradient) = static_cast<const JF2_t&>(*this).getGradient(args...);
1401 static_cast<JF2_t&>(gradient) *= -v/(w*w);
1402
1403 return gradient;
1404 }
JDiv()
Default constructor.
Definition JMathlib.hh:1339

◆ operator()()

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

Function value.

Parameters
argsabscissa value(s)
Returns
function value

Definition at line 331 of file JMathlib.hh.

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

◆ operator[]() [1/2]

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

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 539 of file JMathlib.hh.

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

◆ operator[]() [2/2]

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

Get value of parameter at given index.

Parameters
iindex
Returns
value

Definition at line 551 of file JMathlib.hh.

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

◆ negate()

JF1_t & JMATH::JCalculus< JF1_t >::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()

JF1_t & JMATH::JCalculus< JF1_t >::add ( const JF1_t & 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()

JF1_t & JMATH::JCalculus< JF1_t >::sub ( const JF1_t & 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()

JF1_t & JMATH::JCalculus< JF1_t >::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()

JF1_t & JMATH::JCalculus< JF1_t >::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

◆ parameters

template<class JF1_t , class JF2_t , bool v1 = JF1_t::parameters.size() != 0 || std::is_base_of<JPf<>, JF1_t>::value, bool v2 = JF2_t::parameters.size() != 0 || std::is_base_of<JPf<>, JF2_t>::value>
parameter_list<JPair, JF1_t::parameters.size() + JF2_t::parameters.size()> JMATH::JPair< JF1_t, JF2_t, v1, v2 >::parameters = join<JPair>(JF1_t::parameters, JF2_t::parameters)
staticconstexprinherited

Definition at line 969 of file JMathlib.hh.


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