X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftests%2Fparanoidcalculator.cpp;h=c8f75246205c9ec0c4c4e9e54e3bb348279c4c42;hb=081b38a5f11d0eb093fdf3315051e9c1de7135fd;hp=171eaf08398a9103be6a5c15bd906e1178adb7bf;hpb=6472d20ee58d2ecc0aee8bc1a12a071b2afc8a27;p=ipdf%2Fcode.git diff --git a/src/tests/paranoidcalculator.cpp b/src/tests/paranoidcalculator.cpp index 171eaf0..c8f7524 100644 --- a/src/tests/paranoidcalculator.cpp +++ b/src/tests/paranoidcalculator.cpp @@ -17,19 +17,39 @@ int main(int argc, char ** argv) Debug("FLT_MAX = %.40f", FLT_MAX); Debug("FLT_MIN = %.40f", FLT_MIN); Debug("FLT_EPSILON = %.40f", FLT_EPSILON); - - ParanoidNumber a("0.3"); - Debug("start at %s", a.Str().c_str()); - cout << "0.3 "; - float fa = 0.3; - double da = 0.3; + Debug("Sizeof ParanoidNumber::digit_t is %u", sizeof(ParanoidNumber::digit_t)); + Debug("Sizeof ParanoidNumber is %u", sizeof(ParanoidNumber)); + Debug("Sizeof double is %u", sizeof(double)); + Debug("Sizeof ParanoidNumber* %u", sizeof(ParanoidNumber*)); + + string token(""); + cin >> token; + ParanoidNumber a(token.c_str()); + double da = a.ToDouble(); + float fa = da; while (cin.good()) { + Debug("a is {%s} \"%.40lf\"", a.Str().c_str(), a.ToDouble()); char op; - double db; - cin >> op >> db; - float fb(db); - ParanoidNumber b(fb); + cin >> op; + token = ""; + for (char c = cin.peek(); cin.good() && !iswspace(c); c = cin.peek()) + { + if (c == '+' || c == '-' || c == '*' || c == '/') + { + break; + } + token += c; + c = cin.get(); + } + + //Debug("String is \"%s\"", token.c_str()); + float fb = strtof(token.c_str(), NULL); + double db = strtod(token.c_str(), NULL); + ParanoidNumber b(token.c_str()); + + Debug("b is {%s} \"%lf\"", b.Str().c_str(), b.ToDouble()); + Debug("db is %lf", db); switch (op) { case '+': @@ -54,10 +74,12 @@ int main(int argc, char ** argv) break; } - Debug("a is: %s", a.Str().c_str()); - Debug("a as double: %.40f\n", a.ToDouble()); - Debug("floats give: %.40f\n", fa); - Debug("double gives: %.40f\n", da); + Debug("a is: {%s}", a.Str().c_str()); + Debug("a as double: %.40lf", a.ToDouble()); + //Debug("a as float: %.40f", a.ToFloat()); + //Debug("a as int64_t: %ld", a.Convert()); + //Debug("floats give: %.40f", fa); + Debug("double gives: %.40lf", da); }