diff options
| author | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
| commit | 575bbaf976c5840fd0e308549c45a466fdec1352 (patch) | |
| tree | 11bfb498348bf7687bffc24699c4b1a998988ee4 /src/math/kf_sin.c | |
| parent | b825116df173b77e2cab217a7b76112c742f9279 (diff) | |
| parent | bc3610d8cecbfed40c62d4dcb93fc9a4d2a7c9e3 (diff) | |
Merge branch 'branch-1.3' into debian
Conflicts:
	ChangeLog
	altoslib/AltosRecordMM.java
	altosui/Makefile.am
	altosui/altos-windows.nsi.in
	configure.ac
	debian/changelog
	debian/control
	doc/Makefile
	doc/altusmetrum.xsl
	doc/release-notes-1.2.1.xsl
	doc/release-notes-1.2.xsl
Diffstat (limited to 'src/math/kf_sin.c')
| -rw-r--r-- | src/math/kf_sin.c | 49 | 
1 files changed, 49 insertions, 0 deletions
diff --git a/src/math/kf_sin.c b/src/math/kf_sin.c new file mode 100644 index 00000000..e81fa0bd --- /dev/null +++ b/src/math/kf_sin.c @@ -0,0 +1,49 @@ +/* kf_sin.c -- float version of k_sin.c + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice  + * is preserved. + * ==================================================== + */ + +#include "fdlibm.h" + +#ifdef __STDC__ +static const float  +#else +static float  +#endif +half =  5.0000000000e-01,/* 0x3f000000 */ +S1  = -1.6666667163e-01, /* 0xbe2aaaab */ +S2  =  8.3333337680e-03, /* 0x3c088889 */ +S3  = -1.9841270114e-04, /* 0xb9500d01 */ +S4  =  2.7557314297e-06, /* 0x3638ef1b */ +S5  = -2.5050759689e-08, /* 0xb2d72f34 */ +S6  =  1.5896910177e-10; /* 0x2f2ec9d3 */ + +#ifdef __STDC__ +	float __kernel_sinf(float x, float y, int iy) +#else +	float __kernel_sinf(x, y, iy) +	float x,y; int iy;		/* iy=0 if y is zero */ +#endif +{ +	float z,r,v; +	__int32_t ix; +	GET_FLOAT_WORD(ix,x); +	ix &= 0x7fffffff;			/* high word of x */ +	if(ix<0x32000000)			/* |x| < 2**-27 */ +	   {if((int)x==0) return x;}		/* generate inexact */ +	z	=  x*x; +	v	=  z*x; +	r	=  S2+z*(S3+z*(S4+z*(S5+z*S6))); +	if(iy==0) return x+v*(S1+z*r); +	else      return x-((z*(half*y-v*r)-y)-v*S1); +}  | 
