R/gaussLegendre.R

gaussLegendre <-
function (k = 15) {
    if (!k %in% c(15, 16, 17, 18, 19, 20, 32))
        stop ("k should be 15:20 or 32.")
    out <- if (k == 15) {
        list(sk = c(0, 
                   0.2011940939974345223006283, -0.2011940939974345223006283,
                   0.3941513470775633698972074, -0.3941513470775633698972074,
                   0.5709721726085388475372267, -0.5709721726085388475372267,
                   0.7244177313601700474161861, -0.7244177313601700474161861,
                   0.8482065834104272162006483, -0.8482065834104272162006483,
                   0.9372733924007059043077589, -0.9372733924007059043077589,
                   0.9879925180204854284895657, -0.9879925180204854284895657), 
             wk = c(0.2025782419255612728806202, 
                   0.1984314853271115764561183, 0.1984314853271115764561183,
                   0.1861610000155622110268006, 0.1861610000155622110268006,
                   0.1662692058169939335532009, 0.1662692058169939335532009,
                   0.1395706779261543144478048, 0.1395706779261543144478048,
                   0.1071592204671719350118695, 0.1071592204671719350118695,
                   0.0703660474881081247092674, 0.0703660474881081247092674,
                   0.0307532419961172683546284, 0.0307532419961172683546284))
    } else if (k == 16) {
        list(sk = c(0.0950125098376374401853193, -0.0950125098376374401853193,
                    0.2816035507792589132304605, -0.2816035507792589132304605,
                    0.4580167776572273863424194, -0.4580167776572273863424194,
                    0.6178762444026437484466718, -0.6178762444026437484466718,
                    0.7554044083550030338951012, -0.7554044083550030338951012,
                    0.8656312023878317438804679, -0.8656312023878317438804679,
                    0.9445750230732325760779884, -0.9445750230732325760779884,
                    0.9894009349916499325961542, -0.9894009349916499325961542),
             wk = c(0.1894506104550684962853967, 0.1894506104550684962853967,
                    0.1826034150449235888667637, 0.1826034150449235888667637,
                    0.1691565193950025381893121, 0.1691565193950025381893121,
                    0.1495959888165767320815017, 0.1495959888165767320815017,
                    0.1246289712555338720524763, 0.1246289712555338720524763,
                    0.0951585116824927848099251, 0.0951585116824927848099251,
                    0.0622535239386478928628438, 0.0622535239386478928628438,
                    0.0271524594117540948517806, 0.0271524594117540948517806))
    } else if (k == 17) {
        list(sk = c(0,
                    0.1784841814958478558506775, -0.1784841814958478558506775,
                    0.3512317634538763152971855, -0.3512317634538763152971855,
                    0.5126905370864769678862466, -0.5126905370864769678862466,
                    0.6576711592166907658503022, -0.6576711592166907658503022,
                    0.7815140038968014069252301, -0.7815140038968014069252301,
                    0.8802391537269859021229557, -0.8802391537269859021229557,
                    0.9506755217687677612227170, -0.9506755217687677612227170,
                    0.9905754753144173356754340, -0.9905754753144173356754340),
             wk = c(0.1794464703562065254582656,
                    0.1765627053669926463252710, 0.1765627053669926463252710,
                    0.1680041021564500445099707, 0.1680041021564500445099707,
                    0.1540457610768102880814316, 0.1540457610768102880814316,
                    0.1351363684685254732863200, 0.1351363684685254732863200,
                    0.1118838471934039710947884, 0.1118838471934039710947884,
                    0.0850361483171791808835354, 0.0850361483171791808835354,
                    0.0554595293739872011294402, 0.0554595293739872011294402,
                    0.0241483028685479319601100, 0.0241483028685479319601100))
    } else if (k == 18) {
        list(sk = c(0.0847750130417353012422619, -0.0847750130417353012422619,
                    0.2518862256915055095889729, -0.2518862256915055095889729,
                    0.4117511614628426460359318, -0.4117511614628426460359318,
                    0.5597708310739475346078715, -0.5597708310739475346078715,
                    0.6916870430603532078748911, -0.6916870430603532078748911,
                    0.8037049589725231156824175, -0.8037049589725231156824175,
                    0.8926024664975557392060606, -0.8926024664975557392060606,
                    0.9558239495713977551811959, -0.9558239495713977551811959,
                    0.9915651684209309467300160, -0.9915651684209309467300160),
             wk = c(0.1691423829631435918406565, 0.1691423829631435918406565,
                    0.1642764837458327229860538, 0.1642764837458327229860538,
                    0.1546846751262652449254180, 0.1546846751262652449254180,
                    0.1406429146706506512047313, 0.1406429146706506512047313,
                    0.1225552067114784601845191, 0.1225552067114784601845191,
                    0.1009420441062871655628140, 0.1009420441062871655628140,
                    0.0764257302548890565291297, 0.0764257302548890565291297,
                    0.0497145488949697964533349, 0.0497145488949697964533349,
                    0.0216160135264833103133427, 0.0216160135264833103133427))
    } else if (k == 19) {
        list(sk = c(0,
                    0.1603586456402253758680961, -0.1603586456402253758680961,
                    0.3165640999636298319901173, -0.3165640999636298319901173,
                    0.4645707413759609457172671, -0.4645707413759609457172671,
                    0.6005453046616810234696382, -0.6005453046616810234696382,
                    0.7209661773352293786170959, -0.7209661773352293786170959,
                    0.8227146565371428249789225, -0.8227146565371428249789225,
                    0.9031559036148179016426609, -0.9031559036148179016426609,
                    0.9602081521348300308527788, -0.9602081521348300308527788,
                    0.9924068438435844031890177, -0.9924068438435844031890177),
             wk = c(0.1610544498487836959791636,
                    0.1589688433939543476499564, 0.1589688433939543476499564,
                    0.1527660420658596667788554, 0.1527660420658596667788554,
                    0.1426067021736066117757461, 0.1426067021736066117757461,
                    0.1287539625393362276755158, 0.1287539625393362276755158,
                    0.1115666455473339947160239, 0.1115666455473339947160239,
                    0.0914900216224499994644621, 0.0914900216224499994644621,
                    0.0690445427376412265807083, 0.0690445427376412265807083,
                    0.0448142267656996003328382, 0.0448142267656996003328382,
                    0.0194617882297264770363120, 0.0194617882297264770363120))
    } else if (k == 20) {
        list(sk = c(0.0765265211334973337546404, -0.0765265211334973337546404,
                   0.2277858511416450780804962, -0.2277858511416450780804962,
                   0.3737060887154195606725482, -0.3737060887154195606725482,
                   0.5108670019508270980043641, -0.5108670019508270980043641,
                   0.6360536807265150254528367, -0.6360536807265150254528367,
                   0.7463319064601507926143051, -0.7463319064601507926143051,
                   0.8391169718222188233945291, -0.8391169718222188233945291,
                   0.9122344282513259058677524, -0.9122344282513259058677524,
                   0.9639719272779137912676661, -0.9639719272779137912676661,
                   0.9931285991850949247861224, -0.9931285991850949247861224), 
             wk = c(0.1527533871307258506980843, 0.1527533871307258506980843,
                   0.1491729864726037467878287, 0.1491729864726037467878287,
                   0.1420961093183820513292983, 0.1420961093183820513292983,
                   0.1316886384491766268984945, 0.1316886384491766268984945,
                   0.1181945319615184173123774, 0.1181945319615184173123774,
                   0.1019301198172404350367501, 0.1019301198172404350367501,
                   0.0832767415767047487247581, 0.0832767415767047487247581,
                   0.0626720483341090635695065, 0.0626720483341090635695065,
                   0.0406014298003869413310400, 0.0406014298003869413310400,
                   0.0176140071391521183118620, 0.0176140071391521183118620))
    } else {
        list(sk = c(0.0483076656877383162348126, -0.0483076656877383162348126,
                   0.1444719615827964934851864, -0.1444719615827964934851864,
                   0.2392873622521370745446032, -0.2392873622521370745446032,
                   0.3318686022821276497799168, -0.3318686022821276497799168,
                   0.4213512761306353453641194, -0.4213512761306353453641194,
                   0.5068999089322293900237475, -0.5068999089322293900237475,
                   0.5877157572407623290407455, -0.5877157572407623290407455,
                   0.6630442669302152009751152, -0.6630442669302152009751152,
                   0.7321821187402896803874267, -0.7321821187402896803874267,
                   0.7944837959679424069630973, -0.7944837959679424069630973,
                   0.8493676137325699701336930, -0.8493676137325699701336930,
                   0.8963211557660521239653072, -0.8963211557660521239653072,
                   0.9349060759377396891709191, -0.9349060759377396891709191,
                   0.9647622555875064307738119, -0.9647622555875064307738119,
                   0.9856115115452683354001750, -0.9856115115452683354001750,
                   0.9972638618494815635449811, -0.9972638618494815635449811), 
             wk = c(0.0965400885147278005667648, 0.0965400885147278005667648,
                   0.0956387200792748594190820, 0.0956387200792748594190820,
                   0.0938443990808045656391802, 0.0938443990808045656391802,
                   0.0911738786957638847128686, 0.0911738786957638847128686,
                   0.0876520930044038111427715, 0.0876520930044038111427715,
                   0.0833119242269467552221991, 0.0833119242269467552221991,
                   0.0781938957870703064717409, 0.0781938957870703064717409,
                   0.0723457941088485062253994, 0.0723457941088485062253994,
                   0.0658222227763618468376501, 0.0658222227763618468376501,
                   0.0586840934785355471452836, 0.0586840934785355471452836,
                   0.0509980592623761761961632, 0.0509980592623761761961632,
                   0.0428358980222266806568786, 0.0428358980222266806568786,
                   0.0342738629130214331026877, 0.0342738629130214331026877,
                   0.0253920653092620594557526, 0.0253920653092620594557526,
                   0.0162743947309056706051706, 0.0162743947309056706051706,
                   0.0070186100094700966004071, 0.0070186100094700966004071))
    }
    ord <- order(out$sk)
    f <- function (x, ord) x[ord]
    lapply(out, f, ord = ord)
}
drizopoulos/JMbayes documentation built on Feb. 2, 2021, 12:34 a.m.