JSFiddle - React, Tailwind, and code Playground

JavaScript

// LOOK UP TABLE
var LUT_SIN_COS = [];
var N = 14400;
var HALF_N = N >> 1;
var STEP = 4 * Math.PI / N;
var INV_STEP = 1 / STEP;
// BUILD LUT
for(var i=0, r = -2*Math.PI; i < N; i++, r += STEP) {
    LUT_SIN_COS[2*i] = Math.sin(r);
    LUT_SIN_COS[2*i + 1] = Math.cos(r);
}

var cosVal = NaN;
var sinVal = NaN;
var cosRads = NaN;
var sinRads = NaN;
var maxCosError = 0;
var maxSinError = 0;
for(var r = -2*Math.PI; r <= 2*Math.PI; r += (Math.PI / 180000)) {
    var index = ((r * INV_STEP) + HALF_N) << 1;
    var s = LUT_SIN_COS[index];
    var c = LUT_SIN_COS[index + 1];
    var se = Math.abs(s - Math.sin(r));
    var ce = Math.abs(c - Math.cos(r));
    if(se > maxSinError) { maxSinError = se; sinRads = r; sinVal = s; }
    if(ce > maxCosError) { maxCosError = ce; cosRads = r; cosVal = c; }
}
alert("Sin Error: " + maxSinError + " on " + sinRads + " : " + sinVal);
alert("Cos Error: " + maxCosError + " on " + cosRads + " : " + cosVal);
alert("Sin Error % of 1 radian: " + (maxSinError / (Math.PI / 180)));
alert("Cos Error % of 1 radian: " + (maxCosError / (Math.PI / 180)));