--------------------------------------------------------------------------------
-- Precomputed abscissas and weights for double exponential quadrature method.
--
-- Copyright (C) 2011-2016 Stefano Peluchetti. All rights reserved.
--------------------------------------------------------------------------------

-- Weights and abscissas computed using the MPRF library with 120 bits of 
-- precision (around 36 digits of accuracy), then converted to doubles, all in
-- R.

-- Truncation range for infinite integral is [-3, 3] extremes included.

-- 7 levels => total of 2^7 + 1 = 385 abscissas and weights.
-- This choice of levels is shown to be enough for double precision evaluation
-- of integrals, see:
-- http://crd-legacy.lbl.gov/~dhbailey/dhbpapers/quadrature.pdf .

-- In order to be able to start from level 1 (h = 1/2) the next available range 
-- would be [-3.5, 3.5] but abscissas(3.5) is == 1 in double precision, and 
-- this is an issue (for instance for transformations from non-bounded 
-- integration regions to [-1, 1] which is the region expected from the 
-- algorithm here considered).

-- Weights (and abscissas) reversed in order because it's better to start
-- adding the potentially smaller (because of the weights) terms first.

-- TODO: Investigate differences by expanding to [-3.5, 3.5] and capping
-- TODO: abscissas to 1 - epsilon.

return {
abscissas = {
{0.99999999999995703,0.99999998887566488,0.99997747719246155,0.99751485645722437,0.95136796407274693,0.67427149224843574,0},
{0.99999999995285638,0.99999920473711468,0.9996882640283532,0.98704056050737687,0.85956905868989653,0.37720973816403414},
{0.99999999999823208,0.99999999914270499,0.99999989278161239,0.99999531604122049,0.9999093846951439,0.99906519645578584,0.99405550663140207,0.97396686819567735,0.91487926326457458,0.78060743898320029,0.53914670538796772,0.19435700332493541},
{0.99999999999970801,0.99999999999039391,0.99999999978973275,0.99999999678719909,0.99999996423908089,0.99999969889415252,0.99999801714059533,0.99998948201481841,0.99995387100562794,0.99982882207287493,0.99945143443527451,0.99845420876769764,0.99610866543750853,0.99112699244169877,0.98145482667733508,0.96411216422354729,0.93516085752198463,0.88989140278426015,0.8233170055064023,0.73101803479256144,0.61027365750063889,0.46125354393958568,0.28787993274271589,0.09792388528783233},
{0.99999999999988631,0.99999999999927147,0.99999999999582456,0.99999999997845523,0.99999999989927768,0.99999999957078767,0.99999999832336184,0.99999999396413419,0.99999997987450318,0.99999993755407834,0.9999998188937127,0.99999950700571938,0.99999873547186591,0.9999969324491903,0.99999293787666288,0.99998451990227077,0.99996759306794336,0.99993501992508238,0.99987486504878031,0.99976797159956077,0.9995847503515175,0.99928111192179192,0.9987935342988058,0.99803333631543367,0.99688031812819178,0.9951760261553273,0.99271699719682727,0.98924843109013383,0.98445883116743083,0.97797623518666488,0.96936673289691733,0.95813602271021359,0.94373478605275707,0.92556863406861256,0.90301328151357385,0.87543539763040867,0.84221924635075684,0.80279874134324125,0.75669390863372987,0.70355000514714194,0.64317675898520466,0.5755844906351516,0.50101338937930906,0.41995211127844712,0.33314226457763807,0.24156631953888363,0.14641798429058792,0.049055967305077885},
{0.99999999999992983,0.99999999999981715,0.99999999999953715,0.99999999999886124,0.99999999999727396,0.9999999999936463,0.99999999998556877,0.99999999996803313,0.99999999993088839,0.99999999985405608,0.9999999996987543,0.99999999939177686,0.9999999987979834,0.99999999767323666,0.99999999558563357,0.99999999178645604,0.9999999850030763,0.99999997311323585,0.99999995264266439,0.99999991800479471,0.99999986037121458,0.9999997660233324,0.9999996139885502,0.9999993727073353,0.99999899541068993,0.99999841381096466,0.99999752962380506,0.9999962033471661,0.99999423962761658,0.9999913684483448,0.99998722128200057,0.99998130127012064,0.99997294642523216,0.99996128480785662,0.99994518061445858,0.99992317012928922,0.99989338654759252,0.99985347277311132,0.99980048143113831,0.99973076151980844,0.9996398313456003,0.99952223765121717,0.99937140114093759,0.99917944893488586,0.99893703483351215,0.99863314864067743,0.99825491617199624,0.99778739195890642,0.99721334704346865,0.99651305464025375,0.99566407681695313,0.99464105571251116,0.99341551316926402,0.99195566300267757,0.99022624046752772,0.98818835380074255,0.98579936302528337,0.9830127914811011,0.97977827580061572,0.97604156025657673,0.97174454156548729,0.96682537031235583,0.9612186151511164,0.9548554958050226,0.94766419061515306,0.93957022393327472,0.93049693799715338,0.92036605303195274,0.90909831816302034,0.89661425428007602,0.88283498824466888,0.86768317577564591,0.85108400798784867,0.83296629391941079,0.81326360850297374,0.79191549237614201,0.76886868676824649,0.74407838354734734,0.71750946748732403,0.68913772506166759,0.65895099174335003,0.62695020805104285,0.59315035359195312,0.55758122826077816,0.52028805069123008,0.48133184611690499,0.44078959903390086,0.39875415046723772,0.3553338251650745,0.31065178055284592,0.26484507658344791,0.218063473469712,0.1704679723820105,0.12222912220155764,0.073525122985671293,0.024539763574649157},
{0.99999999999994504,0.99999999999991063,0.99999999999985567,0.99999999999976874,0.99999999999963207,0.9999999999994188,0.9999999999990884,0.99999999999857991,0.99999999999780287,0.99999999999662348,0.99999999999484512,0.99999999999218125,0.99999999998821665,0.99999999998235345,0.99999999997373656,0.9999999999611503,0.99999999994287725,0.99999999991650601,0.99999999987867016,0.99999999982469845,0.99999999974814635,0.99999999964017294,0.99999999948871821,0.99999999927742189,0.99999999898420988,0.99999999857945798,0.99999999802361939,0.99999999726417366,0.99999999623172697,0.99999999483505064,0.99999999295480446,0.9999999904356327,0.9999999870762647,0.99999998261717338,0.99999997672526708,0.99999996897499022,0.9999999588251014,0.99999994559027294,0.99999992840651408,0.99999990618926848,0.99999987758285502,0.99999984089973593,0.99999979404787598,0.99999973444423285,0.99999965891215925,0.9999995635602319,0.99999944363972881,0.99999929337766846,0.99999910578199569,0.99999887241516183,0.99999858313198442,0.99999822577731134,0.99999778583863519,0.9999972460484261,0.99999658593057072,0.99999578128492839,0.99999480360364879,0.99999361941253884,0.99999218953043356,0.99999046823921378,0.99998840235683317,0.99998593020547477,0.99998298046675649,0.99997947091575146,0.99997530702549198,0.99997038043358921,0.99996456726262606,0.99995772628607793,0.99994969693168922,0.99994029711447929,0.99992932089188413,0.99991653593395113,0.99990168080200281,0.99988446202976611,0.99986455100163496,0.99984158062348205,0.99981514178227304,0.99978477959165113,0.99974998942164883,0.99971021271175098,0.99966483256766459,0.99961316914334686,0.99955447481109672,0.99948792912382323,0.99941263357495247,0.9993276061628299,0.99923177576789879,0.99912397635238981,0.99900294099372877,0.99886729576436373,0.99871555347220875,0.99854610727741266,0.99835722420266371,0.99814703855574838,0.99791354528457699,0.99765459328637784,0.99736787869423538,0.99705093816560908,0.99670114219891259,0.99631568850566088,0.99589159546710015,0.99542569570562278,0.99491462980263878,0.9943548401959208,0.99374256529076155,0.99307383382058434,0.99234445949391814,0.99155003596589164,0.990685932173615,0.989747288075987,0.9887290108396023,0.98762577151351061,0.98643200223660843,0.98514189402239793,0.98374939516673121,0.98224821032494103,0.98063180030544861,0.97889338262749392,0.97702593289105788,0.97502218700730625,0.97287464433796378,0.97057557179190035,0.96811700892685626,0.96549077410362039,0.96268847173907823,0.9597015007033366,0.95652106390458091,0.95313817910339371,0.94954369099593627,0.94572828460263214,0.94168249999576925,0.93739674839571907,0.93286132966124002,0.92806645119455511,0.9230022482765543,0.91765880584154924,0.91202618169448679,0.90609443116640409,0.89985363319617007,0.89329391781821088,0.88640549502697863,0.87917868497938934,0.87160394948637765,0.86367192473410515,0.85537345516427143,0.84669962843146362,0.83764181134359994,0.82819168667935705,0.81834129076409778,0.80808305167333849,0.79740982792031223,0.78631494747181951,0.77479224692443527,0.76283611066139234,0.7504415097992404,0.73760404072282515,0.72431996299740742,0.71058623643800578,0.69640055710845916,0.68176139201642727,0.66666801226573758,0.65112052442430413,0.63511989986442174,0.61866800183272797,0.60176761000963341,0.58442244232266394,0.56663717378501877,0.54841745213979232,0.52976991010177454,0.51070217400255813,0.49122286866081144,0.47134161831799842,0.45106904350045196,0.43041675369143706,0.40939733572152948,0.3880243378121177,0.36631224923490407,0.34427647557970487,0.32193330965336914,0.29929989806396046,0.27639420357617861,0.25323496335600021,0.22984164325436074,0.20623438831102875,0.18243396969028913,0.1584617282892995,0.13433951528767221,0.11008962993262801,0.085734754877651045,0.061297889413659976,0.036802280950025079,0.012271355118082201},
},
weigths = {
{1.3581784274539089e-012,2.1431204556943039e-007,0.00026620051375271687,0.018343166989927839,0.23002239451478868,0.96597657941230108,1.5707963267948966},
{1.1631165814255782e-009,1.1983701363170719e-005,0.0029025177479013132,0.076385743570832304,0.53107827542805397,1.3896147592472563},
{4.9378538776631926e-011,1.8687282268736407e-008,1.8263320593710658e-006,6.2482559240744075e-005,0.00094994680428346862,0.0077426010260642402,0.039175005493600777,0.13742210773316771,0.36046141846934365,0.7374378483615478,1.1934630258491568,1.523283718634705},
{8.6759314149796041e-012,2.5216347918530147e-010,4.8760060974240624e-009,6.583518512718339e-008,6.4777566035929716e-007,4.8237182032615495e-006,2.8110164327940134e-005,0.00013205234125609973,0.00051339382406790333,0.0016908739981426396,0.004816298143928463,0.012083543599157953,0.027133510013712,0.055289683742240581,0.10343215422333289,0.17932441211072828,0.29024067931245418,0.44083323627385823,0.63040513516474361,0.85017285645662,1.0816349854900702,1.2974757504249779,1.4660144267169657,1.5587733555333301},
{3.4841937670261058e-012,2.0989335404511467e-011,1.130605534749468e-010,5.4828357797094976e-010,2.409177325647594e-009,9.649888896108962e-009,3.543477717142195e-008,1.199244278290277e-007,3.7595411862360629e-007,1.0968835125901263e-006,2.9916615878138786e-006,7.6595758525203149e-006,1.8481813599879215e-005,4.2183183841757599e-005,9.1390817490710112e-005,0.00018856442976700316,0.00037166693621677759,0.00070185951568424226,0.0012733279447082382,0.0022250827064786423,0.003754250977431834,0.0061300376320830297,0.0097072237393916877,0.01493783509605013,0.022379471063648473,0.032698732726609031,0.046668208054846609,0.065155533432536203,0.089103139240941459,0.11949741128869591,0.15732620348436613,0.20352399885860173,0.25890463951405351,0.32408253961152889,0.39938474152571712,0.48475809121475538,0.57967810308778756,0.68306851634426369,0.79324270082051662,0.90787937915489525,1.0240449331118113,1.1382722433763053,1.2467012074518575,1.3452788847662516,1.4300083548722995,1.4972262225410362,1.543881116176959,1.5677814313072218},
{2.1835922099233607e-012,5.518236946817488e-012,1.3542512912336273e-011,3.230446433325236e-011,7.4967397573818219e-011,1.6939457789411645e-010,3.7299501843052787e-010,8.0099784479729664e-010,1.6788897682161906e-009,3.437185674465009e-009,6.8784610955899e-009,1.3464645522302038e-008,2.5799568229535891e-008,4.8420950198072366e-008,8.9071395140242379e-008,1.6069394579076223e-007,2.8449923659159806e-007,4.9458288702754198e-007,8.4473756384859861e-007,1.4183067155493917e-006,2.3421667208528095e-006,3.8061983264644897e-006,6.0899100320949032e-006,9.598194128378471e-006,1.4908514031870607e-005,2.2832118109036146e-005,3.4492124759343198e-005,5.1421497447658797e-005,7.5683996586201475e-005,0.00011002112846666696,0.00015802788400701192,0.00022435965205008549,0.00031497209186021199,0.00043739495615911686,0.00060103987991147413,0.00081754101332469483,0.0011011261134519382,0.0014690143599429789,0.0019418357759843675,0.0025440657675291729,0.00330446699403483,0.0042565295990178572,0.0054388997976239977,0.0068957859690660034,0.0086773307495391812,0.010839937168255907,0.01344653660528573,0.016566786254247574,0.020277183817500124,0.024661087314753281,0.029808628117310124,0.035816505604196434,0.042787652157725675,0.050830757572570467,0.060059642358636298,0.070592469906866989,0.082550788110701726,0.096058391865189455,0.11123999898874452,0.12821973363120098,0.14711941325785691,0.16805663794826914,0.19114268413342747,0.21648020911729615,0.24416077786983989,0.2742622296890681,0.3068459094179169,0.34195379592301678,0.37960556938665158,0.41979566844501548,0.46249039805536774,0.50762515883190806,0.55510187800363342,0.6047867305784036,0.6565082461316275,0.71005590120546891,0.76517929890895608,0.82158803526696467,0.87895234555278201,0.93690461274566783,0.99504180404613263,1.0529288799552665,1.1101031939653403,1.1660798699324344,1.2203581095793581,1.2724283455378627,1.3217801174437727,1.3679105116808963,1.4103329714462589,1.4485862549613224,1.482243297885538,1.5109197230741696,1.5342817381543032,1.5520531698454121,1.5640214037732321,1.5700420292795931},
{1.7237644036042717e-012,2.7608587671398282e-012,4.3888651899779303e-012,6.9255280152681376e-012,1.0849161834337119e-011,1.6874519343915022e-011,2.6061960502805292e-011,3.9973389519930265e-011,6.0893387064380662e-011,9.2140564226518881e-011,1.3850287525834143e-010,2.0684203539029217e-010,3.0692702078723327e-010,4.525757610415382e-010,6.6320863470162091e-010,9.6594851858099294e-010,1.3984414312565442e-009,2.0126210218867171e-009,2.8797013464471103e-009,4.0967579139685196e-009,5.7953495730966062e-009,8.1527464828576535e-009,1.1406465554850481e-008,1.5872978090968231e-008,2.1971648917089348e-008,3.0255196464899464e-008,4.1448233558505381e-008,5.649576387167062e-008,7.6623873974817583e-008,1.0341528040745607e-007,1.3890286996035951e-007,1.8568491370025131e-007,2.4706624511249697e-007,3.2723037330517557e-007,4.314482558716538e-007,5.6633028402050766e-007,7.401289349090861e-007,9.6310052117659242e-007,1.247935512117745e-006,1.6102680094507651e-006,2.0692761257364667e-006,2.6483862254043407e-006,3.3760952348055106e-006,4.2869264939998223e-006,5.4225358918240326e-006,6.8329862774218501e-006,8.5782093537079076e-006,1.072967540685234e-005,1.3372292284532372e-005,1.6606555976508335e-005,2.0550975944934244e-005,2.5344798968850108e-005,3.115105567744835e-005,3.8159954120245754e-005,4.6592644630494618e-005,5.6705379853932874e-005,6.8794093113496371e-005,8.3199417240036467e-005,0.00010031216460112419,0.00012057928729056995,0.00014451033429094585,0.00017268441988592921,0.00020575771467998817,0.00024447146728689159,0.00028966056108877171,0.00034226260646297687,0.00040332756454954089,0.00047402789401816719,0.00055566920742578549,0.00064970141867429037,0.00075773035782735918,0.00088152982417296992,0.001023054042974541,0.0011844504858902771,0.0013680730096097039,0.001576495261910556,0.0018125242991288641,0.0020792143540086659,0.0023798806881004382,0.0027181134583502261,0.0030977915233008206,0.0035230961104429862,0.0039985242627335309,0.0045289019791562883,0.0051193969614537812,0.0057755308768065484,0.0065031910442825787,0.0073086414513132475,0.0081985330052611986,0.0091799129243109005,0.010260233171410768,0.011447357834799755,0.012749569358731162,0.01417557352833046,0.015734503113059795,0.01743592007397746,0.019289816240845598,0.02130661236612607,0.023497155463988527,0.025872714343617643,0.028444973247334235,0.03122602350533174,0.034228353120175692,0.037464834195628967,0.040948708125867296,0.04469356846276553,0.048713341380701429,0.053022263660287172,0.05763485811465472,0.062565906384455097,0.067830419030657965,0.073443602857638762,0.079420825403008155,0.085777576535268185,0.092529427105778453,0.099691984607788567,0.10728084580255642,0.11531154628093733,0.12379950693841295,0.13275997735244552,0.14220797606340183,0.15215822777419971,0.16262509749938431,0.17362252171163128,0.18516393655277549,0.19726220319743717,0.20992953048020752,0.22317739492218458,0.23701645831941898,0.25145648308451035,0.26650624556313512,0.28217344757959606,0.29846462649944494,0.31538506413267808,0.3329386948377478,0.35112801322442522,0.36995398189211387,0.38941593967921201,0.4095115109381936,0.43023651638978894,0.45158488614754488,0.47354857554061397,0.49611748439731618,0.51927938048424627,0.54301982782484282,0.5673221206467387,0.59216722372820685,0.6175337199299088,0.6433977657082528,0.66973305541029093,0.69651079514654679,0.72369968702683019,0.75126592452435681,0.77917319970479793,0.80738272301876302,0.83585325630826712,0.86454115961966893,0.89340045234719589,0.92238288915245514,0.9514380510163527,0.98051345168085502,1.0095546596294298,1.0385054356373922,1.0673078857975038,1.0959026297929721,1.1242289840506032,1.1522251592625474,1.1798284716173337,1.206975566931308,1.2336026567219467,1.2596457651166706,1.2850409853467271,1.3097247444374396,1.333634074575756,1.3567068895156054,1.3788822642731373,1.4001007162694445,1.4203044859996912,1.4394378152464069,1.4574472208125486,1.4742817617280797,1.4898932978832971,1.5042367380636772,1.5172702754050547,1.5289556083545806,1.5392581453118817,1.5481471912355573,1.5555961146316604,1.5615824934918106,1.5660882389174613,1.5690996953516689,1.570607716538275},
},
}
