default(realprecision,38);
aa=[1.0,2.0]
bb=2.5
str="string"
ii=10^100+1

/* d conversions */
printf("%%0.12ld for 1 : %0.12ld\n", 1)
printf("%%ld for medium : %ld\n", 10^40+10^20+1)
printf("%%ld for big : %ld\n", 7^1000)
printf("%%ld for very big : %ld\n", 7^10000)

/* x conversions */
printf("31 in base 16 == %x\n", 31)
printf("%%X for medium : %X\n", 10^40+10^20+1)
printf("%%#X for medium : %#X\n", 10^40+10^20+1)
printf("%%x for 0: %x\n", 0)
printf("%%#X for 0: %#X\n", 0)

/* s conversion */
printf("%%10s for \"string\" : %10s\n", str)
printf("%%.4s for \"string\" : %.4s\n", str)
printf("%%*.*s for \"string\" : %*.*s\n", 10,2, str)

printf("%%s for 1 : %s\n", 1)
printf("%%s for aa : %s\n", aa) /* same as %Z */
printf("%%s for 4/3 : %s\n", 4/3)
printf("%%s inter %%.2s %%4.2f for aa, bb, aa : %4s inter %.2s %4.2f\n", aa, bb, aa)

Strprintf("%%s inter %%.2s %%4.2f for aa, bb, aa : %4s inter %.2s %4.2f\n", aa, bb, aa)

printf("%%10.5s for 3.5 : %10.5s", 3.5)


/* f conversion */
printf("%%10f for Pi     : %.10f|\n", Pi)
printf("%%20.10f for 2.7 : %20.10f|\n", 2.7)
printf("%%+20.10f for 2.7: %+20.10f|\n", 2.7)
printf("%%-20.10f for 2.7: %-20.10f|\n", 2.7)
printf("%%-*.*f for 2.7: %-*.*f|\n", 20, 10, 2.7)

/* e conversion */
printf("%%20.10e for 2.7 : %20.10e|\n", 2.7)
printf("%%+20.10E for 2.7: %+20.10E|\n", 2.7)
printf("%%-20.10e for 2.7: %-20.10e|\n", 2.7)
printf("%%-20.10E for ii : %-20.10E|\n", ii)
printf("%%e for 1+0*I    : %E\n", 1+0*I)

/* g conversion */
printf("%%8.3g for 3.14159: %8.3g\n", 3.14159)
printf("%%8.3G for ii     : %8.3G\n", ii)
printf("%%8.3g for ii     : %8.3g\n", ii)
printf("%%-20.10g for 4/3 : %-20.10g|\n", 4/3)
printf("%%20.13e for 4/3  : %20.13e|\n", 4/3)
printf("%%e for 4/3       : %e|\n", 4/3)

/* error tests */
printf("%missing argument to format\n") /* ERROR : %m is not a valid format */

printf("%d missing argument to format\n") /* ERROR : missing argument(s) to format */

printf("%%-20.10g for aa : %-20.10g\n", aa) /* ERROR : aa is not a t_REAL */

\\regression tests
10^38 + 1.
printf("%.100f",1.)
printf("%1.0f",0)
printf("%.6f",5e-5)
