25 #if !defined(LSST_AFW_MATH_INTGKPDATA10_H) 
   26 #define LSST_AFW_MATH_INTGKPDATA10_H 1 
   45 static const int NGKPLEVELS = 5;
 
   48     assert(level >= 0 && level < NGKPLEVELS);
 
   49     static const int ngkp[NGKPLEVELS] = {5, 5, 11, 22, 44};
 
   56     static const T ax10[5] = {0.973906528517171720077964012084452, 0.865063366688984510732096688423493,
 
   57                               0.679409568299024406234327365114874, 0.433395394129247190799265943165784,
 
   58                               0.148874338981631210884826001129720};
 
   62     static const T ax21[5] = {0.995657163025808080735527280689003, 0.930157491355708226001207180059508,
 
   63                               0.780817726586416897063717578345042, 0.562757134668604683339000099272694,
 
   64                               0.294392862701460198131126603103866};
 
   68     static const T ax43[11] = {0.999333360901932081394099323919911, 0.987433402908088869795961478381209,
 
   69                                0.954807934814266299257919200290473, 0.900148695748328293625099494069092,
 
   70                                0.825198314983114150847066732588520, 0.732148388989304982612354848755461,
 
   71                                0.622847970537725238641159120344323, 0.499479574071056499952214885499755,
 
   72                                0.364901661346580768043989548502644, 0.222254919776601296498260928066212,
 
   73                                0.074650617461383322043914435796506};
 
   77     static const T ax87[22] = {0.999902977262729234490529830591582, 0.997989895986678745427496322365960,
 
   78                                0.992175497860687222808523352251425, 0.981358163572712773571916941623894,
 
   79                                0.965057623858384619128284110607926, 0.943167613133670596816416634507426,
 
   80                                0.915806414685507209591826430720050, 0.883221657771316501372117548744163,
 
   81                                0.845710748462415666605902011504855, 0.803557658035230982788739474980964,
 
   82                                0.757005730685495558328942793432020, 0.706273209787321819824094274740840,
 
   83                                0.651589466501177922534422205016736, 0.593223374057961088875273770349144,
 
   84                                0.531493605970831932285268948562671, 0.466763623042022844871966781659270,
 
   85                                0.399424847859218804732101665817923, 0.329874877106188288265053371824597,
 
   86                                0.258503559202161551802280975429025, 0.185695396568346652015917141167606,
 
   87                                0.111842213179907468172398359241362, 0.037352123394619870814998165437704};
 
   91     static const T ax175[44] = {
 
   92             0.9999863601049729677997719,  0.9996988005421428623760900, 0.9987732473138838303043008,
 
   93             0.9969583851613681945576954,  0.9940679446543307664316419, 0.9899673391741082769960501,
 
   94             0.9845657252243253759726856,  0.9778061574856414566055911, 0.9696573134362640567828241,
 
   95             0.9601075259508299668299148,  0.9491605191933640559839528, 0.9368321320434676982049391,
 
   96             0.9231475266471484946315312,  0.9081385954543932335481458, 0.8918414554201179766275301,
 
   97             0.8742940658668577971868106,  0.8555341249920432726468181, 0.8355974653331171075829366,
 
   98             0.8145171513255796294567278,  0.7923233739697216224661771, 0.7690440708082055924983192,
 
   99             0.7447060413364141221086362,  0.7193362474393392286563226, 0.6929630148748741413274435,
 
  100             0.6656169582351898081906710,  0.6373315753624730450361940, 0.6081435407529742253347887,
 
  101             0.5780927509986774074337714,  0.5472221576559162873479056, 0.5155774001694817879753989,
 
  102             0.4832062516695473663839323,  0.4501579202236101928554315, 0.4164822936334372150371142,
 
  103             0.3822292525735955063074986,  0.3474481818229070516859048, 0.3121877718977455143765043,
 
  104             0.2764961311348905899785770,  0.2404211453027010909070665, 0.2040109589145005126324680,
 
  105             0.1673144327616352753945014,  0.1303814601095591675431696, 0.09326308333660176874846400,
 
  106             0.05601141598806823374241435, 0.01867941779948308845140053};
 
  109     static const std::vector<T>* 
x[NGKPLEVELS] = {&vx10, &vx21, &vx43, &vx87, &vx175};
 
  111     assert(level >= 0 && level < NGKPLEVELS);
 
  118     static const T aw21a[5] = {0.032558162307964727478818972459390, 0.075039674810919952767043140916190,
 
  119                                0.109387158802297641899210590325805, 0.134709217311473325928054001771707,
 
  120                                0.147739104901338491374841515972068};
 
  124     static const T aw43a[10] = {0.016296734289666564924281974617663, 0.037522876120869501461613795898115,
 
  125                                 0.054694902058255442147212685465005, 0.067355414609478086075553166302174,
 
  126                                 0.073870199632393953432140695251367, 0.005768556059769796184184327908655,
 
  127                                 0.027371890593248842081276069289151, 0.046560826910428830743339154433824,
 
  128                                 0.061744995201442564496240336030883, 0.071387267268693397768559114425516};
 
  132     static const T aw87a[21] = {0.008148377384149172900002878448190, 0.018761438201562822243935059003794,
 
  133                                 0.027347451050052286161582829741283, 0.033677707311637930046581056957588,
 
  134                                 0.036935099820427907614589586742499, 0.002884872430211530501334156248695,
 
  135                                 0.013685946022712701888950035273128, 0.023280413502888311123409291030404,
 
  136                                 0.030872497611713358675466394126442, 0.035693633639418770719351355457044,
 
  137                                 0.000915283345202241360843392549948, 0.005399280219300471367738743391053,
 
  138                                 0.010947679601118931134327826856808, 0.016298731696787335262665703223280,
 
  139                                 0.021081568889203835112433060188190, 0.025370969769253827243467999831710,
 
  140                                 0.029189697756475752501446154084920, 0.032373202467202789685788194889595,
 
  141                                 0.034783098950365142750781997949596, 0.036412220731351787562801163687577,
 
  142                                 0.037253875503047708539592001191226};
 
  146     static const T aw175a[43] = {
 
  147             0.004074188692082600103872341,  0.009380719100781411819741177,  0.01367372552502614309257226,
 
  148             0.01683885365581896502443513,   0.01846754991021395380770806,   0.001442436294030254510518689,
 
  149             0.006842973011356375224430623,  0.01164020675144415562952859,   0.01543624880585667934076834,
 
  150             0.01784681681970938536027839,   0.0004576754584154192941064591, 0.002699640110136963534043642,
 
  151             0.005473839800559775445647306,  0.008149365848393670964180954,  0.01054078444460191775302900,
 
  152             0.01268548488462691364854167,   0.01459484887823787625642303,   0.01618660123360139484467359,
 
  153             0.01739154947518257137619173,   0.01820611036567589378188459,   0.01862693775152385427017140,
 
  154             0.0001363171844264931156688042, 0.0009035606060432074452289352, 0.002048434635928091782250346,
 
  155             0.003379145025868061092978424,  0.004774978836099393880602724,  0.006164723826122346701274159,
 
  156             0.007505223673194467726814647,  0.008774483993121594091281642,  0.009969018893220443741650500,
 
  157             0.01109746798050614328494604,   0.01216957356300040269315573,   0.01318725270741960360319771,
 
  158             0.01414345539438560032188640,   0.01502629056404634765715107,   0.01582337568571996469999659,
 
  159             0.01652520670998925164398162,   0.01712754985211303089259342,   0.01763120633007834051620255,
 
  160             0.01803849481144435059221422,   0.01834930224922804724856518,   0.01856027463491628805666919,
 
  161             0.01866711437596752016025132};
 
  164     static const std::vector<T>* wa[NGKPLEVELS] = {
nullptr, &vw21a, &vw43a, &vw87a, &vw175a};
 
  166     assert(level >= 1 && level < NGKPLEVELS);
 
  173     static const T aw10b[6] = {0.066671344308688137593568809893332, 0.149451349150580593145776339657697,
 
  174                                0.219086362515982043995534934228163, 0.269266719309996355091226921569469,
 
  175                                0.295524224714752870173892994651338, 0.0};
 
  179     static const T aw21b[6] = {0.011694638867371874278064396062192, 0.054755896574351996031381300244580,
 
  180                                0.093125454583697605535065465083366, 0.123491976262065851077958109831074,
 
  181                                0.142775938577060080797094273138717, 0.149445554002916905664936468389821};
 
  185     static const T aw43b[12] = {0.001844477640212414100389106552965, 0.010798689585891651740465406741293,
 
  186                                 0.021895363867795428102523123075149, 0.032597463975345689443882222526137,
 
  187                                 0.042163137935191811847627924327955, 0.050741939600184577780189020092084,
 
  188                                 0.058379395542619248375475369330206, 0.064746404951445885544689259517511,
 
  189                                 0.069566197912356484528633315038405, 0.072824441471833208150939535192842,
 
  190                                 0.074507751014175118273571813842889, 0.074722147517403005594425168280423};
 
  194     static const T aw87b[23] = {0.000274145563762072350016527092881, 0.001807124155057942948341311753254,
 
  195                                 0.004096869282759164864458070683480, 0.006758290051847378699816577897424,
 
  196                                 0.009549957672201646536053581325377, 0.012329447652244853694626639963780,
 
  197                                 0.015010447346388952376697286041943, 0.017548967986243191099665352925900,
 
  198                                 0.019938037786440888202278192730714, 0.022194935961012286796332102959499,
 
  199                                 0.024339147126000805470360647041454, 0.026374505414839207241503786552615,
 
  200                                 0.028286910788771200659968002987960, 0.030052581128092695322521110347341,
 
  201                                 0.031646751371439929404586051078883, 0.033050413419978503290785944862689,
 
  202                                 0.034255099704226061787082821046821, 0.035262412660156681033782717998428,
 
  203                                 0.036076989622888701185500318003895, 0.036698604498456094498018047441094,
 
  204                                 0.037120549269832576114119958413599, 0.037334228751935040321235449094698,
 
  205                                 0.037361073762679023410321241766599};
 
  209     static const T aw175b[45] = {
 
  210             0.00003901440664395060055484226, 0.0002787312407993348139961464, 0.0006672934146291138823512275,
 
  211             0.001163051749910003055308177,   0.001738533916888715565420637,  0.002369555040550195269486165,
 
  212             0.003036735036032612976379865,   0.003725394125884235586678819,  0.004424387541776355951933433,
 
  213             0.005125062882078508655875582,   0.005820601038952832388647054,  0.006505667785357412495794539,
 
  214             0.007176258976795165213169074,   0.007829642423806550517967042,  0.008464316525043036555640657,
 
  215             0.009079917879101951192512711,   0.009677029304308397008134699,  0.01025687419430508685393322,
 
  216             0.01082092935368957685380896,    0.01137052956179654620079332,   0.01190655150082017425918844,
 
  217             0.01242924137407215963971061,    0.01293819980598456566872951,   0.01343248644726851711632966,
 
  218             0.01391078107864287587682982,    0.01437154592198526807352501,   0.01481316256915705351874381,
 
  219             0.01523404482122031244940129,    0.01563274056894636856297717,   0.01600802989372176552081826,
 
  220             0.01635901148521841710605397,    0.01668515675646806540972517,   0.01698630892029276765404134,
 
  221             0.01726261506199017604299177,    0.01751439915887340284018269,   0.01774200489411242260549908,
 
  222             0.01794564958245060930824294,    0.01812532816637054898168673,   0.01828078919412312732671357,
 
  223             0.01841158014800801587767163,    0.01851713825962505903167768,   0.01859689376712028821908313,
 
  224             0.01865035760791320287947920,    0.01867717982648033250824110,   0.01868053688133951170552407};
 
  227     static const std::vector<T>* wb[NGKPLEVELS] = {&vw10b, &vw21b, &vw43b, &vw87b, &vw175b};
 
  229     assert(level >= 0 && level < NGKPLEVELS);
 
  238     static const Quad ax10[5] = {
"0.973906528517171720077964012084452", 
"0.865063366688984510732096688423493",
 
  239                                  "0.679409568299024406234327365114874", 
"0.433395394129247190799265943165784",
 
  240                                  "0.148874338981631210884826001129720"};
 
  244     static const Quad ax21[5] = {
"0.995657163025808080735527280689003", 
"0.930157491355708226001207180059508",
 
  245                                  "0.780817726586416897063717578345042", 
"0.562757134668604683339000099272694",
 
  246                                  "0.294392862701460198131126603103866"};
 
  250     static const Quad ax43[11] = {
 
  251             "0.999333360901932081394099323919911", 
"0.987433402908088869795961478381209",
 
  252             "0.954807934814266299257919200290473", 
"0.900148695748328293625099494069092",
 
  253             "0.825198314983114150847066732588520", 
"0.732148388989304982612354848755461",
 
  254             "0.622847970537725238641159120344323", 
"0.499479574071056499952214885499755",
 
  255             "0.364901661346580768043989548502644", 
"0.222254919776601296498260928066212",
 
  256             "0.074650617461383322043914435796506"};
 
  260     static const Quad ax87[22] = {
 
  261             "0.999902977262729234490529830591582", 
"0.997989895986678745427496322365960",
 
  262             "0.992175497860687222808523352251425", 
"0.981358163572712773571916941623894",
 
  263             "0.965057623858384619128284110607926", 
"0.943167613133670596816416634507426",
 
  264             "0.915806414685507209591826430720050", 
"0.883221657771316501372117548744163",
 
  265             "0.845710748462415666605902011504855", 
"0.803557658035230982788739474980964",
 
  266             "0.757005730685495558328942793432020", 
"0.706273209787321819824094274740840",
 
  267             "0.651589466501177922534422205016736", 
"0.593223374057961088875273770349144",
 
  268             "0.531493605970831932285268948562671", 
"0.466763623042022844871966781659270",
 
  269             "0.399424847859218804732101665817923", 
"0.329874877106188288265053371824597",
 
  270             "0.258503559202161551802280975429025", 
"0.185695396568346652015917141167606",
 
  271             "0.111842213179907468172398359241362", 
"0.037352123394619870814998165437704"};
 
  275     static const Quad ax175[44] = {
 
  276             "0.9999863601049729677997719",  
"0.9996988005421428623760900", 
"0.9987732473138838303043008",
 
  277             "0.9969583851613681945576954",  
"0.9940679446543307664316419", 
"0.9899673391741082769960501",
 
  278             "0.9845657252243253759726856",  
"0.9778061574856414566055911", 
"0.9696573134362640567828241",
 
  279             "0.9601075259508299668299148",  
"0.9491605191933640559839528", 
"0.9368321320434676982049391",
 
  280             "0.9231475266471484946315312",  
"0.9081385954543932335481458", 
"0.8918414554201179766275301",
 
  281             "0.8742940658668577971868106",  
"0.8555341249920432726468181", 
"0.8355974653331171075829366",
 
  282             "0.8145171513255796294567278",  
"0.7923233739697216224661771", 
"0.7690440708082055924983192",
 
  283             "0.7447060413364141221086362",  
"0.7193362474393392286563226", 
"0.6929630148748741413274435",
 
  284             "0.6656169582351898081906710",  
"0.6373315753624730450361940", 
"0.6081435407529742253347887",
 
  285             "0.5780927509986774074337714",  
"0.5472221576559162873479056", 
"0.5155774001694817879753989",
 
  286             "0.4832062516695473663839323",  
"0.4501579202236101928554315", 
"0.4164822936334372150371142",
 
  287             "0.3822292525735955063074986",  
"0.3474481818229070516859048", 
"0.3121877718977455143765043",
 
  288             "0.2764961311348905899785770",  
"0.2404211453027010909070665", 
"0.2040109589145005126324680",
 
  289             "0.1673144327616352753945014",  
"0.1303814601095591675431696", 
"0.09326308333660176874846400",
 
  290             "0.05601141598806823374241435", 
"0.01867941779948308845140053"};
 
  295     assert(level >= 0 && level < NGKPLEVELS);
 
  302     static const Quad aw21a[5] = {
 
  303             "0.032558162307964727478818972459390", 
"0.075039674810919952767043140916190",
 
  304             "0.109387158802297641899210590325805", 
"0.134709217311473325928054001771707",
 
  305             "0.147739104901338491374841515972068"};
 
  309     static const Quad aw43a[10] = {
 
  310             "0.016296734289666564924281974617663", 
"0.037522876120869501461613795898115",
 
  311             "0.054694902058255442147212685465005", 
"0.067355414609478086075553166302174",
 
  312             "0.073870199632393953432140695251367", 
"0.005768556059769796184184327908655",
 
  313             "0.027371890593248842081276069289151", 
"0.046560826910428830743339154433824",
 
  314             "0.061744995201442564496240336030883", 
"0.071387267268693397768559114425516"};
 
  318     static const Quad aw87a[21] = {
 
  319             "0.008148377384149172900002878448190", 
"0.018761438201562822243935059003794",
 
  320             "0.027347451050052286161582829741283", 
"0.033677707311637930046581056957588",
 
  321             "0.036935099820427907614589586742499", 
"0.002884872430211530501334156248695",
 
  322             "0.013685946022712701888950035273128", 
"0.023280413502888311123409291030404",
 
  323             "0.030872497611713358675466394126442", 
"0.035693633639418770719351355457044",
 
  324             "0.000915283345202241360843392549948", 
"0.005399280219300471367738743391053",
 
  325             "0.010947679601118931134327826856808", 
"0.016298731696787335262665703223280",
 
  326             "0.021081568889203835112433060188190", 
"0.025370969769253827243467999831710",
 
  327             "0.029189697756475752501446154084920", 
"0.032373202467202789685788194889595",
 
  328             "0.034783098950365142750781997949596", 
"0.036412220731351787562801163687577",
 
  329             "0.037253875503047708539592001191226"};
 
  333     static const Quad aw175a[43] = {
"0.004074188692082600103872341",  
"0.009380719100781411819741177",
 
  334                                     "0.01367372552502614309257226",   
"0.01683885365581896502443513",
 
  335                                     "0.01846754991021395380770806",   
"0.001442436294030254510518689",
 
  336                                     "0.006842973011356375224430623",  
"0.01164020675144415562952859",
 
  337                                     "0.01543624880585667934076834",   
"0.01784681681970938536027839",
 
  338                                     "0.0004576754584154192941064591", 
"0.002699640110136963534043642",
 
  339                                     "0.005473839800559775445647306",  
"0.008149365848393670964180954",
 
  340                                     "0.01054078444460191775302900",   
"0.01268548488462691364854167",
 
  341                                     "0.01459484887823787625642303",   
"0.01618660123360139484467359",
 
  342                                     "0.01739154947518257137619173",   
"0.01820611036567589378188459",
 
  343                                     "0.01862693775152385427017140",   
"0.0001363171844264931156688042",
 
  344                                     "0.0009035606060432074452289352", 
"0.002048434635928091782250346",
 
  345                                     "0.003379145025868061092978424",  
"0.004774978836099393880602724",
 
  346                                     "0.006164723826122346701274159",  
"0.007505223673194467726814647",
 
  347                                     "0.008774483993121594091281642",  
"0.009969018893220443741650500",
 
  348                                     "0.01109746798050614328494604",   
"0.01216957356300040269315573",
 
  349                                     "0.01318725270741960360319771",   
"0.01414345539438560032188640",
 
  350                                     "0.01502629056404634765715107",   
"0.01582337568571996469999659",
 
  351                                     "0.01652520670998925164398162",   
"0.01712754985211303089259342",
 
  352                                     "0.01763120633007834051620255",   
"0.01803849481144435059221422",
 
  353                                     "0.01834930224922804724856518",   
"0.01856027463491628805666919",
 
  354                                     "0.01866711437596752016025132"};
 
  357     static const std::vector<Quad>* wa[NGKPLEVELS] = {0, &vw21a, &vw43a, &vw87a, &vw175a};
 
  359     assert(level >= 1 && level < NGKPLEVELS);
 
  366     static const Quad aw10b[6] = {
 
  367             "0.066671344308688137593568809893332", 
"0.149451349150580593145776339657697",
 
  368             "0.219086362515982043995534934228163", 
"0.269266719309996355091226921569469",
 
  369             "0.295524224714752870173892994651338", 
"0.0"};
 
  373     static const Quad aw21b[6] = {
 
  374             "0.011694638867371874278064396062192", 
"0.054755896574351996031381300244580",
 
  375             "0.093125454583697605535065465083366", 
"0.123491976262065851077958109831074",
 
  376             "0.142775938577060080797094273138717", 
"0.149445554002916905664936468389821"};
 
  380     static const Quad aw43b[12] = {
 
  381             "0.001844477640212414100389106552965", 
"0.010798689585891651740465406741293",
 
  382             "0.021895363867795428102523123075149", 
"0.032597463975345689443882222526137",
 
  383             "0.042163137935191811847627924327955", 
"0.050741939600184577780189020092084",
 
  384             "0.058379395542619248375475369330206", 
"0.064746404951445885544689259517511",
 
  385             "0.069566197912356484528633315038405", 
"0.072824441471833208150939535192842",
 
  386             "0.074507751014175118273571813842889", 
"0.074722147517403005594425168280423"};
 
  390     static const Quad aw87b[23] = {
 
  391             "0.000274145563762072350016527092881", 
"0.001807124155057942948341311753254",
 
  392             "0.004096869282759164864458070683480", 
"0.006758290051847378699816577897424",
 
  393             "0.009549957672201646536053581325377", 
"0.012329447652244853694626639963780",
 
  394             "0.015010447346388952376697286041943", 
"0.017548967986243191099665352925900",
 
  395             "0.019938037786440888202278192730714", 
"0.022194935961012286796332102959499",
 
  396             "0.024339147126000805470360647041454", 
"0.026374505414839207241503786552615",
 
  397             "0.028286910788771200659968002987960", 
"0.030052581128092695322521110347341",
 
  398             "0.031646751371439929404586051078883", 
"0.033050413419978503290785944862689",
 
  399             "0.034255099704226061787082821046821", 
"0.035262412660156681033782717998428",
 
  400             "0.036076989622888701185500318003895", 
"0.036698604498456094498018047441094",
 
  401             "0.037120549269832576114119958413599", 
"0.037334228751935040321235449094698",
 
  402             "0.037361073762679023410321241766599"};
 
  406     static const Quad aw175b[45] = {
"0.00003901440664395060055484226", 
"0.0002787312407993348139961464",
 
  407                                     "0.0006672934146291138823512275",  
"0.001163051749910003055308177",
 
  408                                     "0.001738533916888715565420637",   
"0.002369555040550195269486165",
 
  409                                     "0.003036735036032612976379865",   
"0.003725394125884235586678819",
 
  410                                     "0.004424387541776355951933433",   
"0.005125062882078508655875582",
 
  411                                     "0.005820601038952832388647054",   
"0.006505667785357412495794539",
 
  412                                     "0.007176258976795165213169074",   
"0.007829642423806550517967042",
 
  413                                     "0.008464316525043036555640657",   
"0.009079917879101951192512711",
 
  414                                     "0.009677029304308397008134699",   
"0.01025687419430508685393322",
 
  415                                     "0.01082092935368957685380896",    
"0.01137052956179654620079332",
 
  416                                     "0.01190655150082017425918844",    
"0.01242924137407215963971061",
 
  417                                     "0.01293819980598456566872951",    
"0.01343248644726851711632966",
 
  418                                     "0.01391078107864287587682982",    
"0.01437154592198526807352501",
 
  419                                     "0.01481316256915705351874381",    
"0.01523404482122031244940129",
 
  420                                     "0.01563274056894636856297717",    
"0.01600802989372176552081826",
 
  421                                     "0.01635901148521841710605397",    
"0.01668515675646806540972517",
 
  422                                     "0.01698630892029276765404134",    
"0.01726261506199017604299177",
 
  423                                     "0.01751439915887340284018269",    
"0.01774200489411242260549908",
 
  424                                     "0.01794564958245060930824294",    
"0.01812532816637054898168673",
 
  425                                     "0.01828078919412312732671357",    
"0.01841158014800801587767163",
 
  426                                     "0.01851713825962505903167768",    
"0.01859689376712028821908313",
 
  427                                     "0.01865035760791320287947920",    
"0.01867717982648033250824110",
 
  428                                     "0.01868053688133951170552407"};
 
  431     static const std::vector<Quad>* wb[NGKPLEVELS] = {&vw10b, &vw21b, &vw43b, &vw87b, &vw175b};
 
  433     assert(level >= 0 && level < NGKPLEVELS);
 
const std::vector< T > & gkp_wa(int level)
 
const std::vector< T > & gkp_x(int level)
 
const std::vector< T > & gkp_wb(int level)
 
A base class for image defects.