Numerical Integration

One of the most widely used methods of numerical integration is Gaussian quadrature. It posses very attractive property of to be exact on polynomials of degree up to 2n-1, while using only n integrand evaluations (n-point quadrature).

The algorithm consists in approximation of initial definite integral by the sum of weighted integrand values sampled at special points called abscissas:

<br />
\begin{matrix}<br />
\displaystyle \int_a^b f(x)\,\mathrm{d}x\approx\frac{b-a}{2}\sum_{i=1}^{n}{w_i\,f\left(\frac{b-a}{2}\xi_i+\frac{b+a}{2}\right)}&\\<br />
&\\</p>
<p>\displaystyle w_i = \frac{2}{\left(1-\xi_i^2\right)\,\left[P'_n(\xi_i)\right]^2}&(n=1,2,\dots)<br />
\end{matrix}<br />

where the n values \xi_i are the n zeroes of the n^{th}-degree Legendre polynomial P_n(\xi).

It is clear that accuracy of the final result depends largely on accuracy of abscissas and weights. However mathematical references give list of low-precision \xi_i,\,w_i (4-6 digits only) for limited n\le 5. Obviously such situation doesn’t reflect contemporary computational capabilities and accuracy demands of many applications. For instance, commonly used for numerical computations floating point type ‘double’ of IEEE 754 standard is capable to store values with 16 digits precision (it depends on particular implementation but usually machine epsilon is about 1e-16 for double).

This page aims to provide high-precision abscissas \xi_i and weights w_i for any desired n. Although table below contains data only for n=2,\dots,20,32,64,100 source code includes additional values for n=128,256,512,1024. Post comment on this page if you need tables for other n.

Source code is available for download (C/C++):

It implements numerical integration based on Gaussian quadratures of any order. High-precision abscissas and weights are used for specific orders n=2,\dots,20,32,64,96,100,128,256,512,1024. Values for all other n are generated on the fly with 1e-10 precision. Library is under LGPL license, so it is ok to use it in commercial projects too. I would appreciate any information on its usage, bugs, new features request, etc.

Books I recommend

High-precision Abscissas and Weights for Gaussian Quadrature of high order.
Correctly rounded to 25 decimal digits to the nearest.
n Abscisass \xi_i Weights w_i
2 ±0.5773502691896257645091488 1.0000000000000000000000000
3 0 0.8888888888888888888888889
±0.7745966692414833770358531 0.5555555555555555555555556
4 ±0.3399810435848562648026658 0.6521451548625461426269361
±0.8611363115940525752239465 0.3478548451374538573730639
5 0 0.5688888888888888888888889
±0.5384693101056830910363144 0.4786286704993664680412915
±0.9061798459386639927976269 0.2369268850561890875142640
6 ±0.2386191860831969086305017 0.4679139345726910473898703
±0.6612093864662645136613996 0.3607615730481386075698335
±0.9324695142031520278123016 0.1713244923791703450402961
7 0 0.4179591836734693877551020
±0.4058451513773971669066064 0.3818300505051189449503698
±0.7415311855993944398638648 0.2797053914892766679014678
±0.9491079123427585245261897 0.1294849661688696932706114
8 ±0.1834346424956498049394761 0.3626837833783619829651504
±0.5255324099163289858177390 0.3137066458778872873379622
±0.7966664774136267395915539 0.2223810344533744705443560
±0.9602898564975362316835609 0.1012285362903762591525314
9 0 0.3302393550012597631645251
±0.3242534234038089290385380 0.3123470770400028400686304
±0.6133714327005903973087020 0.2606106964029354623187429
±0.8360311073266357942994298 0.1806481606948574040584720
±0.9681602395076260898355762 0.0812743883615744119718922
10 ±0.1488743389816312108848260 0.2955242247147528701738930
±0.4333953941292471907992659 0.2692667193099963550912269
±0.6794095682990244062343274 0.2190863625159820439955349
±0.8650633666889845107320967 0.1494513491505805931457763
±0.9739065285171717200779640 0.0666713443086881375935688
11 0 0.2729250867779006307144835
±0.2695431559523449723315320 0.2628045445102466621806889
±0.5190961292068118159257257 0.2331937645919904799185237
±0.7301520055740493240934163 0.1862902109277342514260976
±0.8870625997680952990751578 0.1255803694649046246346943
±0.9782286581460569928039380 0.0556685671161736664827537
12 ±0.1252334085114689154724414 0.2491470458134027850005624
±0.3678314989981801937526915 0.2334925365383548087608499
±0.5873179542866174472967024 0.2031674267230659217490645
±0.7699026741943046870368938 0.1600783285433462263346525
±0.9041172563704748566784659 0.1069393259953184309602547
±0.9815606342467192506905491 0.0471753363865118271946160
13 0 0.2325515532308739101945895
±0.2304583159551347940655281 0.2262831802628972384120902
±0.4484927510364468528779129 0.2078160475368885023125232
±0.6423493394403402206439846 0.1781459807619457382800467
±0.8015780907333099127942065 0.1388735102197872384636018
±0.9175983992229779652065478 0.0921214998377284479144218
±0.9841830547185881494728294 0.0404840047653158795200216
14 ±0.1080549487073436620662447 0.2152638534631577901958764
±0.3191123689278897604356718 0.2051984637212956039659241
±0.5152486363581540919652907 0.1855383974779378137417166
±0.6872929048116854701480198 0.1572031671581935345696019
±0.8272013150697649931897947 0.1215185706879031846894148
±0.9284348836635735173363911 0.0801580871597602098056333
±0.9862838086968123388415973 0.0351194603317518630318329
15 0 0.2025782419255612728806202
±0.2011940939974345223006283 0.1984314853271115764561183
±0.3941513470775633698972074 0.1861610000155622110268006
±0.5709721726085388475372267 0.1662692058169939335532009
±0.7244177313601700474161861 0.1395706779261543144478048
±0.8482065834104272162006483 0.1071592204671719350118695
±0.9372733924007059043077589 0.0703660474881081247092674
±0.9879925180204854284895657 0.0307532419961172683546284
16 ±0.0950125098376374401853193 0.1894506104550684962853967
±0.2816035507792589132304605 0.1826034150449235888667637
±0.4580167776572273863424194 0.1691565193950025381893121
±0.6178762444026437484466718 0.1495959888165767320815017
±0.7554044083550030338951012 0.1246289712555338720524763
±0.8656312023878317438804679 0.0951585116824927848099251
±0.9445750230732325760779884 0.0622535239386478928628438
±0.9894009349916499325961542 0.0271524594117540948517806
17 0 0.1794464703562065254582656
±0.1784841814958478558506775 0.1765627053669926463252710
±0.3512317634538763152971855 0.1680041021564500445099707
±0.5126905370864769678862466 0.1540457610768102880814316
±0.6576711592166907658503022 0.1351363684685254732863200
±0.7815140038968014069252301 0.1118838471934039710947884
±0.8802391537269859021229557 0.0850361483171791808835354
±0.9506755217687677612227170 0.0554595293739872011294402
±0.9905754753144173356754340 0.0241483028685479319601100
18 ±0.0847750130417353012422619 0.1691423829631435918406565
±0.2518862256915055095889729 0.1642764837458327229860538
±0.4117511614628426460359318 0.1546846751262652449254180
±0.5597708310739475346078715 0.1406429146706506512047313
±0.6916870430603532078748911 0.1225552067114784601845191
±0.8037049589725231156824175 0.1009420441062871655628140
±0.8926024664975557392060606 0.0764257302548890565291297
±0.9558239495713977551811959 0.0497145488949697964533349
±0.9915651684209309467300160 0.0216160135264833103133427
19 0 0.1610544498487836959791636
±0.1603586456402253758680961 0.1589688433939543476499564
±0.3165640999636298319901173 0.1527660420658596667788554
±0.4645707413759609457172671 0.1426067021736066117757461
±0.6005453046616810234696382 0.1287539625393362276755158
±0.7209661773352293786170959 0.1115666455473339947160239
±0.8227146565371428249789225 0.0914900216224499994644621
±0.9031559036148179016426609 0.0690445427376412265807083
±0.9602081521348300308527788 0.0448142267656996003328382
±0.9924068438435844031890177 0.0194617882297264770363120
20 ±0.0765265211334973337546404 0.1527533871307258506980843
±0.2277858511416450780804962 0.1491729864726037467878287
±0.3737060887154195606725482 0.1420961093183820513292983
±0.5108670019508270980043641 0.1316886384491766268984945
±0.6360536807265150254528367 0.1181945319615184173123774
±0.7463319064601507926143051 0.1019301198172404350367501
±0.8391169718222188233945291 0.0832767415767047487247581
±0.9122344282513259058677524 0.0626720483341090635695065
±0.9639719272779137912676661 0.0406014298003869413310400
±0.9931285991850949247861224 0.0176140071391521183118620
32 ±0.0483076656877383162348126 0.0965400885147278005667648
±0.1444719615827964934851864 0.0956387200792748594190820
±0.2392873622521370745446032 0.0938443990808045656391802
±0.3318686022821276497799168 0.0911738786957638847128686
±0.4213512761306353453641194 0.0876520930044038111427715
±0.5068999089322293900237475 0.0833119242269467552221991
±0.5877157572407623290407455 0.0781938957870703064717409
±0.6630442669302152009751152 0.0723457941088485062253994
±0.7321821187402896803874267 0.0658222227763618468376501
±0.7944837959679424069630973 0.0586840934785355471452836
±0.8493676137325699701336930 0.0509980592623761761961632
±0.8963211557660521239653072 0.0428358980222266806568786
±0.9349060759377396891709191 0.0342738629130214331026877
±0.9647622555875064307738119 0.0253920653092620594557526
±0.9856115115452683354001750 0.0162743947309056706051706
±0.9972638618494815635449811 0.0070186100094700966004071
64 ±0.0243502926634244325089558 0.0486909570091397203833654
±0.0729931217877990394495429 0.0485754674415034269347991
±0.1214628192961205544703765 0.0483447622348029571697695
±0.1696444204239928180373136 0.0479993885964583077281262
±0.2174236437400070841496487 0.0475401657148303086622822
±0.2646871622087674163739642 0.0469681828162100173253263
±0.3113228719902109561575127 0.0462847965813144172959532
±0.3572201583376681159504426 0.0454916279274181444797710
±0.4022701579639916036957668 0.0445905581637565630601347
±0.4463660172534640879849477 0.0435837245293234533768279
±0.4894031457070529574785263 0.0424735151236535890073398
±0.5312794640198945456580139 0.0412625632426235286101563
±0.5718956462026340342838781 0.0399537411327203413866569
±0.6111553551723932502488530 0.0385501531786156291289625
±0.6489654712546573398577612 0.0370551285402400460404151
±0.6852363130542332425635584 0.0354722132568823838106931
±0.7198818501716108268489402 0.0338051618371416093915655
±0.7528199072605318966118638 0.0320579283548515535854675
±0.7839723589433414076102205 0.0302346570724024788679741
±0.8132653151227975597419233 0.0283396726142594832275113
±0.8406292962525803627516915 0.0263774697150546586716918
±0.8659993981540928197607834 0.0243527025687108733381776
±0.8893154459951141058534040 0.0222701738083832541592983
±0.9105221370785028057563807 0.0201348231535302093723403
±0.9295691721319395758214902 0.0179517157756973430850453
±0.9464113748584028160624815 0.0157260304760247193219660
±0.9610087996520537189186141 0.0134630478967186425980608
±0.9733268277899109637418535 0.0111681394601311288185905
±0.9833362538846259569312993 0.0088467598263639477230309
±0.9910133714767443207393824 0.0065044579689783628561174
±0.9963401167719552793469245 0.0041470332605624676352875
±0.9993050417357721394569056 0.0017832807216964329472961
100 ±0.0156289844215430828722167 0.0312554234538633569476425
±0.0468716824215916316149239 0.0312248842548493577323765
±0.0780685828134366366948174 0.0311638356962099067838183
±0.1091892035800611150034260 0.0310723374275665165878102
±0.1402031372361139732075146 0.0309504788504909882340635
±0.1710800805386032748875324 0.0307983790311525904277139
±0.2017898640957359972360489 0.0306161865839804484964594
±0.2323024818449739696495100 0.0304040795264548200165079
±0.2625881203715034791689293 0.0301622651051691449190687
±0.2926171880384719647375559 0.0298909795933328309168368
±0.3223603439005291517224766 0.0295904880599126425117545
±0.3517885263724217209723438 0.0292610841106382766201190
±0.3808729816246299567633625 0.0289030896011252031348762
±0.4095852916783015425288684 0.0285168543223950979909368
±0.4378974021720315131089780 0.0281027556591011733176483
±0.4657816497733580422492166 0.0276611982207923882942042
±0.4932107892081909335693088 0.0271926134465768801364916
±0.5201580198817630566468157 0.0266974591835709626603847
±0.5465970120650941674679943 0.0261762192395456763423087
±0.5725019326213811913168704 0.0256294029102081160756420
±0.5978474702471787212648065 0.0250575444815795897037642
±0.6226088602037077716041908 0.0244612027079570527199750
±0.6467619085141292798326303 0.0238409602659682059625604
±0.6702830156031410158025870 0.0231974231852541216224889
±0.6931491993558019659486479 0.0225312202563362727017970
±0.7153381175730564464599671 0.0218430024162473863139537
±0.7368280898020207055124277 0.0211334421125276415426723
±0.7575981185197071760356680 0.0204032326462094327668389
±0.7776279096494954756275514 0.0196530874944353058653815
±0.7968978923903144763895729 0.0188837396133749045529412
±0.8153892383391762543939888 0.0180959407221281166643908
±0.8330838798884008235429158 0.0172904605683235824393442
±0.8499645278795912842933626 0.0164680861761452126431050
±0.8660146884971646234107400 0.0156296210775460027239369
±0.8812186793850184155733168 0.0147758845274413017688800
±0.8955616449707269866985210 0.0139077107037187726879541
±0.9090295709825296904671263 0.0130259478929715422855586
±0.9216092981453339526669513 0.0121314576629794974077448
±0.9332885350430795459243337 0.0112251140231859771172216
±0.9440558701362559779627747 0.0103078025748689695857821
±0.9539007829254917428493369 0.0093804196536944579514182
±0.9628136542558155272936593 0.0084438714696689714026208
±0.9707857757637063319308979 0.0074990732554647115788287
±0.9778093584869182885537811 0.0065469484508453227641521
±0.9838775407060570154961002 0.0055884280038655151572119
±0.9889843952429917480044187 0.0046244500634221193510958
±0.9931249370374434596520099 0.0036559612013263751823425
±0.9962951347331251491861317 0.0026839253715534824194396
±0.9984919506395958184001634 0.0017093926535181052395294
±0.9997137267734412336782285 0.0007346344905056717304063

Disclaimer

You can use materials from this site in any legal activity (research, teaching, engineering, etc.) freely on the basis of respecting my authorship by giving clear statement and reference to my site or particular page on it in your work. Besides brief description of your project is very welcome in the comments below. One point though, if you use my materials in commercial project please consider supporting my site and me by donation.


1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5.00)
Loading ... Loading ...
Print This Page Print This Page

6 Comments

  1. Scott
    Posted November 13, 2008 at 8:43 am | Permalink

    Could you please post for n=100?

  2. Posted November 13, 2008 at 4:36 pm | Permalink

    I’ve added data for

    n=32,64,100

    to the table and source code.

    Besides source code now includes quadratures for

    n=96,128,256,512,1024

    .

    One note though. It could be pointless to apply high order quadratures using ‘double’ floating point numbers due its limited precision. Machine epsilon for double is around 1e-16. Usually Gaussian quadrature attain such error quickly even for relatively small

    n\le20

    . Thus higher orders will not improve error any further. In the same time rounding error will increase with higher order.

    It has sense to use high-precision floating point numbers instead of ‘double’. Libraries GMP and MPFR are commonly used for this purpose. I’ve created C++ interface for MPFR to simplify its usage. If you interested please visit MPFR C++ page.

  3. fatemeh
    Posted February 27, 2009 at 12:56 am | Permalink

    Could you please post for n=50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
    71,73,76,77,78,80,85,88,90,93,96,99,100?

  4. Posted February 27, 2009 at 3:22 pm | Permalink

    Hi fatemeh!
    My library is able to produce tables for any

    n

    with precision 1e-10. Please use it if such accuracy is acceptable in your task.

    If you need high precision tables for the such long list of different

    n

    , please post brief description of your project here. This is only fair price for the enormous chunk of work you are asking me to do.

  5. priya
    Posted March 26, 2009 at 3:45 am | Permalink

    Hi Pavel can i know using what methods u could calculate these values, please give the information in detail