Blame test/printfloat.awk

Packit Service f629e6
# Test program for checking sprintf operation with various floating
Packit Service f629e6
# point formats
Packit Service f629e6
#
Packit Service f629e6
# Watch out - full output of this program will have 3000 * tot lines,
Packit Service f629e6
# which will take a chunk of space if you will write it to your disk.
Packit Service f629e6
# --mj
Packit Service f629e6
Packit Service f629e6
BEGIN {
Packit Service f629e6
    just = "-"
Packit Service f629e6
    plus = "+ "
Packit Service f629e6
    alt  = "#"
Packit Service f629e6
    zero = "0"
Packit Service f629e6
    spec = "feEgG"
Packit Service f629e6
    fw[1] = ""
Packit Service f629e6
    fw[2] = "1"
Packit Service f629e6
    fw[3] = "5"
Packit Service f629e6
    fw[4] = "10"
Packit Service f629e6
    fw[5] = "15"
Packit Service f629e6
    prec[1] = ".-1"
Packit Service f629e6
    prec[2] = ""
Packit Service f629e6
    prec[3] = ".2"
Packit Service f629e6
    prec[4] = ".5"
Packit Service f629e6
    prec[5] = ".10"
Packit Service f629e6
Packit Service f629e6
    num = 123.6
Packit Service f629e6
    factor = 1.0e-12
Packit Service f629e6
    tot = 8
Packit Service f629e6
    data[1] = 0
Packit Service f629e6
    data[2] = 1
Packit Service f629e6
    for (i = 3; i <= tot; i++) {
Packit Service f629e6
	data[i] = num * factor
Packit Service f629e6
	factor *= 1000
Packit Service f629e6
    }
Packit Service f629e6
Packit Service f629e6
    for (j = 1; j <= 2; j++) {
Packit Service f629e6
	for (p = 1; p <= 3; p++) {
Packit Service f629e6
	    for (a = 1; a <= 2; a++) {
Packit Service f629e6
		for (z = 1; z <= 2; z++) {
Packit Service f629e6
		    for (s = 1; s <= 5; s++) {
Packit Service f629e6
			for (w = 1; w <= 5; w++) {
Packit Service f629e6
			    for (r = 1; r <= 5; r++) {
Packit Service f629e6
				frmt = "|%" substr(just, j, 1)
Packit Service f629e6
				frmt = frmt substr(plus, p, 1)
Packit Service f629e6
				frmt = frmt substr(alt,  a, 1)
Packit Service f629e6
				frmt = frmt substr(zero, z, 1)
Packit Service f629e6
				frmt = frmt fw[w] prec[r]
Packit Service f629e6
				frmt = frmt substr(spec, s, 1) "|"
Packit Service f629e6
				for (i = 1; i <= tot; i++) {
Packit Service f629e6
				    result = sprintf(frmt, data[i])
Packit Service f629e6
#				    "normalize" if you must
Packit Service f629e6
#				    sub(/\|\./, "|0.", result)
Packit Service f629e6
				    printf("%-16s %-25s\t%g\n", frmt,
Packit Service f629e6
						 result,data[i])
Packit Service f629e6
				}
Packit Service f629e6
			    }
Packit Service f629e6
			}
Packit Service f629e6
		    }
Packit Service f629e6
		}
Packit Service f629e6
	    }
Packit Service f629e6
	}
Packit Service f629e6
    }
Packit Service f629e6
}