// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package math

import "math"

/*
 *	floating point tangent
 */

// Tan returns the tangent of x.
func Tan(x float64) float64 {
	// Coefficients are #4285 from Hart & Cheney. (19.74D)
	const
	(
		P0	= -.1306820264754825668269611177e+5;
		P1	=  .1055970901714953193602353981e+4;
		P2	= -.1550685653483266376941705728e+2;
		P3	=  .3422554387241003435328470489e-1;
		P4	=  .3386638642677172096076369e-4;
		Q0	= -.1663895238947119001851464661e+5;
		Q1	=  .4765751362916483698926655581e+4;
		Q2	= -.1555033164031709966900124574e+3;
	)

	flag := false;
	sign := false;
	if x < 0 {
		x = -x;
		sign = true;
	}
	x = x * (4/Pi);   /* overflow? */
	var e float64;
	e, x = Modf(x);
	i := int32(e);

	switch i & 3 {
	case 1:
		x = 1 - x;
		flag = true;

	case 2:
		sign = !sign;
		flag = true;

	case 3:
		x = 1 - x;
		sign = !sign;
	}

	xsq := x*x;
	temp := ((((P4*xsq+P3)*xsq+P2)*xsq+P1)*xsq+P0)*x;
	temp = temp/(((xsq+Q2)*xsq+Q1)*xsq+Q0);

	if flag {
		if temp == 0 {
			panic(NaN());
		}
		temp = 1/temp;
	}
	if sign {
		temp = -temp;
	}
	return temp;
}
