#ifndef Div_h #define Div_h #include #include "Primitive.h" const double MIN = 0.000000001; // protected division parameter template class DivT : public Primitive { public: DivT(void); void execute(void* result, Tree& tree); ~DivT(void); }; typedef DivT Div; template DivT::DivT(void) { nArguments_ = 2; designation_ = "/"; } template DivT::~DivT(void) { } template void DivT::execute(void* result, Tree &tree) { T prvi, drugi; T& res = *(T*)result; getNextArgument(&prvi, tree); getNextArgument(&drugi, tree); // T must be auto castable to double! res = abs(drugi) > MIN ? prvi / drugi : 1.; } #endif