#include #include #include #include #include #include #include #include #include #include #include "helper.h" using namespace Poincare; template void assert_float_prints_to(T a, const char * result, Preferences::PrintFloatMode mode = ScientificMode, int significantDigits = 7, int bufferSize = PrintFloat::k_maxFloatBufferLength) { quiz_print(result); constexpr int tagSize = 8; unsigned char tag = 'O'; char taggedBuffer[250+2*tagSize]; memset(taggedBuffer, tag, bufferSize+2*tagSize); char * buffer = taggedBuffer + tagSize; PrintFloat::convertFloatToText(a, buffer, bufferSize, significantDigits, mode); for (int i=0; i::Builder(-1.23456789E30), "-1.23456789E30", DecimalMode, 14); assert_expression_prints_to(Float::Builder(1.23456789E30), "1.23456789E30", DecimalMode, 14); assert_expression_prints_to(Float::Builder(-1.23456789E-30), "-1.23456789E-30", DecimalMode, 14); assert_expression_prints_to(Float::Builder(-1.2345E-3), "-0.0012345", DecimalMode); assert_expression_prints_to(Float::Builder(1.2345E-3), "0.0012345", DecimalMode); assert_expression_prints_to(Float::Builder(1.2345E3), "1234.5", DecimalMode); assert_expression_prints_to(Float::Builder(-1.2345E3), "-1234.5", DecimalMode); assert_expression_prints_to(Float::Builder(0.99999999999995), "9.9999999999995E-1", ScientificMode, 14); assert_expression_prints_to(Float::Builder(0.00000099999999999995), "9.9999999999995E-7", DecimalMode, 14); assert_expression_prints_to(Float::Builder(0.0000009999999999901200121020102010201201201021099995), "9.9999999999012E-7", DecimalMode, 14); assert_expression_prints_to(Float::Builder(1.2345E-1), "0.12345", DecimalMode); assert_expression_prints_to(Float::Builder(1), "1", DecimalMode); assert_expression_prints_to(Float::Builder(0.9999999999999995), "1", DecimalMode); assert_expression_prints_to(Float::Builder(1.2345E6), "1234500", DecimalMode); assert_expression_prints_to(Float::Builder(-1.2345E6), "-1234500", DecimalMode); assert_expression_prints_to(Float::Builder(0.0000009999999999999995), "0.000001", DecimalMode); assert_expression_prints_to(Float::Builder(-1.2345E-1), "-0.12345", DecimalMode); assert_expression_prints_to(Float::Builder(INFINITY), Infinity::Name(), DecimalMode); assert_expression_prints_to(Float::Builder(0.0f), "0", DecimalMode); assert_expression_prints_to(Float::Builder(NAN), Undefined::Name(), DecimalMode); }