home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1987 Bellcore
- * All Rights Reserved
- * Permission is granted to copy or use this program, EXCEPT that it
- * may not be sold for profit, the copyright notice must be reproduced
- * on copies, and credit should be given to Bellcore where it is due.
- * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- */
- /* $Header: sin.c,v 4.1 88/06/21 13:40:58 bianchi Exp $
- $Source: /tmp/mgrsrc/lib/RCS/sin.c,v $
- */
- static char RCSid_[] = "$Source: /tmp/mgrsrc/lib/RCS/sin.c,v $$Revision: 4.1 $";
-
- /* sine and cosine routines
- * input: degrees (integer)
- * output: sine/cosine * 1024
- */
-
- /* sin table 0-90 degrees * 1024 */
-
- int sintab[] = {
- 0, 18, 36, 54, 71, 89, 107, 125, 143, 160,
- 178, 195, 213, 230, 248, 265, 282, 299, 316, 333,
- 350, 367, 384, 400, 416, 433, 449, 465, 481, 496,
- 512, 527, 543, 558, 573, 587, 602, 616, 630, 644,
- 658, 672, 685, 698, 711, 724, 737, 749, 761, 773,
- 784, 796, 807, 818, 828, 839, 849, 859, 868, 878,
- 887, 896, 904, 912, 920, 928, 935, 943, 949, 956,
- 962, 968, 974, 979, 984, 989, 994, 998, 1002, 1005,
- 1008, 1011, 1014, 1016, 1018, 1020, 1022, 1023, 1023,
- 1024, 1024,
- } ;
-
- int
- isin(n)
- register int n; /* angle in degrees */
- {
- if (n < 0)
- return(-isin(-n));
-
- while (n >= 360)
- n -= 360;
-
- if (n < 90)
- return( sintab[n]);
- else if (n < 180)
- return( sintab[180-n]);
- else if (n < 270)
- return( -sintab[n-180]);
- else
- return( -sintab[360-n]);
- }
-
- int
- icos(n)
- register int n;
- {
- if (n < 0)
- n = -n;
-
- while (n >= 360)
- n -= 360;
-
- if (n < 90)
- return( sintab[90-n]);
- else if (n < 180)
- return( -sintab[n-90]);
- else if (n < 270)
- return( -sintab[270-n]);
- else
- return( sintab[n-270]);
- }
-