diff --git a/src/gausskronrod.jl b/src/gausskronrod.jl index b9c5aa6..207d301 100644 --- a/src/gausskronrod.jl +++ b/src/gausskronrod.jl @@ -82,8 +82,8 @@ end # Given a symmetric tridiagonal matrix H with H[i,i] = 0 and # H[i-1,i] = H[i,i-1] = b[i-1], compute p(z) = det(z I - H) and its -# derivative p'(z), returning (p,p'). -function eigpoly(b::AbstractVector{<:Real},z::Number,m::Integer=length(b)+1) +# derivative p'(z), returning the ratio p / p' +function eigpolyrat(b::AbstractVector{<:Real},z::Number,m::Integer=length(b)+1) d1 = z d1deriv = d2 = one(z) d2deriv = zero(z) @@ -91,17 +91,21 @@ function eigpoly(b::AbstractVector{<:Real},z::Number,m::Integer=length(b)+1) b2 = b[i-1]^2 d = z * d1 - b2 * d2 dderiv = d1 + z * d1deriv - b2 * d2deriv - d2 = d1 - d1 = d - d2deriv = d1deriv - d1deriv = dderiv + if iszero(dderiv) + d2, d1 = d1, d + d2deriv, d1deriv = d1deriv, dderiv + else # rescale to suppress under/overflow + dderiv⁻¹ = inv(dderiv) + d2, d1 = d1 * dderiv⁻¹, d * dderiv⁻¹ + d2deriv, d1deriv = d1deriv * dderiv⁻¹, one(dderiv) + end end - return (d1, d1deriv) + return d1 / d1deriv end -eigpoly(H::HollowSymTridiagonal{<:Real},z) = eigpoly(H.ev, z) +eigpolyrat(H::HollowSymTridiagonal{<:Real},z) = eigpolyrat(H.ev, z) # as above, but for general symmetric tridiagonal (diagonal ≠ 0) -function eigpoly(H::SymTridiagonal{<:Real},z::Number) +function eigpolyrat(H::SymTridiagonal{<:Real},z::Number) d1 = z - H.dv[1] d1deriv = d2 = one(d1) d2deriv = zero(d1) @@ -110,12 +114,16 @@ function eigpoly(H::SymTridiagonal{<:Real},z::Number) a = z - H.dv[i] d = a * d1 - b2 * d2 dderiv = d1 + a * d1deriv - b2 * d2deriv - d2 = d1 - d1 = d - d2deriv = d1deriv - d1deriv = dderiv + if iszero(dderiv) + d2, d1 = d1, d + d2deriv, d1deriv = d1deriv, dderiv + else # rescale to suppress under/overflow + dderiv⁻¹ = inv(dderiv) + d2, d1 = d1 * dderiv⁻¹, d * dderiv⁻¹ + d2deriv, d1deriv = d1deriv * dderiv⁻¹, one(dderiv) + end end - return (d1, d1deriv) + return d1 / d1deriv end # compute the n smallest eigenvalues of the symmetric tridiagonal matrix H @@ -127,14 +135,14 @@ function eignewt(H::AbstractSymTri{T}, n::Integer) where {T<:Real} lambda = Vector{float(T)}(lambda0) for i = 1:n for k = 1:1000 - (p,pderiv) = eigpoly(H,lambda[i]) - δλ = p / pderiv # may be NaN or Inf if pderiv underflows to 0.0 + δλ = eigpolyrat(H,lambda[i]) if isfinite(δλ) lambda[i] -= δλ if abs(δλ) ≤ 10 * eps(lambda[i]) # do one final Newton iteration for luck and profit: - δλ = (/)(eigpoly(H,lambda[i])...) # = p / pderiv - isfinite(δλ) && (lambda[i] -= δλ) + δλ = eigpolyrat(H,lambda[i]) + lambda[i] -= δλ + break end else break diff --git a/test/gauss1093.jl b/test/gauss1093.jl new file mode 100644 index 0000000..047b67d --- /dev/null +++ b/test/gauss1093.jl @@ -0,0 +1,6 @@ +# 1093-point Gauss rule from FastGaussQuadrature.jl: + +# fx1093, fw1093 = FastGaussQuadrature.gausslegendre(1093) + +fx1093 = [-0.9999975817601038, -0.9999872584599601, -0.9999686861400369, -0.9999418608285157, -0.9999067822415294, -0.9998634505479487, -0.9998118660652263, -0.9997520292027123, -0.9996839404465871, -0.9996076003548485, -0.999523009555359, -0.9994301687449892, -0.999329078689206, -0.9992197402218562, -0.9991021542450469, -0.9989763217290716, -0.9988422437123644, -0.9986999213014667, -0.9985493556710028, -0.9983905480636602, -0.9982234997901729, -0.9980482122293051, -0.9978646868278374, -0.9976729251005519, -0.9974729286302189, -0.9972646990675813, -0.9970482381313414, -0.996823547608145, -0.9965906293525667, -0.9963494852870942, -0.9961001174021117, -0.9958425277558834, -0.9955767184745369, -0.9953026917520443, -0.9950204498502053, -0.9947299950986274, -0.9944313298947068, -0.9941244567036095, -0.9938093780582492, -0.9934860965592679, -0.9931546148750136, -0.9928149357415182, -0.9924670619624755, -0.9921109964092173, -0.9917467420206901, -0.9913743018034309, -0.9909936788315421, -0.9906048762466663, -0.9902078972579601, -0.9898027451420681, -0.9893894232430953, -0.9889679349725798, -0.9885382838094647, -0.9881004733000691, -0.987654507058059, -0.9872003887644175, -0.9867381221674143, -0.9862677110825748, -0.9857891593926489, -0.9853024710475782, -0.9848076500644641, -0.9843047005275346, -0.9837936265881102, -0.9832744324645697, -0.9827471224423159, -0.9822117008737393, -0.9816681721781834, -0.9811165408419068, -0.9805568114180474, -0.9799889885265843, -0.9794130768542993, -0.9788290811547392, -0.9782370062481754, -0.9776368570215651, -0.9770286384285103, -0.9764123554892172, -0.9757880132904547, -0.9751556169855127, -0.9745151717941589, -0.9738666830025964, -0.9732101559634195, -0.9725455960955702, -0.9718730088842928, -0.971192399881089, -0.9705037747036718, -0.9698071390359195, -0.9691024986278286, -0.9683898592954663, -0.9676692269209225, -0.9669406074522612, -0.9662040069034715, -0.9654594313544183, -0.9647068869507912, -0.9639463799040546, -0.9631779164913964, -0.9624015030556755, -0.9616171460053703, -0.960824851814525, -0.9600246270226971, -0.9592164782349023, -0.958400412121561, -0.9575764354184426, -0.9567445549266103, -0.9559047775123646, -0.9550571101071869, -0.9542015597076822, -0.9533381333755212, -0.9524668382373824, -0.951587681484893, -0.9507006703745695, -0.9498058122277577, -0.9489031144305728, -0.947992584433838, -0.9470742297530229, -0.9461480579681817, -0.9452140767238908, -0.9442722937291853, -0.9433227167574956, -0.9423653536465834, -0.9414002122984764, -0.9404273006794038, -0.9394466268197303, -0.9384581988138895, -0.9374620248203174, -0.936458113061385, -0.9354464718233308, -0.9344271094561915, -0.9334000343737338, -0.9323652550533849, -0.9313227800361622, -0.9302726179266033, -0.9292147773926945, -0.9281492671657994, -0.9270760960405867, -0.9259952728749583, -0.924906806589975, -0.9238107061697843, -0.9227069806615448, -0.9215956391753525, -0.9204766908841652, -0.919350145023727, -0.9182160108924919, -0.9170742978515474, -0.9159250153245363, -0.91476817279758, -0.9136037798192, -0.9124318460002383, -0.911252381013779, -0.910065394595068, -0.9088708965414325, -0.9076688967122009, -0.9064594050286203, -0.9052424314737756, -0.9040179860925064, -0.9027860789913248, -0.901546720338331, -0.9002999203631306, -0.8990456893567489, -0.8977840376715469, -0.8965149757211354, -0.8952385139802893, -0.8939546629848608, -0.8926634333316928, -0.8913648356785313, -0.8900588807439374, -0.8887455793071984, -0.8874249422082401, -0.8860969803475358, -0.8847617046860172, -0.8834191262449841, -0.8820692561060125, -0.8807121054108642, -0.8793476853613941, -0.877976007219458, -0.8765970823068198, -0.8752109220050577, -0.8738175377554707, -0.8724169410589835, -0.8710091434760522, -0.8695941566265689, -0.8681719921897652, -0.8667426619041164, -0.8653061775672442, -0.8638625510358194, -0.8624117942254643, -0.8609539191106543, -0.8594889377246187, -0.8580168621592414, -0.8565377045649619, -0.8550514771506741, -0.8535581921836257, -0.8520578619893171, -0.8505504989514002, -0.849036115511575, -0.8475147241694877, -0.8459863374826276, -0.8444509680662232, -0.8429086285931378, -0.8413593317937655, -0.8398030904559257, -0.8382399174247579, -0.836669825602615, -0.8350928279489578, -0.833508937480247, -0.8319181672698367, -0.8303205304478657, -0.8287160402011496, -0.8271047097730717, -0.8254865524634745, -0.8238615816285481, -0.8222298106807218, -0.8205912530885529, -0.8189459223766147, -0.8172938321253861, -0.8156349959711384, -0.8139694276058237, -0.812297140776961, -0.8106181492875236, -0.8089324669958243, -0.8072401078154018, -0.8055410857149053, -0.8038354147179797, -0.8021231089031492, -0.8004041824037015, -0.7986786494075715, -0.7969465241572234, -0.7952078209495338, -0.793462554135673, -0.7917107381209875, -0.7899523873648804, -0.788187516380692, -0.7864161397355807, -0.7846382720504017, -0.7828539279995876, -0.7810631223110263, -0.7792658697659395, -0.7774621851987611, -0.7756520834970148, -0.7738355796011909, -0.7720126885046229, -0.7701834252533641, -0.7683478049460635, -0.7665058427338401, -0.7646575538201599, -0.7628029534607083, -0.760942056963265, -0.7590748796875784, -0.7572014370452372, -0.7553217444995454, -0.753435817565392, -0.7515436718091253, -0.749645322848423, -0.7477407863521639, -0.7458300780402985, -0.743913213683719, -0.7419902091041294, -0.7400610801739147, -0.73812584281601, -0.7361845130037692, -0.7342371067608328, -0.732283640160996, -0.7303241293280758, -0.7283585904357782, -0.7263870397075644, -0.7244094934165167, -0.7224259678852049, -0.7204364794855511, -0.7184410446386943, -0.7164396798148558, -0.7144324015332019, -0.7124192263617084, -0.7104001709170245, -0.7083752518643341, -0.7063444859172193, -0.7043078898375221, -0.7022654804352064, -0.7002172745682187, -0.6981632891423492, -0.6961035411110921, -0.6940380474755068, -0.6919668252840756, -0.6898898916325645, -0.6878072636638816, -0.6857189585679353, -0.6836249935814932, -0.6815253859880389, -0.6794201531176304, -0.6773093123467555, -0.6751928810981905, -0.6730708768408543, -0.6709433170896656, -0.6688102194053978, -0.6666716013945337, -0.6645274807091215, -0.6623778750466275, -0.6602228021497907, -0.6580622798064769, -0.6558963258495311, -0.65372495815663, -0.6515481946501361, -0.6493660532969481, -0.6471785521083531, -0.6449857091398778, -0.6427875424911406, -0.6405840703057002, -0.6383753107709076, -0.6361612821177554, -0.6339420026207268, -0.6317174905976453, -0.6294877644095237, -0.6272528424604121, -0.6250127431972461, -0.6227674851096947, -0.6205170867300075, -0.6182615666328616, -0.616000943435209, -0.6137352357961221, -0.6114644624166403, -0.6091886420396149, -0.6069077934495553, -0.6046219354724733, -0.6023310869757282, -0.6000352668678703, -0.597734494098486, -0.5954287876580401, -0.5931181665777201, -0.5908026499292782, -0.5884822568248754, -0.5861570064169216, -0.5838269178979189, -0.5814920105003036, -0.5791523034962859, -0.5768078161976925, -0.5744585679558054, -0.5721045781612045, -0.5697458662436057, -0.5673824516717001, -0.565014353952996, -0.5626415926336547, -0.5602641872983315, -0.5578821575700126, -0.5554955231098545, -0.5531043036170199, -0.550708518828517, -0.5483081885190354, -0.545903332500783, -0.5434939706233229, -0.5410801227734097, -0.5386618088748242, -0.53623904888821, -0.5338118628109095, -0.5313802706767959, -0.5289442925561118, -0.5265039485552997, -0.5240592588168395, -0.5216102435190793, -0.5191569228760708, -0.5166993171374022, -0.5142374465880297, -0.5117713315481118, -0.5093009923728399, -0.5068264494522725, -0.5043477232111646, -0.5018648341088007, -0.49937780263882486, -0.49688664932907234, -0.4943913947413999, -0.4918920594715157, -0.4893886641488103, -0.4868812294361854, -0.48436977602988335, -0.4818543246593166, -0.479334896086897, -0.47681151110786346, -0.47428419055011234, -0.4717529552740217, -0.4692178261722837, -0.46667882416972883, -0.46413597022315434, -0.46158928532115134, -0.4590387904839317, -0.456484506763154, -0.45392645524175057, -0.4513646570337522, -0.44879913328411536, -0.44622990516854616, -0.44365699389332747, -0.4410804206951419, -0.43850020684089785, -0.43591637362755314, -0.4333289423819396, -0.43073793446058795, -0.4281433712495492, -0.42554527416422033, -0.4229436646491673, -0.420338564177946, -0.41772999425292784, -0.41511797640512027, -0.41250253219399, -0.40988368320728497, -0.4072614510608552, -0.4046358573984756, -0.40200692389166703, -0.39937467223951734, -0.3967391241685018, -0.3941003014323043, -0.39145822581163725, -0.38881291911406385, -0.38616440317381384, -0.3835126998516081, -0.38085783103447496, -0.3781998186355709, -0.3755386845939993, -0.37287445087462917, -0.3702071394679149, -0.36753677238971266, -0.36486337168110133, -0.36218695940819834, -0.3595075576619787, -0.35682518855809275, -0.35413987423668253, -0.35145163686220005, -0.3487604986232247, -0.3460664817322787, -0.3433696084256441, -0.3406699009631808, -0.3379673816281413, -0.335262072726987, -0.33255399658920387, -0.329843175567119, -0.32712963203571616, -0.324413388392449, -0.3216944670570594, -0.31897289047139, -0.3162486810991997, -0.31352186142597815, -0.31079245395876126, -0.30806048122594315, -0.3053259657770927, -0.3025889301827648, -0.2998493970343171, -0.2971073889437216, -0.294362928543377, -0.2916160384859249, -0.28886674144405966, -0.28611506011034477, -0.2833610171970214, -0.28060463543582487, -0.27784593757779336, -0.27508494639308406, -0.27232168467078177, -0.2695561752187121, -0.2667884408632549, -0.2640185044491522, -0.26124638883932344, -0.2584721169146735, -0.2556957115739066, -0.2529171957333354, -0.2501365923266931, -0.24735392430494282, -0.2445692146360895, -0.24178248630498927, -0.23899376231316083, -0.23620306567859461, -0.23341041943556248, -0.23061584663443008, -0.22781937034146235, -0.2250210136386378, -0.2222207996234541, -0.2194187514087401, -0.21661489212246385, -0.21380924490754097, -0.21100183292164618, -0.20819267933701932, -0.20538180734027578, -0.20256924013221417, -0.19975500092762621, -0.19693911295510338, -0.194121599456846, -0.19130248368847194, -0.18848178891882378, -0.18565953842977706, -0.18283575551604805, -0.1800104634850026, -0.17718368565646114, -0.17435544536250894, -0.1715257659473015, -0.16869467076687422, -0.16586218318894647, -0.1630283265927314, -0.16019312436874134, -0.15735659991859663, -0.15451877665482952, -0.15167967800069349, -0.1488393273899695, -0.14599774826677098, -0.14315496408535217, -0.14031099830991375, -0.13746587441440908, -0.1346196158823497, -0.131772246206615, -0.12892378888925252, -0.12607426744128944, -0.1232237053825348, -0.12037212624138786, -0.11751955355464176, -0.11466601086729163, -0.11181152173233808, -0.10895610971059301, -0.10609979837048777, -0.10324261128787404, -0.10038457204583422, -0.09752570423448309, -0.0946660314507749, -0.0918055772983072, -0.08894436538712847, -0.08608241933354037, -0.08321976275990484, -0.08035641929444795, -0.07749241257106561, -0.07462776622912821, -0.07176250391328598, -0.06889664927327205, -0.06603022596370989, -0.06316325764391655, -0.060295767977706666, -0.057427780633198956, -0.054559319282619485, -0.051690407602107004, -0.04882106927151746, -0.045951327974227275, -0.04308120739694069, -0.040210731229490995, -0.037339923164646904, -0.03446880689791664, -0.031597406127352956, -0.028725744553356018, -0.025853845878479085, -0.02298173380723178, -0.020109432045886423, -0.01723696430227947, -0.014364354285619172, -0.011491625706285652, -0.008618802275640085, -0.005745907705825662, -0.0028729657095714163, 0.0, 0.0028729657095714163, 0.005745907705825662, 0.008618802275640085, 0.011491625706285652, 0.014364354285619172, 0.01723696430227947, 0.020109432045886423, 0.02298173380723178, 0.025853845878479085, 0.028725744553356018, 0.031597406127352956, 0.03446880689791664, 0.037339923164646904, 0.040210731229490995, 0.04308120739694069, 0.045951327974227275, 0.04882106927151746, 0.051690407602107004, 0.054559319282619485, 0.057427780633198956, 0.060295767977706666, 0.06316325764391655, 0.06603022596370989, 0.06889664927327205, 0.07176250391328598, 0.07462776622912821, 0.07749241257106561, 0.08035641929444795, 0.08321976275990484, 0.08608241933354037, 0.08894436538712847, 0.0918055772983072, 0.0946660314507749, 0.09752570423448309, 0.10038457204583422, 0.10324261128787404, 0.10609979837048777, 0.10895610971059301, 0.11181152173233808, 0.11466601086729163, 0.11751955355464176, 0.12037212624138786, 0.1232237053825348, 0.12607426744128944, 0.12892378888925252, 0.131772246206615, 0.1346196158823497, 0.13746587441440908, 0.14031099830991375, 0.14315496408535217, 0.14599774826677098, 0.1488393273899695, 0.15167967800069349, 0.15451877665482952, 0.15735659991859663, 0.16019312436874134, 0.1630283265927314, 0.16586218318894647, 0.16869467076687422, 0.1715257659473015, 0.17435544536250894, 0.17718368565646114, 0.1800104634850026, 0.18283575551604805, 0.18565953842977706, 0.18848178891882378, 0.19130248368847194, 0.194121599456846, 0.19693911295510338, 0.19975500092762621, 0.20256924013221417, 0.20538180734027578, 0.20819267933701932, 0.21100183292164618, 0.21380924490754097, 0.21661489212246385, 0.2194187514087401, 0.2222207996234541, 0.2250210136386378, 0.22781937034146235, 0.23061584663443008, 0.23341041943556248, 0.23620306567859461, 0.23899376231316083, 0.24178248630498927, 0.2445692146360895, 0.24735392430494282, 0.2501365923266931, 0.2529171957333354, 0.2556957115739066, 0.2584721169146735, 0.26124638883932344, 0.2640185044491522, 0.2667884408632549, 0.2695561752187121, 0.27232168467078177, 0.27508494639308406, 0.27784593757779336, 0.28060463543582487, 0.2833610171970214, 0.28611506011034477, 0.28886674144405966, 0.2916160384859249, 0.294362928543377, 0.2971073889437216, 0.2998493970343171, 0.3025889301827648, 0.3053259657770927, 0.30806048122594315, 0.31079245395876126, 0.31352186142597815, 0.3162486810991997, 0.31897289047139, 0.3216944670570594, 0.324413388392449, 0.32712963203571616, 0.329843175567119, 0.33255399658920387, 0.335262072726987, 0.3379673816281413, 0.3406699009631808, 0.3433696084256441, 0.3460664817322787, 0.3487604986232247, 0.35145163686220005, 0.35413987423668253, 0.35682518855809275, 0.3595075576619787, 0.36218695940819834, 0.36486337168110133, 0.36753677238971266, 0.3702071394679149, 0.37287445087462917, 0.3755386845939993, 0.3781998186355709, 0.38085783103447496, 0.3835126998516081, 0.38616440317381384, 0.38881291911406385, 0.39145822581163725, 0.3941003014323043, 0.3967391241685018, 0.39937467223951734, 0.40200692389166703, 0.4046358573984756, 0.4072614510608552, 0.40988368320728497, 0.41250253219399, 0.41511797640512027, 0.41772999425292784, 0.420338564177946, 0.4229436646491673, 0.42554527416422033, 0.4281433712495492, 0.43073793446058795, 0.4333289423819396, 0.43591637362755314, 0.43850020684089785, 0.4410804206951419, 0.44365699389332747, 0.44622990516854616, 0.44879913328411536, 0.4513646570337522, 0.45392645524175057, 0.456484506763154, 0.4590387904839317, 0.46158928532115134, 0.46413597022315434, 0.46667882416972883, 0.4692178261722837, 0.4717529552740217, 0.47428419055011234, 0.47681151110786346, 0.479334896086897, 0.4818543246593166, 0.48436977602988335, 0.4868812294361854, 0.4893886641488103, 0.4918920594715157, 0.4943913947413999, 0.49688664932907234, 0.49937780263882486, 0.5018648341088007, 0.5043477232111646, 0.5068264494522725, 0.5093009923728399, 0.5117713315481118, 0.5142374465880297, 0.5166993171374022, 0.5191569228760708, 0.5216102435190793, 0.5240592588168395, 0.5265039485552997, 0.5289442925561118, 0.5313802706767959, 0.5338118628109095, 0.53623904888821, 0.5386618088748242, 0.5410801227734097, 0.5434939706233229, 0.545903332500783, 0.5483081885190354, 0.550708518828517, 0.5531043036170199, 0.5554955231098545, 0.5578821575700126, 0.5602641872983315, 0.5626415926336547, 0.565014353952996, 0.5673824516717001, 0.5697458662436057, 0.5721045781612045, 0.5744585679558054, 0.5768078161976925, 0.5791523034962859, 0.5814920105003036, 0.5838269178979189, 0.5861570064169216, 0.5884822568248754, 0.5908026499292782, 0.5931181665777201, 0.5954287876580401, 0.597734494098486, 0.6000352668678703, 0.6023310869757282, 0.6046219354724733, 0.6069077934495553, 0.6091886420396149, 0.6114644624166403, 0.6137352357961221, 0.616000943435209, 0.6182615666328616, 0.6205170867300075, 0.6227674851096947, 0.6250127431972461, 0.6272528424604121, 0.6294877644095237, 0.6317174905976453, 0.6339420026207268, 0.6361612821177554, 0.6383753107709076, 0.6405840703057002, 0.6427875424911406, 0.6449857091398778, 0.6471785521083531, 0.6493660532969481, 0.6515481946501361, 0.65372495815663, 0.6558963258495311, 0.6580622798064769, 0.6602228021497907, 0.6623778750466275, 0.6645274807091215, 0.6666716013945337, 0.6688102194053978, 0.6709433170896656, 0.6730708768408543, 0.6751928810981905, 0.6773093123467555, 0.6794201531176304, 0.6815253859880389, 0.6836249935814932, 0.6857189585679353, 0.6878072636638816, 0.6898898916325645, 0.6919668252840756, 0.6940380474755068, 0.6961035411110921, 0.6981632891423492, 0.7002172745682187, 0.7022654804352064, 0.7043078898375221, 0.7063444859172193, 0.7083752518643341, 0.7104001709170245, 0.7124192263617084, 0.7144324015332019, 0.7164396798148558, 0.7184410446386943, 0.7204364794855511, 0.7224259678852049, 0.7244094934165167, 0.7263870397075644, 0.7283585904357782, 0.7303241293280758, 0.732283640160996, 0.7342371067608328, 0.7361845130037692, 0.73812584281601, 0.7400610801739147, 0.7419902091041294, 0.743913213683719, 0.7458300780402985, 0.7477407863521639, 0.749645322848423, 0.7515436718091253, 0.753435817565392, 0.7553217444995454, 0.7572014370452372, 0.7590748796875784, 0.760942056963265, 0.7628029534607083, 0.7646575538201599, 0.7665058427338401, 0.7683478049460635, 0.7701834252533641, 0.7720126885046229, 0.7738355796011909, 0.7756520834970148, 0.7774621851987611, 0.7792658697659395, 0.7810631223110263, 0.7828539279995876, 0.7846382720504017, 0.7864161397355807, 0.788187516380692, 0.7899523873648804, 0.7917107381209875, 0.793462554135673, 0.7952078209495338, 0.7969465241572234, 0.7986786494075715, 0.8004041824037015, 0.8021231089031492, 0.8038354147179797, 0.8055410857149053, 0.8072401078154018, 0.8089324669958243, 0.8106181492875236, 0.812297140776961, 0.8139694276058237, 0.8156349959711384, 0.8172938321253861, 0.8189459223766147, 0.8205912530885529, 0.8222298106807218, 0.8238615816285481, 0.8254865524634745, 0.8271047097730717, 0.8287160402011496, 0.8303205304478657, 0.8319181672698367, 0.833508937480247, 0.8350928279489578, 0.836669825602615, 0.8382399174247579, 0.8398030904559257, 0.8413593317937655, 0.8429086285931378, 0.8444509680662232, 0.8459863374826276, 0.8475147241694877, 0.849036115511575, 0.8505504989514002, 0.8520578619893171, 0.8535581921836257, 0.8550514771506741, 0.8565377045649619, 0.8580168621592414, 0.8594889377246187, 0.8609539191106543, 0.8624117942254643, 0.8638625510358194, 0.8653061775672442, 0.8667426619041164, 0.8681719921897652, 0.8695941566265689, 0.8710091434760522, 0.8724169410589835, 0.8738175377554707, 0.8752109220050577, 0.8765970823068198, 0.877976007219458, 0.8793476853613941, 0.8807121054108642, 0.8820692561060125, 0.8834191262449841, 0.8847617046860172, 0.8860969803475358, 0.8874249422082401, 0.8887455793071984, 0.8900588807439374, 0.8913648356785313, 0.8926634333316928, 0.8939546629848608, 0.8952385139802893, 0.8965149757211354, 0.8977840376715469, 0.8990456893567489, 0.9002999203631306, 0.901546720338331, 0.9027860789913248, 0.9040179860925064, 0.9052424314737756, 0.9064594050286203, 0.9076688967122009, 0.9088708965414325, 0.910065394595068, 0.911252381013779, 0.9124318460002383, 0.9136037798192, 0.91476817279758, 0.9159250153245363, 0.9170742978515474, 0.9182160108924919, 0.919350145023727, 0.9204766908841652, 0.9215956391753525, 0.9227069806615448, 0.9238107061697843, 0.924906806589975, 0.9259952728749583, 0.9270760960405867, 0.9281492671657994, 0.9292147773926945, 0.9302726179266033, 0.9313227800361622, 0.9323652550533849, 0.9334000343737338, 0.9344271094561915, 0.9354464718233308, 0.936458113061385, 0.9374620248203174, 0.9384581988138895, 0.9394466268197303, 0.9404273006794038, 0.9414002122984764, 0.9423653536465834, 0.9433227167574956, 0.9442722937291853, 0.9452140767238908, 0.9461480579681817, 0.9470742297530229, 0.947992584433838, 0.9489031144305728, 0.9498058122277577, 0.9507006703745695, 0.951587681484893, 0.9524668382373824, 0.9533381333755212, 0.9542015597076822, 0.9550571101071869, 0.9559047775123646, 0.9567445549266103, 0.9575764354184426, 0.958400412121561, 0.9592164782349023, 0.9600246270226971, 0.960824851814525, 0.9616171460053703, 0.9624015030556755, 0.9631779164913964, 0.9639463799040546, 0.9647068869507912, 0.9654594313544183, 0.9662040069034715, 0.9669406074522612, 0.9676692269209225, 0.9683898592954663, 0.9691024986278286, 0.9698071390359195, 0.9705037747036718, 0.971192399881089, 0.9718730088842928, 0.9725455960955702, 0.9732101559634195, 0.9738666830025964, 0.9745151717941589, 0.9751556169855127, 0.9757880132904547, 0.9764123554892172, 0.9770286384285103, 0.9776368570215651, 0.9782370062481754, 0.9788290811547392, 0.9794130768542993, 0.9799889885265843, 0.9805568114180474, 0.9811165408419068, 0.9816681721781834, 0.9822117008737393, 0.9827471224423159, 0.9832744324645697, 0.9837936265881102, 0.9843047005275346, 0.9848076500644641, 0.9853024710475782, 0.9857891593926489, 0.9862677110825748, 0.9867381221674143, 0.9872003887644175, 0.987654507058059, 0.9881004733000691, 0.9885382838094647, 0.9889679349725798, 0.9893894232430953, 0.9898027451420681, 0.9902078972579601, 0.9906048762466663, 0.9909936788315421, 0.9913743018034309, 0.9917467420206901, 0.9921109964092173, 0.9924670619624755, 0.9928149357415182, 0.9931546148750136, 0.9934860965592679, 0.9938093780582492, 0.9941244567036095, 0.9944313298947068, 0.9947299950986274, 0.9950204498502053, 0.9953026917520443, 0.9955767184745369, 0.9958425277558834, 0.9961001174021117, 0.9963494852870942, 0.9965906293525667, 0.996823547608145, 0.9970482381313414, 0.9972646990675813, 0.9974729286302189, 0.9976729251005519, 0.9978646868278374, 0.9980482122293051, 0.9982234997901729, 0.9983905480636602, 0.9985493556710028, 0.9986999213014667, 0.9988422437123644, 0.9989763217290716, 0.9991021542450469, 0.9992197402218562, 0.999329078689206, 0.9994301687449892, 0.999523009555359, 0.9996076003548485, 0.9996839404465871, 0.9997520292027123, 0.9998118660652263, 0.9998634505479487, 0.9999067822415294, 0.9999418608285157, 0.9999686861400369, 0.9999872584599601, 0.9999975817601038] +fw1093 = [6.2059819936323946e-6, 1.4446295064948276e-5, 2.2698690654355984e-5, 3.095195869836438e-5, 3.920518404150313e-5, 4.7458149519090785e-5, 5.571074749798044e-5, 6.396289642851647e-5, 7.221452279335804e-5, 8.046555602709567e-5, 8.871592680052473e-5, 9.696556635778362e-5, 0.00010521440623232676, 0.00011346237811483224, 0.00012170941378758518, 0.0001299554450901017, 0.00013820040390033838, 0.0001464442221240859, 0.00015468683168884924, 0.00016292816454028565, 0.00017116815264014984, 0.0001794067279651536, 0.00018764382250639546, 0.0001958793682691544, 0.00020411329727292087, 0.0002123455415515853, 0.00022057603315373415, 0.0002288047041430188, 0.00023703148659857558, 0.000245256312615483, 0.000253479114305244, 0.0002616998237962875, 0.00026991837323448353, 0.0002781346947836688, 0.00028634872062617957, 0.00029456038296339084, 0.00030276961401625856, 0.00031097634602586646, 0.00031918051125397467, 0.00032738204198357024, 0.0003355808705194192, 0.0003437769291886205, 0.00035197015034115826, 0.00036016046635045846, 0.0003683478096139429, 0.0003765321125535843, 0.00038471330761646357, 0.0003928913272753229, 0.000401066104029125, 0.0004092375704036064, 0.0004174056589518337, 0.0004255703022547609, 0.00043373143292178303, 0.00044188898359129336, 0.0004500428869312383, 0.00045819307563967185, 0.00046633948244531224, 0.00047448204010809553, 0.00048262068141973066, 0.0004907553392042545, 0.0004988859463185854, 0.0005070124356530769, 0.000515134740132073, 0.0005232527927144596, 0.0005313665263942191, 0.0005394758742009831, 0.0005475807692005846, 0.0005556811444956108, 0.0005637769332259552, 0.0005718680685693694, 0.0005799544837420137, 0.00058803611199901, 0.0005961128866349908, 0.0006041847409846516, 0.0006122516084232987, 0.0006203134223674021, 0.0006283701162751423, 0.0006364216236469609, 0.0006444678780261094, 0.0006525088129991976, 0.0006605443621967407, 0.0006685744592937098, 0.0006765990380100757, 0.0006846180321113592, 0.0006926313754091754, 0.0007006390017617822, 0.0007086408450746235, 0.0007166368393008776, 0.0007246269184420006, 0.0007326110165482708, 0.000740589067719335, 0.0007485610061047498, 0.0007565267659045284, 0.0007644862813696797, 0.0007724394868027543, 0.0007803863165583859, 0.0007883267050438319, 0.000796260586719516, 0.0008041878960995687, 0.0008121085677523689, 0.0008200225363010817, 0.0008279297364242002, 0.000835830102856083, 0.0008437235703874949, 0.0008516100738661428, 0.0008594895481972152, 0.0008673619283439184, 0.0008752271493280144, 0.0008830851462303557, 0.0008909358541914234, 0.0008987792084118597, 0.0009066151441530056, 0.0009144435967374325, 0.0009222645015494784, 0.00093007779403578, 0.0009378834097058061, 0.0009456812841323889, 0.0009534713529522567, 0.000961253551866565, 0.0009690278166414279, 0.0009767940831084464, 0.0009845522871652383, 0.0009923023647759714, 0.001000044251971885, 0.0010077778848518245, 0.0010155031995827647, 0.001023220132400338, 0.0010309286196093614, 0.001038628597584361, 0.0010463200027700976, 0.0010540027716820918, 0.0010616768409071476, 0.001069342147103875, 0.0010769986270032152, 0.0010846462174089596, 0.0010922848551982733, 0.001099914477322217, 0.001107535020806265, 0.0011151464227508272, 0.0011227486203317667, 0.0011303415508009187, 0.0011379251514866103, 0.0011454993597941737, 0.001153064113206467, 0.0011606193492843895, 0.001168165005667393, 0.0011757010200740023, 0.0011832273303023254, 0.0011907438742305688, 0.001198250589817549, 0.001205747415103206, 0.0012132342882091123, 0.0012207111473389865, 0.0012281779307792018, 0.0012356345768992953, 0.0012430810241524778, 0.00125051721107614, 0.0012579430762923616, 0.0012653585585084167, 0.0012727635965172808, 0.0012801581291981348, 0.0012875420955168703, 0.0012949154345265935, 0.0013022780853681269, 0.001309629987270513, 0.0013169710795515167, 0.001324301301618123, 0.0013316205929670409, 0.0013389288931852, 0.0013462261419502496, 0.0013535122790310592, 0.0013607872442882119, 0.0013680509776745017, 0.0013753034192354326, 0.0013825445091097091, 0.0013897741875297318, 0.0013969923948220914, 0.0014041990714080599, 0.0014113941578040847, 0.001418577594622277, 0.0014257493225709025, 0.0014329092824548733, 0.0014400574151762326, 0.0014471936617346448, 0.0014543179632278832, 0.0014614302608523134, 0.001468530495903382, 0.0014756186097760983, 0.0014826945439655197, 0.0014897582400672353, 0.0014968096397778433, 0.0015038486848954393, 0.0015108753173200915, 0.0015178894790543217, 0.001524891112203585, 0.0015318801589767467, 0.0015388565616865574, 0.0015458202627501353, 0.0015527712046894328, 0.001559709330131719, 0.0015666345818100482, 0.0015735469025637341, 0.001580446235338821, 0.0015873325231885566, 0.0015942057092738612, 0.0016010657368637942, 0.0016079125493360265, 0.0016147460901773057, 0.001621566302983922, 0.0016283731314621747, 0.0016351665194288378, 0.0016419464108116206, 0.0016487127496496337, 0.0016554654800938508, 0.0016622045464075664, 0.0016689298929668608, 0.0016756414642610526, 0.001682339204893165, 0.0016890230595803762, 0.0016956929731544788, 0.0017023488905623353, 0.0017089907568663303, 0.0017156185172448274, 0.0017222321169926185, 0.0017288315015213781, 0.0017354166163601106, 0.001741987407155603, 0.0017485438196728716, 0.0017550857997956104, 0.0017616132935266379, 0.001768126246988343, 0.0017746246064231285, 0.0017811083181938565, 0.0017875773287842876, 0.0017940315847995282, 0.0018004710329664673, 0.0018068956201342167, 0.001813305293274551, 0.0018196999994823443, 0.001826079685976004, 0.0018324443000979163, 0.0018387937893148663, 0.0018451281012184853, 0.0018514471835256738, 0.0018577509840790375, 0.0018640394508473172, 0.001870312531925819, 0.0018765701755368402, 0.0018828123300300987, 0.0018890389438831587, 0.001895249965701857, 0.0019014453442207247, 0.0019076250283034137, 0.0019137889669431157, 0.0019199371092629848, 0.0019260694045165564, 0.001932185802088169, 0.0019382862514933771, 0.0019443707023793734, 0.0019504391045253996, 0.0019564914078431628, 0.0019625275623772497, 0.0019685475183055384, 0.00197455122593961, 0.0019805386357251565, 0.0019865096982423923, 0.0019924643642064634, 0.001998402584467849, 0.0020043243100127716, 0.0020102294919635997, 0.002016118081579254, 0.002021990030255605, 0.0020278452895258784, 0.002033683811061053, 0.0020395055466702577, 0.002045310448301175, 0.002051098468040433, 0.0020568695581140023, 0.002062623670887587, 0.0020683607588670287, 0.0020740807746986822, 0.0020797836711698194, 0.002085469401209015, 0.0020911379178865314, 0.0020967891744147135, 0.002102423124148367, 0.0021080397205851483, 0.0021136389173659472, 0.0021192206682752704, 0.0021247849272416196, 0.002130331648337877, 0.002135860785781679, 0.0021413722939357966, 0.0021468661273085147, 0.002152342240554003, 0.0021578005884726925, 0.002163241126011648, 0.002168663808264942, 0.002174068590474019, 0.0021794554280280777, 0.0021848242764644235, 0.002190175091468845, 0.0021955078288759824, 0.0022008224446696807, 0.002206118894983364, 0.002211397136100392, 0.0022166571244544245, 0.002221898816629775, 0.002227122169361775, 0.0022323271395371276, 0.002237513684194267, 0.002242681760523708, 0.002247831325868404, 0.0022529623377240955, 0.0022580747537396645, 0.0022631685317174807, 0.0022682436296137505, 0.002273300005538868, 0.0022783376177577534, 0.002283356424690205, 0.002288356384911238, 0.0022933374571514264, 0.0022982996002972457, 0.0023032427733914096, 0.0023081669356332124, 0.002313072046378862, 0.0023179580651418136, 0.0023228249515931127, 0.0023276726655617145, 0.0023325011670348294, 0.0023373104161582437, 0.00234210037323665, 0.002346870998733982, 0.00235162225327373, 0.0023563540976392736, 0.002361066492774202, 0.0023657593997826374, 0.002370432779929558, 0.002375086594641114, 0.002379720805504948, 0.0023843353742705117, 0.0023889302628493825, 0.002393505433315575, 0.0023980608479058593, 0.002402596469020067, 0.002407112259221405, 0.002411608181236763, 0.002416084197957023, 0.0024205402724373636, 0.002424976367897565, 0.002429392447722313, 0.0024337884754615053, 0.0024381644148305432, 0.0024425202297106386, 0.002446855884149111, 0.002451171342359682, 0.002455466568722774, 0.002459741527785796, 0.0024639961842634495, 0.0024682305030380093, 0.002472444449159617, 0.0024766379878465687, 0.002480811084485602, 0.002484963704632184, 0.0024890958140107926, 0.0024932073785151995, 0.0024972983642087537, 0.0025013687373246635, 0.0025054184642662658, 0.0025094475116073174, 0.002513455846092259, 0.0025174434346364937, 0.002521410244326665, 0.002525356242420919, 0.002529281396349182, 0.002533185673713428, 0.002537069042287944, 0.0025409314700195955, 0.002544772925028096, 0.002548593375606264, 0.002552392790220289, 0.0025561711375099907, 0.0025599283862890766, 0.0025636645055453987, 0.0025673794644412154, 0.0025710732323134373, 0.0025747457786738865, 0.002578397073209547, 0.0025820270857828125, 0.0025856357864317394, 0.0025892231453702895, 0.0025927891329885805, 0.002596333719853123, 0.0025998568767070743, 0.0026033585744704704, 0.0026068387842404714, 0.002610297477291596, 0.002613734625075963, 0.0026171501992235248, 0.0026205441715422984, 0.002623916514018606, 0.002627267198817297, 0.0026305961982819853, 0.002633903484935273, 0.002637189031478979, 0.0026404528107943637, 0.0026436947959423544, 0.0026469149601637634, 0.002650113276879517, 0.0026532897196908647, 0.0026564442623796037, 0.0026595768789082945, 0.0026626875434204765, 0.0026657762302408753, 0.002668842913875624, 0.002671887569012465, 0.002674910170520965, 0.0026779106934527236, 0.002680889113041569, 0.002683845404703772, 0.0026867795440382505, 0.00268969150682676, 0.002692581269034104, 0.002695448806808328, 0.002698294096480916, 0.0027011171145669877, 0.002703917837765491, 0.002706696242959393, 0.0027094523072158762, 0.0027121860077865207, 0.0027148973221074986, 0.0027175862277997523, 0.0027202527026691883, 0.002722896724706855, 0.0027255182720891226, 0.0027281173231778716, 0.0027306938565206593, 0.0027332478508509074, 0.0027357792850880728, 0.002738288138337822, 0.0027407743898922032, 0.0027432380192298203, 0.002745679006015996, 0.0027480973301029477, 0.0027504929715299452, 0.002752865910523484, 0.002755216127497443, 0.0027575436030532457, 0.002759848317980024, 0.002762130253254774, 0.002764389390042515, 0.002766625709696444, 0.002768839193758087, 0.0027710298239574565, 0.0027731975822131993, 0.002775342450632746, 0.002777464411512456, 0.002779563447337771, 0.002781639540783351, 0.002783692674713225, 0.002785722832180925, 0.0027877299964296307, 0.0027897141508923112, 0.0027916752791918493, 0.00279361336514119, 0.0027955283927434678, 0.0027974203461921376, 0.0027992892098711105, 0.002801134968354877, 0.002802957606408639, 0.002804757108988431, 0.0028065334612412452, 0.002808286648505162, 0.002810016656309456, 0.002811723470374729, 0.0028134070766130236, 0.002815067461127934, 0.002816704610214733, 0.0028183185103604668, 0.002819909148244088, 0.002821476510736546, 0.0028230205849009097, 0.002824541357992469, 0.002826038817458835, 0.0028275129509400523, 0.002828963746268695, 0.002830391191469971, 0.002831795274761817, 0.002833175984554998, 0.0028345333094532054, 0.0028358672382531457, 0.002837177759944636, 0.0028384648637106943, 0.00283972853892763, 0.0028409687751651306, 0.002842185562186348, 0.002843378889947979, 0.0028445487486003567, 0.0028456951284875284, 0.002846818020147326, 0.002847917414311461, 0.0028489933019055862, 0.0028500456740493786, 0.0028510745220566105, 0.0028520798374352223, 0.0028530616118873867, 0.002854019837309591, 0.0028549545057926858, 0.0028558656096219653, 0.002856753141277223, 0.0028576170934328164, 0.002858457458957727, 0.002859274230915618, 0.0028600674025648963, 0.00286083696735876, 0.00286158291894526, 0.0028623052511673494, 0.0028630039580629318, 0.0028636790338649166, 0.0028643304730012614, 0.002864958270095018, 0.0028655624199643826, 0.002866142917622729, 0.0028666997582786607, 0.0028672329373360408, 0.002867742450394037, 0.0028682282932471523, 0.0028686904618852645, 0.0028691289524936567, 0.0028695437614530465, 0.002869934885339625, 0.0028703023209250733, 0.002870646065176595, 0.002870966115256943, 0.0028712624685244405, 0.002871535122533001, 0.002871784075032152, 0.002872009323967053, 0.0028722108674785075, 0.002872388703902988, 0.002872542831772641, 0.0028726732498153026, 0.0028727799569545076, 0.002872862952309502, 0.0028729222351952448, 0.00287295780512242, 0.002872969661797432, 0.00287295780512242, 0.0028729222351952448, 0.002872862952309502, 0.0028727799569545076, 0.0028726732498153026, 0.002872542831772641, 0.002872388703902988, 0.0028722108674785075, 0.002872009323967053, 0.002871784075032152, 0.002871535122533001, 0.0028712624685244405, 0.002870966115256943, 0.002870646065176595, 0.0028703023209250733, 0.002869934885339625, 0.0028695437614530465, 0.0028691289524936567, 0.0028686904618852645, 0.0028682282932471523, 0.002867742450394037, 0.0028672329373360408, 0.0028666997582786607, 0.002866142917622729, 0.0028655624199643826, 0.002864958270095018, 0.0028643304730012614, 0.0028636790338649166, 0.0028630039580629318, 0.0028623052511673494, 0.00286158291894526, 0.00286083696735876, 0.0028600674025648963, 0.002859274230915618, 0.002858457458957727, 0.0028576170934328164, 0.002856753141277223, 0.0028558656096219653, 0.0028549545057926858, 0.002854019837309591, 0.0028530616118873867, 0.0028520798374352223, 0.0028510745220566105, 0.0028500456740493786, 0.0028489933019055862, 0.002847917414311461, 0.002846818020147326, 0.0028456951284875284, 0.0028445487486003567, 0.002843378889947979, 0.002842185562186348, 0.0028409687751651306, 0.00283972853892763, 0.0028384648637106943, 0.002837177759944636, 0.0028358672382531457, 0.0028345333094532054, 0.002833175984554998, 0.002831795274761817, 0.002830391191469971, 0.002828963746268695, 0.0028275129509400523, 0.002826038817458835, 0.002824541357992469, 0.0028230205849009097, 0.002821476510736546, 0.002819909148244088, 0.0028183185103604668, 0.002816704610214733, 0.002815067461127934, 0.0028134070766130236, 0.002811723470374729, 0.002810016656309456, 0.002808286648505162, 0.0028065334612412452, 0.002804757108988431, 0.002802957606408639, 0.002801134968354877, 0.0027992892098711105, 0.0027974203461921376, 0.0027955283927434678, 0.00279361336514119, 0.0027916752791918493, 0.0027897141508923112, 0.0027877299964296307, 0.002785722832180925, 0.002783692674713225, 0.002781639540783351, 0.002779563447337771, 0.002777464411512456, 0.002775342450632746, 0.0027731975822131993, 0.0027710298239574565, 0.002768839193758087, 0.002766625709696444, 0.002764389390042515, 0.002762130253254774, 0.002759848317980024, 0.0027575436030532457, 0.002755216127497443, 0.002752865910523484, 0.0027504929715299452, 0.0027480973301029477, 0.002745679006015996, 0.0027432380192298203, 0.0027407743898922032, 0.002738288138337822, 0.0027357792850880728, 0.0027332478508509074, 0.0027306938565206593, 0.0027281173231778716, 0.0027255182720891226, 0.002722896724706855, 0.0027202527026691883, 0.0027175862277997523, 0.0027148973221074986, 0.0027121860077865207, 0.0027094523072158762, 0.002706696242959393, 0.002703917837765491, 0.0027011171145669877, 0.002698294096480916, 0.002695448806808328, 0.002692581269034104, 0.00268969150682676, 0.0026867795440382505, 0.002683845404703772, 0.002680889113041569, 0.0026779106934527236, 0.002674910170520965, 0.002671887569012465, 0.002668842913875624, 0.0026657762302408753, 0.0026626875434204765, 0.0026595768789082945, 0.0026564442623796037, 0.0026532897196908647, 0.002650113276879517, 0.0026469149601637634, 0.0026436947959423544, 0.0026404528107943637, 0.002637189031478979, 0.002633903484935273, 0.0026305961982819853, 0.002627267198817297, 0.002623916514018606, 0.0026205441715422984, 0.0026171501992235248, 0.002613734625075963, 0.002610297477291596, 0.0026068387842404714, 0.0026033585744704704, 0.0025998568767070743, 0.002596333719853123, 0.0025927891329885805, 0.0025892231453702895, 0.0025856357864317394, 0.0025820270857828125, 0.002578397073209547, 0.0025747457786738865, 0.0025710732323134373, 0.0025673794644412154, 0.0025636645055453987, 0.0025599283862890766, 0.0025561711375099907, 0.002552392790220289, 0.002548593375606264, 0.002544772925028096, 0.0025409314700195955, 0.002537069042287944, 0.002533185673713428, 0.002529281396349182, 0.002525356242420919, 0.002521410244326665, 0.0025174434346364937, 0.002513455846092259, 0.0025094475116073174, 0.0025054184642662658, 0.0025013687373246635, 0.0024972983642087537, 0.0024932073785151995, 0.0024890958140107926, 0.002484963704632184, 0.002480811084485602, 0.0024766379878465687, 0.002472444449159617, 0.0024682305030380093, 0.0024639961842634495, 0.002459741527785796, 0.002455466568722774, 0.002451171342359682, 0.002446855884149111, 0.0024425202297106386, 0.0024381644148305432, 0.0024337884754615053, 0.002429392447722313, 0.002424976367897565, 0.0024205402724373636, 0.002416084197957023, 0.002411608181236763, 0.002407112259221405, 0.002402596469020067, 0.0023980608479058593, 0.002393505433315575, 0.0023889302628493825, 0.0023843353742705117, 0.002379720805504948, 0.002375086594641114, 0.002370432779929558, 0.0023657593997826374, 0.002361066492774202, 0.0023563540976392736, 0.00235162225327373, 0.002346870998733982, 0.00234210037323665, 0.0023373104161582437, 0.0023325011670348294, 0.0023276726655617145, 0.0023228249515931127, 0.0023179580651418136, 0.002313072046378862, 0.0023081669356332124, 0.0023032427733914096, 0.0022982996002972457, 0.0022933374571514264, 0.002288356384911238, 0.002283356424690205, 0.0022783376177577534, 0.002273300005538868, 0.0022682436296137505, 0.0022631685317174807, 0.0022580747537396645, 0.0022529623377240955, 0.002247831325868404, 0.002242681760523708, 0.002237513684194267, 0.0022323271395371276, 0.002227122169361775, 0.002221898816629775, 0.0022166571244544245, 0.002211397136100392, 0.002206118894983364, 0.0022008224446696807, 0.0021955078288759824, 0.002190175091468845, 0.0021848242764644235, 0.0021794554280280777, 0.002174068590474019, 0.002168663808264942, 0.002163241126011648, 0.0021578005884726925, 0.002152342240554003, 0.0021468661273085147, 0.0021413722939357966, 0.002135860785781679, 0.002130331648337877, 0.0021247849272416196, 0.0021192206682752704, 0.0021136389173659472, 0.0021080397205851483, 0.002102423124148367, 0.0020967891744147135, 0.0020911379178865314, 0.002085469401209015, 0.0020797836711698194, 0.0020740807746986822, 0.0020683607588670287, 0.002062623670887587, 0.0020568695581140023, 0.002051098468040433, 0.002045310448301175, 0.0020395055466702577, 0.002033683811061053, 0.0020278452895258784, 0.002021990030255605, 0.002016118081579254, 0.0020102294919635997, 0.0020043243100127716, 0.001998402584467849, 0.0019924643642064634, 0.0019865096982423923, 0.0019805386357251565, 0.00197455122593961, 0.0019685475183055384, 0.0019625275623772497, 0.0019564914078431628, 0.0019504391045253996, 0.0019443707023793734, 0.0019382862514933771, 0.001932185802088169, 0.0019260694045165564, 0.0019199371092629848, 0.0019137889669431157, 0.0019076250283034137, 0.0019014453442207247, 0.001895249965701857, 0.0018890389438831587, 0.0018828123300300987, 0.0018765701755368402, 0.001870312531925819, 0.0018640394508473172, 0.0018577509840790375, 0.0018514471835256738, 0.0018451281012184853, 0.0018387937893148663, 0.0018324443000979163, 0.001826079685976004, 0.0018196999994823443, 0.001813305293274551, 0.0018068956201342167, 0.0018004710329664673, 0.0017940315847995282, 0.0017875773287842876, 0.0017811083181938565, 0.0017746246064231285, 0.001768126246988343, 0.0017616132935266379, 0.0017550857997956104, 0.0017485438196728716, 0.001741987407155603, 0.0017354166163601106, 0.0017288315015213781, 0.0017222321169926185, 0.0017156185172448274, 0.0017089907568663303, 0.0017023488905623353, 0.0016956929731544788, 0.0016890230595803762, 0.001682339204893165, 0.0016756414642610526, 0.0016689298929668608, 0.0016622045464075664, 0.0016554654800938508, 0.0016487127496496337, 0.0016419464108116206, 0.0016351665194288378, 0.0016283731314621747, 0.001621566302983922, 0.0016147460901773057, 0.0016079125493360265, 0.0016010657368637942, 0.0015942057092738612, 0.0015873325231885566, 0.001580446235338821, 0.0015735469025637341, 0.0015666345818100482, 0.001559709330131719, 0.0015527712046894328, 0.0015458202627501353, 0.0015388565616865574, 0.0015318801589767467, 0.001524891112203585, 0.0015178894790543217, 0.0015108753173200915, 0.0015038486848954393, 0.0014968096397778433, 0.0014897582400672353, 0.0014826945439655197, 0.0014756186097760983, 0.001468530495903382, 0.0014614302608523134, 0.0014543179632278832, 0.0014471936617346448, 0.0014400574151762326, 0.0014329092824548733, 0.0014257493225709025, 0.001418577594622277, 0.0014113941578040847, 0.0014041990714080599, 0.0013969923948220914, 0.0013897741875297318, 0.0013825445091097091, 0.0013753034192354326, 0.0013680509776745017, 0.0013607872442882119, 0.0013535122790310592, 0.0013462261419502496, 0.0013389288931852, 0.0013316205929670409, 0.001324301301618123, 0.0013169710795515167, 0.001309629987270513, 0.0013022780853681269, 0.0012949154345265935, 0.0012875420955168703, 0.0012801581291981348, 0.0012727635965172808, 0.0012653585585084167, 0.0012579430762923616, 0.00125051721107614, 0.0012430810241524778, 0.0012356345768992953, 0.0012281779307792018, 0.0012207111473389865, 0.0012132342882091123, 0.001205747415103206, 0.001198250589817549, 0.0011907438742305688, 0.0011832273303023254, 0.0011757010200740023, 0.001168165005667393, 0.0011606193492843895, 0.001153064113206467, 0.0011454993597941737, 0.0011379251514866103, 0.0011303415508009187, 0.0011227486203317667, 0.0011151464227508272, 0.001107535020806265, 0.001099914477322217, 0.0010922848551982733, 0.0010846462174089596, 0.0010769986270032152, 0.001069342147103875, 0.0010616768409071476, 0.0010540027716820918, 0.0010463200027700976, 0.001038628597584361, 0.0010309286196093614, 0.001023220132400338, 0.0010155031995827647, 0.0010077778848518245, 0.001000044251971885, 0.0009923023647759714, 0.0009845522871652383, 0.0009767940831084464, 0.0009690278166414279, 0.000961253551866565, 0.0009534713529522567, 0.0009456812841323889, 0.0009378834097058061, 0.00093007779403578, 0.0009222645015494784, 0.0009144435967374325, 0.0009066151441530056, 0.0008987792084118597, 0.0008909358541914234, 0.0008830851462303557, 0.0008752271493280144, 0.0008673619283439184, 0.0008594895481972152, 0.0008516100738661428, 0.0008437235703874949, 0.000835830102856083, 0.0008279297364242002, 0.0008200225363010817, 0.0008121085677523689, 0.0008041878960995687, 0.000796260586719516, 0.0007883267050438319, 0.0007803863165583859, 0.0007724394868027543, 0.0007644862813696797, 0.0007565267659045284, 0.0007485610061047498, 0.000740589067719335, 0.0007326110165482708, 0.0007246269184420006, 0.0007166368393008776, 0.0007086408450746235, 0.0007006390017617822, 0.0006926313754091754, 0.0006846180321113592, 0.0006765990380100757, 0.0006685744592937098, 0.0006605443621967407, 0.0006525088129991976, 0.0006444678780261094, 0.0006364216236469609, 0.0006283701162751423, 0.0006203134223674021, 0.0006122516084232987, 0.0006041847409846516, 0.0005961128866349908, 0.00058803611199901, 0.0005799544837420137, 0.0005718680685693694, 0.0005637769332259552, 0.0005556811444956108, 0.0005475807692005846, 0.0005394758742009831, 0.0005313665263942191, 0.0005232527927144596, 0.000515134740132073, 0.0005070124356530769, 0.0004988859463185854, 0.0004907553392042545, 0.00048262068141973066, 0.00047448204010809553, 0.00046633948244531224, 0.00045819307563967185, 0.0004500428869312383, 0.00044188898359129336, 0.00043373143292178303, 0.0004255703022547609, 0.0004174056589518337, 0.0004092375704036064, 0.000401066104029125, 0.0003928913272753229, 0.00038471330761646357, 0.0003765321125535843, 0.0003683478096139429, 0.00036016046635045846, 0.00035197015034115826, 0.0003437769291886205, 0.0003355808705194192, 0.00032738204198357024, 0.00031918051125397467, 0.00031097634602586646, 0.00030276961401625856, 0.00029456038296339084, 0.00028634872062617957, 0.0002781346947836688, 0.00026991837323448353, 0.0002616998237962875, 0.000253479114305244, 0.000245256312615483, 0.00023703148659857558, 0.0002288047041430188, 0.00022057603315373415, 0.0002123455415515853, 0.00020411329727292087, 0.0001958793682691544, 0.00018764382250639546, 0.0001794067279651536, 0.00017116815264014984, 0.00016292816454028565, 0.00015468683168884924, 0.0001464442221240859, 0.00013820040390033838, 0.0001299554450901017, 0.00012170941378758518, 0.00011346237811483224, 0.00010521440623232676, 9.696556635778362e-5, 8.871592680052473e-5, 8.046555602709567e-5, 7.221452279335804e-5, 6.396289642851647e-5, 5.571074749798044e-5, 4.7458149519090785e-5, 3.920518404150313e-5, 3.095195869836438e-5, 2.2698690654355984e-5, 1.4446295064948276e-5, 6.2059819936323946e-6] diff --git a/test/runtests.jl b/test/runtests.jl index 4e156f2..2b5c759 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -69,6 +69,8 @@ end @test @inferred(quadgk(x -> sin(10x), 0,1))[1] ≈ (1 - cos(10))/10 end +include("gauss1093.jl") # 1093-point validation data + @testset "gauss" begin x,w = gauss(10, -1, 1) x′,w′ = @inferred gauss(x->1, 10, -1, 1) @@ -97,6 +99,11 @@ end # check for underflow bug: https://discourse.julialang.org/t/nan-returned-by-gauss/68260 x,w = gauss(1093) @test all(isfinite, x) && all(isfinite, w) + + # issue #109 + @test x ≈ fx1093 rtol=1e-14 + @test w ≈ fw1093 rtol=1e-14 + @test dot(exp.(x), w) ≈ exp(1) - exp(-1) rtol=1e-14 end # check some arbitrary precision (Maple) values from https://keisan.casio.com/exec/system/1289382036