155 BOOST_CHECK_EQUAL(
formula(
"abs(5)").evaluate().as_int(), 5);
156 BOOST_CHECK_EQUAL(
formula(
"abs(-5)").evaluate().as_int(), 5);
157 BOOST_CHECK_EQUAL(
formula(
"abs(5.0)").evaluate().as_int(), 5);
158 BOOST_CHECK_EQUAL(
formula(
"abs(-5.0)").evaluate().as_int(), 5);
160 BOOST_CHECK_EQUAL(
formula(
"min(3,5)").evaluate().as_int(), 3);
161 BOOST_CHECK_EQUAL(
formula(
"min(5,2)").evaluate().as_int(), 2);
162 BOOST_CHECK_EQUAL(
formula(
"max(3,5)").evaluate().as_int(), 5);
163 BOOST_CHECK_EQUAL(
formula(
"max(5,2)").evaluate().as_int(), 5);
164 BOOST_CHECK_EQUAL(
formula(
"max(5.5,5)").evaluate().as_decimal(),
165 static_cast<int>(1000.0 * 5.5));
167 BOOST_CHECK_EQUAL(
formula(
"max(4,5,[2,18,7])").evaluate().as_int(), 18);
169 BOOST_CHECK_EQUAL(
formula(
"log(8,2)").evaluate().as_int(), 3);
170 BOOST_CHECK_EQUAL(
formula(
"log(12)").evaluate().as_decimal(),
171 static_cast<int>(round(1000.0 * std::log(12))));
172 BOOST_CHECK_EQUAL(
formula(
"exp(3)").evaluate().as_decimal(),
173 static_cast<int>(round(1000.0 * std::exp(3))));
178 const double pi = 4. * std::atan(1.);
182 for(std::size_t x = 0; x <= 360; ++x) {
187 .evaluate(variables).as_decimal()
188 ,
static_cast<int>(round(1000. * std::sin(x * pi / 180.))));
192 .evaluate(variables).as_decimal()
193 ,
static_cast<int>(round(1000. * std::cos(x * pi / 180.))));
195 if(x % 90 == 0 && x % 180 != 0) {
198 .evaluate(variables).is_null());
202 .evaluate(variables).as_decimal(),
203 static_cast<int>(round(1000. * std::tan(x * pi / 180.))));