www.pudn.com > CRGAB.zip > SINX.C
/*
HEADER: ;
TITLE: Sin(x) series approximation;
VERSION: 1.0;
DESCRIPTION: Function to demonstrate how a Taylor series expansion of
sin(x) may be implemented. Convergence is fast and
arguments are accepted in degrees. Large arguments accepted.;
KEYWORDS: Sin(x), math functions, approximations;
SYSTEM: MSDOS 1.x, 2.x, 3.x;
FILENAME: SINX;
WARNINGS: None ;
SEE-ALSO: LNX, EXP, IFAC, ABS_VAL,MATHCLUD.FUN;
AUTHORS: Dr. Ronald J. Terry;
COMPILERS: Turbo C 2.0;
*/
#include "mathclud.fun"
double sinx(double sinarg)
{
double sum=0.0,s1=100.0,xval,radtodeg=3.14159265358979/180;
int k=0,oddeven=1;
sinarg = ((sinarg/360)-(int)(sinarg/360))*360.0; /* convert to */
sinarg = sinarg*radtodeg; /* radians and scale input */
for(;;)
{
sum = sum + oddeven*Intpwr(sinarg,2*k+1)/Ifac(2*k+1);
oddeven = oddeven*(-1);
k++; /* sum series */
if(Abs_val(s1-sum)<=1e-10)
break;
s1 = sum;
}
return (sum);
}