function cot(r) { c = cos(r) s = sin(r) if (s == 0) { retval = "-----" } else { retval = c / s } return retval } function print_footer() { print ",,,,Cos,Cot,Tan,Sin,Degrees,Minutes,Angle,Radians" print "\f" return } function print_header() { print "Radians,Angle,Degrees,Minutes,Sin,Tan,Cot,Cos,,,," return } function round(x, ival, aval, fraction) { ival = int(x) # integer part, int() truncates # see if fractional part if (ival == x) # no fraction return ival # ensure no decimals if (x < 0) { aval = -x # absolute value ival = int(aval) fraction = aval - ival if (fraction >= .5) return int(x) - 1 # -2.5 --> -3 else return int(x) # -2.3 --> -2 } else { fraction = x - ival if (fraction >= .5) return ival + 1 else return ival } } function tan(r) { c = cos(r) s = sin(r) if (c == 0) { retval = "-----" } else { retval = sin(r) / cos(r) } return retval } BEGIN { symbol_ascii = " " symbol_utf8 = "\302\260" symbol = symbol_utf8 pi = atan2(1, 1) * 4.0 deg2rad = pi / 180 OFS = "," ORS = "\r\n" print_header() d = 0 deg_per_page = 9 for (d = 0; d <= 45; d++) { for (m = 0; m < 60; m += 10) { fd = d + m / 60 r = fd * deg2rad fd2 = 90 - fd d2 = int(fd2) fm2 = fd2 - d2 m2 = round(fm2 * 60) r2 = pi / 2 - r mtext = sprintf("%02d'", m) if (m == 0) { angle = d symbol " " mtext } else { angle = mtext } m2text = sprintf("%02d'", m2) if (m2 == 0 || m2 == 50) { angle2 = d2 symbol " " m2text } else { angle2 = m2text } print r, angle, d, m, sin(r), tan(r), cot(r), cos(r), d2, m2, angle2, r2 } if (d > 0 && d < 44 && (d + 1) % deg_per_page == 0) { print_footer() print_header() } } print_footer() }