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)
 
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