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)));