static constexpr fp16_16 _cos[256] = { 1.0, 0.9996988186962042, 0.9987954562051724, 0.9972904566786902, 0.9951847266721969, 0.99247953459871, 0.989176509964781, 0.9852776423889412, 0.9807852804032304, 0.9757021300385286, 0.970031253194544, 0.9637760657954398, 0.9569403357322088, 0.9495281805930367, 0.9415440651830208, 0.932992798834739, 0.9238795325112867, 0.9142097557035307, 0.9039892931234433, 0.8932243011955153, 0.881921264348355, 0.8700869911087115, 0.8577286100002721, 0.8448535652497071, 0.8314696123025452, 0.8175848131515837, 0.8032075314806449, 0.7883464276266063, 0.773010453362737, 0.7572088465064846, 0.7409511253549591, 0.724247082951467, 0.7071067811865476, 0.6895405447370669, 0.6715589548470183, 0.6531728429537768, 0.6343932841636455, 0.6152315905806268, 0.5956993044924335, 0.5758081914178453, 0.5555702330196023, 0.5349976198870973, 0.5141027441932217, 0.4928981922297841, 0.4713967368259978, 0.4496113296546066, 0.4275550934302822, 0.40524131400498986, 0.38268343236508984, 0.3598950365349883, 0.33688985339222005, 0.3136817403988916, 0.29028467725446233, 0.2667127574748984, 0.24298017990326398, 0.21910124015686977, 0.19509032201612833, 0.17096188876030136, 0.14673047445536175, 0.12241067519921628, 0.09801714032956077, 0.07356456359966745, 0.049067674327418126, 0.024541228522912264, 6.123233995736766e-17, -0.024541228522912142, -0.04906767432741801, -0.07356456359966733, -0.09801714032956065, -0.12241067519921615, -0.14673047445536164, -0.17096188876030124, -0.1950903220161282, -0.21910124015686966, -0.24298017990326387, -0.2667127574748983, -0.29028467725446216, -0.3136817403988914, -0.33688985339221994, -0.35989503653498817, -0.3826834323650897, -0.40524131400498975, -0.42755509343028186, -0.4496113296546067, -0.4713967368259977, -0.492898192229784, -0.5141027441932217, -0.534997619887097, -0.555570233019602, -0.5758081914178453, -0.5956993044924334, -0.6152315905806267, -0.6343932841636454, -0.6531728429537765, -0.6715589548470184, -0.6895405447370669, -0.7071067811865475, -0.7242470829514668, -0.7409511253549589, -0.7572088465064846, -0.773010453362737, -0.7883464276266062, -0.8032075314806448, -0.8175848131515836, -0.8314696123025453, -0.8448535652497071, -0.857728610000272, -0.8700869911087113, -0.8819212643483549, -0.8932243011955152, -0.9039892931234433, -0.9142097557035307, -0.9238795325112867, -0.9329927988347388, -0.9415440651830207, -0.9495281805930367, -0.9569403357322088, -0.9637760657954398, -0.970031253194544, -0.9757021300385285, -0.9807852804032304, -0.9852776423889412, -0.989176509964781, -0.99247953459871, -0.9951847266721968, -0.9972904566786902, -0.9987954562051724, -0.9996988186962042, -1.0, -0.9996988186962042, -0.9987954562051724, -0.9972904566786902, -0.9951847266721969, -0.99247953459871, -0.989176509964781, -0.9852776423889413, -0.9807852804032304, -0.9757021300385286, -0.970031253194544, -0.96377606579544, -0.9569403357322089, -0.9495281805930368, -0.9415440651830208, -0.932992798834739, -0.9238795325112868, -0.9142097557035307, -0.9039892931234434, -0.8932243011955153, -0.881921264348355, -0.8700869911087115, -0.8577286100002721, -0.8448535652497072, -0.8314696123025455, -0.8175848131515837, -0.8032075314806449, -0.7883464276266063, -0.7730104533627371, -0.7572088465064848, -0.7409511253549591, -0.724247082951467, -0.7071067811865477, -0.689540544737067, -0.6715589548470187, -0.6531728429537771, -0.6343932841636459, -0.6152315905806273, -0.5956993044924331, -0.5758081914178452, -0.5555702330196022, -0.5349976198870973, -0.5141027441932218, -0.4928981922297842, -0.47139673682599786, -0.44961132965460693, -0.4275550934302825, -0.40524131400499036, -0.38268343236509034, -0.35989503653498794, -0.33688985339221994, -0.31368174039889146, -0.29028467725446244, -0.26671275747489853, -0.24298017990326412, -0.2191012401568701, -0.19509032201612866, -0.1709618887603017, -0.1467304744553623, -0.12241067519921596, -0.09801714032956045, -0.07356456359966736, -0.04906767432741803, -0.02454122852291239, -1.8369701987210297e-16, 0.02454122852291202, 0.04906767432741766, 0.07356456359966698, 0.09801714032956009, 0.1224106751992156, 0.14673047445536194, 0.17096188876030133, 0.1950903220161283, 0.21910124015686974, 0.24298017990326376, 0.2667127574748982, 0.29028467725446205, 0.31368174039889113, 0.3368898533922196, 0.3598950365349876, 0.38268343236509, 0.40524131400499, 0.42755509343028214, 0.4496113296546066, 0.4713967368259976, 0.49289819222978387, 0.5141027441932216, 0.5349976198870969, 0.5555702330196018, 0.5758081914178449, 0.5956993044924329, 0.615231590580627, 0.6343932841636456, 0.6531728429537768, 0.6715589548470183, 0.6895405447370668, 0.7071067811865474, 0.7242470829514667, 0.7409511253549589, 0.7572088465064842, 0.7730104533627367, 0.7883464276266059, 0.803207531480645, 0.8175848131515837, 0.8314696123025452, 0.844853565249707, 0.857728610000272, 0.8700869911087113, 0.8819212643483548, 0.8932243011955151, 0.9039892931234431, 0.9142097557035305, 0.9238795325112865, 0.932992798834739, 0.9415440651830208, 0.9495281805930367, 0.9569403357322088, 0.9637760657954398, 0.970031253194544, 0.9757021300385285, 0.9807852804032303, 0.9852776423889411, 0.9891765099647809, 0.99247953459871, 0.9951847266721969, 0.9972904566786902, 0.9987954562051724, 0.9996988186962042, }; constexpr fp16_16 cos(int x) { return _cos[x & 255]; } constexpr fp16_16 sin(int x) { return _cos[(x + 64) & 255]; }