Example #1
0
File: tan.c Project: freiling/mojo
double tan(double x) {
  double y[2];
  uint32_t ix;
  unsigned n;

  GET_HIGH_WORD(ix, x);
  ix &= 0x7fffffff;

  /* |x| ~< pi/4 */
  if (ix <= 0x3fe921fb) {
    if (ix < 0x3e400000) { /* |x| < 2**-27 */
      /* raise inexact if x!=0 and underflow if subnormal */
      FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f);
      return x;
    }
    return __tan(x, 0.0, 0);
  }

  /* tan(Inf or NaN) is NaN */
  if (ix >= 0x7ff00000)
    return x - x;

  /* argument reduction */
  n = __rem_pio2(x, y);
  return __tan(y[0], y[1], n & 1);
}
Example #2
0
File: tan.c Project: xyuan/Path64
/*
 * TAN: TAN of real(kind=8) - pass by address
 */
_f_real8
_TAN_( _f_real8 *x )
{
	_f_real8 __tan(_f_real8 x);
	return ( (_f_real8) __tan((_f_real8) *x));
}
Example #3
0
Err mathlib_tan(UInt16 refnum, double x, double *result) {
#pragma unused(refnum)
	*result = __tan(x);
	return mlErrNone;
}
Example #4
0
File: htan.c Project: xyuan/Path64
/*
 * HTAN: TAN of real(kind=4) - pass by value
 */
_f_real4
_HTAN( _f_real4 x )
{
	_f_real8 __tan(_f_real8 x);
	return ( (_f_real4) __tan((_f_real8) x) );
}
Example #5
0
double tan( double x ) {
  return __tan( x );
}