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

Addition of two functions. More...

#include <JMathlib.hh>

Inheritance diagram for JMATH::JAdd< JF1_t, JF2_t >:
JMATH::JMathlib< JAdd< JF1_t, JF2_t > > JMATH::JPair_t< JF1_t, JF2_t > JMATH::JPair< JF1_t, JF2_t, vf1, vf2 > JMATH::JCalculus< JPair_t< JF1_t, JF2_t > >

Public Member Functions

 JAdd ()
 Default constructor.
 
 JAdd (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>
JAdd 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.
 
const JF1_t & f1 () const
 
JF1_t & f1 ()
 
const JF2_t & f2 () const
 
JF2_t & f2 ()
 
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 Member Functions

static size_t size ()
 Get size of parameter.
 

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::JAdd< JF1_t, JF2_t >

Addition of two functions.

Definition at line 1149 of file JMathlib.hh.

Constructor & Destructor Documentation

◆ JAdd() [1/2]

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

Default constructor.

Definition at line 1160 of file JMathlib.hh.

1161 {}

◆ JAdd() [2/2]

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

Constructor.

Parameters
f1first function
f2second function

Definition at line 1170 of file JMathlib.hh.

1170 :
1172 {}
JPair_t()
Default constructor.
Definition JMathlib.hh:1129
const JF2_t & f2() const
Definition JMathlib.hh:982
const JF1_t & f1() const
Definition JMathlib.hh:981

Member Function Documentation

◆ getValue()

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

Function value.

Parameters
argsabscissa value(s)
Returns
function value

Definition at line 1182 of file JMathlib.hh.

1183 {
1184 return (this->f1().getValue(args...) +
1185 this->f2().getValue(args...));
1186 }
double getValue(const Args &...args) const
Function value.
Definition JMathlib.hh:1182

◆ getDerivative()

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

Derivative value.

Parameters
xabscissa value
Returns
derivative value

Definition at line 1195 of file JMathlib.hh.

1196 {
1197 return (this->f1().getDerivative(x) +
1198 this->f2().getDerivative(x));
1199 }
double getDerivative(const double x) const
Derivative value.
Definition JMathlib.hh:1195

◆ getGradient()

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

Get gradient.

Parameters
argsabscissa value(s)
Returns
gradient

Definition at line 1209 of file JMathlib.hh.

1210 {
1211 JAdd gradient;
1212
1213 gradient.f1() = this->f1().getGradient(args...);
1214 gradient.f2() = this->f2().getGradient(args...);
1215
1216 return gradient;
1217 }
JAdd()
Default constructor.
Definition JMathlib.hh:1160

◆ 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 }

◆ size()

static size_t JMATH::JMathlib< JF1_t >::size ( )
inlinestaticinherited

Get size of parameter.

Returns
size

Definition at line 538 of file JMathlib.hh.

539 {
540 return JF1_t::parameters.size();
541 }

◆ 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 550 of file JMathlib.hh.

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

◆ 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 562 of file JMathlib.hh.

563 {
564 return static_cast<JF1_t&>(*this).*JF1_t::parameters[i];
565 }

◆ f1() [1/2]

template<class JF1_t , class JF2_t , bool vf1 = JF1_t::parameters.size() != 0, bool vf2 = JF2_t::parameters.size() != 0>
const JF1_t & JMATH::JPair< JF1_t, JF2_t, vf1, vf2 >::f1 ( ) const
inlineinherited

Definition at line 981 of file JMathlib.hh.

981{ return static_cast<const JF1_t&>(*this); }

◆ f1() [2/2]

template<class JF1_t , class JF2_t , bool vf1 = JF1_t::parameters.size() != 0, bool vf2 = JF2_t::parameters.size() != 0>
JF1_t & JMATH::JPair< JF1_t, JF2_t, vf1, vf2 >::f1 ( )
inlineinherited

Definition at line 984 of file JMathlib.hh.

984{ return static_cast<JF1_t&>(*this); }

◆ f2() [1/2]

template<class JF1_t , class JF2_t , bool vf1 = JF1_t::parameters.size() != 0, bool vf2 = JF2_t::parameters.size() != 0>
const JF2_t & JMATH::JPair< JF1_t, JF2_t, vf1, vf2 >::f2 ( ) const
inlineinherited

Definition at line 982 of file JMathlib.hh.

982{ return static_cast<const JF2_t&>(*this); }

◆ f2() [2/2]

template<class JF1_t , class JF2_t , bool vf1 = JF1_t::parameters.size() != 0, bool vf2 = JF2_t::parameters.size() != 0>
JF2_t & JMATH::JPair< JF1_t, JF2_t, vf1, vf2 >::f2 ( )
inlineinherited

Definition at line 985 of file JMathlib.hh.

985{ return static_cast<JF2_t&>(*this); }

◆ negate()

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

Negate function.

Returns
this function

Definition at line 170 of file JMathlib.hh.

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

◆ add()

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

Add function.

Parameters
f1function
Returns
this function

Definition at line 186 of file JMathlib.hh.

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

◆ sub()

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

Subtract function.

Parameters
f1function
Returns
this function

Definition at line 202 of file JMathlib.hh.

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

◆ mul()

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

Scale function.

Parameters
factorfactor
Returns
this function

Definition at line 218 of file JMathlib.hh.

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

◆ div()

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

Scale function.

Parameters
factorfactor
Returns
this function

Definition at line 234 of file JMathlib.hh.

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

Member Data Documentation

◆ parameters

template<class JF1_t , class JF2_t , bool vf1 = JF1_t::parameters.size() != 0, bool vf2 = JF2_t::parameters.size() != 0>
parameter_list<JPair, JF1_t::parameters.size() + JF2_t::parameters.size()> JMATH::JPair< JF1_t, JF2_t, vf1, vf2 >::parameters = join<JPair>(JF1_t::parameters, JF2_t::parameters)
staticconstexprinherited

Definition at line 988 of file JMathlib.hh.


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