36 ::printf(
"\n\n========================================================================\n" );
37 ::printf(
" Testing Evilnumber unary operators:\n\n" );
39 ::printf(
"before ival1++ ival1 = %s\n", ival1.
to_str().c_str(), result.
to_str().c_str() );
41 ::printf(
"ival1++ = %s\n\n", ival1.
to_str().c_str(), result.to_str().c_str() );
43 ::printf(
"before ival2-- ival2 = %s\n", ival2.
to_str().c_str(), result.to_str().c_str() );
45 ::printf(
"ival2-- = %s-- = %s\n\n", ival2.
to_str().c_str(), result.to_str().c_str() );
47 ::printf(
"before fval1++ fval1 = %s\n", fval1.
to_str().c_str(), result.to_str().c_str() );
49 ::printf(
"fval1++ = %s++ = %s\n\n", fval1.
to_str().c_str(), result.to_str().c_str() );
51 ::printf(
"before fval2-- fval2 = %s\n", fval2.
to_str().c_str(), result.to_str().c_str() );
53 ::printf(
"fval2-- = %s-- = %s\n\n", fval2.
to_str().c_str(), result.to_str().c_str() );
55 ::printf(
"\n\n========================================================================\n" );
56 ::printf(
" Testing Evilnumber binary operators mixing integer-based with float-based:\n\n" );
58 result = fval1 + ival2;
59 ::printf(
"fval1 + ival2 = %s + %s = %s\n", fval1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
61 result = fval1 - ival2;
62 ::printf(
"fval1 - ival2 = %s - %s = %s\n", fval1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
64 result = fval1 * ival2;
65 ::printf(
"fval1 * ival2 = %s * %s = %s\n", fval1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
67 result = fval1 / ival2;
68 ::printf(
"fval1 / ival2 = %s / %s = %s\n", fval1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
70 ::printf(
"\n\n========================================================================\n" );
71 ::printf(
" Testing Evilnumber binary operators, both operands integer-based:\n\n" );
73 result = ival1 + ival2;
74 ::printf(
"ival1 + ival2 = %s + %s = %s\n", ival1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
76 result = ival1 - ival2;
77 ::printf(
"ival1 - ival2 = %s - %s = %s\n", ival1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
79 result = ival1 * ival2;
80 ::printf(
"ival1 * ival2 = %s * %s = %s\n", ival1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
82 result = ival1 / ival2;
83 ::printf(
"ival1 / ival2 = %s / %s = %s\n", ival1.
to_str().c_str(), ival2.to_str().c_str(), result.to_str().c_str() );
85 ::printf(
"\n\n========================================================================\n" );
86 ::printf(
" Testing Evilnumber binary operators, both operands float-based:\n\n" );
88 result = fval1 + fval2;
89 ::printf(
"fval1 + fval2 = %s + %s = %s\n", fval1.
to_str().c_str(), fval2.to_str().c_str(), result.to_str().c_str() );
91 result = fval1 - fval2;
92 ::printf(
"fval1 - fval2 = %s - %s = %s\n", fval1.
to_str().c_str(), fval2.to_str().c_str(), result.to_str().c_str() );
95 result = fval1 * fval2;
96 ::printf(
"fval1 * fval2 = %s * %s = %s\n", fval1.
to_str().c_str(), fval2.to_str().c_str(), result.to_str().c_str() );
98 result = fval1 / fval2;
99 ::printf(
"fval1 / fval2 = %s / %s = %s\n", fval1.
to_str().c_str(), fval2.to_str().c_str(), result.to_str().c_str() );
101 ::printf(
"\n\n========================================================================\n" );
102 ::printf(
" Testing Evilnumber binary operators, both operands created using EvilNumber() inline:\n\n" );
104 ::printf(
"EvilNumber(6.0) + EvilNumber(100)= %s\n", result.to_str().c_str() );
107 ::printf(
"EvilNumber(52) - EvilNumber(26.0)= %s\n", result.to_str().c_str() );
110 ::printf(
"EvilNumber(22) * EvilNumber(10)= %s\n", result.to_str().c_str() );
113 ::printf(
"EvilNumber(220.0) / EvilNumber(11)= %s\n", result.to_str().c_str() );
115 ::printf(
"\n\n========================================================================\n" );
116 ::printf(
" Testing Evilnumber trigonometric functions:\n\n" );
118 ::printf(
"sin(3.14159*1.5)= %f, EvilNumber::sin(3.14159*1.5)= %s\n", sin(3.14159*1.5), result.to_str().c_str() );
121 ::printf(
"cos(-3.14159*1.5)= %f, EvilNumber::cos(-3.14159*1.5)= %s\n", cos(-3.14159*1.5), result.to_str().c_str() );
124 ::printf(
"tan(-3.14159*3)= %f, EvilNumber:tan(-3.14159*3)= %s\n", tan(-3.14159*3), result.to_str().c_str() );
127 ::printf(
"asin(0.5)= %f, EvilNumber::asin(0.5)= %s\n", asin(0.5), result.to_str().c_str() );
130 ::printf(
"acos(-0.5)= %f, EvilNumber::acos(-0.5)= %s\n", acos(-0.5), result.to_str().c_str() );
133 ::printf(
"atan(3.0)= %f, EvilNumber::atan(3.0)= %s\n", atan(3.0), result.to_str().c_str() );
135 ::printf(
"\n\n========================================================================\n" );
136 ::printf(
" Testing Evilnumber various math functions:\n\n" );
138 ::printf(
"sqrt(400.0)= %f, EvilNumber::sqrt(400.0)= %s\n", sqrt(400.0), result.to_str().c_str() );
141 ::printf(
"pow(39.0,2.0)= %f, EvilNumber::pow(39.0,2.0)= %s\n", pow(39.0,2.0), result.to_str().c_str() );
144 ::printf(
"log(1.5)= %f, EvilNumber::log(1.5)= %s\n", log(1.5), result.to_str().c_str() );
147 ::printf(
"log10(1.5)= %f, EvilNumber::log10(1.5)= %s\n", log10(1.5), result.to_str().c_str() );
150 ::printf(
"exp(1.5)= %f, EvilNumber::exp(1.5)= %s\n", exp(1.5), result.to_str().c_str() );
152 ::printf(
"\n\n========================================================================\n" );
153 ::printf(
" Testing Evilnumber binary operators with mixed data types:\n\n" );
158 ::printf(
"EvilNumber(3.0) + 1= %s\n", result.to_str().c_str() );
161 ::printf(
"EvilNumber(3.0) - 1= %s\n", result.to_str().c_str() );
164 ::printf(
"EvilNumber(3.0) * 5= %s\n", result.to_str().c_str() );
167 ::printf(
"EvilNumber(33.0) / 3= %s\n", result.to_str().c_str() );
170 ::printf(
"EvilNumber(33.0) %% 5= %s\n", result.to_str().c_str() );
173 ::printf(
"4 + EvilNumber(3.0)= %s\n", result.to_str().c_str() );
176 ::printf(
"1 - EvilNumber(3.0)= %s\n", result.to_str().c_str() );
179 ::printf(
"5 * EvilNumber(3.0)= %s\n", result.to_str().c_str() );
182 ::printf(
"33 / EvilNumber(3.0)= %s\n", result.to_str().c_str() );
185 ::printf(
"33 %% EvilNumber(5.0)= %s\n", result.to_str().c_str() );
this is a class that kinda mimics how python polymorph's numbers.
static EvilNumber exp(const EvilNumber &val)
static EvilNumber log10(const EvilNumber &val)
static EvilNumber cos(const EvilNumber &val)
static EvilNumber sqrt(const EvilNumber &val)
static EvilNumber asin(const EvilNumber &val)
static EvilNumber log(const EvilNumber &val)
int utils_EvilNumberTest(int argc, char *argv[])
static EvilNumber atan(const EvilNumber &val)
static EvilNumber sin(const EvilNumber &val)
??
static EvilNumber acos(const EvilNumber &val)
static EvilNumber tan(const EvilNumber &val)
static EvilNumber pow(const EvilNumber &val1, const EvilNumber &val2)
std::string to_str()
converts the EvilNumber value into a string