LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
IntGKPData10.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
25 #if !defined(LSST_AFW_MATH_INTGKPDATA10_H)
26 #define LSST_AFW_MATH_INTGKPDATA10_H 1
27 
37 #include <vector>
38 
39 namespace lsst {
40 namespace afw {
41 namespace math {
42 
43 namespace details {
44 
45 static const int NGKPLEVELS = 5;
46 
47 inline int gkp_n(int level) {
48  assert(level >= 0 && level < NGKPLEVELS);
49  static const int ngkp[NGKPLEVELS] = {5, 5, 11, 22, 44};
50  return ngkp[level];
51 }
52 
53 template <class T>
54 inline const std::vector<T>& gkp_x(int level) {
55  // x10, abscissae common to the 10-, 21-, 43- and 87-point rule
56  static const T ax10[5] = {0.973906528517171720077964012084452, 0.865063366688984510732096688423493,
57  0.679409568299024406234327365114874, 0.433395394129247190799265943165784,
58  0.148874338981631210884826001129720};
59  static const std::vector<T> vx10(ax10, ax10 + 5);
60 
61  // x21, abscissae common to the 21-, 43- and 87-point rule
62  static const T ax21[5] = {0.995657163025808080735527280689003, 0.930157491355708226001207180059508,
63  0.780817726586416897063717578345042, 0.562757134668604683339000099272694,
64  0.294392862701460198131126603103866};
65  static const std::vector<T> vx21(ax21, ax21 + 5);
66 
67  // x43, abscissae common to the 43- and 87-point rule
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};
74  static const std::vector<T> vx43(ax43, ax43 + 11);
75 
76  // x87, abscissae of the 87-point rule
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};
88  static const std::vector<T> vx87(ax87, ax87 + 22);
89 
90  // x175, new abscissae of the 175-point rule
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};
107  static const std::vector<T> vx175(ax175, ax175 + 44);
108 
109  static const std::vector<T>* x[NGKPLEVELS] = {&vx10, &vx21, &vx43, &vx87, &vx175};
110 
111  assert(level >= 0 && level < NGKPLEVELS);
112  return *x[level];
113 }
114 
115 template <class T>
116 inline const std::vector<T>& gkp_wa(int level) {
117  // w21a, weights of the 21-point formula for abscissae x10
118  static const T aw21a[5] = {0.032558162307964727478818972459390, 0.075039674810919952767043140916190,
119  0.109387158802297641899210590325805, 0.134709217311473325928054001771707,
120  0.147739104901338491374841515972068};
121  static const std::vector<T> vw21a(aw21a, aw21a + 5);
122 
123  // w43a, weights of the 43-point formula for abscissae x10,x21
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};
129  static const std::vector<T> vw43a(aw43a, aw43a + 10);
130 
131  // w87a, weights of the 87-point formula for abscissae x10..x43
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};
143  static const std::vector<T> vw87a(aw87a, aw87a + 21);
144 
145  // w175a, weights of the 175-point formula for abscissae x10..x87
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};
162  static const std::vector<T> vw175a(aw175a, aw175a + 43);
163 
164  static const std::vector<T>* wa[NGKPLEVELS] = {nullptr, &vw21a, &vw43a, &vw87a, &vw175a};
165 
166  assert(level >= 1 && level < NGKPLEVELS);
167  return *wa[level];
168 }
169 
170 template <class T>
171 inline const std::vector<T>& gkp_wb(int level) {
172  // w10, weights of the 10-point formula
173  static const T aw10b[6] = {0.066671344308688137593568809893332, 0.149451349150580593145776339657697,
174  0.219086362515982043995534934228163, 0.269266719309996355091226921569469,
175  0.295524224714752870173892994651338, 0.0};
176  static const std::vector<T> vw10b(aw10b, aw10b + 6);
177 
178  // w21b, weights of the 21-point formula for abscissae x21
179  static const T aw21b[6] = {0.011694638867371874278064396062192, 0.054755896574351996031381300244580,
180  0.093125454583697605535065465083366, 0.123491976262065851077958109831074,
181  0.142775938577060080797094273138717, 0.149445554002916905664936468389821};
182  static const std::vector<T> vw21b(aw21b, aw21b + 6);
183 
184  // w43b, weights of the 43-point formula for abscissae x43
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};
191  static const std::vector<T> vw43b(aw43b, aw43b + 12);
192 
193  // w87b, weights of the 87-point formula for abscissae x87
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};
206  static const std::vector<T> vw87b(aw87b, aw87b + 23);
207 
208  // w175b, weights of the 175-point formula for abscissae x175
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};
225  static const std::vector<T> vw175b(aw175b, aw175b + 45);
226 
227  static const std::vector<T>* wb[NGKPLEVELS] = {&vw10b, &vw21b, &vw43b, &vw87b, &vw175b};
228 
229  assert(level >= 0 && level < NGKPLEVELS);
230  return *wb[level];
231 }
232 
233 #ifdef EXTRA_PREC_H
234 
235 template <>
236 inline const std::vector<Quad>& gkp_x<Quad>(int level) {
237  // x10, abscissae common to the 10-, 21-, 43- and 87-point rule
238  static const Quad ax10[5] = {"0.973906528517171720077964012084452", "0.865063366688984510732096688423493",
239  "0.679409568299024406234327365114874", "0.433395394129247190799265943165784",
240  "0.148874338981631210884826001129720"};
241  static const std::vector<Quad> vx10(ax10, ax10 + 5);
242 
243  // x21, abscissae common to the 21-, 43- and 87-point rule
244  static const Quad ax21[5] = {"0.995657163025808080735527280689003", "0.930157491355708226001207180059508",
245  "0.780817726586416897063717578345042", "0.562757134668604683339000099272694",
246  "0.294392862701460198131126603103866"};
247  static const std::vector<Quad> vx21(ax21, ax21 + 5);
248 
249  // x43, abscissae common to the 43- and 87-point rule
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"};
257  static const std::vector<Quad> vx43(ax43, ax43 + 11);
258 
259  // x87, abscissae of the 87-point rule
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"};
272  static const std::vector<Quad> vx87(ax87, ax87 + 22);
273 
274  // x175, new abscissae of the 175-point rule
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"};
291  static const std::vector<Quad> vx175(ax175, ax175 + 44);
292 
293  static const std::vector<Quad>* x[NGKPLEVELS] = {&vx10, &vx21, &vx43, &vx87, &vx175};
294 
295  assert(level >= 0 && level < NGKPLEVELS);
296  return *x[level];
297 }
298 
299 template <>
300 inline const std::vector<Quad>& gkp_wa<Quad>(int level) {
301  // w21a, weights of the 21-point formula for abscissae x10
302  static const Quad aw21a[5] = {
303  "0.032558162307964727478818972459390", "0.075039674810919952767043140916190",
304  "0.109387158802297641899210590325805", "0.134709217311473325928054001771707",
305  "0.147739104901338491374841515972068"};
306  static const std::vector<Quad> vw21a(aw21a, aw21a + 5);
307 
308  // w43a, weights of the 43-point formula for abscissae x10,x21
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"};
315  static const std::vector<Quad> vw43a(aw43a, aw43a + 10);
316 
317  // w87a, weights of the 87-point formula for abscissae x10..x43
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"};
330  static const std::vector<Quad> vw87a(aw87a, aw87a + 21);
331 
332  // w175a, weights of the 175-point formula for abscissae x10..x87
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"};
355  static const std::vector<Quad> vw175a(aw175a, aw175a + 43);
356 
357  static const std::vector<Quad>* wa[NGKPLEVELS] = {0, &vw21a, &vw43a, &vw87a, &vw175a};
358 
359  assert(level >= 1 && level < NGKPLEVELS);
360  return *wa[level];
361 }
362 
363 template <>
364 inline const std::vector<Quad>& gkp_wb<Quad>(int level) {
365  // w10, weights of the 10-point formula
366  static const Quad aw10b[6] = {
367  "0.066671344308688137593568809893332", "0.149451349150580593145776339657697",
368  "0.219086362515982043995534934228163", "0.269266719309996355091226921569469",
369  "0.295524224714752870173892994651338", "0.0"};
370  static const std::vector<Quad> vw10b(aw10b, aw10b + 6);
371 
372  // w21b, weights of the 21-point formula for abscissae x21
373  static const Quad aw21b[6] = {
374  "0.011694638867371874278064396062192", "0.054755896574351996031381300244580",
375  "0.093125454583697605535065465083366", "0.123491976262065851077958109831074",
376  "0.142775938577060080797094273138717", "0.149445554002916905664936468389821"};
377  static const std::vector<Quad> vw21b(aw21b, aw21b + 6);
378 
379  // w43b, weights of the 43-point formula for abscissae x43
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"};
387  static const std::vector<Quad> vw43b(aw43b, aw43b + 12);
388 
389  // w87b, weights of the 87-point formula for abscissae x87
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"};
403  static const std::vector<Quad> vw87b(aw87b, aw87b + 23);
404 
405  // w175b, weights of the 175-point formula for abscissae x175
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"};
429  static const std::vector<Quad> vw175b(aw175b, aw175b + 45);
430 
431  static const std::vector<Quad>* wb[NGKPLEVELS] = {&vw10b, &vw21b, &vw43b, &vw87b, &vw175b};
432 
433  assert(level >= 0 && level < NGKPLEVELS);
434  return *wb[level];
435 }
436 
437 #endif
438 
439 } // end of namespace details
440 } // namespace math
441 } // namespace afw
442 } // namespace lsst
443 
444 #endif
double x
const std::vector< T > & gkp_wa(int level)
Definition: IntGKPData10.h:116
const std::vector< T > & gkp_x(int level)
Definition: IntGKPData10.h:54
const std::vector< T > & gkp_wb(int level)
Definition: IntGKPData10.h:171
int gkp_n(int level)
Definition: IntGKPData10.h:47
A base class for image defects.