home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
471
/
rccl123
< prev
next >
Wrap
Text File
|
1987-03-02
|
2KB
|
117 lines
#include "arch.h"
double sin(a)
double a;
{
register int i, q;
float h;
float fa = a, ftbpi = TBPI, fst = ST;
h = fa * ftbpi;
i = h * fst;
q = h;
if (i < 0) {
i = -i;
q = 2 - q;
}
switch (q & 03) {
case 0 :
return(st[i & MMAS]);
case 1 :
return(st[ST - 1 - (i & MMAS)]);
case 2 :
return(-st[i & MMAS]);
case 3:
return(-st[ST - 1 - (i & MMAS)]);
}
}
double cos(a)
double a;
{
register int i, q;
float h;
float fa = a, ftbpi = TBPI, fst = ST;
h = fa * ftbpi;
i = h * fst; i += ST;
q = h + 1;
if (i < 0) {
i = -i;
q = -q + 2;
}
switch (q & 03) {
case 0 :
return(st[i & MMAS]);
case 1 :
return(st[ST - 1 - (i & MMAS)]);
case 2 :
return(-st[i & MMAS]);
case 3:
return(-st[ST - 1 - (i & MMAS)]);
}
}
#define ABS(n) ((n < 0.) ? -n : n)
double atan2(y, x)
double y, x;
{
register int i;
float fy = y, fx = x;
float fat = AT, h;
if (fy + fx == fy) {
if (fy >= 0.) {
return(PIB2);
}
else {
return(-PIB2);
}
}
if (ABS(fy) <= ABS(fx)) {
h = fy / fx;
h *= fat;
i = h;
if (fx > 0.) {
if (fy > 0.) {
return(at[i]);
}
else {
return(-at[-i]);
}
}
else {
if (fy > 0.) {
return(PI - at[-i]);
}
else {
return(-PI + at[i]);
}
}
}
else {
h = fx / fy;
h *= fat;
i = h;
if (fx > 0.) {
if (fy > 0.) {
return(PIB2 - at[i]);
}
else {
return(-PIB2 + at[-i]);
}
}
else {
if (fy > 0.) {
return(PIB2 + at[-i]);
}
else {
return(-PIB2 - at[i]);
}
}
}
}