| 1 | # Test program for checking sprintf operation with various floating
|
|---|
| 2 | # point formats
|
|---|
| 3 | #
|
|---|
| 4 | # Watch out - full output of this program will have 3000 * tot lines,
|
|---|
| 5 | # which will take a chunk of space if you will write it to your disk.
|
|---|
| 6 | # --mj
|
|---|
| 7 |
|
|---|
| 8 | BEGIN {
|
|---|
| 9 | just = "-"
|
|---|
| 10 | plus = "+ "
|
|---|
| 11 | alt = "#"
|
|---|
| 12 | zero = "0"
|
|---|
| 13 | spec = "feEgG"
|
|---|
| 14 | fw[1] = ""
|
|---|
| 15 | fw[2] = "1"
|
|---|
| 16 | fw[3] = "5"
|
|---|
| 17 | fw[4] = "10"
|
|---|
| 18 | fw[5] = "15"
|
|---|
| 19 | prec[1] = ".-1"
|
|---|
| 20 | prec[2] = ""
|
|---|
| 21 | prec[3] = ".2"
|
|---|
| 22 | prec[4] = ".5"
|
|---|
| 23 | prec[5] = ".10"
|
|---|
| 24 |
|
|---|
| 25 | num = 123.6
|
|---|
| 26 | factor = 1.0e-12
|
|---|
| 27 | tot = 8
|
|---|
| 28 | data[1] = 0
|
|---|
| 29 | data[2] = 1
|
|---|
| 30 | for (i = 3; i <= tot; i++) {
|
|---|
| 31 | data[i] = num * factor
|
|---|
| 32 | factor *= 1000
|
|---|
| 33 | }
|
|---|
| 34 |
|
|---|
| 35 | for (j = 1; j <= 2; j++) {
|
|---|
| 36 | for (p = 1; p <= 3; p++) {
|
|---|
| 37 | for (a = 1; a <= 2; a++) {
|
|---|
| 38 | for (z = 1; z <= 2; z++) {
|
|---|
| 39 | for (s = 1; s <= 5; s++) {
|
|---|
| 40 | for (w = 1; w <= 5; w++) {
|
|---|
| 41 | for (r = 1; r <= 5; r++) {
|
|---|
| 42 | frmt = "|%" substr(just, j, 1)
|
|---|
| 43 | frmt = frmt substr(plus, p, 1)
|
|---|
| 44 | frmt = frmt substr(alt, a, 1)
|
|---|
| 45 | frmt = frmt substr(zero, z, 1)
|
|---|
| 46 | frmt = frmt fw[w] prec[r]
|
|---|
| 47 | frmt = frmt substr(spec, s, 1) "|"
|
|---|
| 48 | for (i = 1; i <= tot; i++) {
|
|---|
| 49 | result = sprintf(frmt, data[i])
|
|---|
| 50 | # "normalize" if you must
|
|---|
| 51 | # sub(/\|\./, "|0.", result)
|
|---|
| 52 | printf("%-16s %-25s\t%g\n", frmt,
|
|---|
| 53 | result,data[i])
|
|---|
| 54 | }
|
|---|
| 55 | }
|
|---|
| 56 | }
|
|---|
| 57 | }
|
|---|
| 58 | }
|
|---|
| 59 | }
|
|---|
| 60 | }
|
|---|
| 61 | }
|
|---|
| 62 | }
|
|---|