summaryrefslogtreecommitdiff
path: root/libc/dfp/test/test_printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/dfp/test/test_printf.c')
-rw-r--r--libc/dfp/test/test_printf.c259
1 files changed, 259 insertions, 0 deletions
diff --git a/libc/dfp/test/test_printf.c b/libc/dfp/test/test_printf.c
new file mode 100644
index 000000000..6999d4c86
--- /dev/null
+++ b/libc/dfp/test/test_printf.c
@@ -0,0 +1,259 @@
+#ifndef __STDC_WANT_DEC_FP__
+# define __STDC_WANT_DEC_FP__ 1
+#endif
+#include <stdio.h>
+#include <stdint.h>
+
+#include "test_math.h"
+
+int main() {
+
+ _Decimal32 d32;
+ _Decimal64 d64;
+ _Decimal128 d128;
+ _Decimal128 e128;
+ _Decimal128 f128;
+ float f32;
+
+ d32 = 349.23456923482E27DF;
+ printf("349.23456923482E27DF\n");
+ printf("_Decimal32 Scientific: %Hf\n", d32);
+ printf("_Decimal32 Engineering: %He\n", d32);
+ printf("\n");
+
+ d32 = 349E27DF;
+ printf("349E27DF\n");
+ printf("_Decimal32 Scientific: %Hf\n", d32);
+ printf("_Decimal32 Engineering: %He\n", d32);
+ printf("\n");
+
+ d64 = 349.1231115DD;
+ printf("349.1231115DD\n");
+ printf("_Decimal64 Scientific: %Df\n", d64);
+ printf("_Decimal64 Enginerring: %De\n", d64);
+ printf("_Decimal64 with format flags:\n");
+ printf(" %%.3Df: '%.3Df'\n", d64);
+ printf(" %%12.3Df: '%12.3Df'\n", d64);
+ printf(" %%-12.3Df: '%-12.3Df'\n", d64);
+ printf("\n");
+
+ d128 = 1.2315DL;
+ printf("1.2315DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.3DDf: '%.3DDf'\n", d128);
+ printf(" %%12.3DDf: '%12.3DDf'\n", d128);
+ printf(" %%-12.3DDf: '%-12.3DDf'\n", d128);
+ printf("\n");
+
+ d128 = 231.2315DL;
+ printf("231.2315DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.3DDf: '%.3DDf'\n", d128);
+ printf(" %%12.3DDf: '%12.3DDf'\n", d128);
+ printf(" %%-12.3DDf: '%-12.3DDf'\n", d128);
+ printf("\n");
+
+ d128 = 0.12315DL;
+ printf("0.12315DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.4DDf: '%.4DDf'\n", d128);
+ printf(" %%12.4DDf: '%12.4DDf'\n", d128);
+ printf(" %%-12.4DDf: '%-12.4DDf'\n", d128);
+ printf("\n");
+
+ d128 = -0.12315DL;
+ printf("-0.12315DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.4DDf: '%.4DDf'\n", d128);
+ printf(" %%12.4DDf: '%12.4DDf'\n", d128);
+ printf(" %%-12.4DDf: '%-12.4DDf'\n", d128);
+ printf("\n");
+
+
+ d128 = 0.012315DL;
+ printf("0.012315DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.3DDf: '%.3DDf'\n", d128);
+ printf(" %%.4DDf: '%.4DDf'\n", d128);
+ printf(" %%.5DDf: '%.5DDf'\n", d128);
+ printf(" %%12.5DDf: '%12.5DDf'\n", d128);
+ printf(" %%-12.5DDf: '%-12.5DDf'\n", d128);
+ printf(" %%-12DDf: '%-12DDf'\n", d128);
+
+ d128 = 0.012315E7DL;
+ printf("0.012315E7DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf("_Decimal128 Engineering: %DDe\n", d128);
+ printf("_Decimal128 with format flags:\n");
+ printf(" %%.3DDf: '%.3DDf'\n", d128);
+ printf(" %%.4DDf: '%.4DDf'\n", d128);
+ printf(" %%.5DDf: '%.5DDf'\n", d128);
+ printf(" %%13.5DDf: '%13.5DDf'\n", d128);
+ printf(" %%-13.5DDf: '%-13.5DDf'\n", d128);
+ printf(" %%-13DDf: '%-13DDf'\n", d128);
+
+ d128 = -0.012315E7DL;
+ printf("-0.012315E7DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.3DDf: '%.3DDf'\n", d128);
+ printf(" %%.4DDf: '%.4DDf'\n", d128);
+ printf(" %%.5DDf: '%.5DDf'\n", d128);
+
+ d128 = -0.012315E-7DL;
+ printf("-0.012315E-7DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = 1231.5E27DL;
+ printf("1231.5E27DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = 1231.5E26DL;
+ printf("1231.5E26DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = 12.365DL;
+ printf("12.365DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = -12.365DL;
+ printf("-12.365DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = -12.375DL;
+ printf("-12.375DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = 12.375DL;
+ printf("12.375DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+
+ d128 = DEC_NAN;
+ printf("DEC_NAN\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+ printf(" %%12.3DDf: '%12.3DDf'\n", d128);
+ printf(" %%-12.3DDf: '%-12.3DDf'\n", d128);
+
+ d128 = DEC_INFINITY;
+ printf("INF\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+ printf(" %%12.3DDf: '%12.3DDf'\n", d128);
+ printf(" %%-12.3DDf: '%-12.3DDf'\n", d128);
+
+ d128 = -DEC_INFINITY;
+ printf("-INF\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%.2DDf: '%.2DDf'\n", d128);
+ printf(" %%.8DDf: '%.8DDf'\n", d128);
+ printf(" %%.9DDf: '%.9DDf'\n", d128);
+ printf(" %%.10DDf: '%.10DDf'\n", d128);
+ printf(" %%12.3DDf: '%12.3DDf'\n", d128);
+ printf(" %%-12.3DDf: '%-12.3DDf'\n", d128);
+
+
+ d128 = 99999999999999.99999999999DL;
+ printf("99999999999999.99999999999DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%30.1DDf: '%30.1DDf'\n", d128);
+ printf(" %%30.2DDf: '%30.2DDf'\n", d128);
+ printf(" %%30.3DDf: '%30.3DDf'\n", d128);
+ printf(" %%30.4DDf: '%30.4DDf'\n", d128);
+ printf(" %%30.5DDf: '%30.5DDf'\n", d128);
+ printf(" %%30.6DDf: '%30.6DDf'\n", d128);
+ printf(" %%30.7DDf: '%30.7DDf'\n", d128);
+ printf(" %%30.8DDf: '%30.8DDf'\n", d128);
+ printf(" %%30.9DDf: '%30.9DDf'\n", d128);
+ printf(" %%30.10DDf: '%30.10DDf'\n", d128);
+ printf(" %%30.11DDf: '%30.11DDf'\n", d128);
+ printf(" %%30.12DDf: '%30.12DDf'\n", d128);
+ printf(" %%30.13DDf: '%30.13DDf'\n", d128);
+
+ d128 = 9.999DL;
+ printf("9.999DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%10.1DDf: '%10.1DDf'\n", d128);
+ printf(" %%10.2DDf: '%10.2DDf'\n", d128);
+ printf(" %%10.3DDf: '%10.3DDf'\n", d128);
+ printf(" %%10.4DDf: '%10.4DDf'\n", d128);
+ printf(" %%10.5DDf: '%10.5DDf'\n", d128);
+
+ d128 = 99999999999999.99999999999999999999DL;
+ printf("99999999999999.99999999999999999999DL\n");
+ printf("_Decimal128 Scientific: %DDf\n", d128);
+ printf(" %%30.1DDf: '%30.1DDf'\n", d128);
+ printf(" %%30.2DDf: '%30.2DDf'\n", d128);
+ printf(" %%30.3DDf: '%30.3DDf'\n", d128);
+ printf(" %%30.4DDf: '%30.4DDf'\n", d128);
+ printf(" %%30.5DDf: '%30.5DDf'\n", d128);
+ printf(" %%30.6DDf: '%30.6DDf'\n", d128);
+ printf(" %%30.7DDf: '%30.7DDf'\n", d128);
+ printf(" %%30.8DDf: '%30.8DDf'\n", d128);
+ printf(" %%30.9DDf: '%30.9DDf'\n", d128);
+ printf(" %%30.10DDf: '%30.10DDf'\n", d128);
+ printf(" %%30.11DDf: '%30.11DDf'\n", d128);
+ printf(" %%36.20DDf: '%36.20DDf'\n", d128);
+ printf(" %%36.21DDf: '%36.21DDf'\n", d128);
+
+ d32 = 999.9999DF;
+ printf("999.999999DF\n");
+ printf("_Decimal32 Scientific: %Hf\n", d32);
+ printf("_Decimal32 Engineering: %He\n", d32);
+ printf(" %%16.3Hf: '%16.3Hf'\n", d32);
+ printf(" %%16.4Hf: '%16.4Hf'\n", d32);
+ printf(" %%16.5Hf: '%16.5Hf'\n", d32);
+ printf("\n");
+
+ d32 = 999.999999DF;
+ printf("999.999999DF\n");
+ printf("_Decimal32 Scientific: %Hf\n", d32);
+ printf("_Decimal32 Engineering: %He\n", d32);
+ printf(" %%16.3Hf: '%16.3Hf'\n", d32);
+ printf("\n");
+
+ return -1;
+}