8 #include "shared_ptr.hpp" 11 typedef STD_TR1::shared_ptr<const loadable_Object> loadable_Object_const_ref;
13 typedef std::complex<double> complex;
18 typedef STD_TR1::shared_ptr<ncexpression> ref;
19 typedef STD_TR1::shared_ptr<const ncexpression> const_ref;
21 typedef STD_TR1::shared_ptr<std::vector<double> > parameters;
22 typedef STD_TR1::shared_ptr<std::vector<std::string> > parameternames;
26 static ref parse(
const std::string&,parameternames);
27 static ref parse(
const std::string&,parameternames,loadable_Object_const_ref);
29 static complex evaluate(
const std::string&,
30 loadable_Object_const_ref,
34 static void replace_variables(std::string&, loadable_Object_const_ref);
36 static void replace_strings(std::string&, loadable_Object_const_ref);
38 complex value(parameters p)
const;
39 void code(std::ostream& ofs)
const;
46 virtual complex value_(parameters p)
const = 0;
47 virtual void code_(std::ostream& ofs)
const = 0;
55 typedef STD_TR1::shared_ptr<cexpression> ref;
56 typedef STD_TR1::shared_ptr<const cexpression> const_ref;
60 cexpression(ncexpression::ref new_nex) : nex(new_nex){};
62 static cexpression::ref parse(
const std::string& s)
64 ncexpression::parameternames pnames(
new std::vector<std::string>(1,
"x"));
66 return cexpression::ref(
new cexpression(ncexpression::parse(s,pnames)));
69 static cexpression::ref parse(
const std::string& s,
70 loadable_Object_const_ref obj,
75 ncexpression::parameternames pnames(
new std::vector<std::string>(1,vs));
76 return cexpression::ref(
new cexpression(ncexpression::parse(s,pnames,obj)));
79 static complex evaluate(
const std::string& s,
80 loadable_Object_const_ref obj,
83 ncexpression::parameters p(
new std::vector<double>(1,x));
84 ncexpression::parameternames pnames(
new std::vector<std::string>(1,
"x"));
85 return real(ncexpression::evaluate(s,obj,pnames,p));
89 complex value(
double x)
const 91 ncexpression::parameters p(
new std::vector<double>(1,x));
99 ncexpression::ref nex;
107 typedef STD_TR1::shared_ptr<expression> ref;
108 typedef STD_TR1::shared_ptr<const expression> const_ref;
112 expression(ncexpression::ref new_nex) : nex(new_nex) {};
114 static expression::ref parse(
const std::string& s)
116 ncexpression::parameternames pnames(
new std::vector<std::string>(1,
"x"));
118 return expression::ref(
new expression(ncexpression::parse(s,pnames)));
121 static expression::ref parse(
const std::string& s,
122 loadable_Object_const_ref obj,
127 ncexpression::parameternames pnames(
new std::vector<std::string>(1,vs));
128 return expression::ref(
new expression(ncexpression::parse(s,pnames,obj)));
131 static double evaluate(
const std::string& s,
132 loadable_Object_const_ref obj,
135 ncexpression::parameters p(
new std::vector<double>(1,x));
136 ncexpression::parameternames pnames(
new std::vector<std::string>(1,
"x"));
137 return real(ncexpression::evaluate(s,obj,pnames,p));
141 double value(
double x)
const ;
148 ncexpression::ref nex;
Definition: math_parser.hpp:16
Definition: math_parser.hpp:105
An abstract base class supporting xml_file_reading of input parameters.
Definition: input_file.hpp:79
Definition: math_parser.hpp:53