// Copyright 2016 Activision Publishing, Inc. // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. static const float4 coeffs[7][5][6] = {{{float4(0.0002037563, 0.0045063655, -0.0016408688, 0.00012037493), float4(-9.1834951e-05, -0.008947532, -8.1524405e-05, -3.9080094e-05), float4(-2.6038267e-05, -6.8409667e-05, 7.2175702e-05, 0.25492775), float4(-9.9426044e-05, 0.0025427756, -0.00074437925, 1.1773191e-05), float4(-3.2668211e-05, 0.0026930659, -4.824934e-05, -0.0006835048), float4(-0.0002864144, -0.0032220854, 0.0021558286, -0.00014573736)}, {float4(0.00030683201, 0.0026819548, -0.00060011756, -0.0067169226), float4(-0.0030993251, 0.0098575575, 0.0022416671, -8.9075401e-05), float4(0.00052405626, 0.00057860515, 0.00011654518, -0.048018609), float4(0.00010850967, -0.0088443512, -0.0018168095, 8.6633128e-05), float4(0.003333989, -0.0050956447, -8.0414612e-05, 0.0049721239), float4(-4.0961436e-05, -8.5486984e-05, 0.0058683066, 2.2978359e-05)}, {float4(0.99999993, 0.99998625, 0.99999847, 0.99997743), float4(0.99999519, 0.99991138, 0.99999748, 1), float4(0.99999986, 0.99999983, 0.99999999, 0.96576708), float4(0.99999999, 0.99995765, 0.99999807, 1), float4(0.99999444, 0.99998339, 1, 0.99998741), float4(0.99999996, 0.99999481, 0.99998046, 0.99999999)}, {float4(-0.32267524, -0.65409377, -1.4666488, 0.87153305), float4(-1.264365, 0.89880861, -1.2245906, -0.88501403), float4(-0.31118682, -0.086150323, -0.58811532, 1.1317711), float4(-1.2193493, 1.250379, -1.0871569, -0.12694096), float4(-0.4012249, -0.47436307, -0.59661001, 2.7313005), float4(-1.3109856, 0.60929855, 0.55672643, -0.39880018)}, {float4(0.93273157, 0.59530745, 1.1994788, 0.19102276), float4(1.2272239, 0.23245736, 1.2577607, 2.5491008), float4(1.1210098, 0.83074953, 1.3049282, -0.001940633), float4(1.5839111, 0.10520816, 1.150458, 2.3251789), float4(0.688692, 0.59807498, 1.3374877, 0.095746692), float4(1.3054173, 0.36604721, 0.065870226, 1.6496907)}}, {{float4(0.10348445, -4.6771514e-07, -0.011513131, 8.8921052e-05), float4(-0.042152043, 0.013143535, 0.00029120107, 0.036661611), float4(-0.04516036, 0.011438473, -0.0099289792, -0.011707897), float4(-0.034779497, 0.0090981166, -5.4202726e-05, 0.038592793), float4(-0.0071967376, -0.0056614418, -0.012278945, 0.0056867462), float4(-0.037678514, 0.011570177, 0.00029044557, 0.038583909)}, {float4(0.048320869, 1.4603673e-05, 0.0092672368, 0.00033289199), float4(0.0071001761, -0.0090106091, -0.0027305905, -0.00221479), float4(-0.0027204116, 0.00017921587, 0.015296357, -0.00010306185), float4(0.0079350203, -0.014772431, -1.2410913e-05, -0.0062296897), float4(0.025087691, 0.00086046427, 0.015034685, -0.00078224706), float4(0.00074587265, -0.014602074, 0.00027338224, -0.012848552)}, {float4(0.99345662, 1, 0.99989078, 0.99999994), float4(0.99908598, 0.99987302, 0.99999623, 0.99932528), float4(0.99897605, 0.99993456, 0.9998337, 0.99993145), float4(0.99936351, 0.99984949, 1, 0.9992356), float4(0.99965935, 0.9999836, 0.99981158, 0.99998352), float4(0.99928963, 0.99982644, 0.99999992, 0.99917276)}, {float4(3.6882765, 0.15963861, 0.55983965, 0.4075649), float4(2.1169304, 0.56463157, 0.52957047, 2.0117964), float4(3.1080461, 0.09682931, 0.42125986, 0.089254784), float4(1.4247315, 0.48411378, -0.17039102, 1.7431674), float4(4.0339531, 0.14046159, 0.89848909, 0.011661811), float4(1.9787852, 0.61750145, 0.63514194, 1.9359003)}, {float4(0.030848793, 1.4472743, 1.4356825, 1.4078009), float4(0.37639678, 1.0793106, 1.1945413, 0.43983395), float4(0.27451605, 1.5256415, 1.016769, 1.4850575), float4(0.54580883, 1.1332879, 3.1331784, 0.60772955), float4(0.11785158, 1.3928946, 0.94998805, 1.0377182), float4(0.2842108, 1.0026911, 1.9064553, 0.27147854)}}, {{float4(-0.096789259, 0.10326967, 0.0011799959, -0.03077328), float4(0.08342021, 0.033260738, -0.00045864451, -0.021450568), float4(-0.093369441, -0.05807574, -0.033745214, 0.023817208), float4(0.056747754, 0.031140512, 0.00019362509, -0.023727797), float4(-0.084538386, -0.040545412, -0.0076838784, 0.03424599), float4(0.074312056, 0.027619787, 0.0015509082, -0.031043528)}, {float4(-0.0085160473, -0.012179292, 0.0049910118, 0.020224799), float4(0.022559343, -0.016273333, -0.0069382139, 0.00058083224), float4(-0.001115062, 0.035002846, -0.0038974773, -0.039378629), float4(0.0014921617, -0.00058523872, -0.0011606685, 0.02807528), float4(-0.021454809, 0.052957852, -0.0022083677, -0.027956663), float4(-0.016486487, -0.0040233682, 0.00029949558, 0.021924605)}, {float4(0.99526846, 0.99457883, 0.99998685, 0.99932175), float4(0.99625908, 0.99931422, 0.99997583, 0.99976974), float4(0.99563091, 0.99769836, 0.99942287, 0.99894047), float4(0.99838743, 0.99951485, 0.99999931, 0.99932416), float4(0.99618922, 0.99777329, 0.99996804, 0.99902234), float4(0.99709875, 0.9996104, 0.99999875, 0.99927754)}, {float4(3.0342011, 4.8022834, 1.3814123, 1.5280754), float4(2.9043837, 1.7325954, 1.422223, 2.0569263), float4(3.0358722, 5.3331504, 1.5680146, 1.6079289), float4(3.2062833, 1.5368069, 1.0484709, 1.5399477), float4(2.4471653, 4.0916696, 1.5060688, 1.5807009), float4(2.6932695, 1.5161537, 1.3991175, 1.6301918)}, {float4(0.50787578, 0.17735471, 1.4006765, 1.0878482), float4(0.69514518, 1.6765187, 1.2224869, 1.3461327), float4(0.71381288, 0.17509216, 1.2712934, 0.94575821), float4(1.1817337, 1.796984, 1.8671538, 1.5708691), float4(0.55621228, 0.38291359, 1.4128781, 0.82625349), float4(0.72441647, 1.005794, 1.5522327, 1.6032524)}}, {{float4(-0.00041301094, -0.095882618, 0.26932618, -0.25137214), float4(0.13737415, -0.12694293, -0.0090389663, 0.07227623), float4(-0.005236407, -0.0072961249, 0.27776083, -0.19536433), float4(0.12781899, -0.042881667, -0.095979169, 0.088937396), float4(0.037496084, -0.090547583, 0.22112334, -0.21930294), float4(0.13353408, -0.084346121, -0.011365728, 0.043459312)}, {float4(-0.05799135, -0.048612281, 0.02422989, 0.015536268), float4(-0.083144241, 0.039381032, 0.018705957, 0.029297922), float4(0.026364989, -0.041927591, 0.036718516, 0.0050376168), float4(-0.11562256, 0.043521976, -0.014481644, 0.01529188), float4(-0.047859898, -0.057779647, -0.053171395, -0.0063193506), float4(-0.028781196, 0.041145059, -0.00018523142, 0.053524246)}, {float4(0.998317, 0.99420489, 0.96274416, 0.96776581), float4(0.98702349, 0.99112796, 0.99978417, 0.99695425), float4(0.99963867, 0.99909401, 0.95994827, 0.9807178), float4(0.98503489, 0.99813175, 0.99527799, 0.99591983), float4(0.99815003, 0.99421459, 0.97379529, 0.97563635), float4(0.99062621, 0.99558667, 0.99993539, 0.99762039)}, {float4(2.3221943, 2.5383575, 4.3177232, 4.2016467), float4(3.1936529, 3.0443024, 2.548962, 2.7636456), float4(2.5923827, 2.3497949, 4.2471014, 4.1975975), float4(3.3748785, 3.2836577, 2.9220414, 2.7175317), float4(2.3290083, 2.5560991, 4.3572168, 4.4372585), float4(3.1512055, 3.2863613, 2.4475378, 2.3620003)}, {float4(0.62833231, 0.52378061, 0.55845033, 0.64883444), float4(0.76905594, 1.1017801, 1.8714048, 1.5664383), float4(1.5283278, 1.2423369, 0.62247385, 1.0341956), float4(0.77484548, 1.6866409, 1.0307399, 1.4224643), float4(0.85627405, 0.72516079, 0.70094339, 0.7547877), float4(1.202842, 1.7650605, 1.5938526, 0.97031337)}}, {{float4(-0.078108035, -0.049518839, 0.26950139, -0.51522828), float4(0.43015518, -0.045354216, 0.094550359, -0.2395012), float4(-0.079900522, -0.082582235, 0.24464909, -0.5234896), float4(0.38422945, -0.023833644, 0.07334288, -0.22827313), float4(-0.075370379, -0.05156594, 0.19883182, -0.45064193), float4(0.46285395, 0.021899343, 0.10155287, -0.25974773)}, {float4(0.068681419, -0.32175988, 0.15143274, -0.0066205388), float4(-0.17060226, 0.31051319, -0.080511981, -0.1593209), float4(0.08167251, -0.32517768, 0.10937023, -0.06941926), float4(-0.14580685, 0.32474959, -0.081718057, -0.11068378), float4(0.053961394, -0.29322836, 0.10408839, -0.02243046), float4(-0.030598471, 0.34332821, -0.091528353, -0.16299796)}, {float4(0.99457629, 0.9455255, 0.95101899, 0.85702741), float4(0.88648824, 0.94948647, 0.99225906, 0.95773484), float4(0.99345131, 0.94204015, 0.96342357, 0.84919939), float4(0.9116513, 0.94549969, 0.99395321, 0.96728511), float4(0.99569447, 0.95465076, 0.97449039, 0.89242295), float4(0.88590629, 0.93896015, 0.99061071, 0.95182077)}, {float4(3.6380949, 4.1749529, 4.1351439, 4.8389883), float4(5.256362, 4.2027959, 3.6096892, 3.9848645), float4(3.5689427, 3.8620869, 4.0023981, 4.8268584), float4(5.1128497, 4.468934, 3.5851596, 4.047485), float4(3.7014988, 4.1310058, 4.2446872, 5.3049323), float4(4.8659881, 4.3133002, 3.4582876, 3.8863853)}, {float4(1.6276316, 0.7747672, 1.0485958, 0.73900224), float4(0.72010795, 0.65403093, 1.3179681, 0.65610074), float4(1.5881174, 0.55108527, 1.0509725, 0.72153362), float4(1.1389053, 1.0905142, 1.6661598, 0.9987548), float4(1.977914, 0.83001686, 1.0571479, 0.80249183), float4(0.94107069, 0.80840873, 0.95379751, 0.50386367)}}, {{float4(0.015525428, -0.48038019, -0.021799698, 0.43629156), float4(0.045681247, -0.55039024, -0.54573329, 0.57817853), float4(-0.045869129, -0.42209953, -0.14040829, 0.37787106), float4(0.66327604, -0.70070311, -0.55261635, 0.63446196), float4(0.015397585, -0.43515767, -0.021927897, 0.4203714), float4(0.85681772, -0.65394729, -0.67557236, 0.60104142)}, {float4(-0.31503888, -0.26745648, 0.26817896, 0.26548747), float4(-0.93282124, -0.033621213, 0.68374802, -0.10858524), float4(-0.21723689, -0.17935495, 0.38521982, 0.2578335), float4(-0.39913153, 0.23555359, 0.59589456, -0.19075103), float4(-0.28851798, -0.24142459, 0.28279261, 0.24766617), float4(-0.29435977, -0.25850549, 0.57790878, -0.200546)}, {float4(0.94895177, 0.83528552, 0.96312243, 0.85974768), float4(0.35743218, 0.8342303, 0.48442112, 0.80865248), float4(0.97504059, 0.88863029, 0.9120807, 0.88923301), float4(0.63305523, 0.67344611, 0.58268761, 0.74904744), float4(0.95735066, 0.86738225, 0.9589304, 0.87289711), float4(0.42333878, 0.71100482, 0.45784651, 0.77364753)}, {float4(5.3641275, 5.2550422, 5.3103777, 5.2851215), float4(5.2657045, 6.2095784, 6.9549598, 4.9205516), float4(5.163385, 5.3141038, 4.9907618, 5.3583852), float4(6.1257061, 6.1102338, 6.9549598, 5.3129951), float4(5.3138838, 5.3257842, 5.3133783, 5.2687156), float4(5.8915091, 6.153324, 6.9549598, 4.9568971)}, {float4(3.1221918, 1.1882615, 2.6991784, 1.1185048), float4(-0.2322432, -0.16590163, 0.088416958, 0.057399579), float4(3.4395383, 1.5836276, 2.6242352, 1.2873336), float4(-0.23767634, -0.79425452, 0.20477899, 0.40461516), float4(2.2521751, 1.1933374, 2.3309484, 1.0185309), float4(-0.099258385, -0.2173726, 0.0736866, 0.15470436)}}, {{float4(0.066050217, -0.33053278, -0.13771479, 0.33278465), float4(0.00084467977, -0.50077778, -0.30083482, 0.6494273), float4(0.24880159, -0.30354993, -0.15417892, 0.38203296), float4(-0.073325098, -0.4778777, 0.10779844, 0.66683723), float4(0.15703809, -0.36335455, -0.15657631, 0.35926503), float4(0.26127617, -0.29524368, -0.14490804, 0.65461301)}, {float4(-0.57970022, -0.33939622, 0.72169742, 0.320959), float4(-0.38698206, -0.12730306, 0.65810895, 0.026509232), float4(-0.6199708, -0.34745658, 0.68683659, 0.34547285), float4(-0.3613378, -0.14006845, 0.65917895, 0.038446867), float4(-0.57778101, -0.35057776, 0.57837882, 0.36488991), float4(-0.50051482, -0.019174387, 0.50816239, 0.02682636)}, {float4(0.8121484, 0.88065787, 0.67837119, 0.88670158), float4(0.92208686, 0.85616327, 0.69021085, -0.75996148), float4(0.74413303, 0.88720424, 0.71027063, 0.85714604), float4(0.92954743, 0.86718726, 0.74421946, -0.74421095), float4(0.80094204, 0.86317363, 0.8006009, 0.85894353), float4(0.82536033, 0.95522956, 0.8489833, -0.75548802)}, {float4(5.7725061, 5.1565901, 5.6224483, 5.0847054), float4(5.7717118, 6.4180057, 6.9797014, -0.03290957), float4(5.7847117, 5.2015529, 5.614561, 5.2019388), float4(6.2613999, 6.5807982, 6.9797014, -0.032764603), float4(5.823775, 5.2332343, 5.826694, 5.197143), float4(6.3463188, 5.8174311, 6.9797014, -0.032766769)}, {float4(2.96787, 1.3557735, 2.0749129, 1.3066609), float4(-0.92782801, 0.0079162579, -0.33479446, 2.699659e-05), float4(2.1997063, 3.1083252, 2.6810949, 1.8276262), float4(-0.48654719, -0.10954189, -0.32175132, 5.490092e-05), float4(3.1970446, 1.787085, 3.062849, 1.6274811), float4(-0.78882801, -0.34050184, -0.59962127, 3.6554198e-05)}}};