-[ t ] [ "" "" sprintf = ] unit-test
-[ t ] [ "asdf" "asdf" sprintf = ] unit-test
-[ t ] [ "10" 10 "%d" sprintf = ] unit-test
-[ t ] [ "+10" 10 "%+d" sprintf = ] unit-test
-[ t ] [ "-10" -10 "%d" sprintf = ] unit-test
-[ t ] [ " -10" -10 "%5d" sprintf = ] unit-test
-[ t ] [ "-0010" -10 "%05d" sprintf = ] unit-test
-[ t ] [ "+0010" 10 "%+05d" sprintf = ] unit-test
-[ t ] [ "123.456000" 123.456 "%f" sprintf = ] unit-test
-[ t ] [ "2.44" 2.436 "%.2f" sprintf = ] unit-test
-[ t ] [ "123.10" 123.1 "%01.2f" sprintf = ] unit-test
-[ t ] [ "1.2346" 1.23456789 "%.4f" sprintf = ] unit-test
-[ t ] [ " 1.23" 1.23456789 "%6.2f" sprintf = ] unit-test
-[ t ] [ "1.234000e+08" 123400000 "%e" sprintf = ] unit-test
-[ t ] [ "-1.234000e+08" -123400000 "%e" sprintf = ] unit-test
-[ t ] [ "1.234567e+08" 123456700 "%e" sprintf = ] unit-test
-[ t ] [ "3.625e+08" 362525200 "%.3e" sprintf = ] unit-test
-[ t ] [ "2.500000e-03" 0.0025 "%e" sprintf = ] unit-test
-[ t ] [ "2.500000E-03" 0.0025 "%E" sprintf = ] unit-test
-[ t ] [ " 1.0E+01" 10 "%10.1E" sprintf = ] unit-test
-[ t ] [ " -1.0E+01" -10 "%10.1E" sprintf = ] unit-test
-[ t ] [ " -1.0E+01" -10 "%+10.1E" sprintf = ] unit-test
-[ t ] [ " +1.0E+01" 10 "%+10.1E" sprintf = ] unit-test
-[ t ] [ "-001.0E+01" -10 "%+010.1E" sprintf = ] unit-test
-[ t ] [ "+001.0E+01" 10 "%+010.1E" sprintf = ] unit-test
-[ t ] [ "ff" HEX: ff "%x" sprintf = ] unit-test
-[ t ] [ "FF" HEX: ff "%X" sprintf = ] unit-test
-[ t ] [ "0f" HEX: f "%02x" sprintf = ] unit-test
-[ t ] [ "0F" HEX: f "%02X" sprintf = ] unit-test
-[ t ] [ "2008-09-10"
- 2008 9 10 "%04d-%02d-%02d" sprintf = ] unit-test
-[ t ] [ "Hello, World!"
- "Hello, World!" "%s" sprintf = ] unit-test
-[ t ] [ "printf test"
- "printf test" sprintf = ] unit-test
-[ t ] [ "char a = 'a'"
- CHAR: a "char %c = 'a'" sprintf = ] unit-test
-[ t ] [ "00" HEX: 0 "%02x" sprintf = ] unit-test
-[ t ] [ "ff" HEX: ff "%02x" sprintf = ] unit-test
-[ t ] [ "0 message(s)"
- 0 "message" "%d %s(s)" sprintf = ] unit-test
-[ t ] [ "0 message(s) with %"
- 0 "message" "%d %s(s) with %%" sprintf = ] unit-test
-[ t ] [ "justif: \"left \""
- "left" "justif: \"%-10s\"" sprintf = ] unit-test
-[ t ] [ "justif: \" right\""
- "right" "justif: \"%10s\"" sprintf = ] unit-test
-[ t ] [ " 3: 0003 zero padded"
- 3 " 3: %04d zero padded" sprintf = ] unit-test
-[ t ] [ " 3: 3 left justif"
- 3 " 3: %-4d left justif" sprintf = ] unit-test
-[ t ] [ " 3: 3 right justif"
- 3 " 3: %4d right justif" sprintf = ] unit-test
-[ t ] [ " -3: -003 zero padded"
- -3 " -3: %04d zero padded" sprintf = ] unit-test
-[ t ] [ " -3: -3 left justif"
- -3 " -3: %-4d left justif" sprintf = ] unit-test
-[ t ] [ " -3: -3 right justif"
- -3 " -3: %4d right justif" sprintf = ] unit-test
-[ t ] [ "There are 10 monkeys in the kitchen"
- 10 "kitchen" "There are %d monkeys in the %s" sprintf = ] unit-test
-[ f ] [ "%d" 10 "%d" sprintf = ] unit-test
-[ t ] [ "[monkey]" "monkey" "[%s]" sprintf = ] unit-test
-[ t ] [ "[ monkey]" "monkey" "[%10s]" sprintf = ] unit-test
-[ t ] [ "[monkey ]" "monkey" "[%-10s]" sprintf = ] unit-test
-[ t ] [ "[0000monkey]" "monkey" "[%010s]" sprintf = ] unit-test
-[ t ] [ "[####monkey]" "monkey" "[%'#10s]" sprintf = ] unit-test
-[ t ] [ "[many monke]" "many monkeys" "[%10.10s]" sprintf = ] unit-test
+{ "" } [ "" sprintf ] unit-test
+{ "asdf" } [ "asdf" sprintf ] unit-test
+{ "10" } [ 10 "%d" sprintf ] unit-test
+{ "+10" } [ 10 "%+d" sprintf ] unit-test
+{ "-10" } [ -10 "%d" sprintf ] unit-test
+{ " 23" } [ 23 "% d" sprintf ] unit-test
+{ "-23" } [ -23 "% d" sprintf ] unit-test
+{ " -10" } [ -10 "%5d" sprintf ] unit-test
+{ "-0010" } [ -10 "%05d" sprintf ] unit-test
+{ "+0010" } [ 10 "%+05d" sprintf ] unit-test
+{ "123.456000" } [ 123.456 "%f" sprintf ] unit-test
+{ "2.44" } [ 2.436 "%.2f" sprintf ] unit-test
+{ "8.950" } [ 8.950179003580072 "%.3f" sprintf ] unit-test
+{ "123.10" } [ 123.1 "%01.2f" sprintf ] unit-test
+{ "1.2346" } [ 1.23456789 "%.4f" sprintf ] unit-test
+{ "100000000000000000.50000" } [ 17 10^ 1/2 + "%20.5f" sprintf ] unit-test
+{ "3.333333" } [ 3+1/3 "%f" sprintf ] unit-test
+{ "3.666667" } [ 3+2/3 "%f" sprintf ] unit-test
+{ "3.7" } [ 3+2/3 "%.1f" sprintf ] unit-test
+{ "-3.7" } [ -3-2/3 "%.1f" sprintf ] unit-test
+{ "-3.666667" } [ -3-2/3 "%f" sprintf ] unit-test
+{ "-3.333333" } [ -3-1/3 "%f" sprintf ] unit-test
+{ "3.14159265358979323846e+00" } [ 2646693125139304345 842468587426513207 / "%.20e" sprintf ] unit-test
+{ "-0.500" } [ -1/2 "%.3f" sprintf ] unit-test
+{ "0.010" } [ 1/100 "%.3f" sprintf ] unit-test
+{ "100000000000000000000000.000000" } [ 23 10^ "%f" sprintf ] unit-test
+{ "1.4" } [ 135/100 "%.1f" sprintf ] unit-test
+{ "4" } [ 7/2 "%.0f" sprintf ] unit-test
+{ "1" } [ 1.0 "%.0f" sprintf ] unit-test
+{ "0.0e+00" } [ 0 "%.1e" sprintf ] unit-test
+{ " 1.23" } [ 1.23456789 "%6.2f" sprintf ] unit-test
+{ "001100" } [ 12 "%06b" sprintf ] unit-test
+{ "==14" } [ 12 "%'=4o" sprintf ] unit-test
+{ "foo: 1 bar: 2" } [ { 1 2 3 } "foo: %d bar: %s" vsprintf ] unit-test
+{ "1.234000e+08" } [ 123400000 "%e" sprintf ] unit-test
+{ "-1.234000e+08" } [ -123400000 "%e" sprintf ] unit-test
+{ "1.234567e+08" } [ 123456700 "%e" sprintf ] unit-test
+{ "3.625e+08" } [ 362525200 "%.3e" sprintf ] unit-test
+{ "2.500000e-03" } [ 0.0025 "%e" sprintf ] unit-test
+{ "2.500000E-03" } [ 0.0025 "%E" sprintf ] unit-test
+{ " 1.0E+01" } [ 10 "%10.1E" sprintf ] unit-test
+{ " -1.0E+01" } [ -10 "%10.1E" sprintf ] unit-test
+{ " -1.0E+01" } [ -10 "%+10.1E" sprintf ] unit-test
+{ " +1.0E+01" } [ 10 "%+10.1E" sprintf ] unit-test
+{ "-001.0E+01" } [ -10 "%+010.1E" sprintf ] unit-test
+{ "+001.0E+01" } [ 10 "%+010.1E" sprintf ] unit-test
+{ "+001.0E-01" } [ 0.1 "%+010.1E" sprintf ] unit-test
+{ " e1" } [ 0xe1 "% x" sprintf ] unit-test
+{ "+e1" } [ 0xe1 "%+x" sprintf ] unit-test
+{ "-e1" } [ -0xe1 "% x" sprintf ] unit-test
+{ "-e1" } [ -0xe1 "%+x" sprintf ] unit-test
+{ "1.00000e+1000" } [ 1000 10^ "%.5e" sprintf ] unit-test
+{ "1.00000e-1000" } [ -1000 10^ "%.5e" sprintf ] unit-test
+{ t } [
+ 1000 10^ "%.5f" sprintf
+ "1" ".00000" 1000 CHAR: 0 <string> glue =
+] unit-test
+{ t } [
+ -1000 10^ "%.1004f" sprintf
+ "0." "10000" 999 CHAR: 0 <string> glue =
+] unit-test
+{ "-1.00000e+1000" } [ 1000 10^ neg "%.5e" sprintf ] unit-test
+{ "-1.00000e-1000" } [ -1000 10^ neg "%.5e" sprintf ] unit-test
+{ t } [
+ 1000 10^ neg "%.5f" sprintf
+ "-1" ".00000" 1000 CHAR: 0 <string> glue =
+] unit-test
+{ t } [
+ -1000 10^ neg "%.1004f" sprintf
+ "-0." "10000" 999 CHAR: 0 <string> glue =
+] unit-test
+{ "9007199254740991.0" } [ 53 2^ 1 - "%.1f" sprintf ] unit-test
+{ "9007199254740992.0" } [ 53 2^ "%.1f" sprintf ] unit-test
+{ "9007199254740993.0" } [ 53 2^ 1 + "%.1f" sprintf ] unit-test
+{ "-9007199254740991.0" } [ 53 2^ 1 - neg "%.1f" sprintf ] unit-test
+{ "-9007199254740992.0" } [ 53 2^ neg "%.1f" sprintf ] unit-test
+{ "-9007199254740993.0" } [ 53 2^ 1 + neg "%.1f" sprintf ] unit-test
+{ "987654321098765432" } [ 987654321098765432 "%d" sprintf ] unit-test
+{ "987654321098765432.0" } [ 987654321098765432 "%.1f" sprintf ] unit-test
+{ "987654321098765432" } [ 987654321098765432 "%.0f" sprintf ] unit-test
+{ "9.8765432109876543200e+417" } [ 987654321098765432 10 400 ^ * "%.19e" sprintf ] unit-test
+{ "9.876543210987654320e+417" } [ 987654321098765432 10 400 ^ * "%.18e" sprintf ] unit-test
+{ "9.87654321098765432e+417" } [ 987654321098765432 10 400 ^ * "%.17e" sprintf ] unit-test
+{ "9.8765432109876543e+417" } [ 987654321098765432 10 400 ^ * "%.16e" sprintf ] unit-test
+{ "9.876543210987654e+417" } [ 987654321098765432 10 400 ^ * "%.15e" sprintf ] unit-test
+{ "9.87654321098765e+417" } [ 987654321098765432 10 400 ^ * "%.14e" sprintf ] unit-test
+{ "9.8765432109877e+417" } [ 987654321098765432 10 400 ^ * "%.13e" sprintf ] unit-test
+{ "9.876543210988e+417" } [ 987654321098765432 10 400 ^ * "%.12e" sprintf ] unit-test
+{ "9.87654321099e+417" } [ 987654321098765432 10 400 ^ * "%.11e" sprintf ] unit-test
+{ "9.8765432110e+417" } [ 987654321098765432 10 400 ^ * "%.10e" sprintf ] unit-test
+{ "9.876543211e+417" } [ 987654321098765432 10 400 ^ * "%.9e" sprintf ] unit-test
+{ "9.87654321e+417" } [ 987654321098765432 10 400 ^ * "%.8e" sprintf ] unit-test
+{ "9.8765432e+417" } [ 987654321098765432 10 400 ^ * "%.7e" sprintf ] unit-test
+{ "9.876543e+417" } [ 987654321098765432 10 400 ^ * "%.6e" sprintf ] unit-test
+{ "9.87654e+417" } [ 987654321098765432 10 400 ^ * "%.5e" sprintf ] unit-test
+{ "9.8765e+417" } [ 987654321098765432 10 400 ^ * "%.4e" sprintf ] unit-test
+{ "9.877e+417" } [ 987654321098765432 10 400 ^ * "%.3e" sprintf ] unit-test
+{ "9.88e+417" } [ 987654321098765432 10 400 ^ * "%.2e" sprintf ] unit-test
+{ "9.9e+417" } [ 987654321098765432 10 400 ^ * "%.1e" sprintf ] unit-test
+! This works even on windows (even though %.0e is special on
+! windows) because it doesn't use the fast formatter from the
+! system
+{ "1e+418" } [ 987654321098765432 10 400 ^ * "%.0e" sprintf ] unit-test
+{ "9e+417" } [ 937654321098765432 10 400 ^ * "%.0e" sprintf ] unit-test
+{ "1.0e+418" } [ 997654321098765432 10 400 ^ * "%.1e" sprintf ] unit-test
+{ "1.00e+418" } [ 999654321098765432 10 400 ^ * "%.2e" sprintf ] unit-test