void Output::printPaddedSci(double message, int width, PrintAlign align, int prec) { if (!_streams[_curStream].print()) return; int order = (int)floor(log10(fabs(message))); int places = prec; if (places == -1) { double temp = message / pow(10.0, order); for (places = 0; places <= 8; places++) { if ((temp - roundToOne(temp) > -1e-9) && (temp - roundToOne(temp) < 1e-9)) break; temp *= 10; } } streamsize origPrec = stream().precision(); if (align == LEFT) stream() << resetiosflags(ios::right) << setiosflags(ios::left); stream() << setiosflags(ios::scientific) << setprecision(places); stream() << setw(width) << checkZero(message, abs(order) + places); stream() << resetiosflags(ios::scientific) << setprecision(origPrec) << flush; if (align == LEFT) stream() << resetiosflags(ios::left) << setiosflags(ios::right); }
char *sqrt_string(char *n) { char *nn = strdup(n); char *r = sqrt_string_in(reverse(skipZeros(nn))); r = checkZero(reverse(r)); free(nn); return r; }
void test_checkZero_given_value_is_0_should_set_zero_flag(void) { int value = 0; STATUS = 0; checkZero(value); TEST_ASSERT_EQUAL(0x4, STATUS); }
void test_checkZero_given_value_is_negative_value_should_unset_zero_flag(void) { int value = -33; checkZero(value); TEST_ASSERT_EQUAL(0x0, STATUS); }
void test_checkZero_given_value_is_positive_number_should_unset_zero_flag(void) { int value = 12; checkZero(value); TEST_ASSERT_EQUAL(0x0, STATUS); }
void Output::print(const Vector3D& message, int prec, bool useComma) { if (!_streams[_curStream].print()) return; streamsize origPrec = stream().precision(); for (int i = 0; i < 3; ++i) { stream() << setiosflags(ios::fixed) << setprecision(prec) << checkZero(message[i], prec); stream() << resetiosflags(ios::fixed) << setprecision(origPrec); if (i != 2) { if (useComma) stream() << ","; stream() << " "; } } stream() << flush; }
void Output::print(double message, int prec) { if (!_streams[_curStream].print()) return; int places = prec; if (places == -1) { double temp = message; for (places = 0; places <= 8; ++places) { if ((temp - roundToOne(temp) > -1e-9) && (temp - roundToOne(temp) < 1e-9)) break; temp *= 10; } } streamsize origPrec = stream().precision(); stream() << setiosflags(ios::fixed) << setprecision(places) << checkZero(message, places); stream() << resetiosflags(ios::fixed) << setprecision(origPrec) << flush; }
void Output::print(const List<double>& message, int prec, bool useComma, bool useAnd) { if (!_streams[_curStream].print()) return; streamsize origPrec = stream().precision(); for (int i = 0; i < message.length(); ++i) { stream() << setiosflags(ios::fixed) << setprecision(prec) << checkZero(message[i], prec); stream() << resetiosflags(ios::fixed) << setprecision(origPrec); if (useComma) { if ((message.length() > 2) && (i != message.length() - 1)) stream() << ","; if ((i == message.length() - 2) && (useAnd)) stream() << " and"; } if (i != message.length() - 1) stream() << " "; } stream() << flush; }
void Output::printPadded(double message, int width, PrintAlign align, int prec) { if (!_streams[_curStream].print()) return; int places = prec; if (places == -1) { double temp = message; for (places = 0; places <= 8; places++) { if ((temp - roundToOne(temp) > -1e-9) && (temp - roundToOne(temp) < 1e-9)) break; temp *= 10; } } streamsize origPrec = stream().precision(); if (align == LEFT) stream() << resetiosflags(ios::right) << setiosflags(ios::left); stream() << setiosflags(ios::fixed) << setprecision(places) << setw(width) << checkZero(message, places); stream() << resetiosflags(ios::fixed) << setprecision(origPrec) << flush; if (align == LEFT) stream() << resetiosflags(ios::left) << setiosflags(ios::right); }
void Output::addSci(double input, int prec) { sprintf(_arg, "%s%d%s", "%.", prec, "e"); sprintf(_buffer, _arg, checkZero(input, abs((int)floor(log10(fabs(input)))) + prec)); add(_buffer); }
void Output::add(double input, int prec) { sprintf(_arg, "%s%d%s", "%.", prec, "f"); sprintf(_buffer, _arg, checkZero(input, prec)); add(_buffer); }