function kernelSin( x, y ) {
	var r;
	var v;
	var w;
	var z;

	z = x * x;
	w = z * z;
	r = S2 + (z * (S3 + (z*S4))) + (z * w * (S5 + (z*S6)));
	v = z * x;
	if ( y === 0.0 ) {
		return x + (v * (S1 + (z*r)));
	}
	return x - (((z*((0.5*y) - (v*r))) - y) - (v*S1));
}
Computes the sine on \\( \approx \[-\pi/4, \pi/4] \\) (except on \\(-0\\)), where \\( \pi/4 \approx 0.7854 \\).

## Method

-   Since \\( \sin(-x) = -\sin(x) \\), we need only to consider positive \\(x\\).

-   Callers must return \\( \sin(-0) = -0 \\) without calling here since our odd polynomial is not evaluated in a way that preserves \\(-0\\). Callers may do the optimization \\( \sin(x) \approx x \\) for tiny \\(x\\).

-   \\( \sin(x) \\) is approximated by a polynomial of degree \\(13\\) on \\( \left\[0,\tfrac{pi}{4}\right] \\)

    ```tex
    \sin(x) \approx x + S_1 \cdot x^3 + \ldots + S_6 \cdot x^{13}
    ```

    where

    ```tex
    \left| \frac{\sin(x)}{x} \left( 1 + S_1 \cdot x + S_2 \cdot x + S_3 \cdot x + S_4 \cdot x + S_5 \cdot x + S_6 \cdot x \right) \right| \le 2^{-58}
    ```

-   We have

    ```tex
    \sin(x+y) = \sin(x) + \sin'(x') \cdot y \approx \sin(x) + (1-x*x/2) \cdot y
    ```

    For better accuracy, let

    ```tex
    r = x^3 * \left( S_2 + x^2 \cdot \left( S_3 + x^2 * \left( S_4 + x^2 \cdot ( S_5+x^2 \cdot S_6 ) \right) \right) \right)
    ```

    then

    ```tex
    \sin(x) = x + \left( S_1 \cdot x + ( x \cdot (r-y/2) + y ) \right)
    ```

@param {number} x - input value (in radians, assumed to be bounded by `~pi/4` in magnitude)
@param {number} y - tail of `x`
@returns {number} sine

@example
var v = kernelSin( 0.0, 0.0 );
// returns ~0.0

@example
var v = kernelSin( 3.141592653589793/6.0, 0.0 );
// returns ~0.5

@example
var v = kernelSin( 0.619, 9.279e-18 );
// returns ~0.58

@example
var v = kernelSin( NaN, 0.0 );
// returns NaN

@example
var v = kernelSin( 3.0, NaN );
// returns NaN

@example
var v = kernelSin( NaN, NaN );
// returns NaN