double table_sin[91] = { 0.000000 /* 0 */ , 0.017452 /* 1 */ , 0.034899 /* 2 */ , 0.052336 /* 3 */ , 0.069756 /* 4 */ , 0.087156 /* 5 */ , 0.104528 /* 6 */ , 0.121869 /* 7 */ , 0.139173 /* 8 */ , 0.156434 /* 9 */ , 0.173648 /* 10 */ , 0.190809 /* 11 */ , 0.207912 /* 12 */ , 0.224951 /* 13 */ , 0.241922 /* 14 */ , 0.258819 /* 15 */ , 0.275637 /* 16 */ , 0.292372 /* 17 */ , 0.309017 /* 18 */ , 0.325568 /* 19 */ , 0.342020 /* 20 */ , 0.358368 /* 21 */ , 0.374607 /* 22 */ , 0.390731 /* 23 */ , 0.406737 /* 24 */ , 0.422618 /* 25 */ , 0.438371 /* 26 */ , 0.453990 /* 27 */ , 0.469472 /* 28 */ , 0.484810 /* 29 */ , 0.500000 /* 30 */ , 0.515038 /* 31 */ , 0.529919 /* 32 */ , 0.544639 /* 33 */ , 0.559193 /* 34 */ , 0.573576 /* 35 */ , 0.587785 /* 36 */ , 0.601815 /* 37 */ , 0.615661 /* 38 */ , 0.629320 /* 39 */ , 0.642788 /* 40 */ , 0.656059 /* 41 */ , 0.669131 /* 42 */ , 0.681998 /* 43 */ , 0.694658 /* 44 */ , 0.707107 /* 45 */ , 0.719340 /* 46 */ , 0.731354 /* 47 */ , 0.743145 /* 48 */ , 0.754710 /* 49 */ , 0.766044 /* 50 */ , 0.777146 /* 51 */ , 0.788011 /* 52 */ , 0.798636 /* 53 */ , 0.809017 /* 54 */ , 0.819152 /* 55 */ , 0.829038 /* 56 */ , 0.838671 /* 57 */ , 0.848048 /* 58 */ , 0.857167 /* 59 */ , 0.866025 /* 60 */ , 0.874620 /* 61 */ , 0.882948 /* 62 */ , 0.891007 /* 63 */ , 0.898794 /* 64 */ , 0.906308 /* 65 */ , 0.913545 /* 66 */ , 0.920505 /* 67 */ , 0.927184 /* 68 */ , 0.933580 /* 69 */ , 0.939693 /* 70 */ , 0.945519 /* 71 */ , 0.951057 /* 72 */ , 0.956305 /* 73 */ , 0.961262 /* 74 */ , 0.965926 /* 75 */ , 0.970296 /* 76 */ , 0.974370 /* 77 */ , 0.978148 /* 78 */ , 0.981627 /* 79 */ , 0.984808 /* 80 */ , 0.987688 /* 81 */ , 0.990268 /* 82 */ , 0.992546 /* 83 */ , 0.994522 /* 84 */ , 0.996195 /* 85 */ , 0.997564 /* 86 */ , 0.998630 /* 87 */ , 0.999391 /* 88 */ , 0.999848 /* 89 */ , 1.000000 /* 90 */ } ; /*@ requires 0.0 <= degrees <= 90.0 ; */ double interp_sin(double degrees) { int i = (int) degrees; double r = degrees - i; double result = table_sin[i] * (1-r) + table_sin[i+1] * r; return result; }