41 #ifndef BPP_NUMERIC_FUNCTION_OPERATORS_BINARYOPERATOR_H
42 #define BPP_NUMERIC_FUNCTION_OPERATORS_BINARYOPERATOR_H
64 BinaryOperator(
char symb, std::shared_ptr<Operator> left, std::shared_ptr<Operator> right) :
97 if (
right_->getValue() == 0)
110 double dl =
left_->getFirstOrderDerivative(variable);
111 double dr =
right_->getFirstOrderDerivative(variable);
112 double l =
left_->getValue();
113 double r =
right_->getValue();
125 return (dl * r - dr * l ) / (r * r);
127 return dl * r + dr * l;
136 double d2l =
left_->getSecondOrderDerivative(variable);
137 double d2r =
right_->getSecondOrderDerivative(variable);
138 double l =
left_->getValue();
139 double r =
right_->getValue();
140 double dl =
left_->getFirstOrderDerivative(variable);
141 double dr =
right_->getFirstOrderDerivative(variable);
157 return (d2l * r - d2r * l ) / r2 - ( 2 * dl * ( dl * r - dr * l) ) / r3;
160 return d2l * r + d2r * l + 2 * dr * dl;
Binary arithmetic operator for numerical computation.
double getFirstOrderDerivative(const std::string &variable) const
std::shared_ptr< Operator > right_
BinaryOperator(char symb, std::shared_ptr< Operator > left, std::shared_ptr< Operator > right)
std::shared_ptr< Operator > left_
std::shared_ptr< Operator > getLeftSon()
BinaryOperator * clone() const
Create a copy of this object and send a pointer to it.
double getSecondOrderDerivative(const std::string &variable) const
std::string output() const
std::shared_ptr< Operator > getRightSon()
Interface of operator for numerical computation.