|
|
1.1 ! root 1: static ! 2: short costab[91]={ ! 3: 1024, 1024, 1023, 1023, 1022, ! 4: 1020, 1018, 1016, 1014, 1011, ! 5: 1008, 1005, 1002, 998, 994, ! 6: 989, 984, 979, 974, 968, ! 7: 962, 956, 949, 943, 935, ! 8: 928, 920, 912, 904, 896, ! 9: 887, 878, 868, 859, 849, ! 10: 839, 828, 818, 807, 796, ! 11: 784, 773, 761, 749, 737, ! 12: 724, 711, 698, 685, 672, ! 13: 658, 644, 630, 616, 602, ! 14: 587, 573, 558, 543, 527, ! 15: 512, 496, 481, 465, 449, ! 16: 433, 416, 400, 384, 367, ! 17: 350, 333, 316, 299, 282, ! 18: 265, 248, 230, 213, 195, ! 19: 178, 160, 143, 125, 107, ! 20: 89, 71, 54, 36, 18, ! 21: 0, ! 22: }; ! 23: cos (x) ! 24: register x; ! 25: { ! 26: x %= 360; ! 27: if(x<0) ! 28: x+=360; ! 29: if(x<=180) ! 30: return(x<90? costab[x] : -costab[180-x]); ! 31: return(x<180+90? -costab[x-180] : costab[360-x]); ! 32: } ! 33: ! 34: sin (x) ! 35: register x; ! 36: { ! 37: return(cos(x-90)); ! 38: } ! 39: ! 40: static ! 41: qatan2 (x, y) ! 42: register x, y; ! 43: { ! 44: if(x<y) ! 45: return(90-(45*((long)x)/y)); ! 46: if(y==0) ! 47: return(0); ! 48: return(45*((long)y)/x); ! 49: } ! 50: ! 51: atan2 (xx, yy){ ! 52: register x, y; ! 53: x = abs(xx); ! 54: y = abs(yy); ! 55: if(xx>=0 && yy>=0) ! 56: return(qatan2(x, y)); ! 57: if(xx<0 && yy<=0) ! 58: return(180+qatan2(x, y)); ! 59: if(xx<0 && yy>0) ! 60: return(180-qatan2(x, y)); ! 61: return(360-qatan2(x, y)); ! 62: } ! 63: ! 64: norm (x,y,z) ! 65: { ! 66: return (sqrt(x*x + y*y + z*z)); ! 67: } ! 68: ! 69: sqrtryz (x,y,z) ! 70: { ! 71: register long sumsq; ! 72: ! 73: sumsq = x*x - y*y - z*z; ! 74: if(sumsq <= 0) ! 75: return 0; ! 76: return(sqrt(sumsq)); ! 77: } ! 78: ! 79: #define MAXROOT 0xb504 ! 80: sqrt (x) ! 81: register long x; ! 82: { ! 83: register long high = MAXROOT; ! 84: register long low = 0; ! 85: register long current = MAXROOT/2; ! 86: if(x <= 0) ! 87: return 0; ! 88: if(x >= MAXROOT*MAXROOT) ! 89: return(MAXROOT); ! 90: while(high>low+1){ ! 91: if(current*current==x) ! 92: return (current); ! 93: if(current*current>x) ! 94: high=current; ! 95: else ! 96: low=current; ! 97: current=(high+low)>>1; ! 98: } ! 99: return(current); ! 100: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.