diff --git a/src/OrdinaryDiffEq.jl b/src/OrdinaryDiffEq.jl index a0204c73a0..b832c88f8c 100644 --- a/src/OrdinaryDiffEq.jl +++ b/src/OrdinaryDiffEq.jl @@ -415,7 +415,7 @@ export FunctionMap, Euler, Heun, Ralston, Midpoint, RK4, ExplicitRK, OwrenZen3, FRK65, PFRK87, RKM, MSRK5, MSRK6, Stepanov5, SIR54, QPRK98, PSRK4p7q6, PSRK3p6q5, PSRK3p5q4 -export RadauIIA3, RadauIIA5, RadauIIA7 +export RadauIIA3, RadauIIA5, RadauIIA9 export ImplicitEuler, ImplicitMidpoint, Trapezoid, TRBDF2, SDIRK2, SDIRK22, Kvaerno3, KenCarp3, Cash4, Hairer4, Hairer42, SSPSDIRK2, Kvaerno4, diff --git a/src/alg_utils.jl b/src/alg_utils.jl index cb7c0cc5b7..3c4e3ece28 100644 --- a/src/alg_utils.jl +++ b/src/alg_utils.jl @@ -176,7 +176,7 @@ qmin_default(alg::DP8) = 1 // 3 qmax_default(alg::Union{OrdinaryDiffEqAlgorithm, DAEAlgorithm}) = 10 qmax_default(alg::CompositeAlgorithm) = minimum(qmax_default.(alg.algs)) qmax_default(alg::DP8) = 6 -qmax_default(alg::Union{RadauIIA3, RadauIIA5, RadauIIA7}) = 8 +qmax_default(alg::Union{RadauIIA3, RadauIIA5, RadauIIA9}) = 8 function has_chunksize(alg::OrdinaryDiffEqAlgorithm) return alg isa Union{OrdinaryDiffEqExponentialAlgorithm, @@ -441,7 +441,7 @@ alg_order(alg::TanYam7) = 7 alg_order(alg::TsitPap8) = 8 alg_order(alg::RadauIIA3) = 3 alg_order(alg::RadauIIA5) = 5 -alg_order(alg::RadauIIA7) = 7 +alg_order(alg::RadauIIA9) = 9 alg_order(alg::ImplicitEuler) = 1 alg_order(alg::RKMK2) = 2 alg_order(alg::RKMK4) = 4 @@ -580,6 +580,7 @@ alg_adaptive_order(alg::Rosenbrock32) = 2 alg_adaptive_order(alg::RadauIIA3) = 1 alg_adaptive_order(alg::RadauIIA5) = 3 +alg_adaptive_order(alg::RadauIIA9) = 7 alg_adaptive_order(alg::ImplicitEuler) = 0 alg_adaptive_order(alg::Trapezoid) = 1 diff --git a/src/algorithms.jl b/src/algorithms.jl index cf3182d624..abeea83bdb 100644 --- a/src/algorithms.jl +++ b/src/algorithms.jl @@ -1007,10 +1007,10 @@ year={1999}, publisher={Elsevier} } -RadauIIA7: Fully-Implicit Runge-Kutta Method +RadauII97: Fully-Implicit Runge-Kutta Method An A-B-L stable fully implicit Runge-Kutta method with internal tableau complex basis transform for efficiency. """ -struct RadauIIA7{CS, AD, F, P, FDT, ST, CJ, Tol, C1, C2, StepLimiter} <: +struct RadauIIA9{CS, AD, F, P, FDT, ST, CJ, Tol, C1, C2, StepLimiter} <: OrdinaryDiffEqNewtonAdaptiveAlgorithm{CS, AD, FDT, ST, CJ} linsolve::F precs::P @@ -1024,7 +1024,7 @@ struct RadauIIA7{CS, AD, F, P, FDT, ST, CJ, Tol, C1, C2, StepLimiter} <: step_limiter!::StepLimiter end -function RadauIIA7(; chunk_size = Val{0}(), autodiff = Val{true}(), +function RadauIIA9(; chunk_size = Val{0}(), autodiff = Val{true}(), standardtag = Val{true}(), concrete_jac = nothing, diff_type = Val{:forward}, linsolve = nothing, precs = DEFAULT_PRECS, @@ -1032,7 +1032,7 @@ function RadauIIA7(; chunk_size = Val{0}(), autodiff = Val{true}(), new_W_γdt_cutoff = 1 // 5, controller = :Predictive, κ = nothing, maxiters = 10, smooth_est = true, step_limiter! = trivial_limiter!) - RadauIIA7{_unwrap_val(chunk_size), _unwrap_val(autodiff), typeof(linsolve), + RadauIIA9{_unwrap_val(chunk_size), _unwrap_val(autodiff), typeof(linsolve), typeof(precs), diff_type, _unwrap_val(standardtag), _unwrap_val(concrete_jac), typeof(κ), typeof(fast_convergence_cutoff), typeof(new_W_γdt_cutoff), typeof(step_limiter!)}(linsolve, @@ -1046,7 +1046,7 @@ function RadauIIA7(; chunk_size = Val{0}(), autodiff = Val{true}(), controller, step_limiter!) end -TruncatedStacktraces.@truncate_stacktrace RadauIIA7 +TruncatedStacktraces.@truncate_stacktrace RadauIIA9 ################################################################################ diff --git a/src/algorithms/explicit_rk_pde.jl b/src/algorithms/explicit_rk_pde.jl new file mode 100644 index 0000000000..20fbeadeae --- /dev/null +++ b/src/algorithms/explicit_rk_pde.jl @@ -0,0 +1,1230 @@ +#Low Storage Explicit Runge-Kutta Methods + +@doc explicit_rk_docstring( + "A fourth-order, five-stage explicit low-storage method of Carpenter and Kennedy +(free 3rd order Hermite interpolant). Fixed timestep only. Designed for +hyperbolic PDEs (stability properties).", + "CarpenterKennedy2N54", + references = "@article{carpenter1994fourth, + title={Fourth-order 2N-storage Runge-Kutta schemes}, + author={Carpenter, Mark H and Kennedy, Christopher A}, + year={1994} + }", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct CarpenterKennedy2N54{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function CarpenterKennedy2N54(stage_limiter!, + step_limiter! = trivial_limiter!; + williamson_condition = true) + CarpenterKennedy2N54(stage_limiter!, step_limiter!, False(), williamson_condition) +end + +@doc explicit_rk_docstring( + "A fourth-order, six-stage explicit low-storage method. Fixed timestep only.", + "SHLDDRK64", + references = "D. Stanescu, W. G. Habashi. + 2N-Storage Low Dissipation and Dispersion Runge-Kutta Schemes for Computational + Acoustics. + Journal of Computational Physics, 143(2), pp 674-681, 1998. + doi: https://doi.org/10.1006/jcph.1998.5986 + }", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct SHLDDRK64{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function SHLDDRK64(stage_limiter!, + step_limiter! = trivial_limiter!; + williamson_condition = true) + SHLDDRK64(stage_limiter!, step_limiter!, False(), williamson_condition) +end + +@doc explicit_rk_docstring("TBD", "SHLDDRK52") +Base.@kwdef struct SHLDDRK52{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SHLDDRK52(stage_limiter!, step_limiter! = trivial_limiter!) + SHLDDRK52(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring("TBD", "SHLDDRK_2N") +Base.@kwdef struct SHLDDRK_2N{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SHLDDRK_2N(stage_limiter!, step_limiter! = trivial_limiter!) + SHLDDRK_2N(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring("Low-Storage Method +6-stage, fourth order low-stage, low-dissipation, low-dispersion scheme. +Fixed timestep only.", "HSLDDRK64", + references = "D. Stanescu, W. G. Habashi. + 2N-Storage Low Dissipation and Dispersion Runge-Kutta Schemes for Computational + Acoustics. + Journal of Computational Physics, 143(2), pp 674-681, 1998. + doi: https://doi.org/10.1006/jcph.1998.5986 + }", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +struct HSLDDRK64{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread + williamson_condition::Bool + function HSLDDRK64(stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + Base.depwarn("HSLDDRK64 is deprecated, use SHLDDRK64 instead.", :HSLDDRK64) + SHLDDRK64(stage_limiter!, step_limiter!, thread; + williamson_condition = williamson_condition) + end +end + +@doc explicit_rk_docstring( + "7-stage, third order low-storage low-dissipation, low-dispersion scheme for +discontinuous Galerkin space discretizations applied to wave propagation problems. +Optimized for PDE discretizations when maximum spatial step is small due to +geometric features of computational domain. Fixed timestep only.", + "DGLDDRK73_C", + references = "T. Toulorge, W. Desmet. + Optimal Runge–Kutta Schemes for Discontinuous Galerkin Space Discretizations + Applied to Wave Propagation Problems. + Journal of Computational Physics, 231(4), pp 2067-2091, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.11.024", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct DGLDDRK73_C{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function DGLDDRK73_C(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + DGLDDRK73_C(stage_limiter!, + step_limiter!, + False(), + williamson_condition) +end + +@doc explicit_rk_docstring( + "8-stage, fourth order low-storage low-dissipation, low-dispersion scheme for +discontinuous Galerkin space discretizations applied to wave propagation problems. +Optimized for PDE discretizations when maximum spatial step is small due to +geometric features of computational domain. Fixed timestep only.", + "DGLDDRK84_C", + references = "T. Toulorge, W. Desmet. + Optimal Runge–Kutta Schemes for Discontinuous Galerkin Space Discretizations + Applied to Wave Propagation Problems. + Journal of Computational Physics, 231(4), pp 2067-2091, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.11.024", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct DGLDDRK84_C{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function DGLDDRK84_C(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + DGLDDRK84_C(stage_limiter!, + step_limiter!, + False(), + williamson_condition) +end + +@doc explicit_rk_docstring( + "8-stage, fourth order low-storage low-dissipation, low-dispersion scheme for +discontinuous Galerkin space discretizations applied to wave propagation problems. +Optimized for PDE discretizations when the maximum spatial step size is not +constrained. Fixed timestep only.", + "DGLDDRK84_F", + references = "T. Toulorge, W. Desmet. + Optimal Runge–Kutta Schemes for Discontinuous Galerkin Space Discretizations + Applied to Wave Propagation Problems. + Journal of Computational Physics, 231(4), pp 2067-2091, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.11.024", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct DGLDDRK84_F{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function DGLDDRK84_F(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + DGLDDRK84_F(stage_limiter!, + step_limiter!, + False(), + williamson_condition) +end + +@doc explicit_rk_docstring( + "12-stage, fourth order low-storage method with optimized stability regions for +advection-dominated problems. Fixed timestep only.", + "NDBLSRK124", + references = "Jens Niegemann, Richard Diehl, Kurt Busch. + Efficient Low-Storage Runge–Kutta Schemes with Optimized Stability Regions. + Journal of Computational Physics, 231, pp 364-372, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.09.003", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct NDBLSRK124{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function NDBLSRK124(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + NDBLSRK124(stage_limiter!, + step_limiter!, False(), + williamson_condition) +end + +@doc explicit_rk_docstring( + "13-stage, fourth order low-storage method with optimized stability regions for +advection-dominated problems. Fixed timestep only.", + "NDBLSRK134", + references = "Jens Niegemann, Richard Diehl, Kurt Busch. + Efficient Low-Storage Runge–Kutta Schemes with Optimized Stability Regions. + Journal of Computational Physics, 231, pp 364-372, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.09.003", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct NDBLSRK134{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function NDBLSRK134(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + NDBLSRK134(stage_limiter!, + step_limiter!, False(), + williamson_condition) +end + +@doc explicit_rk_docstring( + "14-stage, fourth order low-storage method with optimized stability regions for +advection-dominated problems. Fixed timestep only.", + "NDBLSRK144", + references = "Jens Niegemann, Richard Diehl, Kurt Busch. + Efficient Low-Storage Runge–Kutta Schemes with Optimized Stability Regions. + Journal of Computational Physics, 231, pp 364-372, 2012. + doi: https://doi.org/10.1016/j.jcp.2011.09.003", + extra_keyword_description = """- `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types. + """, + extra_keyword_default = "williamson_condition = true") +Base.@kwdef struct NDBLSRK144{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() + williamson_condition::Bool = true +end +# for backwards compatibility +function NDBLSRK144(stage_limiter!, step_limiter! = trivial_limiter!; + williamson_condition = true) + NDBLSRK144{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, False(), + williamson_condition) +end + +@doc explicit_rk_docstring("Low-Storage Method +6-stage, fourth order low-storage, low-dissipation, low-dispersion scheme. +Fixed timestep only.", "CFRLDDRK64", + references = "M. Calvo, J. M. Franco, L. Randez. A New Minimum Storage Runge–Kutta Scheme + for Computational Acoustics. Journal of Computational Physics, 201, pp 1-12, 2004. + doi: https://doi.org/10.1016/j.jcp.2004.05.012") +Base.@kwdef struct CFRLDDRK64{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CFRLDDRK64(stage_limiter!, step_limiter! = trivial_limiter!) + CFRLDDRK64(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +7-stage, fourth order low-storage low-dissipation, low-dispersion scheme with maximal accuracy and stability limit along the imaginary axes. +Fixed timestep only.", + "TSLDDRK74", + references = "Kostas Tselios, T. E. Simos. Optimized Runge–Kutta Methods with Minimal Dispersion and Dissipation + for Problems arising from Computational Acoustics. Physics Letters A, 393(1-2), pp 38-47, 2007. + doi: https://doi.org/10.1016/j.physleta.2006.10.072") +Base.@kwdef struct TSLDDRK74{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function TSLDDRK74(stage_limiter!, step_limiter! = trivial_limiter!) + TSLDDRK74(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +4-stage, third order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK43_2") +Base.@kwdef struct CKLLSRK43_2{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK43_2(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK43_2{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3C") +Base.@kwdef struct CKLLSRK54_3C{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3C(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3C{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +9-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK95_4S") +Base.@kwdef struct CKLLSRK95_4S{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK95_4S(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK95_4S{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +9-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK95_4C") +Base.@kwdef struct CKLLSRK95_4C{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK95_4C(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK95_4C{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +9-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK95_4M") +Base.@kwdef struct CKLLSRK95_4M{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK95_4M(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK95_4M{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3C_3R") +Base.@kwdef struct CKLLSRK54_3C_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3C_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3C_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3M_3R") +Base.@kwdef struct CKLLSRK54_3M_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3M_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3M_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3N_3R") +Base.@kwdef struct CKLLSRK54_3N_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3N_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3N_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +8-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK85_4C_3R") +Base.@kwdef struct CKLLSRK85_4C_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK85_4C_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK85_4C_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +8-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK85_4M_3R") +Base.@kwdef struct CKLLSRK85_4M_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK85_4M_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK85_4M_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +8-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK85_4P_3R") +Base.@kwdef struct CKLLSRK85_4P_3R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK85_4P_3R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK85_4P_3R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3N_4R") +Base.@kwdef struct CKLLSRK54_3N_4R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3N_4R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3N_4R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, fourth order low-storage scheme, optimized for compressible Navier–Stokes equations. +", "CKLLSRK54_3M_4R") +Base.@kwdef struct CKLLSRK54_3M_4R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK54_3M_4R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK54_3M_4R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "6-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations.", + "CKLLSRK65_4M_4R") +Base.@kwdef struct CKLLSRK65_4M_4R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK65_4M_4R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK65_4M_4R(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +8-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations.", + "CKLLSRK85_4FM_4R") +Base.@kwdef struct CKLLSRK85_4FM_4R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK85_4FM_4R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK85_4FM_4R(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "CKLLSRK75_4M_5R: Low-Storage Method +7-stage, fifth order low-storage scheme, optimized for compressible Navier–Stokes equations.", + "CKLLSRK75_4M_5R") +Base.@kwdef struct CKLLSRK75_4M_5R{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function CKLLSRK75_4M_5R(stage_limiter!, step_limiter! = trivial_limiter!) + CKLLSRK75_4M_5R{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +3-stage, second order (3S) low-storage scheme, optimized the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S32", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S32{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S32(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S32{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +8-stage, second order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S82", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S82{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S82(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S82{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +5-stage, third order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S53", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S53{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S53(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S53{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +17-stage, third order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S173", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S173{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S173(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S173{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +9-stage, fourth order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S94", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S94{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S94(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S94{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +18-stage, fourth order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S184", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S184{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S184(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S184{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +10-stage, fifth order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S105", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S105{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S105(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S105{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "Low-Storage Method +20-stage, fifth order (3S) low-storage scheme, optimized for the spectral difference method applied to wave propagation problems.", + "ParsaniKetchesonDeconinck3S205", + references = "Parsani, Matteo, David I. Ketcheson, and W. Deconinck. + Optimized explicit Runge--Kutta schemes for the spectral difference method applied to wave propagation problems. + SIAM Journal on Scientific Computing 35.2 (2013): A957-A986. + doi: https://doi.org/10.1137/120885899") +Base.@kwdef struct ParsaniKetchesonDeconinck3S205{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function ParsaniKetchesonDeconinck3S205(stage_limiter!, step_limiter! = trivial_limiter!) + ParsaniKetchesonDeconinck3S205{typeof(stage_limiter!), typeof(step_limiter!), False}( + stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit Runge-Kutta method with embedded error estimator +designed for spectral element discretizations of compressible fluid mechanics.", + "RDPK3Sp35", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3Sp35{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3Sp35(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3Sp35{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit Runge-Kutta method with embedded error estimator +using the FSAL property designed for spectral element discretizations of +compressible fluid mechanics.", + "RDPK3SpFSAL35", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3SpFSAL35{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3SpFSAL35(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3SpFSAL35{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A fourth-order, nine-stage explicit Runge-Kutta method with embedded error estimator +designed for spectral element discretizations of compressible fluid mechanics.", + "RDPK3Sp49", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3Sp49{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3Sp49(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3Sp49{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A fourth-order, nine-stage explicit Runge-Kutta method with embedded error estimator +using the FSAL property designed for spectral element discretizations of +compressible fluid mechanics.", + "RDPK3SpFSAL49", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3SpFSAL49{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3SpFSAL49(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3SpFSAL49{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A fifth-order, ten-stage explicit Runge-Kutta method with embedded error estimator +designed for spectral element discretizations of compressible fluid mechanics.", + "RDPK3Sp510", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3Sp510{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3Sp510(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3Sp510{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A fifth-order, ten-stage explicit Runge-Kutta method with embedded error estimator +using the FSAL property designed for spectral element discretizations of +compressible fluid mechanics.", + "RDPK3SpFSAL510", + references = "Ranocha, Dalcin, Parsani, Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)") +Base.@kwdef struct RDPK3SpFSAL510{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function RDPK3SpFSAL510(stage_limiter!, step_limiter! = trivial_limiter!) + RDPK3SpFSAL510{typeof(stage_limiter!), typeof(step_limiter!), False}(stage_limiter!, + step_limiter!, + False()) +end + +#SSP Optimized Runge-Kutta Methods + +@doc explicit_rk_docstring("TBD", + "KYK2014DGSSPRK_3S2") +Base.@kwdef struct KYK2014DGSSPRK_3S2{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function KYK2014DGSSPRK_3S2(stage_limiter!, step_limiter! = trivial_limiter!) + KYK2014DGSSPRK_3S2(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A second-order, two-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK22", + references = "Shu, Chi-Wang, and Stanley Osher. + Efficient implementation of essentially non-oscillatory shock-capturing schemes. + Journal of Computational Physics 77.2 (1988): 439-471. + https://doi.org/10.1016/0021-9991(88)90177-5") +Base.@kwdef struct SSPRK22{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK22(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK22(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, three-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK33", + references = "Shu, Chi-Wang, and Stanley Osher. + Efficient implementation of essentially non-oscillatory shock-capturing schemes. + Journal of Computational Physics 77.2 (1988): 439-471. + https://doi.org/10.1016/0021-9991(88)90177-5") +Base.@kwdef struct SSPRK33{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK33(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK33(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK53", + references = "Ruuth, Steven. + Global optimization of explicit strong-stability-preserving Runge-Kutta methods. + Mathematics of Computation 75.253 (2006): 183-207") +Base.@kwdef struct SSPRK53{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK53(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK53(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring("TBD", + "KYKSSPRK42") +Base.@kwdef struct KYKSSPRK42{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function KYKSSPRK42(stage_limiter!, step_limiter! = trivial_limiter!) + KYKSSPRK42(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit strong stability preserving (SSP) low-storage method. +Fixed timestep only.", + "SSPRK53_2N1", + references = "Higueras and T. Roldán. + New third order low-storage SSP explicit Runge–Kutta methods + arXiv:1809.04807v1.") +Base.@kwdef struct SSPRK53_2N1{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK53_2N1(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK53_2N1(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit strong stability preserving (SSP) low-storage method. +Fixed timestep only.", + "SSPRK53_2N2", + references = "Higueras and T. Roldán. + New third order low-storage SSP explicit Runge–Kutta methods + arXiv:1809.04807v1.") +Base.@kwdef struct SSPRK53_2N2{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK53_2N2(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK53_2N2(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A third-order, five-stage explicit strong stability preserving (SSP) low-storage method. +Fixed timestep only.", + "SSPRK53_H", + references = "Higueras and T. Roldán. + New third order low-storage SSP explicit Runge–Kutta methods + arXiv:1809.04807v1.") +Base.@kwdef struct SSPRK53_H{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK53_H(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK53_H(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, six-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK63", + references = "Ruuth, Steven. + Global optimization of explicit strong-stability-preserving Runge-Kutta methods. + Mathematics of Computation 75.253 (2006): 183-207") +Base.@kwdef struct SSPRK63{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK63(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK63(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, seven-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK73", + references = "Ruuth, Steven. + Global optimization of explicit strong-stability-preserving Runge-Kutta methods. + Mathematics of Computation 75.253 (2006): 183-207") +Base.@kwdef struct SSPRK73{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK73(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK73(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, eight-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK83", + references = "Ruuth, Steven. + Global optimization of explicit strong-stability-preserving Runge-Kutta methods. + Mathematics of Computation 75.253 (2006): 183-207") +Base.@kwdef struct SSPRK83{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK83(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK83(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, four-stage explicit strong stability preserving (SSP) method.", + "SSPRK43", + references = """Optimal third-order explicit SSP method with four stages discovered by + + - J. F. B. M. Kraaijevanger. + "Contractivity of Runge-Kutta methods." + In: BIT Numerical Mathematics 31.3 (1991), pp. 482–528. + [DOI: 10.1007/BF01933264](https://doi.org/10.1007/BF01933264). + + Embedded method constructed by + + - Sidafa Conde, Imre Fekete, John N. Shadid. + "Embedded error estimation and adaptive step-size control for + optimal explicit strong stability preserving Runge–Kutta methods." + [arXiv: 1806.08693](https://arXiv.org/abs/1806.08693) + + Efficient implementation (and optimized controller) developed by + + - Hendrik Ranocha, Lisandro Dalcin, Matteo Parsani, David I. Ketcheson (2021) + Optimized Runge-Kutta Methods with Automatic Step Size Control for + Compressible Computational Fluid Dynamics + [arXiv:2104.06836](https://arxiv.org/abs/2104.06836)""") +Base.@kwdef struct SSPRK43{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK43(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK43(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, four-stage explicit strong stability preserving (SSP) method.", + "SSPRK432", + references = "Gottlieb, Sigal, David I. Ketcheson, and Chi-Wang Shu. + Strong stability preserving Runge-Kutta and multistep time discretizations. + World Scientific, 2011. + Example 6.1") +Base.@kwdef struct SSPRK432{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK432(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK432(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A third-order, four-step explicit strong stability preserving (SSP) linear multistep method. +This method does not come with an error estimator and requires a fixed time step +size.", + "SSPRKMSVS43", + references = "Shu, Chi-Wang. + Total-variation-diminishing time discretizations. + SIAM Journal on Scientific and Statistical Computing 9, no. 6 (1988): 1073-1084. + [DOI: 10.1137/0909073](https://doi.org/10.1137/0909073)") +Base.@kwdef struct SSPRKMSVS43{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRKMSVS43(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRKMSVS43(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A second-order, three-step explicit strong stability preserving (SSP) linear multistep method. +This method does not come with an error estimator and requires a fixed time step +size.", + "SSPRKMSVS32", + references = "Shu, Chi-Wang. + Total-variation-diminishing time discretizations. + SIAM Journal on Scientific and Statistical Computing 9, no. 6 (1988): 1073-1084. + [DOI: 10.1137/0909073](https://doi.org/10.1137/0909073)") +Base.@kwdef struct SSPRKMSVS32{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRKMSVS32(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRKMSVS32(stage_limiter!, + step_limiter!, + False()) +end + +@doc explicit_rk_docstring( + "A third-order, nine-stage explicit strong stability preserving (SSP) method. + +Consider using `SSPRK43` instead, which uses the same main method and an +improved embedded method.", + "SSPRK932", + references = "Gottlieb, Sigal, David I. Ketcheson, and Chi-Wang Shu. + Strong stability preserving Runge-Kutta and multistep time discretizations. + World Scientific, 2011.") +Base.@kwdef struct SSPRK932{StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqAdaptiveAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK932(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK932(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A fourth-order, five-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK54", + references = "Ruuth, Steven. + Global optimization of explicit strong-stability-preserving Runge-Kutta methods. + Mathematics of Computation 75.253 (2006): 183-207.") +Base.@kwdef struct SSPRK54{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK54(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK54(stage_limiter!, + step_limiter!, False()) +end + +@doc explicit_rk_docstring( + "A fourth-order, ten-stage explicit strong stability preserving (SSP) method. +Fixed timestep only.", + "SSPRK104", + references = "Ketcheson, David I. + Highly efficient strong stability-preserving Runge–Kutta methods with + low-storage implementations. + SIAM Journal on Scientific Computing 30.4 (2008): 2113-2136.") +Base.@kwdef struct SSPRK104{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm + stage_limiter!::StageLimiter = trivial_limiter! + step_limiter!::StepLimiter = trivial_limiter! + thread::Thread = False() +end +# for backwards compatibility +function SSPRK104(stage_limiter!, step_limiter! = trivial_limiter!) + SSPRK104(stage_limiter!, + step_limiter!, False()) +end diff --git a/src/caches/extrapolation_caches.jl b/src/caches/extrapolation_caches.jl new file mode 100644 index 0000000000..34bb50d377 --- /dev/null +++ b/src/caches/extrapolation_caches.jl @@ -0,0 +1,1704 @@ +@cache mutable struct AitkenNevilleCache{ + uType, + rateType, + arrayType, + dtType, + uNoUnitsType +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + utilde::uType + atmp::uNoUnitsType + fsalfirst::rateType + dtpropose::dtType + T::arrayType + cur_order::Int + work::dtType + A::Int + step_no::Int + u_tmps::Array{uType, 1} + k_tmps::Array{rateType, 1} +end + +@cache mutable struct AitkenNevilleConstantCache{dtType, arrayType} <: + OrdinaryDiffEqConstantCache + dtpropose::dtType + T::arrayType + cur_order::Int + work::dtType + A::Int + step_no::Int +end + +function alg_cache(alg::AitkenNeville, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + utilde = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + cur_order = max(alg.init_order, alg.min_order) + dtpropose = zero(dt) + T = Array{typeof(u), 2}(undef, alg.max_order, alg.max_order) + # Array of arrays of length equal to number of threads to store intermediate + # values of u and k. [Thread Safety] + u_tmps = Array{typeof(u), 1}(undef, Threads.nthreads()) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + # Initialize each element of u_tmps and k_tmps to different instance of + # zeros array similar to u and k respectively + for i in 1:Threads.nthreads() + u_tmps[i] = zero(u) + k_tmps[i] = zero(rate_prototype) + end + # Initialize lower triangle of T to different instance of zeros array similar to u + for i in 1:(alg.max_order) + for j in 1:i + T[i, j] = zero(u) + end + end + work = zero(dt) + A = one(Int) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + step_no = zero(Int) + AitkenNevilleCache(u, uprev, tmp, k, utilde, atmp, fsalfirst, dtpropose, T, cur_order, + work, A, step_no, u_tmps, k_tmps) +end + +function alg_cache(alg::AitkenNeville, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + dtpropose = zero(dt) + cur_order = max(alg.init_order, alg.min_order) + T = Array{typeof(u), 2}(undef, alg.max_order, alg.max_order) + @.. broadcast=false T=u + work = zero(dt) + A = one(Int) + step_no = zero(Int) + AitkenNevilleConstantCache(dtpropose, T, cur_order, work, A, step_no) +end + +@cache mutable struct ImplicitEulerExtrapolationCache{uType, rateType, QType, arrayType, + dtType, JType, WType, F, JCType, + GCType, uNoUnitsType, TFType, UFType, + sequenceType} <: + OrdinaryDiffEqMutableCache + uprev::uType + u_tmps::Array{uType, 1} + u_tmps2::Array{uType, 1} + utilde::uType + tmp::uType + atmp::uNoUnitsType + k_tmps::Array{rateType, 1} + dtpropose::dtType + T::arrayType + A::Int + step_no::Int + du1::rateType + du2::rateType + J::JType + W::WType + tf::TFType + uf::UFType + linsolve_tmps::Array{rateType, 1} + linsolve::Array{F, 1} + jac_config::JCType + grad_config::GCType + sequence::sequenceType #support for different sequences + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + sigma::Rational{Int} # Parameter for order selection + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} + + # Values to check overflow in T1 computation + diff1::Array{uType, 1} + diff2::Array{uType, 1} +end + +@cache mutable struct ImplicitEulerExtrapolationConstantCache{QType, dtType, arrayType, TF, + UF, sequenceType} <: + OrdinaryDiffEqConstantCache + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n) + dtpropose::dtType + T::arrayType + n_curr::Int + n_old::Int + A::Int + step_no::Int + sigma::Rational{Int} + + tf::TF + uf::UF + + sequence::sequenceType #support for different sequences + stage_number::Vector{Int} + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ImplicitEulerExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + dtpropose = zero(dt) + #cur_order = max(alg.init_order, alg.min_order) + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + Q = fill(zero(QType), alg.max_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + T = Array{typeof(u), 2}(undef, alg.max_order + 1, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + for j in 1:i + T[i, j] = zero(u) + end + end + A = one(Int) + step_no = zero(Int) + tf = TimeDerivativeWrapper(f, u, p) + uf = UDerivativeWrapper(f, t, p) + sequence = generate_sequence(constvalue(uBottomEltypeNoUnits), alg) + stage_number = Vector{Int}(undef, alg.max_order + 1) + + for n in 1:length(stage_number) + s = zero(eltype(sequence)) + for i in 1:n + s += sequence[i] + end + stage_number[n] = 2 * Int(s) - n + 7 + end + sigma = 9 // 10 + work = fill(zero(eltype(Q)), alg.max_order + 1) + dt_new = fill(zero(eltype(Q)), alg.max_order + 1) + ImplicitEulerExtrapolationConstantCache(Q, dtpropose, T, n_curr, n_old, A, step_no, + sigma, tf, uf, sequence, stage_number, work, + dt_new) +end + +function alg_cache(alg::ImplicitEulerExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + u_tmp = zero(u) + u_tmps = Array{typeof(u_tmp), 1}(undef, Threads.nthreads()) + + u_tmps[1] = u_tmp + for i in 2:Threads.nthreads() + u_tmps[i] = zero(u_tmp) + end + + u_tmps2 = Array{typeof(u_tmp), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_tmps2[i] = zero(u_tmp) + end + + utilde = zero(u) + tmp = zero(u) + k_tmp = zero(rate_prototype) + k_tmps = Array{typeof(k_tmp), 1}(undef, Threads.nthreads()) + + k_tmps[1] = k_tmp + for i in 2:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + #cur_order = max(alg.init_order, alg.min_order) + dtpropose = zero(dt) + T = Array{typeof(u), 2}(undef, alg.max_order + 1, alg.max_order + 1) + # Initialize lower triangle of T to different instance of zeros array similar to u + for i in 1:(alg.max_order + 1) + for j in 1:i + T[i, j] = zero(u) + end + end + A = one(Int) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + step_no = zero(Int) + + du1 = zero(rate_prototype) + du2 = zero(rate_prototype) + + if DiffEqBase.has_jac(f) && !DiffEqBase.has_Wfact(f) && f.jac_prototype !== nothing + W_el = WOperator(f, dt, true) + J = nothing # is J = W.J better? + else + J = false .* _vec(rate_prototype) .* _vec(rate_prototype)' # uEltype? + W_el = zero(J) + end + + W = Array{typeof(W_el), 1}(undef, Threads.nthreads()) + W[1] = W_el + for i in 2:Threads.nthreads() + if W_el isa WOperator + W[i] = WOperator(f, dt, true) + else + W[i] = zero(W_el) + end + end + + tf = TimeGradientWrapper(f, uprev, p) + uf = UJacobianWrapper(f, t, p) + linsolve_tmp = zero(rate_prototype) + linsolve_tmps = Array{typeof(linsolve_tmp), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + linsolve_tmps[i] = zero(rate_prototype) + end + + linprob = LinearProblem(W[1], _vec(linsolve_tmps[1]); u0 = _vec(k_tmps[1])) + linsolve1 = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + + linsolve = Array{typeof(linsolve1), 1}(undef, Threads.nthreads()) + linsolve[1] = linsolve1 + for i in 2:Threads.nthreads() + linprob = LinearProblem(W[i], _vec(linsolve_tmps[i]); u0 = _vec(k_tmps[i])) + linsolve[i] = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + end + + res = uEltypeNoUnits.(zero(u)) + grad_config = build_grad_config(alg, f, tf, du1, t) + jac_config = build_jac_config(alg, f, uf, du1, uprev, u, du1, du2) + sequence = generate_sequence(constvalue(uBottomEltypeNoUnits), alg) + cc = alg_cache(alg, u, rate_prototype, uEltypeNoUnits, uBottomEltypeNoUnits, + tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, calck, Val(false)) + diff1 = Array{typeof(u), 1}(undef, Threads.nthreads()) + diff2 = Array{typeof(u), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + diff1[i] = zero(u) + diff2[i] = zero(u) + end + ImplicitEulerExtrapolationCache(uprev, u_tmps, u_tmps2, utilde, tmp, atmp, k_tmps, + dtpropose, T, A, step_no, + du1, du2, J, W, tf, uf, linsolve_tmps, linsolve, + jac_config, grad_config, sequence, cc.stage_number, + cc.Q, cc.n_curr, cc.n_old, cc.sigma, res, cc.work, + cc.dt_new, diff1, diff2) +end + +struct extrapolation_coefficients{T1, T2, T3} + # This structure is used by the caches of the algorithms + # ExtrapolationMidpointDeuflhard() and ExtrapolationMidpointHairerWanner(). + # It contains the constant coefficients used to extrapolate the internal discretisations + # in their perfom_step! function and some additional constant data. + + subdividing_sequence::T1 # subdividing_sequence[n] is used for the (n -1)th internal discretisation + + # Weights and Scaling factors for extrapolation operators + extrapolation_weights::T2 + extrapolation_scalars::T3 + + # Weights and scaling factors for internal extrapolation operators (used for error estimate) + extrapolation_weights_2::T2 + extrapolation_scalars_2::T3 +end + +function create_extrapolation_coefficients(T, + alg::Union{ExtrapolationMidpointDeuflhard, + ExtrapolationMidpointHairerWanner, + ImplicitDeuflhardExtrapolation, + ImplicitHairerWannerExtrapolation}) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = BigInt.(1:(max_order + 1)) + elseif sequence == :romberg + subdividing_sequence = BigInt(2) .^ (0:max_order) + else # sequence == :bulirsch + subdividing_sequence = [n == 0 ? BigInt(1) : + (isodd(n) ? BigInt(2)^((n + 1) ÷ 2) : + 3 * BigInt(2)^(n ÷ 2 - 1)) for n in 0:max_order] + end + + # Compute nodes corresponding to subdividing_sequence + nodes = BigInt(1) .// subdividing_sequence .^ 2 + + # Compute barycentric weights for internal extrapolation operators + extrapolation_weights_2 = zeros(Rational{BigInt}, max_order, max_order) + extrapolation_weights_2[1, :] = ones(Rational{BigInt}, 1, max_order) + for n in 2:max_order + distance = nodes[2:n] .- nodes[n + 1] + extrapolation_weights_2[1:(n - 1), n] = extrapolation_weights_2[1:(n - 1), + n - 1] .// distance + extrapolation_weights_2[n, n] = 1 // prod(-distance) + end + + # Compute barycentric weights for extrapolation operators + extrapolation_weights = zeros(Rational{BigInt}, max_order + 1, max_order + 1) + for n in 1:max_order + extrapolation_weights[n + 1, (n + 1):(max_order + 1)] = extrapolation_weights_2[n, + n:max_order] // + (nodes[n + 1] - nodes[1]) + extrapolation_weights[1, n] = 1 // prod(nodes[1] .- nodes[2:n]) + end + extrapolation_weights[1, max_order + 1] = 1 // + prod(nodes[1] .- nodes[2:(max_order + 1)]) + + # Rescale barycentric weights to obtain weights of 1. Barycentric Formula + for m in 1:(max_order + 1) + extrapolation_weights[1:m, m] = -extrapolation_weights[1:m, m] .// nodes[1:m] + if 2 <= m + extrapolation_weights_2[1:(m - 1), m - 1] = -extrapolation_weights_2[1:(m - 1), + m - 1] .// + nodes[2:m] + end + end + + # Compute scaling factors for internal extrapolation operators + extrapolation_scalars_2 = ones(Rational{BigInt}, max_order) + extrapolation_scalars_2[1] = -nodes[2] + for n in 1:(max_order - 1) + extrapolation_scalars_2[n + 1] = -extrapolation_scalars_2[n] * nodes[n + 2] + end + + # Compute scaling factors for extrapolation operators + extrapolation_scalars = -nodes[1] * [BigInt(1); extrapolation_scalars_2] + + # Initialize and return extrapolation_coefficients + extrapolation_coefficients(Int.(subdividing_sequence), + T.(extrapolation_weights), T.(extrapolation_scalars), + T.(extrapolation_weights_2), T.(extrapolation_scalars_2)) +end + +function create_extrapolation_coefficients(T, alg::ImplicitEulerBarycentricExtrapolation) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = BigInt.(1:(max_order + 1)) + elseif sequence == :romberg + subdividing_sequence = BigInt(2) .^ (0:max_order) + else # sequence == :bulirsch + subdividing_sequence = [n == 0 ? BigInt(1) : + (isodd(n) ? BigInt(2)^((n + 1) ÷ 2) : + 3 * BigInt(2)^(n ÷ 2 - 1)) for n in 0:max_order] + end + + # Compute nodes corresponding to subdividing_sequence + nodes = BigInt(1) .// subdividing_sequence + + # Compute barycentric weights for internal extrapolation operators + extrapolation_weights_2 = zeros(Rational{BigInt}, max_order, max_order) + extrapolation_weights_2[1, :] = ones(Rational{BigInt}, 1, max_order) + for n in 2:max_order + distance = nodes[2:n] .- nodes[n + 1] + extrapolation_weights_2[1:(n - 1), n] = extrapolation_weights_2[1:(n - 1), + n - 1] .// distance + extrapolation_weights_2[n, n] = 1 // prod(-distance) + end + + # Compute barycentric weights for extrapolation operators + extrapolation_weights = zeros(Rational{BigInt}, max_order + 1, max_order + 1) + for n in 1:max_order + extrapolation_weights[n + 1, (n + 1):(max_order + 1)] = extrapolation_weights_2[n, + n:max_order] // + (nodes[n + 1] - nodes[1]) + extrapolation_weights[1, n] = 1 // prod(nodes[1] .- nodes[2:n]) + end + extrapolation_weights[1, max_order + 1] = 1 // + prod(nodes[1] .- nodes[2:(max_order + 1)]) + + # Rescale barycentric weights to obtain weights of 1. Barycentric Formula + for m in 1:(max_order + 1) + extrapolation_weights[1:m, m] = -extrapolation_weights[1:m, m] .// nodes[1:m] + if 2 <= m + extrapolation_weights_2[1:(m - 1), m - 1] = -extrapolation_weights_2[1:(m - 1), + m - 1] .// + nodes[2:m] + end + end + + # Compute scaling factors for internal extrapolation operators + extrapolation_scalars_2 = ones(Rational{BigInt}, max_order) + extrapolation_scalars_2[1] = -nodes[2] + for n in 1:(max_order - 1) + extrapolation_scalars_2[n + 1] = -extrapolation_scalars_2[n] * nodes[n + 2] + end + + # Compute scaling factors for extrapolation operators + extrapolation_scalars = -nodes[1] * [BigInt(1); extrapolation_scalars_2] + + # Initialize and return extrapolation_coefficients + extrapolation_coefficients(Int.(subdividing_sequence), + T.(extrapolation_weights), T.(extrapolation_scalars), + T.(extrapolation_weights_2), T.(extrapolation_scalars_2)) +end + +function create_extrapolation_coefficients(T::Type{<:CompiledFloats}, + alg::ImplicitEulerBarycentricExtrapolation) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + max_order > 15 && + error("max_order > 15 not allowed for Float32 or Float64 with this algorithm. That's a bad idea.") + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + extrapolation_weights = T[-1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -7.0 -8.0 -9.0 -10.0 -11.0 -12.0 -13.0 -14.0 -15.0 -16.0; + 0.0 4.0 24.0 96.0 320.0 960.0 2688.0 7168.0 18432.0 46080.0 112640.0 270336.0 638976.0 1.490944e6 3.44064e6 7.86432e6; + 0.0 0.0 -27.0 -324.0 -2430.0 -14580.0 -76545.0 -367416.0 -1.653372e6 -7.08588e6 -2.9229255e7 -1.1691702e8 -4.55976378e8 -1.741000716e9 -6.528752685e9 -2.410616376e10; + 0.0 0.0 0.0 256.0 5120.0 61440.0 573440.0 4.58752e6 3.3030144e7 2.2020096e8 1.38412032e9 8.30472192e9 4.798283776e10 2.68703891456e11 1.46565758976e12 7.81684047872e12; + 0.0 0.0 0.0 0.0 -3125.0 -93750.0 -1.640625e6 -2.1875e7 -2.4609375e8 -2.4609375e9 -2.255859375e10 -1.93359375e11 -1.571044921875e12 -1.221923828125e13 -9.1644287109375e13 -6.6650390625e14; + 0.0 0.0 0.0 0.0 0.0 46656.0 1.959552e6 4.7029248e7 8.46526464e8 1.269789696e10 1.67612239872e11 2.011346878464e12 2.2412150931456e13 2.35327584780288e14 2.35327584780288e15 2.259144813890765e16; + 0.0 0.0 0.0 0.0 0.0 0.0 -823543.0 -4.6118408e7 -1.452729852e9 -3.389702988e10 -6.5251782519e11 -1.0962299463192e13 -1.66261541858412e14 -2.327661586017768e15 -3.0550558316483204e16 -3.8018472571623546e17; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.6777216e7 1.207959552e9 4.831838208e10 1.41733920768e12 3.401614098432e13 7.07535732473856e14 1.3207333672845312e16 2.2641143439163392e17 3.6225829502661427e18; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -3.87420489e8 -3.486784401e10 -1.725958278495e12 -6.213449802582e13 -1.817434067255235e15 -4.579933849483192e16 -1.0304851161337183e18 -2.119855096046506e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0e10 1.1e12 6.6e13 2.86e15 1.001e17 3.003e18 8.008e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.85311670611e11 -3.7661140520652e13 -2.692771547226618e15 -1.3822893942429973e17 -5.701943751252363e18 -2.007084200440832e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8.916100448256e12 1.390911669927936e15 1.1683658027394662e17 7.010194816436797e18 3.364893511889663e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -3.02875106592253e14 -5.512326939979005e16 -5.37451876647953e18 -3.726333011425807e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.1112006825558016e16 2.3335214333671834e18 2.6135440053712454e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.378938903808594e17 -1.0509453369140625e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.8446744073709552e19] + extrapolation_weights_2 = T[-2.0 -12.0 -48.0 -160.0 -480.0 -1344.0 -3584.0 -9216.0 -23040.0 -56320.0 -135168.0 -319488.0 -745472.0 -1.72032e6 -3.93216e6; + 0.0 18.0 216.0 1620.0 9720.0 51030.0 244944.0 1.102248e6 4.72392e6 1.948617e7 7.794468e7 3.03984252e8 1.160667144e9 4.35250179e9 1.607077584e10; + 0.0 0.0 -192.0 -3840.0 -46080.0 -430080.0 -3.44064e6 -2.4772608e7 -1.6515072e8 -1.03809024e9 -6.22854144e9 -3.598712832e10 -2.01527918592e11 -1.09924319232e12 -5.86263035904e12; + 0.0 0.0 0.0 2500.0 75000.0 1.3125e6 1.75e7 1.96875e8 1.96875e9 1.8046875e10 1.546875e11 1.2568359375e12 9.775390625e12 7.33154296875e13 5.33203125e14; + 0.0 0.0 0.0 0.0 -38880.0 -1.63296e6 -3.919104e7 -7.0543872e8 -1.05815808e10 -1.3967686656e11 -1.67612239872e12 -1.867679244288e13 -1.9610632065024e14 -1.9610632065024e15 -1.882620678242304e16; + 0.0 0.0 0.0 0.0 0.0 705894.0 3.9530064e7 1.245197016e9 2.905459704e10 5.5930099302e11 9.396256682736e12 1.42509893021496e14 1.995138502300944e15 2.618619284269989e16 3.2587262204248755e17; + 0.0 0.0 0.0 0.0 0.0 0.0 -1.4680064e7 -1.056964608e9 -4.227858432e10 -1.24017180672e12 -2.976412336128e13 -6.19093765914624e14 -1.1556416963739648e16 -1.9811000509267968e17 -3.169760081482875e18; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.44373768e8 3.099363912e10 1.53418513644e12 5.523066491184e13 1.61549694867132e15 4.071052310651726e16 9.159867698966385e17 1.884315640930228e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -9.0e9 -9.9e11 -5.94e13 -2.574e15 -9.009e16 -2.7027e18 -7.2072e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.5937424601e11 3.423740047332e13 2.44797413384238e15 1.2566267220390883e17 5.183585228411239e18 1.8246220004007562e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -8.173092077568e12 -1.275002364100608e15 -1.0710019858445107e17 -6.426011915067064e18 -3.084485719232191e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.79577021469772e14 5.0883017907498504e16 4.961094245981104e18 3.439692010546899e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0318292052303872e16 -2.166841330983813e18 -2.4268622907018707e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0870096435546874e17 9.80882314453125e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.7293822569102705e19] + extrapolation_scalars = T[-1.0, 0.5, -0.16666666666666666, 0.041666666666666664, + -0.008333333333333333, 0.001388888888888889, + -0.0001984126984126984, 2.48015873015873e-5, + -2.7557319223985893e-6, 2.755731922398589e-7, + -2.505210838544172e-8, 2.08767569878681e-9, + -1.6059043836821613e-10, 1.1470745597729725e-11, + -7.647163731819816e-13, 4.779477332387385e-14] + extrapolation_scalars_2 = T[-0.5, 0.16666666666666666, -0.041666666666666664, + 0.008333333333333333, -0.001388888888888889, + 0.0001984126984126984, -2.48015873015873e-5, + 2.7557319223985893e-6, -2.755731922398589e-7, + 2.505210838544172e-8, -2.08767569878681e-9, + 1.6059043836821613e-10, -1.1470745597729725e-11, + 7.647163731819816e-13, -4.779477332387385e-14] + elseif sequence == :romberg + subdividing_sequence = [ + 1, + 2, + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4096, + 8192, + 16384, + 32768 + ] + extrapolation_weights = T[-1.0 -2.0 -2.6666666666666665 -3.0476190476190474 -3.250793650793651 -3.355657962109575 -3.4089223742065524 -3.4357642826648718 -3.4492378680870868 -3.4559878443455743 -3.4593661315834487 -3.461056100382464 -3.4619012911273677 -3.462323938092467 -3.4625352744739657 -3.4626409458895506; + 0.0 4.0 16.0 42.666666666666664 97.52380952380952 208.05079365079365 429.5242191500256 872.6841277968774 1759.1113127244143 3532.019576921177 7077.863105219736 14169.563674965806 28352.971574333144 56719.79075383079 113453.43080341395 226920.71174792582; + 0.0 0.0 -21.333333333333332 -170.66666666666666 -910.2222222222222 -4161.015873015873 -17753.667724867726 -73305.4667349377 -297876.1822880008 -1.2008866561532002e6 -4.822384062356381e6 -1.9327284852653358e7 -7.738471041687992e7 -3.096900575159161e8 -1.2390627356143517e9 -4.956856027421692e9; + 0.0 0.0 0.0 195.04761904761904 3120.7619047619046 33288.12698412698 304348.589569161 2.597107964323507e6 2.144708512473606e7 1.7430012037880734e8 1.4053804981724308e9 1.1287134353949562e10 9.047378143596361e10 7.244977688400918e11 5.798813602675166e12 4.6401837394984086e13; + 0.0 0.0 0.0 0.0 -3328.8126984126984 -106522.00634920635 -2.272469468783069e6 -4.1553727429176114e7 -7.091836147912724e8 -1.1712968089455853e10 -1.9038221148575864e11 -3.070100544274281e12 -4.9314242468029234e13 -7.905719653583081e14 -1.2661516207654468e16 -2.026832257412905e17; + 0.0 0.0 0.0 0.0 0.0 109958.20010240655 7.037324806554019e6 3.002591917463048e8 1.0980907583864862e10 3.748149788625873e11 1.2380985108235143e13 4.024802778042154e14 1.2980781243197372e16 4.17013960565776e17 1.3370561115283118e19 4.282761941599191e20; + 0.0 0.0 0.0 0.0 0.0 0.0 -7.14902837491202e6 -9.150756319887385e8 -7.808645392970569e10 -5.711466344572759e12 -3.899027691228337e14 -2.5758737779469784e16 -1.6747268245191785e18 -1.0802647359418198e20 -6.940806836733636e21 -4.45080936254575e23; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9.222809519256577e8 2.3610392369296838e11 4.029506964359994e13 5.894593045006619e15 8.04808437078237e17 1.0633855994427287e20 1.3827388620055293e22 1.7838420090628812e24 2.2922719589400975e26; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.370298214329408e11 -1.2135926857366569e14 -4.142396367314456e16 -1.2119468228942864e19 -3.309422791049998e21 -8.745416614284383e23 -2.274363584260878e26 -5.86821621488665e28; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.215967622499351e14 1.2451508454393354e17 8.500229771532529e19 4.97384873488532e22 2.7163845890787027e25 1.435653067982757e28 7.467219005025235e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.2463680016909867e17 -2.5525616674631408e20 -3.4850975299763416e23 -4.0785598522237415e26 -4.4548749745889186e29 -4.708946553784829e32; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.5538086443402602e20 1.0460400207217706e24 2.856386616584248e27 6.685576903730903e30 1.4604865598763616e34; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.046295463950274e24 -8.571252440680644e27 -4.68104666627039e31 -2.1912648165764018e35; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8.572298863881802e27 1.4044854458583944e32 1.5340726363295958e36; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.4045711740794687e32 -4.602498823223603e36; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.602639284627553e36] + extrapolation_weights_2 = T[-2.0 -8.0 -21.333333333333332 -48.76190476190476 -104.02539682539683 -214.7621095750128 -436.3420638984387 -879.5556563622072 -1766.0097884605884 -3538.931552609868 -7084.781837482903 -14176.485787166572 -28359.895376915396 -56726.71540170698 -113460.35587396291; + 0.0 16.0 128.0 682.6666666666666 3120.7619047619046 13315.250793650794 54979.10005120328 223407.13671600062 900664.9921149001 3.616788046767285e6 1.449546363949002e7 5.803853281265994e7 2.322675431369371e8 9.292970517107637e8 3.7176420205662684e9; + 0.0 0.0 -170.66666666666666 -2730.6666666666665 -29127.11111111111 -266305.01587301586 -2.272469468783069e6 -1.876619948414405e7 -1.5251260533145642e8 -1.229707935900877e9 -9.876242559705868e9 -7.916455875646815e10 -6.339355477350803e11 -5.07396190234077e12 -4.060160772061108e13; + 0.0 0.0 0.0 3120.7619047619046 99864.38095238095 2.130440126984127e6 3.895661946485261e7 6.648596388668178e8 1.0980907583864862e10 1.784833232678987e11 2.878219260257138e12 4.623210231377741e13 7.411612175234139e14 1.1870171444676064e16 1.9001552413245984e17; + 0.0 0.0 0.0 0.0 -106522.00634920635 -6.817408406349206e6 -2.908760920042328e8 -1.0637754221869085e10 -3.631020107731315e11 -1.1994079323602793e13 -3.899027691228337e14 -1.2575131829347454e16 -4.039822742980955e17 -1.295273108043052e19 -4.148925630924216e20; + 0.0 0.0 0.0 0.0 0.0 7.037324806554019e6 9.007775752389145e8 7.686635308705403e10 5.62222468293881e12 3.838105383552894e14 2.5356257501665572e16 1.6485592178860662e18 1.0633855994427287e20 6.832356729909674e21 4.381265466255972e23; + 0.0 0.0 0.0 0.0 0.0 0.0 -9.150756319887385e8 -2.3425936178911707e11 -3.998026441200931e13 -5.848541536842505e15 -7.985208711635634e17 -1.0550778994470824e20 -1.371936214646111e22 -1.7699057433670775e24 -2.274363584260878e26; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.3610392369296838e11 1.2088520893079981e14 4.126215131504634e16 1.2072126556173556e19 3.296495358272459e21 8.711254830634834e23 2.2654793515098592e26 5.845293495297249e28; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.2135926857366569e14 -1.2427189101943366e17 -8.483627760260006e19 -4.964134186574997e22 -2.7110791504281586e25 -1.4328490580843533e28 -7.452634592906045e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.2451508454393354e17 2.5500689314597588e20 3.481694114419724e23 4.074576883618054e26 4.4505245107465464e29 4.704347973165898e32; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.5525616674631408e20 -1.0455292589929025e24 -2.854991896556619e27 -6.682312461883378e30 -1.4597734316732968e34; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0460400207217706e24 8.569159849752745e27 4.679903832611632e31 2.1907298398145424e35; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -8.571252440680644e27 -1.4043139998811168e32 -1.5338853716034814e36; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.4044854458583944e32 4.602217908988787e36; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.602498823223603e36] + extrapolation_scalars = T[-1.0, 0.5, -0.125, 0.015625, -0.0009765625, + 3.0517578125e-5, -4.76837158203125e-7, + 3.725290298461914e-9, -1.4551915228366852e-11, + 2.842170943040401e-14, -2.7755575615628914e-17, + 1.3552527156068805e-20, -3.308722450212111e-24, + 4.0389678347315804e-28, -2.465190328815662e-32, + 7.52316384526264e-37] + extrapolation_scalars_2 = T[-0.5, 0.125, -0.015625, 0.0009765625, -3.0517578125e-5, + 4.76837158203125e-7, -3.725290298461914e-9, + 1.4551915228366852e-11, -2.842170943040401e-14, + 2.7755575615628914e-17, -1.3552527156068805e-20, + 3.308722450212111e-24, -4.0389678347315804e-28, + 2.465190328815662e-32, -7.52316384526264e-37] + else # sequence == :bulirsch + subdividing_sequence = [1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256] + extrapolation_weights = T[-1.0 -2.0 -3.0 -4.0 -4.8 -5.485714285714286 -5.984415584415585 -6.383376623376623 -6.660914737436476 -6.875782954773137 -7.022076209130012 -7.13353773625906 -7.20862760716705 -7.265388454467578 -7.3034271374752615 -7.332068028210459; + 0.0 4.0 24.0 96.0 288.0 768.0 1843.2 4213.028571428571 9192.062337662337 19609.732987012987 40924.660146809714 84489.62094825231 172574.54491557917 350627.6468126053 708636.9282949497 1.4284334932559617e6; + 0.0 0.0 -27.0 -324.0 -1944.0 -9331.2 -37324.8 -137814.64615384614 -472507.35824175825 -1.5641622893520272e6 -5.005319325926487e6 -1.5754447714391567e7 -4.878796711553518e7 -1.4987663497892407e8 -4.567668875548162e8 -1.3865492871229203e9; + 0.0 0.0 0.0 256.0 3072.0 24576.0 147456.0 786432.0 3.7748736e6 1.7256565028571427e7 7.530137467012987e7 3.212858652592208e8 1.3410192636906607e9 5.5371117984646635e9 2.2619690751174793e10 9.191493384604361e10; + 0.0 0.0 0.0 0.0 -1555.2 -37324.8 -447897.6 -4.29981696e6 -3.439853568e7 -2.5401995579076922e8 -1.7418511254224176e9 -1.1532255726934628e10 -7.38064366523816e10 -4.6461756843466455e11 -2.877631391595342e12 -1.768016726996178e13; + 0.0 0.0 0.0 0.0 0.0 22469.485714285714 539267.6571428571 8.628282514285713e6 1.0353939017142858e8 1.1044201618285713e9 1.0602433553554285e10 9.693653534678204e10 8.459915812082797e11 7.219128159643986e12 6.026402637615849e13 4.976642178160185e14; + 0.0 0.0 0.0 0.0 0.0 0.0 -217162.47272727272 -1.0423798690909091e7 -2.501711685818182e8 -4.803286436770909e9 -7.685258298833455e10 -1.1350535333661716e12 -1.5566448457593213e13 -2.061212485419239e14 -2.638351981336626e15 -3.3217283961746376e16; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.663693137582418e6 2.7185727060395604e8 8.699432659326593e9 2.0878638382383826e11 4.454109521575216e12 8.551890281424414e13 1.5637742228890358e15 2.729496825406317e16 4.658341248693448e17; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -9.94469241567476e7 -9.54690471904777e9 -4.5825142651429297e11 -1.7596854778148848e13 -5.630993529007631e14 -1.6633088577991774e16 -4.5622185813920294e17 -1.208201334658303e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.95451559685786e9 4.7563349729835455e11 3.044054382709469e13 1.461146103700545e15 6.234223375788993e16 2.393941776302973e18 8.754987067622302e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.664005179966794e11 -3.194889945536245e13 -3.067094347714795e15 -2.3555284590449626e17 -1.507538213788776e19 -8.906071909152154e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.6222283049151686e13 3.1146783454371235e15 3.986788282159518e17 3.827316750873137e19 3.265976960745077e21; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.066453178967725e15 -4.095180207236064e17 -7.862745997893244e19 -1.2077177852764021e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0573083217291824e17 7.90006395544006e19 2.0224163725926554e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.676457043743931e19 -2.0555190095953393e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0272113415037764e22] + extrapolation_weights_2 = T[-2.0 -12.0 -48.0 -144.0 -384.0 -921.6 -2106.5142857142855 -4596.0311688311685 -9804.866493506493 -20462.330073404857 -42244.810474126156 -86287.27245778959 -175313.82340630266 -354318.46414747485 -714216.7466279808; + 0.0 18.0 216.0 1296.0 6220.8 24883.2 91876.43076923076 315004.9054945055 1.0427748595680182e6 3.336879550617658e6 1.0502965142927712e7 3.2525311410356782e7 9.991775665261604e7 3.0451125836987746e8 9.243661914152801e8; + 0.0 0.0 -192.0 -2304.0 -18432.0 -110592.0 -589824.0 -2.8311552e6 -1.2942423771428572e7 -5.64760310025974e7 -2.409643989444156e8 -1.0057644477679955e9 -4.1528338488484974e9 -1.6964768063381096e10 -6.893620038453271e10; + 0.0 0.0 0.0 1296.0 31104.0 373248.0 3.5831808e6 2.86654464e7 2.116832964923077e8 1.4515426045186813e9 9.610213105778856e9 6.150536387698467e10 3.8718130702888715e11 2.3980261596627847e12 1.473347272496815e13; + 0.0 0.0 0.0 0.0 -19660.8 -471859.2 -7.5497472e6 -9.05969664e7 -9.663676416e8 -9.27712935936e9 -8.481946842843428e10 -7.402426335572446e11 -6.316737139688488e12 -5.273102307913868e13 -4.354561905890162e14; + 0.0 0.0 0.0 0.0 0.0 199065.6 9.5551488e6 2.293235712e8 4.40301256704e9 7.044820107264e10 1.0404657389189907e12 1.4269244419460445e13 1.8894447783009694e14 2.4184893162252405e15 3.0449176964934176e16; + 0.0 0.0 0.0 0.0 0.0 0.0 -5.309712316483516e6 -2.5486619119120878e8 -8.155718118118681e9 -1.9573723483484836e11 -4.1757276764767646e12 -8.017397138835389e13 -1.466038333958471e15 -2.558903273818422e16 -4.367194920650107e17; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9.530330231688312e7 9.149117022420778e9 4.391576170761974e11 1.686365249572598e13 5.396368798632314e14 1.594004322057545e16 4.372126140500695e17 1.1578596123808737e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.799686984456052e9 -4.6076995050778094e11 -2.948927683249798e13 -1.415485287959903e15 -6.0394038952955864e16 -2.3191310957935053e18 -8.481393721759105e19; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.6293384053841528e11 3.128329738337573e13 3.00319654880407e15 2.306454949481526e17 1.4761311676681767e19 8.72052874437815e20; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.596880987650869e13 -3.0660114962896685e15 -3.9244947152507757e17 -3.767514926640745e19 -3.2149460707334354e21; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0553442916868112e15 4.052522080077355e17 7.780842393748523e19 1.195137391679773e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.0412356004656733e17 -7.838344705788186e19 -2.0066162446817756e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.662517163307765e19 2.0448131814203635e22; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0231987972010274e22] + extrapolation_scalars = T[-1.0, 0.5, -0.16666666666666666, 0.041666666666666664, + -0.006944444444444444, 0.0008680555555555555, + -7.233796296296296e-5, 4.521122685185185e-6, + -1.8838011188271604e-7, 5.886878496334876e-9, + -1.226433020069766e-10, 1.9163015938590095e-12, + -1.9961474936031345e-14, 1.5594902293774489e-16, + -8.122344944674213e-19, 3.1727909940133645e-21] + extrapolation_scalars_2 = T[-0.5, 0.16666666666666666, -0.041666666666666664, + 0.006944444444444444, -0.0008680555555555555, + 7.233796296296296e-5, -4.521122685185185e-6, + 1.8838011188271604e-7, -5.886878496334876e-9, + 1.226433020069766e-10, -1.9163015938590095e-12, + 1.9961474936031345e-14, -1.5594902293774489e-16, + 8.122344944674213e-19, -3.1727909940133645e-21] + end + extrapolation_coefficients(subdividing_sequence, + extrapolation_weights, extrapolation_scalars, + extrapolation_weights_2, extrapolation_scalars_2) +end + +function create_extrapolation_coefficients(T::Type{<:CompiledFloats}, + alg::Union{ExtrapolationMidpointDeuflhard, + ExtrapolationMidpointHairerWanner, + ImplicitDeuflhardExtrapolation, + ImplicitHairerWannerExtrapolation}) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + max_order > 15 && + error("max_order > 15 not allowed for Float32 or Float64 with this algorithm. That's a bad idea.") + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + extrapolation_weights = T[-1.0 -1.3333333333333333 -1.5 -1.6 -1.6666666666666667 -1.7142857142857142 -1.75 -1.7777777777777777 -1.8 -1.8181818181818181 -1.8333333333333333 -1.8461538461538463 -1.8571428571428572 -1.8666666666666667 -1.875 -1.8823529411764706; + 0.0 5.333333333333333 38.4 204.8 975.2380952380952 4388.571428571428 19114.666666666668 81555.91111111111 343170.32727272727 1.4298763636363635e6 5.915044102564103e6 2.433618145054945e7 9.970459794285715e7 4.0712710826666665e8 1.6579836988235295e9 6.737203601568627e9; + 0.0 0.0 -72.9 -1499.6571428571428 -21088.928571428572 -253067.14285714287 -2.79006525e6 -2.9219592436363637e7 -2.9584837341818184e8 -2.925972923916084e9 -2.8449861733434067e10 -2.7311867264096704e11 -2.596334381793193e12 -2.449162486354648e13 -2.2960898309574828e14 -2.141777720860745e15; + 0.0 0.0 0.0 1872.4571428571428 83220.31746031746 2.3967451428571427e6 5.6940854303030305e7 1.214738225131313e9 2.422001138107972e10 4.613335501158042e11 8.50611193356378e12 1.5311001480414803e14 2.7059443139242895e15 4.7143563158147624e16 8.120422362168969e17 1.3858854164768373e19; + 0.0 0.0 0.0 0.0 -77504.96031746031 -6.341314935064935e6 -3.236712831439394e8 -1.3278821872571873e10 -4.80171683784965e11 -1.6005722792832168e13 -5.043469942533053e14 -1.525755612867142e16 -4.4766093502525523e17 -1.2827711003647664e19 -3.607793719775906e20 -9.995618963881296e21; + 0.0 0.0 0.0 0.0 0.0 4.711650077922078e6 6.393346721118882e8 5.260811016234965e10 3.4090055385202573e12 1.9175656154176447e14 9.826959789128542e15 4.7169406987817e17 2.15773437679608e19 9.515608601670712e20 4.078117972144591e22 1.708360692331116e24; + 0.0 0.0 0.0 0.0 0.0 0.0 -3.952348909376457e8 -8.263044119869713e10 -1.0248756909925902e13 -9.846844874242534e14 -8.108603230469998e16 -6.022558357283822e18 -4.1560671463889437e20 -2.715297202307443e22 -1.7009177076954297e24 -1.0307396968759164e26; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.3741255122091064e10 1.3338509797230594e13 2.371290630618772e15 3.221627130440662e17 3.711314454267642e19 3.8230073464151254e21 3.6330154661690406e23 3.249405137443117e25 2.772825717284793e27; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -6.174193142616171e12 -2.6321560239574205e15 -6.449440297701669e17 -1.1940678036887662e20 -1.8574538823517637e22 -2.5642554640188345e24 -3.245385821648838e26 -3.845504022726303e28; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.082508822446903e15 6.237312738860727e17 2.041302350899874e20 4.99971155510259e22 1.0207744425001122e25 1.837393996500202e27 3.015210660923408e29; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.30788366240374e17 -1.748372388422729e20 -7.448430618928414e22 -2.355293074113417e25 -6.165659032955555e27 -1.4147218829987503e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.87960511179021e19 5.723442800021062e22 3.1065086459191243e25 1.2426034583676497e28 4.089940525827236e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.7640007344435631e22 -2.1641022343595773e25 -1.4694640618129094e28 -7.307458985088932e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.155890364150897e24 9.361198795139813e27 7.828458512415587e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.472332709198601e27 -4.593753679027078e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.1322357960170301e30] + extrapolation_weights_2 = T[-4.0 -28.8 -153.6 -731.4285714285714 -3291.4285714285716 -14336.0 -61166.933333333334 -257377.74545454545 -1.0724072727272727e6 -4.436283076923077e6 -1.8252136087912086e7 -7.477844845714286e7 -3.053453312e8 -1.2434877741176472e9 -5.052902701176471e9; + 0.0 64.8 1333.0285714285715 18745.714285714286 224948.57142857142 2.480058e6 2.5972971054545455e7 2.6297633192727274e8 2.6008648212587414e9 2.5288765985274727e10 2.4277215345863736e11 2.3078527838161714e12 2.1770333212041316e13 2.0409687386288734e14 1.9038024185428845e15; + 0.0 0.0 -1755.4285714285713 -78019.04761904762 -2.2469485714285714e6 -5.338205090909091e7 -1.138817086060606e9 -2.2706260669762238e10 -4.325002032335664e11 -7.974479937716044e12 -1.4354063887888878e14 -2.5368227943040215e15 -4.41970904607634e16 -7.612895964533408e17 -1.299267577947035e19; + 0.0 0.0 0.0 74404.76190476191 6.087662337662337e6 3.107244318181818e8 1.2747668997668997e10 4.609648164335664e11 1.536549388111888e13 4.8417311448317306e14 1.4647253883524564e16 4.29754497624245e17 1.2314602563501758e19 3.4634819709848696e20 9.595794205326044e21; + 0.0 0.0 0.0 0.0 -4.580770909090909e6 -6.215753756643356e8 -5.114677376895105e10 -3.314310940228028e12 -1.8642999038782656e14 -9.553988683874972e15 -4.585914568259986e17 -2.0977973107739664e19 -9.251286140513193e20 -3.964836917362797e22 -1.6609062286552515e24; + 0.0 0.0 0.0 0.0 0.0 3.8716887275524473e8 8.094410566402983e10 1.0039598605641701e13 9.64588885640085e14 7.943121531888978e16 5.899649003053539e18 4.071249449523863e20 2.659882973688924e22 1.6662051014159312e24 1.0097041928580407e26; + 0.0 0.0 0.0 0.0 0.0 0.0 -4.3057798010808395e10 -1.3130095581648865e13 -2.3342392145153535e15 -3.1712892065275264e17 -3.65332516591971e19 -3.763272856627389e21 -3.5762495995101494e23 -3.198633182170568e25 -2.729500315452218e27; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.097968535917206e12 2.59966027057523e15 6.369817577976957e17 1.1793262258654482e20 1.8345223529400134e22 2.532597989154405e24 3.205319330023544e26 3.7980286644210397e28; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0716837342224339e15 -6.174939611472119e17 -2.0208893273908753e20 -4.949714439551565e22 -1.010566698075111e25 -1.8190200565352e27 -2.9850585543141743e29; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.2888102437061885e17 1.733923029840723e20 7.38687334108603e22 2.3358278420959505e25 6.114703173179063e27 1.4030299666103307e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.838774520736112e19 -5.6836966694653606e22 -3.0849356692113527e25 -1.233974267684541e28 -4.061538161064547e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.753562860275258e22 2.1512968956947278e25 1.4607690081927147e28 7.2642195828103e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -6.124482760252167e24 -9.313437576797262e27 -7.788517397556324e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.461344563824385e27 4.57333699600918e30; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.1278129999388386e30] + extrapolation_scalars = T[-1.0, 0.25, -0.027777777777777776, 0.001736111111111111, + -6.944444444444444e-5, 1.9290123456790124e-6, + -3.936759889140842e-8, 6.151187326782565e-10, + -7.594058428126624e-12, 7.594058428126623e-14, + -6.276081345559193e-16, 4.358389823304995e-18, + -2.5789288895295828e-20, 1.3157800456783586e-22, + -5.8479113141260385e-25, 2.2843403570804838e-27] + extrapolation_scalars_2 = T[-0.25, 0.027777777777777776, -0.001736111111111111, + 6.944444444444444e-5, -1.9290123456790124e-6, + 3.936759889140842e-8, -6.151187326782565e-10, + 7.594058428126624e-12, -7.594058428126623e-14, + 6.276081345559193e-16, -4.358389823304995e-18, + 2.5789288895295828e-20, -1.3157800456783586e-22, + 5.8479113141260385e-25, -2.2843403570804838e-27] + elseif sequence == :romberg + subdividing_sequence = [ + 1, + 2, + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4096, + 8192, + 16384, + 32768 + ] + extrapolation_weights = T[-1.0 -1.3333333333333333 -1.4222222222222223 -1.4447971781305116 -1.4504630494172979 -1.451880901860521 -1.452235451531305 -1.4523240943593299 -1.4523462554044868 -1.4523517956869105 -1.4523531807588372 -1.4523535270269017 -1.4523536135939228 -1.4523536352356785 -1.4523536406461173 -1.452353641998727; + 0.0 5.333333333333333 28.444444444444443 121.36296296296297 493.15743680188126 1980.3655501377505 7929.205565360925 31724.5675171852 126906.01579724405 507631.8090356717 2.0305349820189304e6 8.122147673959353e6 3.248859844172289e7 1.2995440151277749e8 5.19817613796996e8 2.07927046293387e9; + 0.0 0.0 -91.02222222222223 -1941.8074074074075 -33140.17975308642 -538659.4296374682 -8.652349112921841e6 -1.3857291091506496e8 -2.2177080072599993e9 -3.54854939788296e10 -5.677765672441477e11 -9.084459730370057e12 -1.4535149430390788e14 -2.325624463334606e15 -3.720999363124215e16 -5.953599069714284e17; + 0.0 0.0 0.0 5917.889241622575 504993.2152851264 3.4474203496797964e7 2.241370436871182e9 1.4401024799097037e11 9.225665310201598e12 5.905867660750885e14 3.77998601491761e16 2.4192279640364677e18 1.5483118033241417e20 9.909204991428803e21 6.341892706539483e23 4.05881157410929e25; + 0.0 0.0 0.0 0.0 -1.5209207425057925e6 -5.1914094677531046e8 -1.4176008786611145e11 -3.6866623485688414e13 -9.474866810815984e15 -2.4279369357326935e18 -6.217036386624773e20 -1.591658462098873e23 -4.074707838080507e25 -1.0431291857706623e28 -2.670413262277438e30 -6.836259581321538e32; + 0.0 0.0 0.0 0.0 0.0 1.5589452477944808e9 2.1284799116553977e12 2.3248676581708025e15 2.4184528070774876e18 2.486207422190278e21 2.5483650380553205e24 2.6101630458060033e27 2.6729701040532997e30 2.7371631523457504e33 2.8028657600863993e36 2.870137275504677e39; + 0.0 0.0 0.0 0.0 0.0 0.0 -6.386999060908798e12 -3.4881530871309916e16 -1.5239973381214444e20 -6.341377114357268e23 -2.607614058456583e27 -1.069122783562139e31 -4.380196305334128e34 -1.7942379182565492e38 -7.349310654759861e41 -3.010289127531343e45; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0465098000284594e17 2.2861355418221703e21 3.995311436502874e25 6.649821721972122e29 1.0937793665786103e34 1.7937998718897874e38 2.93967940527153e42 4.816664723480877e46 7.891743901406595e50; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -6.858511278043386e21 -5.993058601571351e26 -4.189451610800854e31 -2.7891799442838834e36 -1.835085270122301e41 -1.2038170852496654e46 -7.891262227584487e50 -5.171933283225826e55; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.7979244390088466e27 6.284201388527134e32 1.7571900680469942e38 4.679485289631606e43 1.2315095760466199e49 3.231484209329825e54 8.473210620642257e59; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.8852622144842938e33 -2.635787615753444e39 -2.948078543974702e45 -3.140352413792322e51 -3.305811498811932e57 -3.46978305819599e63; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7.907364732522996e39 4.422118870277351e46 1.9784224923818425e53 8.429821331796452e59 3.549588914822444e66; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.3266357401568573e47 -2.9676339154575293e54 -5.310787755579382e61 -9.051452272305827e68; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8.902901879036164e54 7.966181752074431e62 5.702415016525277e70; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.389854534525231e63 -8.553622556652643e71; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.5660867693856473e72] + extrapolation_weights_2 = T[-4.0 -21.333333333333332 -91.02222222222223 -369.86807760141096 -1485.274162603313 -5946.904174020694 -23793.4256378889 -95179.51184793304 -380723.8567767538 -1.522901236514198e6 -6.091610755469514e6 -2.4366448831292167e7 -9.746580113458312e7 -3.89863210347747e8 -1.5594528472004025e9; + 0.0 85.33333333333333 1820.4444444444443 31068.91851851852 504993.2152851264 8.111577293364226e6 1.299121039828734e8 2.0791012568062494e9 3.3267650605152744e10 5.322905317913885e11 8.516680997221928e12 1.3626702590991364e14 2.1802729343761932e15 3.4884369029289516e16 5.5814991278571405e17; + 0.0 0.0 -5825.422222222222 -497102.6962962963 -3.3935544067160495e7 -2.2063490237950697e9 -1.4176008786611145e11 -9.081514289729697e12 -5.813588478551652e14 -3.7209237334345224e16 -2.3814275270983977e18 -1.524119431397202e20 -9.754373663437728e21 -6.242800632999802e23 -3.995392643263833e25; + 0.0 0.0 0.0 1.5149796458553793e6 5.1711305245196944e8 1.4120633752288446e11 3.6722613237697445e13 9.437855612336234e15 2.4184528070774876e18 6.19275108823952e20 1.585441046231299e23 4.058791010588005e25 1.0390544623887458e28 2.659981960471667e30 6.809555442332001e32; + 0.0 0.0 0.0 0.0 -1.5574228403259315e9 -2.1264013179916716e12 -2.32259727959837e15 -2.416091036758076e18 -2.4837794852545453e21 -2.545876400322845e24 -2.607614058456583e27 -2.6703597816860604e30 -2.7344901414547876e33 -2.8001285864925646e36 -2.867334407071567e39; + 0.0 0.0 0.0 0.0 0.0 6.385439734966193e12 3.4873014872562036e16 1.523625268458817e20 6.339828926585209e23 2.606977433930593e27 1.0688617672575583e31 4.379126921470521e34 1.7937998718897874e38 7.34751638946329e41 3.009554193662317e45; + 0.0 0.0 0.0 0.0 0.0 0.0 -1.0464459261392974e17 -2.2859960071821667e21 -3.995067582045079e25 -6.649415849064287e29 -1.093712607584068e34 -1.7936903870343255e38 -2.9394999814797044e42 -4.816370737596875e46 -7.891262227584487e50; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.858406625466511e21 5.99296715475431e26 4.1893876848424375e31 2.789137384775456e36 1.8350572689432526e41 1.2037987164586916e46 7.89114181647872e50 5.171854365786813e55; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.7979175804714053e27 -6.284177416201281e32 -1.7571833648988464e38 -4.679467438811868e43 -1.2315048782104076e49 -3.231471882195848e54 -8.47317829790887e59; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.8852604165581403e33 2.6357851020704912e39 2.948075732467912e45 3.140349418918881e51 3.305808346144411e57 3.4697797491530044e63; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -7.907362847260331e39 -4.4221178159620535e46 -1.978422020689163e53 -8.429819321970427e59 -3.549588068534498e66; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.3266356610832054e47 2.967633738572764e54 5.310787439031764e61 9.051451732797232e68; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -8.902901746372587e54 -7.966181633369073e62 -5.702414931552672e70; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.3898545256223295e63 8.553622524787915e71; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.5660867669957927e72] + extrapolation_scalars = T[-1.0, 0.25, -0.015625, 0.000244140625, + -9.5367431640625e-7, 9.313225746154785e-10, + -2.2737367544323206e-13, 1.3877787807814457e-17, + -2.117582368135751e-22, 8.077935669463161e-28, + -7.703719777548943e-34, 1.8367099231598242e-40, + -1.0947644252537633e-47, 1.6313261169996311e-55, + -6.077163357286271e-64, 5.659799424266695e-73] + extrapolation_scalars_2 = T[-0.25, 0.015625, -0.000244140625, 9.5367431640625e-7, + -9.313225746154785e-10, 2.2737367544323206e-13, + -1.3877787807814457e-17, 2.117582368135751e-22, + -8.077935669463161e-28, 7.703719777548943e-34, + -1.8367099231598242e-40, 1.0947644252537633e-47, + -1.6313261169996311e-55, 6.077163357286271e-64, + -5.659799424266695e-73] + else # sequence == :bulirsch + subdividing_sequence = [1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256] + extrapolation_weights = T[-1.0 -1.3333333333333333 -1.5 -1.6 -1.6457142857142857 -1.6718367346938776 -1.6835279006707577 -1.6901299708694666 -1.693069327340544 -1.6947243315705933 -1.6954602083971546 -1.695874240194077 -1.6960582742950205 -1.6961617997954963 -1.6962078123772122 -1.6962336948493626; + 0.0 5.333333333333333 38.4 204.8 921.6 3932.16 16178.029714285714 65739.29534693877 264796.0427960611 1.063337834600653e6 4.260748471165052e6 1.7059653702729277e7 6.82682451256418e7 2.7313966499109036e8 1.0926772230310967e9 4.3709756753076935e9; + 0.0 0.0 -72.9 -1499.6571428571428 -17995.885714285716 -188466.0031168831 -1.809273629922078e6 -1.687678722000189e7 -1.5430205458287445e8 -1.4010322512667694e9 -1.2658738458504457e10 -1.1417952888042778e11 -1.0286202719081353e12 -9.262670584090748e12 -8.338439277458397e13 -7.505626090600242e14; + 0.0 0.0 0.0 1872.4571428571428 53926.76571428571 1.1504376685714286e6 2.0707878034285713e7 3.5341445178514284e8 5.816192120806923e9 9.4536202090576e10 1.5231567106062036e12 2.4466077986835336e13 3.9213804300291206e14 6.280341834369219e15 1.0052910177255184e17 1.608858416060063e18; + 0.0 0.0 0.0 0.0 -57586.834285714285 -4.738573792653061e6 -2.2745154204734695e8 -9.528151870492496e9 -3.6588103182691187e11 -1.36516582563434e13 -4.992606448034158e14 -1.8132753113333124e16 -6.553390301665806e17 -2.3644157580681015e19 -8.52021725370699e20 -3.0689640436338757e22; + 0.0 0.0 0.0 0.0 0.0 5.09977563903525e6 5.874941536168609e8 5.013283444197213e10 3.609564079821993e12 2.464129078491814e14 1.6221009705271826e16 1.0546231071871968e18 6.7967878012847596e19 4.36700279749998e21 2.7997424543832918e23 1.7935867203368857e25; + 0.0 0.0 0.0 0.0 0.0 0.0 -5.70060368320064e8 -1.8763129837277533e11 -3.602520928757287e13 -6.036515068986755e15 -9.272087145963656e17 -1.3838308524243085e20 -2.0243468469749884e22 -2.9409072775127474e24 -4.251513956009017e26 -6.1356617753586065e28; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.9561237425512534e11 9.013818205676177e13 3.0767166142041348e16 8.860943848907908e18 2.419628400341786e21 6.371227239299971e23 1.6569236045823926e26 4.271386836316456e28 1.0977631674699422e31; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -8.554159840110055e13 -1.1262162440922038e17 -8.649340754628125e19 -5.797259955974749e22 -3.561836516950886e25 -2.126373139447408e28 -1.2442320541680835e31 -7.230324405099858e33; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.1651370210969312e17 2.1475805572858636e20 2.9321633208809658e23 3.377852145654872e26 3.689515303627295e29 3.8860083472261895e32 4.0424356038700874e35; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.0269737017532947e20 -1.0674622648776207e24 -3.279244077704051e27 -8.791712994944155e30 -2.1606513856374756e34 -5.159530537984771e37; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.1022516982215851e24 8.126681320648103e27 4.438251558583284e31 2.0451463181951773e35 8.935380607282608e38; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -7.659880204931148e27 -1.6135647078547534e32 -1.9827483130119208e36 -2.126313710861715e40; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.665360734159382e32 4.911348648324117e36 1.0729004833885644e41; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.62766803500927e36 -3.8992995301161535e41; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.023990816545532e41] + extrapolation_weights_2 = T[-4.0 -28.8 -153.6 -691.2 -2949.12 -12133.522285714285 -49304.47151020408 -198597.0320970458 -797503.3759504899 -3.1955613533737888e6 -1.279474027704696e7 -5.120118384423134e7 -2.0485474874331778e8 -8.195079172733225e8 -3.27823175648077e9; + 0.0 64.8 1333.0285714285715 15996.342857142858 167525.33610389612 1.6082432265974027e6 1.5001588640001683e7 1.3715738185144395e8 1.2453620011260173e9 1.1252211963115074e10 1.0149291456038025e11 9.143291305850092e11 8.233484963636221e12 7.411946024407464e13 6.671667636089105e14; + 0.0 0.0 -1755.4285714285713 -50556.34285714286 -1.0785353142857142e6 -1.941363565714286e7 -3.313260485485714e8 -5.45268011325649e9 -8.862768945991501e10 -1.427959416193316e12 -2.2936948112658125e13 -3.6762941531523006e14 -5.887820469721143e15 -9.424603291176736e16 -1.508304765056309e18; + 0.0 0.0 0.0 55987.2 4.606946742857143e6 2.2113344365714285e8 9.263480985201038e9 3.557176698317199e11 1.327244552700053e13 4.853922935588765e14 1.7629065526851648e16 6.37135168217509e17 2.29873754256621e19 8.283544552215128e20 2.9837150424218233e22; + 0.0 0.0 0.0 0.0 -5.020091644675325e6 -5.783145574665974e8 -4.9349508903816315e10 -3.5531646410747744e12 -2.4256270616403794e14 -1.5967556428626954e16 -1.0381446211373969e18 -6.690587991889685e19 -4.2987683787890434e21 -2.755996478533553e23 -1.765561927831622e25; + 0.0 0.0 0.0 0.0 0.0 5.661016157622857e8 1.863283032451866e11 3.577503422307583e13 5.994594825452124e15 9.207697651894463e17 1.3742209159491396e20 2.0102888827598844e22 2.920484310307798e24 4.221989553536732e26 6.093053013029727e28; + 0.0 0.0 0.0 0.0 0.0 0.0 -1.9484826341819125e11 -8.978607978310253e13 -3.0646981899298996e16 -8.826330786998111e18 -2.410176726902951e21 -6.346339632896457e23 -1.6504512467519928e26 -4.254701731487095e28 -1.0934750300970127e31; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8.539308868165419e13 1.1242610075573214e17 8.63432453804023e19 5.787195268551182e22 3.555652772997846e25 2.1226815194136454e28 1.2420719290740417e31 7.217771758563227e33; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.1639991919747662e17 -2.145483310647889e20 -2.929299880137918e23 -3.3745534619188814e26 -3.685912261338597e29 -3.882213417199601e32 -4.0384879128506835e35; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0260939388619086e20 1.0669989566029343e24 3.277820794684214e27 8.787897147290099e30 2.1597136029180146e34 5.157291158410993e37; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.1019825938030739e24 -8.124697267591304e27 -4.437168001073864e31 -2.0446470148948364e35 -8.933199117876534e38; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7.6590490547353e27 1.6133896248786405e32 1.9825331710508737e36 2.126082991058019e40; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.66525908860676e32 -4.911048883391968e36 -1.07283499873992e41; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.627542501479674e36 3.8991937548467816e41; + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.023929415318473e41] + extrapolation_scalars = T[-1.0, 0.25, -0.027777777777777776, 0.001736111111111111, + -4.8225308641975306e-5, 7.535204475308642e-7, + -5.232780885631001e-9, 2.0440550334496098e-11, + -3.548706655294462e-14, 3.465533843060998e-17, + -1.5041379527174468e-20, 3.672211798626579e-24, + -3.9846048162180767e-28, 2.4320097755237285e-32, + -6.597248740027475e-37, 1.0066602691692314e-41] + extrapolation_scalars_2 = T[-0.25, 0.027777777777777776, -0.001736111111111111, + 4.8225308641975306e-5, -7.535204475308642e-7, + 5.232780885631001e-9, -2.0440550334496098e-11, + 3.548706655294462e-14, -3.465533843060998e-17, + 1.5041379527174468e-20, -3.672211798626579e-24, + 3.9846048162180767e-28, -2.4320097755237285e-32, + 6.597248740027475e-37, -1.0066602691692314e-41] + end + extrapolation_coefficients(subdividing_sequence, + extrapolation_weights, extrapolation_scalars, + extrapolation_weights_2, extrapolation_scalars_2) +end + +function generate_sequence(T, alg::ImplicitEulerExtrapolation) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = BigInt.(1:(max_order + 1)) + elseif sequence == :romberg + subdividing_sequence = BigInt(2) .^ (0:max_order) + else # sequence == :bulirsch + subdividing_sequence = [n == 0 ? BigInt(1) : + (isodd(n) ? BigInt(2)^((n + 1) ÷ 2) : + 3 * BigInt(2)^(n ÷ 2 - 1)) for n in 0:max_order] + end + + subdividing_sequence +end + +function generate_sequence(T::Type{<:CompiledFloats}, alg::ImplicitEulerExtrapolation) + # Compute and return extrapolation_coefficients + + @unpack min_order, init_order, max_order, sequence = alg + + # Initialize subdividing_sequence: + if sequence == :harmonic + subdividing_sequence = Int.(1:(max_order + 1)) + elseif sequence == :romberg + subdividing_sequence = Int(2) .^ (0:max_order) + else # sequence == :bulirsch + subdividing_sequence = [n == 0 ? Int(1) : + (isodd(n) ? Int(2)^((n + 1) ÷ 2) : 3 * Int(2)^(n ÷ 2 - 1)) + for n in 0:max_order] + end + + subdividing_sequence +end + +@cache mutable struct ExtrapolationMidpointDeuflhardConstantCache{QType, + extrapolation_coefficients +} <: + OrdinaryDiffEqConstantCache + # Values that are mutated + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n + alg.min_order - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + + # Constant values + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n + alg.min_order - 1) +end + +function alg_cache(alg::ExtrapolationMidpointDeuflhard, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + + Q = fill(zero(QType), alg.max_order - alg.min_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + sequence_factor = alg.sequence_factor + + coefficients = create_extrapolation_coefficients(constvalue(uBottomEltypeNoUnits), alg) + stage_number = Vector{Int}(undef, alg.max_order - alg.min_order + 1) + for n in 1:length(stage_number) + s = zero(eltype(coefficients.subdividing_sequence)) + for i in 1:(alg.min_order + n) + s += coefficients.subdividing_sequence[i] + end + stage_number[n] = sequence_factor * Int(s) - alg.min_order - n + 3 - sequence_factor + end + + # Initialize cache + ExtrapolationMidpointDeuflhardConstantCache(Q, n_curr, n_old, coefficients, + stage_number) +end + +@cache mutable struct ExtrapolationMidpointDeuflhardCache{uType, uNoUnitsType, rateType, + QType, extrapolation_coefficients +} <: OrdinaryDiffEqMutableCache + # Values that are mutated + utilde::uType + u_temp1::uType + u_temp2::uType + u_temp3::Array{uType, 1} + u_temp4::Array{uType, 1} + tmp::uType # for get_tmp_cache() + T::Array{uType, 1} # Storage for the internal discretisations obtained by the explicit midpoint rule + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + fsalfirst::rateType + k::rateType + k_tmps::Array{rateType, 1} + + # Constant values + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n + alg.min_order - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # Stage_number[n] contains information for extrapolation order (n + alg.min_order - 1) +end + +function alg_cache(alg::ExtrapolationMidpointDeuflhard, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + utilde = zero(u) + u_temp1 = zero(u) + u_temp2 = zero(u) + u_temp3 = Array{typeof(u), 1}(undef, Threads.nthreads()) + u_temp4 = Array{typeof(u), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_temp3[i] = zero(u) + u_temp4[i] = zero(u) + end + + tmp = zero(u) + T = Vector{typeof(u)}(undef, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + T[i] = zero(u) + end + res = uEltypeNoUnits.(zero(u)) + + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + cc = alg_cache(alg::ExtrapolationMidpointDeuflhard, u, rate_prototype, uEltypeNoUnits, + uBottomEltypeNoUnits, tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, + calck, Val(false)) + # Initialize cache + ExtrapolationMidpointDeuflhardCache(utilde, u_temp1, u_temp2, u_temp3, u_temp4, tmp, T, + res, fsalfirst, k, k_tmps, cc.Q, cc.n_curr, + cc.n_old, cc.coefficients, cc.stage_number) +end + +@cache mutable struct ImplicitDeuflhardExtrapolationConstantCache{QType, + extrapolation_coefficients, + TF, UF} <: + OrdinaryDiffEqConstantCache + # Values that are mutated + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n + alg.min_order - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + + # Constant values + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n + alg.min_order - 1) + + tf::TF + uf::UF +end + +@cache mutable struct ImplicitDeuflhardExtrapolationCache{uType, QType, + extrapolation_coefficients, + rateType, JType, WType, F, JCType, + GCType, uNoUnitsType, TFType, + UFType} <: + OrdinaryDiffEqMutableCache + # Values that are mutated + utilde::uType + u_temp1::uType + u_temp2::uType + u_temp3::Array{uType, 1} + u_temp4::Array{uType, 1} + tmp::uType # for get_tmp_cache() + T::Array{uType, 1} # Storage for the internal discretisations obtained by the explicit midpoint rule + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + fsalfirst::rateType + k::rateType + k_tmps::Array{rateType, 1} + + # Constant values + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n + alg.min_order - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # Stage_number[n] contains information for extrapolation order (n + alg.min_order - 1) + + du1::rateType + du2::rateType + J::JType + W::WType + tf::TFType + uf::UFType + linsolve_tmps::Array{rateType, 1} + linsolve::Array{F, 1} + jac_config::JCType + grad_config::GCType + # Values to check overflow in T1 computation + diff1::Array{uType, 1} + diff2::Array{uType, 1} +end + +function alg_cache(alg::ImplicitDeuflhardExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + + Q = fill(zero(QType), alg.max_order - alg.min_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + + coefficients = create_extrapolation_coefficients(constvalue(uBottomEltypeNoUnits), alg) + stage_number = Vector{Int}(undef, alg.max_order - alg.min_order + 1) + + #== + Work calculation in Deuflhard is referenced from here: https://link.springer.com/article/10.1007/BF01418332 + A[1] := CJAC + CLR + (N[1] + 1)(CF + CS) + A[J] := A[J-1] - N[J]*(CF + CS) + CLR + CS J = 2, 3, 4..... + CF = 1; CJ = n*CF ; CS = CLR = 0 + n = Dimension of the jacobian (particularly gaussian decomposition of I - hJ (n,n) matrix) + Since we are using 4*N sequence and doing 4*N - 1 Computations + A[J] := A[J-1] - (4*N[J] - 1)*(CF + CS) + CLR + CS J = 2, 3, 4..... + ===# + for n in 1:length(stage_number) + s = zero(eltype(coefficients.subdividing_sequence)) + for i in 1:(alg.min_order + n) + s += coefficients.subdividing_sequence[i] + end + stage_number[n] = 4 * Int(s) - alg.min_order - n - 1 + end + + #Update stage_number by the jacobian size + jac_dim = rate_prototype isa Union{CompiledFloats, BigFloat} ? 1 : + sum(size(rate_prototype)) + stage_number = stage_number .+ jac_dim + + tf = TimeDerivativeWrapper(f, u, p) + uf = UDerivativeWrapper(f, t, p) + ImplicitDeuflhardExtrapolationConstantCache(Q, n_curr, n_old, coefficients, + stage_number, tf, uf) +end + +function alg_cache(alg::ImplicitDeuflhardExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + utilde = zero(u) + u_temp1 = zero(u) + u_temp2 = zero(u) + u_temp3 = Array{typeof(u), 1}(undef, Threads.nthreads()) + u_temp4 = Array{typeof(u), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_temp3[i] = zero(u) + u_temp4[i] = zero(u) + end + + tmp = zero(u) + T = Vector{typeof(u)}(undef, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + T[i] = zero(u) + end + res = uEltypeNoUnits.(zero(u)) + + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + cc = alg_cache(alg::ImplicitDeuflhardExtrapolation, u, rate_prototype, uEltypeNoUnits, + uBottomEltypeNoUnits, tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, + calck, Val(false)) + + du1 = zero(rate_prototype) + du2 = zero(rate_prototype) + + if DiffEqBase.has_jac(f) && !DiffEqBase.has_Wfact(f) && f.jac_prototype !== nothing + W_el = WOperator(f, dt, true) + J = nothing # is J = W.J better? + else + J = false .* _vec(rate_prototype) .* _vec(rate_prototype)' # uEltype? + W_el = zero(J) + end + + W = Array{typeof(W_el), 1}(undef, Threads.nthreads()) + W[1] = W_el + for i in 2:Threads.nthreads() + if W_el isa WOperator + W[i] = WOperator(f, dt, true) + else + W[i] = zero(W_el) + end + end + tf = TimeGradientWrapper(f, uprev, p) + uf = UJacobianWrapper(f, t, p) + linsolve_tmp = zero(rate_prototype) + linsolve_tmps = Array{typeof(linsolve_tmp), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + linsolve_tmps[i] = zero(rate_prototype) + end + + linprob = LinearProblem(W[1], _vec(linsolve_tmps[1]); u0 = _vec(k_tmps[1])) + linsolve1 = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + + linsolve = Array{typeof(linsolve1), 1}(undef, Threads.nthreads()) + linsolve[1] = linsolve1 + for i in 2:Threads.nthreads() + linprob = LinearProblem(W[i], _vec(linsolve_tmps[i]); u0 = _vec(k_tmps[i])) + linsolve[i] = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + end + grad_config = build_grad_config(alg, f, tf, du1, t) + jac_config = build_jac_config(alg, f, uf, du1, uprev, u, du1, du2) + + diff1 = Array{typeof(u), 1}(undef, Threads.nthreads()) + diff2 = Array{typeof(u), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + diff1[i] = zero(u) + diff2[i] = zero(u) + end + + ImplicitDeuflhardExtrapolationCache(utilde, u_temp1, u_temp2, u_temp3, u_temp4, tmp, T, + res, fsalfirst, k, k_tmps, cc.Q, cc.n_curr, + cc.n_old, cc.coefficients, cc.stage_number, + du1, du2, J, W, tf, uf, linsolve_tmps, linsolve, + jac_config, grad_config, diff1, diff2) +end + +@cache mutable struct ExtrapolationMidpointHairerWannerConstantCache{QType, + extrapolation_coefficients +} <: + OrdinaryDiffEqConstantCache + # Values that are mutated + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + + # Constant values + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ExtrapolationMidpointHairerWanner, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + + Q = fill(zero(QType), alg.max_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + sequence_factor = alg.sequence_factor + + coefficients = create_extrapolation_coefficients(constvalue(uBottomEltypeNoUnits), alg) + stage_number = Vector{Int}(undef, alg.max_order + 1) + for n in 1:length(stage_number) + s = zero(eltype(coefficients.subdividing_sequence)) + for i in 1:n + s += coefficients.subdividing_sequence[i] + end + stage_number[n] = sequence_factor * Int(s) - n + 3 - sequence_factor + end + sigma = 9 // 10 + + work = fill(zero(eltype(Q)), alg.max_order + 1) + dt_new = fill(zero(eltype(Q)), alg.max_order + 1) + # Initialize the constant cache + ExtrapolationMidpointHairerWannerConstantCache(Q, n_curr, n_old, coefficients, + stage_number, sigma, work, dt_new) +end + +@cache mutable struct ExtrapolationMidpointHairerWannerCache{uType, uNoUnitsType, rateType, + QType, + extrapolation_coefficients} <: + OrdinaryDiffEqMutableCache + # Values that are mutated + utilde::uType + u_temp1::uType + u_temp2::uType + u_temp3::Array{uType, 1} + u_temp4::Array{uType, 1} + tmp::uType # for get_tmp_cache() + T::Array{uType, 1} # Storage for the internal discretisations obtained by the explicit midpoint rule + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + fsalfirst::rateType + k::rateType + k_tmps::Array{rateType, 1} + + # Constant values + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ExtrapolationMidpointHairerWanner, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + utilde = zero(u) + u_temp1 = zero(u) + u_temp2 = zero(u) + u_temp3 = Array{typeof(u), 1}(undef, Threads.nthreads()) + u_temp4 = Array{typeof(u), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_temp3[i] = zero(u) + u_temp4[i] = zero(u) + end + tmp = zero(u) + T = Vector{typeof(u)}(undef, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + T[i] = zero(u) + end + res = uEltypeNoUnits.(zero(u)) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + cc = alg_cache(alg, u, rate_prototype, uEltypeNoUnits, uBottomEltypeNoUnits, + tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, calck, Val(false)) + + # Initialize the cache + ExtrapolationMidpointHairerWannerCache(utilde, u_temp1, u_temp2, u_temp3, u_temp4, tmp, + T, res, fsalfirst, k, k_tmps, + cc.Q, cc.n_curr, cc.n_old, cc.coefficients, + cc.stage_number, cc.sigma, cc.work, cc.dt_new) +end + +@cache mutable struct ImplicitHairerWannerExtrapolationConstantCache{QType, + extrapolation_coefficients, + TF, UF} <: + OrdinaryDiffEqConstantCache + # Values that are mutated + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + + # Constant values + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + tf::TF + uf::UF + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ImplicitHairerWannerExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + + Q = fill(zero(QType), alg.max_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + + coefficients = create_extrapolation_coefficients(constvalue(uBottomEltypeNoUnits), alg) + #==Work Calculation (A[J] denotes Jth order work) + Default values are used from https://github.com/luchr/ODEInterface.jl/blob/master/src/Seulex.jl#L393-L399 + + ║ WKFCN │ estimated works (complexity) │ 1.0 ║ + ║ WKJAC │ for a call to │ 5.0 ║ + ║ WKDEC │ WKFCN: right-hand side f │ 1.0 ║ + ║ WKSOL │ WKJAC: JACOBIMATRIX │ 1.0 ║ + ║ WKROW │ WKDEC: LU-decomposition │ 2.0 ║ + ║ │ WKSOL: Forward- and Backward subst. │ ║ + ║ | WKROW: Tot. work in one iteration | ║ + ╚════════════╧═════════════════════════════════════╧═════════╝ + WKROW = WKFCN + WKSOL + A[1] = WKJAC + (N[1] + 1)* WKROw + WKDEC + A[J] = A[J - 1] + N[J]* WKROW + WKDEC + + Since we are using 4*N Sequence and only performing 4*N - 1 computations, The modified Work Equation becomes: + A[J] = A[J - 1] + (4*N[J] - 1)* WKROW + WKDEC + ==# + stage_number = Vector{Int}(undef, alg.max_order + 1) + for n in 1:length(stage_number) + s = zero(eltype(coefficients.subdividing_sequence)) + for i in 1:n + s += coefficients.subdividing_sequence[i] + end + stage_number[n] = 8 * Int(s) - n + 3 + end + sigma = 9 // 10 + + # Initialize the constant cache + tf = TimeDerivativeWrapper(f, u, p) + uf = UDerivativeWrapper(f, t, p) + work = fill(zero(eltype(Q)), alg.max_order + 1) + dt_new = fill(zero(eltype(Q)), alg.max_order + 1) + ImplicitHairerWannerExtrapolationConstantCache(Q, n_curr, n_old, coefficients, + stage_number, sigma, tf, uf, work, + dt_new) +end + +@cache mutable struct ImplicitHairerWannerExtrapolationCache{uType, uNoUnitsType, rateType, + QType, + extrapolation_coefficients, + JType, WType, F, JCType, + GCType, TFType, UFType} <: + OrdinaryDiffEqMutableCache + # Values that are mutated + utilde::uType + u_temp1::uType + u_temp2::uType + u_temp3::Array{uType, 1} + u_temp4::Array{uType, 1} + tmp::uType # for get_tmp_cache() + T::Array{uType, 1} # Storage for the internal discretisations obtained by the explicit midpoint rule + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + fsalfirst::rateType + k::rateType + k_tmps::Array{rateType, 1} + + # Constant values + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + du1::rateType + du2::rateType + J::JType + W::WType + tf::TFType + uf::UFType + linsolve_tmps::Array{rateType, 1} + linsolve::Array{F, 1} + jac_config::JCType + grad_config::GCType + # Values to check overflow in T1 computation + diff1::Array{uType, 1} + diff2::Array{uType, 1} + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ImplicitHairerWannerExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + utilde = zero(u) + u_temp1 = zero(u) + u_temp2 = zero(u) + u_temp3 = Array{typeof(u), 1}(undef, Threads.nthreads()) + u_temp4 = Array{typeof(u), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_temp3[i] = zero(u) + u_temp4[i] = zero(u) + end + tmp = zero(u) + T = Vector{typeof(u)}(undef, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + T[i] = zero(u) + end + res = uEltypeNoUnits.(zero(u)) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + cc = alg_cache(alg, u, rate_prototype, uEltypeNoUnits, uBottomEltypeNoUnits, + tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, calck, Val(false)) + + du1 = zero(rate_prototype) + du2 = zero(rate_prototype) + + if DiffEqBase.has_jac(f) && !DiffEqBase.has_Wfact(f) && f.jac_prototype !== nothing + W_el = WOperator(f, dt, true) + J = nothing # is J = W.J better? + else + J = false .* _vec(rate_prototype) .* _vec(rate_prototype)' # uEltype? + W_el = zero(J) + end + + W = Array{typeof(W_el), 1}(undef, Threads.nthreads()) + W[1] = W_el + for i in 2:Threads.nthreads() + if W_el isa WOperator + W[i] = WOperator(f, dt, true) + else + W[i] = zero(W_el) + end + end + + tf = TimeGradientWrapper(f, uprev, p) + uf = UJacobianWrapper(f, t, p) + linsolve_tmp = zero(rate_prototype) + linsolve_tmps = Array{typeof(linsolve_tmp), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + linsolve_tmps[i] = zero(rate_prototype) + end + + linprob = LinearProblem(W[1], _vec(linsolve_tmps[1]); u0 = _vec(k_tmps[1])) + linsolve1 = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + + linsolve = Array{typeof(linsolve1), 1}(undef, Threads.nthreads()) + linsolve[1] = linsolve1 + for i in 2:Threads.nthreads() + linprob = LinearProblem(W[i], _vec(linsolve_tmps[i]); u0 = _vec(k_tmps[i])) + linsolve[i] = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + end + grad_config = build_grad_config(alg, f, tf, du1, t) + jac_config = build_jac_config(alg, f, uf, du1, uprev, u, du1, du2) + + diff1 = Array{typeof(u), 1}(undef, Threads.nthreads()) + diff2 = Array{typeof(u), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + diff1[i] = zero(u) + diff2[i] = zero(u) + end + + # Initialize the cache + ImplicitHairerWannerExtrapolationCache(utilde, u_temp1, u_temp2, u_temp3, u_temp4, tmp, + T, res, fsalfirst, k, k_tmps, + cc.Q, cc.n_curr, cc.n_old, cc.coefficients, + cc.stage_number, cc.sigma, du1, du2, J, W, tf, + uf, linsolve_tmps, + linsolve, jac_config, grad_config, diff1, diff2, + cc.work, cc.dt_new) +end + +@cache mutable struct ImplicitEulerBarycentricExtrapolationConstantCache{QType, + extrapolation_coefficients, + TF, UF} <: + OrdinaryDiffEqConstantCache + # Values that are mutated + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + + # Constant values + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + tf::TF + uf::UF + + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ImplicitEulerBarycentricExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + QType = tTypeNoUnits <: Integer ? typeof(qmin_default(alg)) : tTypeNoUnits # Cf. DiffEqBase.__init in solve.jl + + Q = fill(zero(QType), alg.max_order + 1) + n_curr = alg.init_order + n_old = alg.init_order + sequence_factor = alg.sequence_factor + + coefficients = create_extrapolation_coefficients(constvalue(uBottomEltypeNoUnits), alg) + + stage_number = Vector{Int}(undef, alg.max_order + 1) + for n in 1:length(stage_number) + s = zero(eltype(coefficients.subdividing_sequence)) + for i in 1:n + s += coefficients.subdividing_sequence[i] + end + stage_number[n] = 2 * sequence_factor * Int(s) - n + 7 + end + sigma = 9 // 10 + + work = fill(zero(eltype(Q)), alg.max_order + 1) + dt_new = fill(zero(eltype(Q)), alg.max_order + 1) + # Initialize the constant cache + tf = TimeDerivativeWrapper(f, u, p) + uf = UDerivativeWrapper(f, t, p) + ImplicitEulerBarycentricExtrapolationConstantCache(Q, n_curr, n_old, coefficients, + stage_number, sigma, tf, uf, work, + dt_new) +end + +@cache mutable struct ImplicitEulerBarycentricExtrapolationCache{uType, uNoUnitsType, + rateType, QType, + extrapolation_coefficients, + JType, WType, F, JCType, + GCType, TFType, UFType} <: + OrdinaryDiffEqMutableCache + # Values that are mutated + utilde::uType + u_temp1::uType + u_temp2::uType + u_temp3::Array{uType, 1} + u_temp4::Array{uType, 1} + tmp::uType # for get_tmp_cache() + T::Array{uType, 1} # Storage for the internal discretisations obtained by the explicit midpoint rule + res::uNoUnitsType # Storage for the scaled residual of u and utilde + + fsalfirst::rateType + k::rateType + k_tmps::Array{rateType, 1} + + # Constant values + Q::Vector{QType} # Storage for stepsize scaling factors. Q[n] contains information for extrapolation order (n - 1) + n_curr::Int # Storage for the current extrapolation order + n_old::Int # Storage for the extrapolation order n_curr before perfom_step! changes the latter + coefficients::extrapolation_coefficients + stage_number::Vector{Int} # stage_number[n] contains information for extrapolation order (n - 1) + sigma::Rational{Int} # Parameter for order selection + + du1::rateType + du2::rateType + J::JType + W::WType + tf::TFType + uf::UFType + linsolve_tmps::Array{rateType, 1} + linsolve::Array{F, 1} + jac_config::JCType + grad_config::GCType + # Values to check overflow in T1 computation + diff1::Array{uType, 1} + diff2::Array{uType, 1} + #Stepsizing caches + work::Array{QType, 1} + dt_new::Array{QType, 1} +end + +function alg_cache(alg::ImplicitEulerBarycentricExtrapolation, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + # Initialize cache's members + utilde = zero(u) + u_temp1 = zero(u) + u_temp2 = zero(u) + u_temp3 = Array{typeof(u), 1}(undef, Threads.nthreads()) + u_temp4 = Array{typeof(u), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + u_temp3[i] = zero(u) + u_temp4[i] = zero(u) + end + tmp = zero(u) + T = Vector{typeof(u)}(undef, alg.max_order + 1) + for i in 1:(alg.max_order + 1) + T[i] = zero(u) + end + res = uEltypeNoUnits.(zero(u)) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + k_tmps = Array{typeof(k), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + k_tmps[i] = zero(rate_prototype) + end + + cc = alg_cache(alg, u, rate_prototype, uEltypeNoUnits, uBottomEltypeNoUnits, + tTypeNoUnits, uprev, uprev2, f, t, dt, reltol, p, calck, Val(false)) + + du1 = zero(rate_prototype) + du2 = zero(rate_prototype) + + if DiffEqBase.has_jac(f) && !DiffEqBase.has_Wfact(f) && f.jac_prototype !== nothing + W_el = WOperator(f, dt, true) + J = nothing # is J = W.J better? + else + J = false .* _vec(rate_prototype) .* _vec(rate_prototype)' # uEltype? + W_el = zero(J) + end + + W = Array{typeof(W_el), 1}(undef, Threads.nthreads()) + W[1] = W_el + for i in 2:Threads.nthreads() + if W_el isa WOperator + W[i] = WOperator(f, dt, true) + else + W[i] = zero(W_el) + end + end + + tf = TimeGradientWrapper(f, uprev, p) + uf = UJacobianWrapper(f, t, p) + linsolve_tmp = zero(rate_prototype) + linsolve_tmps = Array{typeof(linsolve_tmp), 1}(undef, Threads.nthreads()) + + for i in 1:Threads.nthreads() + linsolve_tmps[i] = zero(rate_prototype) + end + + linprob = LinearProblem(W[1], _vec(linsolve_tmps[1]); u0 = _vec(k_tmps[1])) + linsolve1 = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + + linsolve = Array{typeof(linsolve1), 1}(undef, Threads.nthreads()) + linsolve[1] = linsolve1 + for i in 2:Threads.nthreads() + linprob = LinearProblem(W[i], _vec(linsolve_tmps[i]); u0 = _vec(k_tmps[i])) + linsolve[i] = init(linprob, alg.linsolve, alias_A = true, alias_b = true) + #Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))), + #Pr = Diagonal(_vec(weight))) + end + grad_config = build_grad_config(alg, f, tf, du1, t) + jac_config = build_jac_config(alg, f, uf, du1, uprev, u, du1, du2) + + diff1 = Array{typeof(u), 1}(undef, Threads.nthreads()) + diff2 = Array{typeof(u), 1}(undef, Threads.nthreads()) + for i in 1:Threads.nthreads() + diff1[i] = zero(u) + diff2[i] = zero(u) + end + + # Initialize the cache + ImplicitEulerBarycentricExtrapolationCache(utilde, u_temp1, u_temp2, u_temp3, u_temp4, + tmp, T, res, fsalfirst, k, k_tmps, + cc.Q, cc.n_curr, cc.n_old, cc.coefficients, + cc.stage_number, cc.sigma, du1, du2, J, W, + tf, uf, linsolve_tmps, + linsolve, jac_config, grad_config, diff1, + diff2, cc.work, cc.dt_new) +end diff --git a/src/caches/feagin_caches.jl b/src/caches/feagin_caches.jl new file mode 100644 index 0000000000..47defa81a2 --- /dev/null +++ b/src/caches/feagin_caches.jl @@ -0,0 +1,248 @@ +@cache struct Feagin10Cache{uType, uNoUnitsType, rateType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + k11::rateType + k12::rateType + k13::rateType + k14::rateType + k15::rateType + k16::rateType + k17::rateType + tmp::uType + atmp::uNoUnitsType + k::rateType + tab::TabType +end + +function alg_cache(alg::Feagin10, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Feagin10ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = zero(rate_prototype) + k4 = zero(rate_prototype) + k5 = zero(rate_prototype) + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = zero(rate_prototype) + k9 = zero(rate_prototype) + k10 = zero(rate_prototype) + k11 = zero(rate_prototype) + k12 = zero(rate_prototype) + k13 = zero(rate_prototype) + k14 = zero(rate_prototype) + k15 = zero(rate_prototype) + k16 = zero(rate_prototype) + k17 = zero(rate_prototype) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + + Feagin10Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, + k15, k16, k17, tmp, atmp, k, tab) +end + +function alg_cache(alg::Feagin10, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Feagin10ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Feagin12Cache{uType, uNoUnitsType, rateType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + k11::rateType + k12::rateType + k13::rateType + k14::rateType + k15::rateType + k16::rateType + k17::rateType + k18::rateType + k19::rateType + k20::rateType + k21::rateType + k22::rateType + k23::rateType + k24::rateType + k25::rateType + tmp::uType + atmp::uNoUnitsType + k::rateType + tab::TabType +end + +function alg_cache(alg::Feagin12, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Feagin12ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = zero(rate_prototype) + k4 = zero(rate_prototype) + k5 = zero(rate_prototype) + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = zero(rate_prototype) + k9 = zero(rate_prototype) + k10 = zero(rate_prototype) + k11 = zero(rate_prototype) + k12 = zero(rate_prototype) + k13 = zero(rate_prototype) + k14 = zero(rate_prototype) + k15 = zero(rate_prototype) + k16 = zero(rate_prototype) + k17 = zero(rate_prototype) + k18 = zero(rate_prototype) + k19 = zero(rate_prototype) + k20 = zero(rate_prototype) + k21 = zero(rate_prototype) + k22 = zero(rate_prototype) + k23 = zero(rate_prototype) + k24 = zero(rate_prototype) + k25 = zero(rate_prototype) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + + Feagin12Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, + k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, tmp, atmp, k, tab) +end + +function alg_cache(alg::Feagin12, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Feagin12ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Feagin14Cache{uType, uNoUnitsType, rateType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + k11::rateType + k12::rateType + k13::rateType + k14::rateType + k15::rateType + k16::rateType + k17::rateType + k18::rateType + k19::rateType + k20::rateType + k21::rateType + k22::rateType + k23::rateType + k24::rateType + k25::rateType + k26::rateType + k27::rateType + k28::rateType + k29::rateType + k30::rateType + k31::rateType + k32::rateType + k33::rateType + k34::rateType + k35::rateType + tmp::uType + atmp::uNoUnitsType + k::rateType + tab::TabType +end + +function alg_cache(alg::Feagin14, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Feagin14ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = zero(rate_prototype) + k4 = zero(rate_prototype) + k5 = zero(rate_prototype) + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = zero(rate_prototype) + k9 = zero(rate_prototype) + k10 = zero(rate_prototype) + k11 = zero(rate_prototype) + k12 = zero(rate_prototype) + k13 = zero(rate_prototype) + k14 = zero(rate_prototype) + k15 = zero(rate_prototype) + k16 = zero(rate_prototype) + k17 = zero(rate_prototype) + k18 = zero(rate_prototype) + k19 = zero(rate_prototype) + k20 = zero(rate_prototype) + k21 = zero(rate_prototype) + k22 = zero(rate_prototype) + k23 = zero(rate_prototype) + k24 = zero(rate_prototype) + k25 = zero(rate_prototype) + k26 = zero(rate_prototype) + k27 = zero(rate_prototype) + k28 = zero(rate_prototype) + k29 = zero(rate_prototype) + k30 = zero(rate_prototype) + k31 = zero(rate_prototype) + k32 = zero(rate_prototype) + k33 = zero(rate_prototype) + k34 = zero(rate_prototype) + k35 = zero(rate_prototype) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + + Feagin14Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, + k15, k16, + k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, + k31, k32, k33, k34, k35, tmp, atmp, k, tab) +end + +function alg_cache(alg::Feagin14, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Feagin14ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end diff --git a/src/caches/firk_caches.jl b/src/caches/firk_caches.jl index fb1489270b..3f6bfee39f 100644 --- a/src/caches/firk_caches.jl +++ b/src/caches/firk_caches.jl @@ -274,7 +274,7 @@ function alg_cache(alg::RadauIIA5, u, rate_prototype, ::Type{uEltypeNoUnits}, Convergence, alg.step_limiter!) end -mutable struct RadauIIA7ConstantCache{F, Tab, Tol, Dt, U, JType} <: +mutable struct RadauIIA9ConstantCache{F, Tab, Tol, Dt, U, JType} <: OrdinaryDiffEqConstantCache uf::F tab::Tab @@ -291,22 +291,22 @@ mutable struct RadauIIA7ConstantCache{F, Tab, Tol, Dt, U, JType} <: J::JType end -function alg_cache(alg::RadauIIA7, u, rate_prototype, ::Type{uEltypeNoUnits}, +function alg_cache(alg::RadauIIA9, u, rate_prototype, ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} uf = UDerivativeWrapper(f, t, p) uToltype = constvalue(uBottomEltypeNoUnits) - tab = RadauIIA7Tableau(uToltype, constvalue(tTypeNoUnits)) + tab = RadauIIA9Tableau(uToltype, constvalue(tTypeNoUnits)) κ = alg.κ !== nothing ? convert(uToltype, alg.κ) : convert(uToltype, 1 // 100) J = false .* _vec(rate_prototype) .* _vec(rate_prototype)' - RadauIIA7ConstantCache(uf, tab, κ, one(uToltype), 10000, u, u, u, u, dt, dt, + RadauIIA9ConstantCache(uf, tab, κ, one(uToltype), 10000, u, u, u, u, dt, dt, Convergence, J) end -mutable struct RadauIIA7Cache{uType, cuType, uNoUnitsType, rateType, JType, W1Type, W2Type, +mutable struct RadauIIA9Cache{uType, cuType, uNoUnitsType, rateType, JType, W1Type, W2Type, UF, JC, F1, F2, Tab, Tol, Dt, rTol, aTol, StepLimiter} <: OrdinaryDiffEqMutableCache u::uType @@ -370,15 +370,15 @@ mutable struct RadauIIA7Cache{uType, cuType, uNoUnitsType, rateType, JType, W1Ty status::NLStatus step_limiter!::StepLimiter end -TruncatedStacktraces.@truncate_stacktrace RadauIIA7Cache 1 +TruncatedStacktraces.@truncate_stacktrace RadauIIA9Cache 1 -function alg_cache(alg::RadauIIA7, u, rate_prototype, ::Type{uEltypeNoUnits}, +function alg_cache(alg::RadauIIA9, u, rate_prototype, ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} uf = UJacobianWrapper(f, t, p) uToltype = constvalue(uBottomEltypeNoUnits) - tab = RadauIIA7Tableau(uToltype, constvalue(tTypeNoUnits)) + tab = RadauIIA9Tableau(uToltype, constvalue(tTypeNoUnits)) κ = alg.κ !== nothing ? convert(uToltype, alg.κ) : convert(uToltype, 1 // 100) @@ -459,7 +459,7 @@ function alg_cache(alg::RadauIIA7, u, rate_prototype, ::Type{uEltypeNoUnits}, rtol = reltol isa Number ? reltol : zero(reltol) atol = reltol isa Number ? reltol : zero(reltol) - RadauIIA7Cache(u, uprev, + RadauIIA9Cache(u, uprev, z1, z2, z3, z4, z5, w1, w2, w3, w4, w5, dw1, ubuff, dw23, dw45, cubuff1, cubuff2, cont1, cont2, cont3, cont4, du1, fsalfirst, k, k2, k3, k4, k5, fw1, fw2, fw3, fw4, fw5, diff --git a/src/caches/low_storage_rk_caches.jl b/src/caches/low_storage_rk_caches.jl new file mode 100644 index 0000000000..a903e155ad --- /dev/null +++ b/src/caches/low_storage_rk_caches.jl @@ -0,0 +1,3839 @@ + +# 2N low storage methods introduced by Williamson +@cache struct LowStorageRK2NCache{uType, rateType, TabType, StageLimiter, StepLimiter, + Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType # tmp acts as second register and fsal both + tab::TabType + williamson_condition::Bool + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK2NConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + A2end::SVector{N, T} # A1 is always zero + B1::T + B2end::SVector{N, T} + c2end::SVector{N, T2} # c1 is always zero +end + +function ORK256ConstantCache(T, T2) + A2 = convert(T, -1.0) + A3 = convert(T, -1.55798) + A4 = convert(T, -1.0) + A5 = convert(T, -0.45031) + A2end = SVector(A2, A3, A4, A5) + + B1 = convert(T, 0.2) + B2 = convert(T, 0.83204) + B3 = convert(T, 0.6) + B4 = convert(T, 0.35394) + B5 = convert(T, 0.2) + B2end = SVector(B2, B3, B4, B5) + + c2 = convert(T2, 0.2) + c3 = convert(T2, 0.2) + c4 = convert(T2, 0.8) + c5 = convert(T2, 0.8) + c2end = SVector(c2, c3, c4, c5) + + LowStorageRK2NConstantCache{4, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::ORK256, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = ORK256ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ORK256, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ORK256ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CarpenterKennedy2N54ConstantCache(T, T2) + A2 = convert(T, -567301805773 // 1357537059087) + A3 = convert(T, -2404267990393 // 2016746695238) + A4 = convert(T, -3550918686646 // 2091501179385) + A5 = convert(T, -1275806237668 // 842570457699) + A2end = SVector(A2, A3, A4, A5) + + B1 = convert(T, 1432997174477 // 9575080441755) + B2 = convert(T, 5161836677717 // 13612068292357) + B3 = convert(T, 1720146321549 // 2090206949498) + B4 = convert(T, 3134564353537 // 4481467310338) + B5 = convert(T, 2277821191437 // 14882151754819) + B2end = SVector(B2, B3, B4, B5) + + c2 = convert(T2, 1432997174477 // 9575080441755) + c3 = convert(T2, 2526269341429 // 6820363962896) + c4 = convert(T2, 2006345519317 // 3224310063776) + c5 = convert(T2, 2802321613138 // 2924317926251) + c2end = SVector(c2, c3, c4, c5) + + LowStorageRK2NConstantCache{4, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::CarpenterKennedy2N54, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = CarpenterKennedy2N54ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CarpenterKennedy2N54, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CarpenterKennedy2N54ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function SHLDDRK64ConstantCache(T, T2) + #TODO: Solve the order conditions with more accuracy + A2 = convert(T, -0.4919575) + A3 = convert(T, -0.8946264) + A4 = convert(T, -1.5526678) + A5 = convert(T, -3.4077973) + A6 = convert(T, -1.0742640) + A2end = SVector(A2, A3, A4, A5, A6) + + B1 = convert(T, 0.1453095) + B2 = convert(T, 0.4653797) + B3 = convert(T, 0.4675397) + B4 = convert(T, 0.7795279) + B5 = convert(T, 0.3574327) + B6 = convert(T, 0.15) + B2end = SVector(B2, B3, B4, B5, B6) + + c2 = convert(T2, 0.1453095) + c3 = convert(T2, 0.3817422) + c4 = convert(T2, 0.6367813) + c5 = convert(T2, 0.7560744) + c6 = convert(T2, 0.9271047) + c2end = SVector(c2, c3, c4, c5, c6) + + LowStorageRK2NConstantCache{5, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::SHLDDRK64, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = SHLDDRK64ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SHLDDRK64, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SHLDDRK64ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function DGLDDRK73_CConstantCache(T, T2) + A2 = convert(T, -0.8083163874983830) + A3 = convert(T, -1.503407858773331) + A4 = convert(T, -1.053064525050744) + A5 = convert(T, -1.463149119280508) + A6 = convert(T, -0.6592881281087830) + A7 = convert(T, -1.667891931891068) + A2end = SVector(A2, A3, A4, A5, A6, A7) + + B1 = convert(T, 0.01197052673097840) + B2 = convert(T, 0.8886897793820711) + B3 = convert(T, 0.4578382089261419) + B4 = convert(T, 0.5790045253338471) + B5 = convert(T, 0.3160214638138484) + B6 = convert(T, 0.2483525368264122) + B7 = convert(T, 0.06771230959408840) + B2end = SVector(B2, B3, B4, B5, B6, B7) + + c2 = convert(T2, 0.01197052673097840) + c3 = convert(T2, 0.1823177940361990) + c4 = convert(T2, 0.5082168062551849) + c5 = convert(T2, 0.6532031220148590) + c6 = convert(T2, 0.8534401385678250) + c7 = convert(T2, 0.9980466084623790) + c2end = SVector(c2, c3, c4, c5, c6, c7) + + LowStorageRK2NConstantCache{6, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::DGLDDRK73_C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = DGLDDRK73_CConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::DGLDDRK73_C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DGLDDRK73_CConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function DGLDDRK84_CConstantCache(T, T2) + A2 = convert(T, -0.7212962482279240) + A3 = convert(T, -0.01077336571612980) + A4 = convert(T, -0.5162584698930970) + A5 = convert(T, -1.730100286632201) + A6 = convert(T, -5.200129304403076) + A7 = convert(T, 0.7837058945416420) + A8 = convert(T, -0.5445836094332190) + A2end = SVector(A2, A3, A4, A5, A6, A7, A8) + + B1 = convert(T, 0.2165936736758085) + B2 = convert(T, 0.1773950826411583) + B3 = convert(T, 0.01802538611623290) + B4 = convert(T, 0.08473476372541490) + B5 = convert(T, 0.8129106974622483) + B6 = convert(T, 1.903416030422760) + B7 = convert(T, 0.1314841743399048) + B8 = convert(T, 0.2082583170674149) + B2end = SVector(B2, B3, B4, B5, B6, B7, B8) + + c2 = convert(T2, 0.2165936736758085) + c3 = convert(T2, 0.2660343487538170) + c4 = convert(T2, 0.2840056122522720) + c5 = convert(T2, 0.3251266843788570) + c6 = convert(T2, 0.4555149599187530) + c7 = convert(T2, 0.7713219317101170) + c8 = convert(T2, 0.9199028964538660) + c2end = SVector(c2, c3, c4, c5, c6, c7, c8) + + LowStorageRK2NConstantCache{7, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::DGLDDRK84_C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = DGLDDRK84_CConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::DGLDDRK84_C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DGLDDRK84_CConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function DGLDDRK84_FConstantCache(T, T2) + A2 = convert(T, -0.5534431294501569) + A3 = convert(T, 0.01065987570203490) + A4 = convert(T, -0.5515812888932000) + A5 = convert(T, -1.885790377558741) + A6 = convert(T, -5.701295742793264) + A7 = convert(T, 2.113903965664793) + A8 = convert(T, -0.5339578826675280) + A2end = SVector(A2, A3, A4, A5, A6, A7, A8) + + B1 = convert(T, 0.08037936882736950) + B2 = convert(T, 0.5388497458569843) + B3 = convert(T, 0.01974974409031960) + B4 = convert(T, 0.09911841297339970) + B5 = convert(T, 0.7466920411064123) + B6 = convert(T, 1.679584245618894) + B7 = convert(T, 0.2433728067008188) + B8 = convert(T, 0.1422730459001373) + B2end = SVector(B2, B3, B4, B5, B6, B7, B8) + + c2 = convert(T2, 0.08037936882736950) + c3 = convert(T2, 0.3210064250338430) + c4 = convert(T2, 0.3408501826604660) + c5 = convert(T2, 0.3850364824285470) + c6 = convert(T2, 0.5040052477534100) + c7 = convert(T2, 0.6578977561168540) + c8 = convert(T2, 0.9484087623348481) + c2end = SVector(c2, c3, c4, c5, c6, c7, c8) + + LowStorageRK2NConstantCache{7, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::DGLDDRK84_F, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = DGLDDRK84_FConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::DGLDDRK84_F, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DGLDDRK84_FConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function NDBLSRK124ConstantCache(T, T2) + A2 = convert(T, -0.0923311242368072) + A3 = convert(T, -0.9441056581158819) + A4 = convert(T, -4.3271273247576394) + A5 = convert(T, -2.1557771329026072) + A6 = convert(T, -0.9770727190189062) + A7 = convert(T, -0.7581835342571139) + A8 = convert(T, -1.7977525470825499) + A9 = convert(T, -2.6915667972700770) + A10 = convert(T, -4.6466798960268143) + A11 = convert(T, -0.1539613783825189) + A12 = convert(T, -0.5943293901830616) + A2end = SVector(A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) + + B1 = convert(T, 0.0650008435125904) + B2 = convert(T, 0.0161459902249842) + B3 = convert(T, 0.5758627178358159) + B4 = convert(T, 0.1649758848361671) + B5 = convert(T, 0.3934619494248182) + B6 = convert(T, 0.0443509641602719) + B7 = convert(T, 0.2074504268408778) + B8 = convert(T, 0.6914247433015102) + B9 = convert(T, 0.3766646883450449) + B10 = convert(T, 0.0757190350155483) + B11 = convert(T, 0.2027862031054088) + B12 = convert(T, 0.2167029365631842) + B2end = SVector(B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12) + + c2 = convert(T2, 0.0650008435125904) + c3 = convert(T2, 0.0796560563081853) + c4 = convert(T2, 0.1620416710085376) + c5 = convert(T2, 0.2248877362907778) + c6 = convert(T2, 0.2952293985641261) + c7 = convert(T2, 0.3318332506149405) + c8 = convert(T2, 0.4094724050198658) + c9 = convert(T2, 0.6356954475753369) + c10 = convert(T2, 0.6806551557645497) + c11 = convert(T2, 0.7143773712418350) + c12 = convert(T2, 0.9032588871651854) + c2end = SVector(c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) + + LowStorageRK2NConstantCache{11, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::NDBLSRK124, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = NDBLSRK124ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::NDBLSRK124, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + NDBLSRK124ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function NDBLSRK134ConstantCache(T, T2) + A2 = convert(T, -0.6160178650170565) + A3 = convert(T, -0.4449487060774118) + A4 = convert(T, -1.0952033345276178) + A5 = convert(T, -1.2256030785959187) + A6 = convert(T, -0.2740182222332805) + A7 = convert(T, -0.0411952089052647) + A8 = convert(T, -0.1797084899153560) + A9 = convert(T, -1.1771530652064288) + A10 = convert(T, -0.4078831463120878) + A11 = convert(T, -0.8295636426191777) + A12 = convert(T, -4.7895970584252288) + A13 = convert(T, -0.6606671432964504) + A2end = SVector(A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) + + B1 = convert(T, 0.0271990297818803) + B2 = convert(T, 0.1772488819905108) + B3 = convert(T, 0.0378528418949694) + B4 = convert(T, 0.6086431830142991) + B5 = convert(T, 0.2154313974316100) + B6 = convert(T, 0.2066152563885843) + B7 = convert(T, 0.0415864076069797) + B8 = convert(T, 0.0219891884310925) + B9 = convert(T, 0.9893081222650993) + B10 = convert(T, 0.0063199019859826) + B11 = convert(T, 0.3749640721105318) + B12 = convert(T, 1.6080235151003195) + B13 = convert(T, 0.0961209123818189) + B2end = SVector(B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13) + + c2 = convert(T2, 0.0271990297818803) + c3 = convert(T2, 0.0952594339119365) + c4 = convert(T2, 0.1266450286591127) + c5 = convert(T2, 0.1825883045699772) + c6 = convert(T2, 0.3737511439063931) + c7 = convert(T2, 0.5301279418422206) + c8 = convert(T2, 0.5704177433952291) + c9 = convert(T2, 0.5885784947099155) + c10 = convert(T2, 0.6160769826246714) + c11 = convert(T2, 0.6223252334314046) + c12 = convert(T2, 0.6897593128753419) + c13 = convert(T2, 0.9126827615920843) + c2end = SVector(c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13) + + LowStorageRK2NConstantCache{12, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::NDBLSRK134, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = NDBLSRK134ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::NDBLSRK134, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + NDBLSRK134ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function NDBLSRK144ConstantCache(T, T2) + A2 = convert(T, -0.7188012108672410) + A3 = convert(T, -0.7785331173421570) + A4 = convert(T, -0.0053282796654044) + A5 = convert(T, -0.8552979934029281) + A6 = convert(T, -3.9564138245774565) + A7 = convert(T, -1.5780575380587385) + A8 = convert(T, -2.0837094552574054) + A9 = convert(T, -0.7483334182761610) + A10 = convert(T, -0.7032861106563359) + A11 = convert(T, 0.0013917096117681) + A12 = convert(T, -0.0932075369637460) + A13 = convert(T, -0.9514200470875948) + A14 = convert(T, -7.1151571693922548) + A2end = SVector(A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) + + B1 = convert(T, 0.0367762454319673) + B2 = convert(T, 0.3136296607553959) + B3 = convert(T, 0.1531848691869027) + B4 = convert(T, 0.0030097086818182) + B5 = convert(T, 0.3326293790646110) + B6 = convert(T, 0.2440251405350864) + B7 = convert(T, 0.3718879239592277) + B8 = convert(T, 0.6204126221582444) + B9 = convert(T, 0.1524043173028741) + B10 = convert(T, 0.0760894927419266) + B11 = convert(T, 0.0077604214040978) + B12 = convert(T, 0.0024647284755382) + B13 = convert(T, 0.0780348340049386) + B14 = convert(T, 5.5059777270269628) + B2end = SVector(B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14) + + c2 = convert(T2, 0.0367762454319673) + c3 = convert(T2, 0.1249685262725025) + c4 = convert(T2, 0.2446177702277698) + c5 = convert(T2, 0.2476149531070420) + c6 = convert(T2, 0.2969311120382472) + c7 = convert(T2, 0.3978149645802642) + c8 = convert(T2, 0.5270854589440328) + c9 = convert(T2, 0.6981269994175695) + c10 = convert(T2, 0.8190890835352128) + c11 = convert(T2, 0.8527059887098624) + c12 = convert(T2, 0.8604711817462826) + c13 = convert(T2, 0.8627060376969976) + c14 = convert(T2, 0.8734213127600976) + c2end = SVector(c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14) + + LowStorageRK2NConstantCache{13, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::NDBLSRK144, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = NDBLSRK144ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + tmp = zero(u) + williamson_condition = alg.williamson_condition + if calck + k = zero(rate_prototype) + williamson_condition = false + else + if williamson_condition + k = tmp + else + k = zero(rate_prototype) + end + end + LowStorageRK2NCache(u, uprev, k, tmp, tab, williamson_condition, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::NDBLSRK144, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + NDBLSRK144ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 2C low storage methods introduced by Calvo, Franco, Rández (2004) +@cache struct LowStorageRK2CCache{uType, rateType, TabType, StageLimiter, StepLimiter, + Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK2CConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + A2end::SVector{N, T} # A1 is always zero + B1::T + B2end::SVector{N, T} + c2end::SVector{N, T2} # c1 is always zero +end + +function CFRLDDRK64ConstantCache(T, T2) + A2 = convert(T, 0.17985400977138) + A3 = convert(T, 0.14081893152111) + A4 = convert(T, 0.08255631629428) + A5 = convert(T, 0.65804425034331) + A6 = convert(T, 0.31862993413251) + A2end = SVector(A2, A3, A4, A5, A6) + + B1 = convert(T, 0.10893125722541) + B2 = convert(T, 0.13201701492152) + B3 = convert(T, 0.38911623225517) + B4 = convert(T, -0.59203884581148) + B5 = convert(T, 0.47385028714844) + B6 = convert(T, 0.48812405426094) + B2end = SVector(B2, B3, B4, B5, B6) + + c2 = convert(T2, 0.28878526699679) + c3 = convert(T2, 0.38176720366804) + c4 = convert(T2, 0.71262082069639) + c5 = convert(T2, 0.69606990893393) + c6 = convert(T2, 0.83050587987157) + c2end = SVector(c2, c3, c4, c5, c6) + + LowStorageRK2CConstantCache{5, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::CFRLDDRK64, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CFRLDDRK64ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2CCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CFRLDDRK64, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CFRLDDRK64ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function TSLDDRK74ConstantCache(T, T2) + A2 = convert(T, 0.241566650129646868) + A3 = convert(T, 0.0423866513027719953) + A4 = convert(T, 0.215602732678803776) + A5 = convert(T, 0.232328007537583987) + A6 = convert(T, 0.256223412574146438) + A7 = convert(T, 0.0978694102142697230) + A2end = SVector(A2, A3, A4, A5, A6, A7) + + B1 = convert(T, 0.0941840925477795334) + B2 = convert(T, 0.149683694803496998) + B3 = convert(T, 0.285204742060440058) + B4 = convert(T, -0.122201846148053668) + B5 = convert(T, 0.0605151571191401122) + B6 = convert(T, 0.345986987898399296) + B7 = convert(T, 0.186627171718797670) + B2end = SVector(B2, B3, B4, B5, B6, B7) + + c2 = convert(T2, 0.335750742677426401) + c3 = convert(T2, 0.286254438654048527) + c4 = convert(T2, 0.744675262090520366) + c5 = convert(T2, 0.639198690801246909) + c6 = convert(T2, 0.723609252956949472) + c7 = convert(T2, 0.91124223849547205) + c2end = SVector(c2, c3, c4, c5, c6, c7) + + LowStorageRK2CConstantCache{6, T, T2}(A2end, B1, B2end, c2end) +end + +function alg_cache(alg::TSLDDRK74, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = TSLDDRK74ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + LowStorageRK2CCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::TSLDDRK74, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + TSLDDRK74ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 3S low storage methods introduced by Ketcheson +@cache struct LowStorageRK3SCache{uType, rateType, TabType, StageLimiter, StepLimiter, + Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK3SConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + γ12end::SVector{N, T} # γ11 is always zero + γ22end::SVector{N, T} # γ21 is always one + γ32end::SVector{N, T} # γ31 is always zero + # TODO: γ302 == γ303 == 0 in all emthods implemented below -> possible optimisation? + δ2end::SVector{N, T} # δ1 is always one + β1::T + β2end::SVector{N, T} + c2end::SVector{N, T2} # c1 is always zero +end + +function ParsaniKetchesonDeconinck3S32ConstantCache(T, T2) + γ102 = convert(T, -1.2664395576322218e-1) + γ103 = convert(T, 1.1426980685848858e+0) + γ12end = SVector(γ102, γ103) + + γ202 = convert(T, 6.5427782599406470e-1) + γ203 = convert(T, -8.2869287683723744e-2) + γ22end = SVector(γ202, γ203) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ32end = SVector(γ302, γ303) + + δ02 = convert(T, 7.2196567116037724e-1) + δ03 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03) + + β1 = convert(T, 7.2366074728360086e-1) + β02 = convert(T, 3.4217876502651023e-1) + β03 = convert(T, 3.6640216242653251e-1) + β2end = SVector(β02, β03) + + c02 = convert(T2, 7.2366074728360086e-1) + c03 = convert(T2, 5.9236433182015646e-1) + c2end = SVector(c02, c03) + + LowStorageRK3SConstantCache{2, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S32, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S32ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S32, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S32ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S82ConstantCache(T, T2) + γ102 = convert(T, 4.2397552118208004e-1) + γ103 = convert(T, -2.3528852074619033e-1) + γ104 = convert(T, 7.9598685017877846e-1) + γ105 = convert(T, -1.3205224623823271e+0) + γ106 = convert(T, 2.1452956294251941e+0) + γ107 = convert(T, -9.5532770501880648e-1) + γ108 = convert(T, 2.5361391125131094e-1) + γ12end = SVector(γ102, γ103, γ104, γ105, γ106, γ107, γ108) + + γ202 = convert(T, 4.4390665802303775e-1) + γ203 = convert(T, 7.5333732286056154e-1) + γ204 = convert(T, 6.5885460813015481e-2) + γ205 = convert(T, 6.3976199384289623e-1) + γ206 = convert(T, -7.3823030755143193e-1) + γ207 = convert(T, 7.0177211879534529e-1) + γ208 = convert(T, 4.0185379950224559e-1) + γ22end = SVector(γ202, γ203, γ204, γ205, γ206, γ207, γ208) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 5.8415358412023582e-2) + γ305 = convert(T, 6.4219008773865116e-1) + γ306 = convert(T, 6.8770305706885126e-1) + γ307 = convert(T, 6.3729822311671305e-2) + γ308 = convert(T, -3.3679429978131387e-1) + γ32end = SVector(γ302, γ303, γ304, γ305, γ306, γ307, γ308) + + δ02 = convert(T, 2.9762522910396538e-1) + δ03 = convert(T, 3.4212961014330662e-1) + δ04 = convert(T, 5.7010739154759105e-1) + δ05 = convert(T, 4.1350769551529132e-1) + δ06 = convert(T, -1.4040672669058066e-1) + δ07 = convert(T, 2.1249567092409008e-1) + δ08 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08) + + β1 = convert(T, 9.9292229393265474e-1) + β02 = convert(T, 5.2108385130005974e-1) + β03 = convert(T, 3.8505327083543915e-3) + β04 = convert(T, 7.9714199213087467e-1) + β05 = convert(T, -8.1822460276649120e-2) + β06 = convert(T, 8.4604310411858186e-1) + β07 = convert(T, -1.0191166090841246e-1) + β08 = convert(T, 6.3190236038107500e-2) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08) + + c02 = convert(T2, 9.9292229393265474e-1) + c03 = convert(T2, 1.0732413280565014e+0) + c04 = convert(T2, 2.5057060509809409e-1) + c05 = convert(T2, 1.0496674928979783e+0) + c06 = convert(T2, -6.7488037049720317e-1) + c07 = convert(T2, -1.5868411612120166e+0) + c08 = convert(T2, 2.1138242369563969e+0) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08) + + LowStorageRK3SConstantCache{7, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S82, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S82ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S82, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S82ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S53ConstantCache(T, T2) + γ102 = convert(T, 2.5876919610938998e-1) + γ103 = convert(T, -1.3243708384977859e-1) + γ104 = convert(T, 5.0556648948362981e-2) + γ105 = convert(T, 5.6705507883024708e-1) + γ12end = SVector(γ102, γ103, γ104, γ105) + + γ202 = convert(T, 5.5284013909611196e-1) + γ203 = convert(T, 6.7318513326032769e-1) + γ204 = convert(T, 2.8031054965521607e-1) + γ205 = convert(T, 5.5215115815918758e-1) + γ22end = SVector(γ202, γ203, γ204, γ205) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 2.7525797946334213e-1) + γ305 = convert(T, -8.9505445022148511e-1) + γ32end = SVector(γ302, γ303, γ304, γ305) + + δ02 = convert(T, 3.4076878915216791e-1) + δ03 = convert(T, 3.4143871647890728e-1) + δ04 = convert(T, 7.2292984084963252e-1) + δ05 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05) + + β1 = convert(T, 2.3002859824852059e-1) + β02 = convert(T, 3.0214498165167158e-1) + β03 = convert(T, 8.0256010238856679e-1) + β04 = convert(T, 4.3621618871511753e-1) + β05 = convert(T, 1.1292705979513513e-1) + β2end = SVector(β02, β03, β04, β05) + + c02 = convert(T2, 2.3002859824852059e-1) + c03 = convert(T2, 4.0500453764839639e-1) + c04 = convert(T2, 8.9478204142351003e-1) + c05 = convert(T2, 7.2351146275625733e-1) + c2end = SVector(c02, c03, c04, c05) + + LowStorageRK3SConstantCache{4, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S53, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S53ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S53, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S53ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S173ConstantCache(T, T2) + γ102 = convert(T, 7.9377023961829174e-1) + γ103 = convert(T, -8.3475116244241754e-2) + γ104 = convert(T, -1.6706337980062214e-2) + γ105 = convert(T, 3.6410691500331427e-1) + γ106 = convert(T, 6.9178255181542780e-1) + γ107 = convert(T, 1.4887115004739182e+0) + γ108 = convert(T, 4.5336125560871188e-1) + γ109 = convert(T, -1.2705776046458739e-1) + γ110 = convert(T, 8.3749845457747696e-1) + γ111 = convert(T, 1.5709218393361746e-1) + γ112 = convert(T, -5.7768207086288348e-1) + γ113 = convert(T, -5.7340394122375393e-1) + γ114 = convert(T, -1.2050734846514470e+0) + γ115 = convert(T, -2.8100719513641002e+0) + γ116 = convert(T, 1.6142798657609492e-1) + γ117 = convert(T, -2.5801264756641613e+0) + γ12end = SVector( + γ102, γ103, γ104, γ105, γ106, γ107, γ108, γ109, γ110, γ111, γ112, γ113, + γ114, γ115, γ116, γ117) + + γ202 = convert(T, 3.2857861940811250e-1) + γ203 = convert(T, 1.1276843361180819e+0) + γ204 = convert(T, 1.3149447395238016e+0) + γ205 = convert(T, 5.2062891534209055e-1) + γ206 = convert(T, 8.8127462325164985e-1) + γ207 = convert(T, 4.2020606445856712e-1) + γ208 = convert(T, 7.6532635739246124e-2) + γ209 = convert(T, 4.4386734924685722e-1) + γ210 = convert(T, 6.6503093955199682e-2) + γ211 = convert(T, 1.5850209163184039e+0) + γ212 = convert(T, 1.1521721573462576e+0) + γ213 = convert(T, 1.1172750819374575e+0) + γ214 = convert(T, 7.7630223917584007e-1) + γ215 = convert(T, 1.0046657060652295e+0) + γ216 = convert(T, -1.9795868964959054e-1) + γ217 = convert(T, 1.3350583594705518e+0) + γ22end = SVector( + γ202, γ203, γ204, γ205, γ206, γ207, γ208, γ209, γ210, γ211, γ212, γ213, + γ214, γ215, γ216, γ217) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 8.4034574578399479e-1) + γ305 = convert(T, 8.5047738439705145e-1) + γ306 = convert(T, 1.4082448501410852e-1) + γ307 = convert(T, -3.2678802469519369e-1) + γ308 = convert(T, 5.3716357620635535e-1) + γ309 = convert(T, 9.0228922115199051e-1) + γ310 = convert(T, 1.5960226946983552e-1) + γ311 = convert(T, 1.1038153140686748e+0) + γ312 = convert(T, 1.0843516423068365e-1) + γ313 = convert(T, 4.6212710442787724e-1) + γ314 = convert(T, -3.3448312125108398e-1) + γ315 = convert(T, 1.1153826567096696e+0) + γ316 = convert(T, 1.5503248734613539e+0) + γ317 = convert(T, -1.2200245424704212e+0) + γ32end = SVector( + γ302, γ303, γ304, γ305, γ306, γ307, γ308, γ309, γ310, γ311, γ312, γ313, + γ314, γ315, γ316, γ317) + + δ02 = convert(T, -3.7235794357769936e-1) + δ03 = convert(T, 3.3315440189685536e-1) + δ04 = convert(T, -8.2667630338402520e-1) + δ05 = convert(T, -5.4628377681035534e-1) + δ06 = convert(T, 6.0210777634642887e-1) + δ07 = convert(T, -5.7528717894031067e-1) + δ08 = convert(T, 5.0914861529202782e-1) + δ09 = convert(T, 3.8258114767897194e-1) + δ10 = convert(T, -4.6279063221185290e-1) + δ11 = convert(T, -2.0820434288562648e-1) + δ12 = convert(T, 1.4398056081552713e+0) + δ13 = convert(T, -2.8056600927348752e-1) + δ14 = convert(T, 2.2767189929551406e+0) + δ15 = convert(T, -5.8917530100546356e-1) + δ16 = convert(T, 9.1328651048418164e-1) + δ17 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08, δ09, δ10, δ11, δ12, δ13, δ14, δ15, + δ16, δ17) + + β1 = convert(T, 4.9565403010221741e-2) + β02 = convert(T, 9.7408718698159397e-2) + β03 = convert(T, -1.7620737976801870e-1) + β04 = convert(T, 1.4852069175460250e-1) + β05 = convert(T, -3.3127657103714951e-2) + β06 = convert(T, 4.8294609330498492e-2) + β07 = convert(T, 4.9622612199980112e-2) + β08 = convert(T, 8.7340766269850378e-1) + β09 = convert(T, -2.8692804399085370e-1) + β10 = convert(T, 1.2679897532256112e+0) + β11 = convert(T, -1.0217436118953449e-2) + β12 = convert(T, 8.4665570032598350e-2) + β13 = convert(T, 2.8253854742588246e-2) + β14 = convert(T, -9.2936733010804407e-2) + β15 = convert(T, -8.4798124766803512e-2) + β16 = convert(T, -1.6923145636158564e-2) + β17 = convert(T, -4.7305106233879957e-2) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08, β09, β10, β11, β12, β13, β14, β15, + β16, β17) + + c02 = convert(T2, 4.9565403010221741e-2) + c03 = convert(T2, 1.3068799001687578e-1) + c04 = convert(T2, -1.5883063460310493e-1) + c05 = convert(T2, 3.5681144740196935e-1) + c06 = convert(T2, 7.6727123317642698e-2) + c07 = convert(T2, 1.0812579255374613e-1) + c08 = convert(T2, 1.8767228084815801e-1) + c09 = convert(T2, 9.6162976936182631e-1) + c10 = convert(T2, -2.2760719867560897e-1) + c11 = convert(T2, 1.1115681606027146e+0) + c12 = convert(T2, 6.1266845427676520e-1) + c13 = convert(T2, 1.0729473245077408e+0) + c14 = convert(T2, 3.7824186468104548e-1) + c15 = convert(T2, 7.9041891347646720e-1) + c16 = convert(T2, -1.0406955693161675e+0) + c17 = convert(T2, -2.4607146824557105e-1) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, + c16, c17) + + LowStorageRK3SConstantCache{16, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S173, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S173ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S173, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S173ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S94ConstantCache(T, T2) + γ102 = convert(T, -4.6556413837561301e+0) + γ103 = convert(T, -7.7202649689034453e-1) + γ104 = convert(T, -4.0244202720632174e+0) + γ105 = convert(T, -2.1296873883702272e-2) + γ106 = convert(T, -2.4350219407769953e+0) + γ107 = convert(T, 1.9856336960249132e-2) + γ108 = convert(T, -2.8107894116913812e-1) + γ109 = convert(T, 1.6894354373677900e-1) + γ12end = SVector(γ102, γ103, γ104, γ105, γ106, γ107, γ108, γ109) + + γ202 = convert(T, 2.4992627683300688e+0) + γ203 = convert(T, 5.8668202764174726e-1) + γ204 = convert(T, 1.2051419816240785e+0) + γ205 = convert(T, 3.4747937498564541e-1) + γ206 = convert(T, 1.3213458736302766e+0) + γ207 = convert(T, 3.1196363453264964e-1) + γ208 = convert(T, 4.3514189245414447e-1) + γ209 = convert(T, 2.3596980658341213e-1) + γ22end = SVector(γ202, γ203, γ204, γ205, γ206, γ207, γ208, γ209) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 7.6209857891449362e-1) + γ305 = convert(T, -1.9811817832965520e-1) + γ306 = convert(T, -6.2289587091629484e-1) + γ307 = convert(T, -3.7522475499063573e-1) + γ308 = convert(T, -3.3554373281046146e-1) + γ309 = convert(T, -4.5609629702116454e-2) + γ32end = SVector(γ302, γ303, γ304, γ305, γ306, γ307, γ308, γ309) + + δ02 = convert(T, 1.2629238731608268e+0) + δ03 = convert(T, 7.5749675232391733e-1) + δ04 = convert(T, 5.1635907196195419e-1) + δ05 = convert(T, -2.7463346616574083e-2) + δ06 = convert(T, -4.3826743572318672e-1) + δ07 = convert(T, 1.2735870231839268e+0) + δ08 = convert(T, -6.2947382217730230e-1) + δ09 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08, δ09) + + β1 = convert(T, 2.8363432481011769e-1) + β02 = convert(T, 9.7364980747486463e-1) + β03 = convert(T, 3.3823592364196498e-1) + β04 = convert(T, -3.5849518935750763e-1) + β05 = convert(T, -4.1139587569859462e-3) + β06 = convert(T, 1.4279689871485013e+0) + β07 = convert(T, 1.8084680519536503e-2) + β08 = convert(T, 1.6057708856060501e-1) + β09 = convert(T, 2.9522267863254809e-1) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08, β09) + + c02 = convert(T2, 2.8363432481011769e-1) + c03 = convert(T2, 5.4840742446661772e-1) + c04 = convert(T2, 3.6872298094969475e-1) + c05 = convert(T2, -6.8061183026103156e-1) + c06 = convert(T2, 3.5185265855105619e-1) + c07 = convert(T2, 1.6659419385562171e+0) + c08 = convert(T2, 9.7152778807463247e-1) + c09 = convert(T2, 9.0515694340066954e-1) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08, c09) + + LowStorageRK3SConstantCache{8, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S94, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S94ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S94, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S94ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S184ConstantCache(T, T2) + γ102 = convert(T, 1.1750819811951678e+0) + γ103 = convert(T, 3.0909017892654811e-1) + γ104 = convert(T, 1.4409117788115862e+0) + γ105 = convert(T, -4.3563049445694069e-1) + γ106 = convert(T, 2.0341503014683893e-1) + γ107 = convert(T, 4.9828356971917692e-1) + γ108 = convert(T, 3.5307737157745489e+0) + γ109 = convert(T, -7.9318790975894626e-1) + γ110 = convert(T, 8.9120513355345166e-1) + γ111 = convert(T, 5.7091009196320974e-1) + γ112 = convert(T, 1.6912188575015419e-2) + γ113 = convert(T, 1.0077912519329719e+0) + γ114 = convert(T, -6.8532953752099512e-1) + γ115 = convert(T, 1.0488165551884063e+0) + γ116 = convert(T, 8.3647761371829943e-1) + γ117 = convert(T, 1.3087909830445710e+0) + γ118 = convert(T, 9.0419681700177323e-1) + γ12end = SVector( + γ102, γ103, γ104, γ105, γ106, γ107, γ108, γ109, γ110, γ111, γ112, γ113, + γ114, γ115, γ116, γ117, γ118) + + γ202 = convert(T, -1.2891068509748144e-1) + γ203 = convert(T, 3.5609406666728954e-1) + γ204 = convert(T, -4.0648075226104241e-1) + γ205 = convert(T, 6.0714786995207426e-1) + γ206 = convert(T, 1.0253501186236846e+0) + γ207 = convert(T, 2.4411240760769423e-1) + γ208 = convert(T, -1.2813606970134104e+0) + γ209 = convert(T, 8.1625711892373898e-1) + γ210 = convert(T, 1.0171269354643386e-1) + γ211 = convert(T, 1.9379378662711269e-1) + γ212 = convert(T, 7.4408643544851782e-1) + γ213 = convert(T, -1.2591764563430008e-1) + γ214 = convert(T, 1.1996463179654226e+0) + γ215 = convert(T, 4.5772068865370406e-2) + γ216 = convert(T, 8.3622292077033844e-1) + γ217 = convert(T, -1.4179124272450148e+0) + γ218 = convert(T, 1.3661459065331649e-1) + γ22end = SVector( + γ202, γ203, γ204, γ205, γ206, γ207, γ208, γ209, γ210, γ211, γ212, γ213, + γ214, γ215, γ216, γ217, γ218) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 2.5583378537249163e-1) + γ305 = convert(T, 5.2676794366988289e-1) + γ306 = convert(T, -2.5648375621792202e-1) + γ307 = convert(T, 3.1932438003236391e-1) + γ308 = convert(T, -3.1106815010852862e-1) + γ309 = convert(T, 4.7631196164025996e-1) + γ310 = convert(T, -9.8853727938895783e-2) + γ311 = convert(T, 1.9274726276883622e-1) + γ312 = convert(T, 3.2389860855971508e-2) + γ313 = convert(T, 7.5923980038397509e-2) + γ314 = convert(T, 2.0635456088664017e-1) + γ315 = convert(T, -8.9741032556032857e-2) + γ316 = convert(T, 2.6899932505676190e-2) + γ317 = convert(T, 4.1882069379552307e-2) + γ318 = convert(T, 6.2016148912381761e-2) + γ32end = SVector( + γ302, γ303, γ304, γ305, γ306, γ307, γ308, γ309, γ310, γ311, γ312, γ313, + γ314, γ315, γ316, γ317, γ318) + + δ02 = convert(T, 3.5816500441970289e-1) + δ03 = convert(T, 5.8208024465093577e-1) + δ04 = convert(T, -2.2615285894283538e-1) + δ05 = convert(T, -2.1715466578266213e-1) + δ06 = convert(T, -4.6990441450888265e-1) + δ07 = convert(T, -2.7986911594744995e-1) + δ08 = convert(T, 9.8513926355272197e-1) + δ09 = convert(T, -1.1899324232814899e-1) + δ10 = convert(T, 4.2821073124370562e-1) + δ11 = convert(T, -8.2196355299900403e-1) + δ12 = convert(T, 5.8113997057675074e-2) + δ13 = convert(T, -6.1283024325436919e-1) + δ14 = convert(T, 5.6800136190634054e-1) + δ15 = convert(T, -3.3874970570335106e-1) + δ16 = convert(T, -7.3071238125137772e-1) + δ17 = convert(T, 8.3936016960374532e-2) + δ18 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08, δ09, δ10, δ11, δ12, δ13, δ14, δ15, + δ16, δ17, δ18) + + β1 = convert(T, 1.2384169480626298e-1) + β02 = convert(T, 1.0176262534280349e+0) + β03 = convert(T, -6.9732026387527429e-2) + β04 = convert(T, 3.4239356067806476e-1) + β05 = convert(T, 1.8177707207807942e-2) + β06 = convert(T, -6.1188746289480445e-3) + β07 = convert(T, 7.8242308902580354e-2) + β08 = convert(T, -3.7642864750532951e-1) + β09 = convert(T, -4.5078383666690258e-2) + β10 = convert(T, -7.5734228201432585e-1) + β11 = convert(T, -2.7149222760935121e-1) + β12 = convert(T, 1.1833684341657344e-3) + β13 = convert(T, 2.8858319979308041e-2) + β14 = convert(T, 4.6005267586974657e-1) + β15 = convert(T, 1.8014887068775631e-2) + β16 = convert(T, -1.5508175395461857e-2) + β17 = convert(T, -4.0095737929274988e-1) + β18 = convert(T, 1.4949678367038011e-1) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08, β09, β10, β11, β12, β13, β14, β15, + β16, β17, β18) + + c02 = convert(T2, 1.2384169480626298e-1) + c03 = convert(T2, 1.1574324659554065e+0) + c04 = convert(T2, 5.4372099141546926e-1) + c05 = convert(T2, 8.8394666834280744e-1) + c06 = convert(T2, -1.2212042176605774e-1) + c07 = convert(T2, 4.4125685133082082e-1) + c08 = convert(T2, 3.8039092095473748e-1) + c09 = convert(T2, 5.4591107347528367e-2) + c10 = convert(T2, 4.8731855535356028e-1) + c11 = convert(T2, -2.3007964303896034e-1) + c12 = convert(T2, -1.8907656662915873e-1) + c13 = convert(T2, 8.1059805668623763e-1) + c14 = convert(T2, 7.7080875997868803e-1) + c15 = convert(T2, 1.1712158507200179e+0) + c16 = convert(T2, 1.2755351018003545e+0) + c17 = convert(T2, 8.0422507946168564e-1) + c18 = convert(T2, 9.7508680250761848e-1) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, + c16, c17, c18) + + LowStorageRK3SConstantCache{17, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S184, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S184ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S184, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S184ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S105ConstantCache(T, T2) + γ102 = convert(T, 4.0436600785287713e-1) + γ103 = convert(T, -8.5034274641295027e-1) + γ104 = convert(T, -6.9508941671218478e+0) + γ105 = convert(T, 9.2387652252320684e-1) + γ106 = convert(T, -2.5631780399589106e+0) + γ107 = convert(T, 2.5457448699988827e-1) + γ108 = convert(T, 3.1258317336761454e-1) + γ109 = convert(T, -7.0071148003175443e-1) + γ110 = convert(T, 4.8396209710057070e-1) + γ12end = SVector(γ102, γ103, γ104, γ105, γ106, γ107, γ108, γ109, γ110) + + γ202 = convert(T, 6.8714670697294733e-1) + γ203 = convert(T, 1.0930247604585732e+0) + γ204 = convert(T, 3.2259753823377983e+0) + γ205 = convert(T, 1.0411537008416110e+0) + γ206 = convert(T, 1.2928214888638039e+0) + γ207 = convert(T, 7.3914627692888835e-1) + γ208 = convert(T, 1.2391292570651462e-1) + γ209 = convert(T, 1.8427534793568445e-1) + γ210 = convert(T, 5.7127889427161162e-2) + γ22end = SVector(γ202, γ203, γ204, γ205, γ206, γ207, γ208, γ209, γ210) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, -2.3934051593398129e+0) + γ305 = convert(T, -1.9028544220991284e+0) + γ306 = convert(T, -2.8200422105835639e+0) + γ307 = convert(T, -1.8326984641282289e+0) + γ308 = convert(T, -2.1990945108072310e-1) + γ309 = convert(T, -4.0824306603783045e-1) + γ310 = convert(T, -1.3776697911236280e-1) + γ32end = SVector(γ302, γ303, γ304, γ305, γ306, γ307, γ308, γ309, γ310) + + δ02 = convert(T, -1.3317784091400336e-1) + δ03 = convert(T, 8.2604227852898304e-1) + δ04 = convert(T, 1.5137004305165804e+0) + δ05 = convert(T, -1.3058100631721905e+0) + δ06 = convert(T, 3.0366787893355149e+0) + δ07 = convert(T, -1.4494582670831953e+0) + δ08 = convert(T, 3.8343138733685103e+0) + δ09 = convert(T, 4.1222939718018692e+0) + δ10 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08, δ09, δ10) + + β1 = convert(T, 2.5978835757039448e-1) + β02 = convert(T, 1.7770088002098183e-2) + β03 = convert(T, 2.4816366373161344e-1) + β04 = convert(T, 7.9417368275785671e-1) + β05 = convert(T, 3.8853912968701337e-1) + β06 = convert(T, 1.4550516642704694e-1) + β07 = convert(T, 1.5875173794655811e-1) + β08 = convert(T, 1.6506056315937651e-1) + β09 = convert(T, 2.1180932999328042e-1) + β10 = convert(T, 1.5593923403495016e-1) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08, β09, β10) + + c02 = convert(T2, 2.5978835757039448e-1) + c03 = convert(T2, 9.9045731158085557e-2) + c04 = convert(T2, 2.1555118823045644e-1) + c05 = convert(T2, 5.0079500784155040e-1) + c06 = convert(T2, 5.5922519148547800e-1) + c07 = convert(T2, 5.4499869734044426e-1) + c08 = convert(T2, 7.6152246625852738e-1) + c09 = convert(T2, 8.4270620830633836e-1) + c10 = convert(T2, 9.1522098071770008e-1) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08, c09, c10) + + LowStorageRK3SConstantCache{9, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S105, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S105ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S105, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S105ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function ParsaniKetchesonDeconinck3S205ConstantCache(T, T2) + γ102 = convert(T, -1.1682479703229380e+0) + γ103 = convert(T, -2.5112155037089772e+0) + γ104 = convert(T, -5.5259960154735988e-1) + γ105 = convert(T, 2.9243033509511740e-3) + γ106 = convert(T, -4.7948973385386493e+0) + γ107 = convert(T, -5.3095533497183016e+0) + γ108 = convert(T, -2.3624194456630736e+0) + γ109 = convert(T, 2.0068995756589547e-1) + γ110 = convert(T, -1.4985808661597710e+0) + γ111 = convert(T, 4.8941228502377687e-1) + γ112 = convert(T, -1.0387512755259576e-1) + γ113 = convert(T, -1.3287664273288191e-1) + γ114 = convert(T, 7.5858678822837511e-1) + γ115 = convert(T, -4.3321586294096939e+0) + γ116 = convert(T, 4.8199700138402146e-1) + γ117 = convert(T, -7.0924756614960671e-3) + γ118 = convert(T, -8.8422252029506054e-1) + γ119 = convert(T, -8.9129367099545231e-1) + γ120 = convert(T, 1.5297157134040762e+0) + γ12end = SVector( + γ102, γ103, γ104, γ105, γ106, γ107, γ108, γ109, γ110, γ111, γ112, γ113, + γ114, γ115, γ116, γ117, γ118, γ119, γ120) + + γ202 = convert(T, 8.8952052154583572e-1) + γ203 = convert(T, 8.8988129100385194e-1) + γ204 = convert(T, 3.5701564494677057e-1) + γ205 = convert(T, 2.4232462479216824e-1) + γ206 = convert(T, 1.2727083024258155e+0) + γ207 = convert(T, 1.1126977210342681e+0) + γ208 = convert(T, 5.1360709645409097e-1) + γ209 = convert(T, 1.1181089682044856e-1) + γ210 = convert(T, 2.7881272382085232e-1) + γ211 = convert(T, 4.9032886260666715e-2) + γ212 = convert(T, 4.1871051065897870e-2) + γ213 = convert(T, 4.4602463796686219e-2) + γ214 = convert(T, 1.4897271251154750e-2) + γ215 = convert(T, 2.6244269699436817e-1) + γ216 = convert(T, -4.7486056986590294e-3) + γ217 = convert(T, 2.3219312682036197e-2) + γ218 = convert(T, 6.2852588972458059e-2) + γ219 = convert(T, 5.4473719351268962e-2) + γ220 = convert(T, 2.4345446089014514e-2) + γ22end = SVector( + γ202, γ203, γ204, γ205, γ206, γ207, γ208, γ209, γ210, γ211, γ212, γ213, + γ214, γ215, γ216, γ217, γ218, γ219, γ220) + + γ302 = convert(T, 0.0000000000000000e+0) + γ303 = convert(T, 0.0000000000000000e+0) + γ304 = convert(T, 1.9595487007932735e-1) + γ305 = convert(T, -6.9871675039100595e-5) + γ306 = convert(T, 1.0592231169810050e-1) + γ307 = convert(T, 1.0730426871909635e+0) + γ308 = convert(T, 8.9257826744389124e-1) + γ309 = convert(T, -1.4078912484894415e-1) + γ310 = convert(T, -2.6869890558434262e-1) + γ311 = convert(T, -6.5175753568318007e-2) + γ312 = convert(T, 4.9177812903108553e-1) + γ313 = convert(T, 4.6017684776493678e-1) + γ314 = convert(T, -6.4689512947008251e-3) + γ315 = convert(T, 4.4034728024115377e-1) + γ316 = convert(T, 6.1086885767527943e-1) + γ317 = convert(T, 5.0546454457410162e-1) + γ318 = convert(T, 5.4668509293072887e-1) + γ319 = convert(T, 7.1414182420995431e-1) + γ320 = convert(T, -1.0558095282893749e+0) + γ32end = SVector( + γ302, γ303, γ304, γ305, γ306, γ307, γ308, γ309, γ310, γ311, γ312, γ313, + γ314, γ315, γ316, γ317, γ318, γ319, γ320) + + δ02 = convert(T, 1.4375468781258596e+0) + δ03 = convert(T, 1.5081653637261594e+0) + δ04 = convert(T, -1.4575347066062688e-1) + δ05 = convert(T, 3.1495761082838158e-1) + δ06 = convert(T, 3.5505919368536931e-1) + δ07 = convert(T, 2.3616389374566960e-1) + δ08 = convert(T, 1.0267488547302055e-1) + δ09 = convert(T, 3.5991243524519438e+0) + δ10 = convert(T, 1.5172890003890782e+0) + δ11 = convert(T, 1.8171662741779953e+0) + δ12 = convert(T, 2.8762263521436831e+0) + δ13 = convert(T, 4.6350154228218754e-1) + δ14 = convert(T, 1.5573122110727220e+0) + δ15 = convert(T, 2.0001066778080254e+0) + δ16 = convert(T, 9.1690694855534305e-1) + δ17 = convert(T, 2.0474618401365854e+0) + δ18 = convert(T, -3.2336329115436924e-1) + δ19 = convert(T, 3.2899060754742177e-1) + δ20 = convert(T, 0.0000000000000000e+0) + δ2end = SVector(δ02, δ03, δ04, δ05, δ06, δ07, δ08, δ09, δ10, δ11, δ12, δ13, δ14, δ15, + δ16, δ17, δ18, δ19, δ20) + + β1 = convert(T, 1.7342385375780556e-1) + β02 = convert(T, 2.8569004728564801e-1) + β03 = convert(T, 6.8727044379779589e-1) + β04 = convert(T, 1.2812121060977319e-1) + β05 = convert(T, 4.9137180740403122e-4) + β06 = convert(T, 4.7033584446956857e-2) + β07 = convert(T, 4.4539998128170821e-1) + β08 = convert(T, 1.2259824887343720e+0) + β09 = convert(T, 2.0616463985024421e-2) + β10 = convert(T, 1.5941162575324802e-1) + β11 = convert(T, 1.2953803678226099e+0) + β12 = convert(T, 1.7287352967302603e-3) + β13 = convert(T, 1.1660483420536467e-1) + β14 = convert(T, 7.7997036621815521e-2) + β15 = convert(T, 3.2563250234418012e-1) + β16 = convert(T, 1.0611520488333197e+0) + β17 = convert(T, 6.5891625628040993e-4) + β18 = convert(T, 8.3534647700054046e-2) + β19 = convert(T, 9.8972579458252483e-2) + β20 = convert(T, 4.3010116145097040e-2) + β2end = SVector(β02, β03, β04, β05, β06, β07, β08, β09, β10, β11, β12, β13, β14, β15, + β16, β17, β18, β19, β20) + + c02 = convert(T2, 1.7342385375780556e-1) + c03 = convert(T2, 3.0484982420032158e-1) + c04 = convert(T2, 5.5271395645729193e-1) + c05 = convert(T2, 4.7079204549750037e-2) + c06 = convert(T2, 1.5652540451324129e-1) + c07 = convert(T2, 1.8602224049074517e-1) + c08 = convert(T2, 2.8426620035751449e-1) + c09 = convert(T2, 9.5094727548792268e-1) + c10 = convert(T2, 6.8046501070096010e-1) + c11 = convert(T2, 5.9705366562360063e-1) + c12 = convert(T2, 1.8970821645077285e+0) + c13 = convert(T2, 2.9742664004529606e-1) + c14 = convert(T2, 6.0813463700134940e-1) + c15 = convert(T2, 7.3080004188477765e-1) + c16 = convert(T2, 9.1656999044951792e-1) + c17 = convert(T2, 1.4309687554614530e+0) + c18 = convert(T2, 4.1043824968249148e-1) + c19 = convert(T2, 8.4898255952298962e-1) + c20 = convert(T2, 3.3543896258348421e-1) + c2end = SVector(c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, + c16, c17, c18, c19, c20) + + LowStorageRK3SConstantCache{19, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S205, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = ParsaniKetchesonDeconinck3S205ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SCache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::ParsaniKetchesonDeconinck3S205, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ParsaniKetchesonDeconinck3S205ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +# 3S+ low storage methods: 3S methods adding another memory location for the embedded method (non-FSAL version) +# ## References +# - Ranocha, Dalcin, Parsani, Ketcheson (2021) +# Optimized Runge-Kutta Methods with Automatic Step Size Control for +# Compressible Computational Fluid Dynamics +# [arXiv:2104.06836](https://arxiv.org/abs/2104.06836) +@cache struct LowStorageRK3SpCache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK3SpConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + γ12end::SVector{N, T} # γ11 is always zero + γ22end::SVector{N, T} # γ21 is always one + γ32end::SVector{N, T} # γ31 is always zero + # TODO: γ302 == γ303 == 0 in all emthods implemented below -> possible optimization? + δ2end::SVector{N, T} # δ1 is always one + β1::T + β2end::SVector{N, T} + c2end::SVector{N, T2} # c1 is always zero + bhat1::T + bhat2end::SVector{N, T} +end + +function RDPK3Sp35ConstantCache(T, T2) + γ12end = SVector(convert(T, big"2.587669070352079020144955303389306026e-01"), + convert(T, big"-1.324366873994502973977035353758550057e-01"), + convert(T, big"5.055601231460399101814291350373559483e-02"), + convert(T, big"5.670552807902877312521811889846000976e-01")) + + γ22end = SVector(convert(T, big"5.528418745102160639901976698795928733e-01"), + convert(T, big"6.731844400389673824374042790213570079e-01"), + convert(T, big"2.803103804507635075215805236096803381e-01"), + convert(T, big"5.521508873507393276457754945308880998e-01")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"2.752585813446636957256614568573008811e-01"), + convert(T, big"-8.950548709279785077579454232514633376e-01")) + + δ2end = SVector(convert(T, big"3.407687209321455242558804921815861422e-01"), + convert(T, big"3.414399280584625023244387687873774697e-01"), + convert(T, big"7.229302732875589702087936723400941329e-01"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.300285062878154351930669430512780706e-01") + β2end = SVector(convert(T, big"3.021457892454169700189445968126242994e-01"), + convert(T, big"8.025601039472704213300183888573974531e-01"), + convert(T, big"4.362158997637629844305216319994356355e-01"), + convert(T, big"1.129268494470295369172265188216779157e-01")) + + c2end = SVector(convert(T, big"2.300285062878154351930669430512780706e-01"), + convert(T, big"4.050049049262914975700372321130661410e-01"), + convert(T, big"8.947823877926760224705450466361360720e-01"), + convert(T, big"7.235108137218888081489570284485201518e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"1.046363371354093758897668305991705199e-01" + - + big"1.147931563369900682037379182772608287e-01") + bhat2end = SVector( + convert(T, + big"9.520431574956758809511173383346476348e-02" + - + big"8.933559295232859013880114997436974196e-02"), + convert(T, + big"4.482446645568668405072421350300379357e-01" + - + big"4.355858717379231779899161991033964256e-01"), + convert(T, + big"2.449030295461310135957132640369862245e-01" + - + big"2.473585295257286267503182138232950881e-01"), + convert(T, + big"1.070116530120251819121660365003405564e-01" + - + big"1.129268494470295369172265188216779157e-01")) + + LowStorageRK3SpConstantCache{4, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, + bhat1, bhat2end) +end + +function alg_cache(alg::RDPK3Sp35, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3Sp35ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + LowStorageRK3SpCache( + u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3Sp35, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3Sp35ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function RDPK3Sp49ConstantCache(T, T2) + γ12end = SVector(convert(T, big"-4.655641301259180308677051498071354582e+00"), + convert(T, big"-7.720264924836063859141482018013692338e-01"), + convert(T, big"-4.024423213419724605695005429153112050e+00"), + convert(T, big"-2.129685246739018613087466942802498152e-02"), + convert(T, big"-2.435022519234470128602335652131234586e+00"), + convert(T, big"1.985627480986167686791439120784668251e-02"), + convert(T, big"-2.810790112885283952929218377438668784e-01"), + convert(T, big"1.689434895835535695524003319503844110e-01")) + + γ22end = SVector(convert(T, big"2.499262752607825957145627300817258023e+00"), + convert(T, big"5.866820365436136799319929406678132638e-01"), + convert(T, big"1.205141365412670762568835277881144391e+00"), + convert(T, big"3.474793796700868848597960521248007941e-01"), + convert(T, big"1.321346140128723105871355808477092220e+00"), + convert(T, big"3.119636324379370564023292317172847140e-01"), + convert(T, big"4.351419055894087609560896967082486864e-01"), + convert(T, big"2.359698299440788299161958168555704234e-01")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"7.621037111138170045618771082985664430e-01"), + convert(T, big"-1.981182159087218433914909510116664154e-01"), + convert(T, big"-6.228960706317566993192689455719570179e-01"), + convert(T, big"-3.752246993432626328289874575355102038e-01"), + convert(T, big"-3.355436539000946543242869676125143358e-01"), + convert(T, big"-4.560963110717484359015342341157302403e-02")) + + δ2end = SVector(convert(T, big"1.262923854387806460989545005598562667e+00"), + convert(T, big"7.574967177560872438940839460448329992e-01"), + convert(T, big"5.163591158111222863455531895152351544e-01"), + convert(T, big"-2.746333792042827389548936599648122146e-02"), + convert(T, big"-4.382674653941770848797864513655752318e-01"), + convert(T, big"1.273587103668392811985704533534301656e+00"), + convert(T, big"-6.294740045442794829622796613103492913e-01"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.836343531977826022543660465926414772e-01") + β2end = SVector(convert(T, big"9.736497978646965372894268287659773644e-01"), + convert(T, big"3.382358566377620380505126936670933370e-01"), + convert(T, big"-3.584937820217850715182820651063453804e-01"), + convert(T, big"-4.113955814725134294322006403954822487e-03"), + convert(T, big"1.427968962196019024010757034274849198e+00"), + convert(T, big"1.808467712038743032991177525728915926e-02"), + convert(T, big"1.605771316794521018947553625079465692e-01"), + convert(T, big"2.952226811394310028003810072027839487e-01")) + + c2end = SVector(convert(T, big"2.836343531977826022543660465926414772e-01"), + convert(T, big"5.484073767552486705240014599676811834e-01"), + convert(T, big"3.687229456675706936558667052479014150e-01"), + convert(T, big"-6.806119916032093175251948474173648331e-01"), + convert(T, big"3.518526451892056368706593492732753284e-01"), + convert(T, big"1.665941920204672094647868254892387293e+00"), + convert(T, big"9.715276989307335935187466054546761665e-01"), + convert(T, big"9.051569554420045339601721625247585643e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"4.550655927970944948340364817140593012e-02" + - + big"4.503731969165884304041981629148469971e-02") + bhat2end = SVector( + convert(T, + big"1.175968310492638562142460384341959193e-01" + - + big"1.859217322011968812563859888433403777e-01"), + convert(T, + big"3.658257330515213200375475084421083608e-02" + - + big"3.329727509207630932171676116314110008e-02"), + convert(T, + big"-5.311555834355629559010061596928357525e-03" + - + big"-4.784222621050198909820741390895649698e-03"), + convert(T, + big"5.178250012713127329531367677410650996e-03" + - + big"4.055848062637567925908043629915811671e-03"), + convert(T, + big"4.954639022118682638697706200022961443e-01" + - + big"4.185027999682794463309031355073933444e-01"), + convert(T, + big"-5.999303132737865921441409466809521699e-03" + - + big"-4.381894507474277848407591859322000026e-03"), + convert(T, + big"9.405093434568315929035250835218733824e-02" + - + big"2.712846097324442608251358061215836749e-02"), + convert(T, + big"2.169318087627035072893925375820310602e-01" + - + big"2.952226811394310028003810072027839487e-01")) + + LowStorageRK3SpConstantCache{8, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, + bhat1, bhat2end) +end + +function alg_cache(alg::RDPK3Sp49, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3Sp49ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + LowStorageRK3SpCache( + u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3Sp49, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3Sp49ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function RDPK3Sp510ConstantCache(T, T2) + γ12end = SVector(convert(T, big"4.043660078504695837542588769963326988e-01"), + convert(T, big"-8.503427464263185087039788184485627962e-01"), + convert(T, big"-6.950894167072419998080989313353063399e+00"), + convert(T, big"9.238765225328278557805080247596562995e-01"), + convert(T, big"-2.563178039957404359875124580586147888e+00"), + convert(T, big"2.545744869966347362604059848503340890e-01"), + convert(T, big"3.125831733863168874151935287174374515e-01"), + convert(T, big"-7.007114800567584871263283872289072079e-01"), + convert(T, big"4.839620970980726631935174740648996010e-01")) + + γ22end = SVector(convert(T, big"6.871467069752345566001768382316915820e-01"), + convert(T, big"1.093024760468898686510433898645775908e+00"), + convert(T, big"3.225975382330161123625348062949430509e+00"), + convert(T, big"1.041153700841396427100436517666787823e+00"), + convert(T, big"1.292821488864702752767390075072674807e+00"), + convert(T, big"7.391462769297006312785029455392854586e-01"), + convert(T, big"1.239129257039300081860496157739352186e-01"), + convert(T, big"1.842753479366766790220633908793933781e-01"), + convert(T, big"5.712788942697077644959290025755003720e-02")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"-2.393405159342139386425044844626597490e+00"), + convert(T, big"-1.902854422095986544338294743445530533e+00"), + convert(T, big"-2.820042210583207174321941694153843259e+00"), + convert(T, big"-1.832698464130564949123807896975136336e+00"), + convert(T, big"-2.199094510750697865007677774395365522e-01"), + convert(T, big"-4.082430660384876496971887725512427800e-01"), + convert(T, big"-1.377669791121207993339861855818881150e-01")) + + δ2end = SVector(convert(T, big"-1.331778409133849616712007380176762548e-01"), + convert(T, big"8.260422785246030254485064732649153253e-01"), + convert(T, big"1.513700430513332405798616943654007796e+00"), + convert(T, big"-1.305810063177048110528482211982726539e+00"), + convert(T, big"3.036678789342507704281817524408221954e+00"), + convert(T, big"-1.449458267074592489788800461540171106e+00"), + convert(T, big"3.834313873320957483471400258279635203e+00"), + convert(T, big"4.122293971923324492772059928094971199e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.597883575710995826783320802193635406e-01") + β2end = SVector(convert(T, big"1.777008800169541694837687556103565007e-02"), + convert(T, big"2.481636637328140606807905234325691851e-01"), + convert(T, big"7.941736827560429420202759490815682546e-01"), + convert(T, big"3.885391296871822541486945325814526190e-01"), + convert(T, big"1.455051664264339366757555740296587660e-01"), + convert(T, big"1.587517379462528932413419955691782412e-01"), + convert(T, big"1.650605631567659573994022720500446501e-01"), + convert(T, big"2.118093299943235065178000892467421832e-01"), + convert(T, big"1.559392340339606299335442956580114440e-01")) + + c2end = SVector(convert(T, big"2.597883575710995826783320802193635406e-01"), + convert(T, big"9.904573115730917688557891428202061598e-02"), + convert(T, big"2.155511882303785204133426661931565216e-01"), + convert(T, big"5.007950078421880417512789524851012021e-01"), + convert(T, big"5.592251914858131230054392022144328176e-01"), + convert(T, big"5.449986973408778242805929551952000165e-01"), + convert(T, big"7.615224662599497796472095353126697300e-01"), + convert(T, big"8.427062083059167761623893618875787414e-01"), + convert(T, big"9.152209807185253394871325258038753352e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"5.734588484676193812418453938089759359e-02" + - + big"-2.280102305596364773323878383881954511e-03") + bhat2end = SVector( + convert(T, + big"1.971447518039733870541652912891291496e-02" + - + big"1.407393020823230537861040991952849386e-02"), + convert(T, + big"7.215296605683716720707226840456658773e-02" + - + big"2.332691794172822486743039657924919496e-01"), + convert(T, + big"1.739659489807939956977075317768151880e-01" + - + big"4.808266700465181307162297999657715930e-02"), + convert(T, + big"3.703693600445487815015171515640585668e-01" + - + big"4.119003221139622842134291677033040683e-01"), + convert(T, + big"-1.215599039055065009827765147821222534e-01" + - + big"-1.291461071364752805327361051196128312e-01"), + convert(T, + big"1.180372945491121604465067725859678821e-01" + - + big"1.220746011038579789984601943748468541e-01"), + convert(T, + big"4.155688823364870056536983972605056553e-02" + - + big"4.357858803113387764356338334851554715e-02"), + convert(T, + big"1.227886627910379901351569893551486490e-01" + - + big"1.025076875289905073925255867102192694e-01"), + convert(T, + big"1.456284232223684285998448928597043056e-01" + - + big"1.559392340339606299335442956580114440e-01")) + + LowStorageRK3SpConstantCache{9, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, + bhat1, bhat2end) +end + +function alg_cache(alg::RDPK3Sp510, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3Sp510ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SpCache( + u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3Sp510, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3Sp510ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 3S+ FSAL low storage methods: 3S methods adding another memory location for the embedded method (FSAL version) +# ## References +# - Ranocha, Dalcin, Parsani, Ketcheson (2021) +# Optimized Runge-Kutta Methods with Automatic Step Size Control for +# Compressible Computational Fluid Dynamics +# [arXiv:2104.06836](https://arxiv.org/abs/2104.06836) +@cache struct LowStorageRK3SpFSALCache{ + uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK3SpFSALConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + γ12end::SVector{N, T} # γ11 is always zero + γ22end::SVector{N, T} # γ21 is always one + γ32end::SVector{N, T} # γ31 is always zero + # TODO: γ302 == γ303 == 0 in all emthods implemented below -> possible optimization? + δ2end::SVector{N, T} # δ1 is always one + β1::T + β2end::SVector{N, T} + c2end::SVector{N, T2} # c1 is always zero + bhat1::T + bhat2end::SVector{N, T} + bhatfsal::T +end + +function RDPK3SpFSAL35ConstantCache(T, T2) + γ12end = SVector(convert(T, big"2.587771979725733308135192812685323706e-01"), + convert(T, big"-1.324380360140723382965420909764953437e-01"), + convert(T, big"5.056033948190826045833606441415585735e-02"), + convert(T, big"5.670532000739313812633197158607642990e-01")) + + γ22end = SVector(convert(T, big"5.528354909301389892439698870483746541e-01"), + convert(T, big"6.731871608203061824849561782794643600e-01"), + convert(T, big"2.803103963297672407841316576323901761e-01"), + convert(T, big"5.521525447020610386070346724931300367e-01")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"2.752563273304676380891217287572780582e-01"), + convert(T, big"-8.950526174674033822276061734289327568e-01")) + + δ2end = SVector(convert(T, big"3.407655879334525365094815965895763636e-01"), + convert(T, big"3.414382655003386206551709871126405331e-01"), + convert(T, big"7.229275366787987419692007421895451953e-01"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.300298624518076223899418286314123354e-01") + β2end = SVector(convert(T, big"3.021434166948288809034402119555380003e-01"), + convert(T, big"8.025606185416310937583009085873554681e-01"), + convert(T, big"4.362158943603440930655148245148766471e-01"), + convert(T, big"1.129272530455059129782111662594436580e-01")) + + c2end = SVector(convert(T, big"2.300298624518076223899418286314123354e-01"), + convert(T, big"4.050046072094990912268498160116125481e-01"), + convert(T, big"8.947822893693433545220710894560512805e-01"), + convert(T, big"7.235136928826589010272834603680114769e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"9.484166705035703392326247283838082847e-02" + - + big"1.147935971023541171733601324486904546e-01") + bhat2end = SVector( + convert(T, + big"1.726371339430353766966762629176676070e-01" + - + big"8.933442853113315592708384523126474636e-02"), + convert(T, + big"3.998243189084371024483169698618455770e-01" + - + big"4.355871025008616992483722693795608738e-01"), + convert(T, + big"1.718016807580178450618829007973835152e-01" + - + big"2.473576188201451146729725866810402672e-01"), + convert(T, + big"5.881914422155740300718268359027168467e-02" + - + big"1.129272530455059129782111662594436580e-01")) + bhatfsal = convert(T, big"1.020760551185952388626787099944507877e-01") + + LowStorageRK3SpFSALConstantCache{4, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, + c2end, bhat1, bhat2end, bhatfsal) +end + +function alg_cache(alg::RDPK3SpFSAL35, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3SpFSAL35ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SpFSALCache(u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3SpFSAL35, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3SpFSAL35ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function RDPK3SpFSAL49ConstantCache(T, T2) + γ12end = SVector(convert(T, big"-4.655641447335068552684422206224169103e+00"), + convert(T, big"-7.720265099645871829248487209517314217e-01"), + convert(T, big"-4.024436690519806086742256154738379161e+00"), + convert(T, big"-2.129676284018530966221583708648634733e-02"), + convert(T, big"-2.435022509790109546199372365866450709e+00"), + convert(T, big"1.985627297131987000579523283542615256e-02"), + convert(T, big"-2.810791146791038566946663374735713961e-01"), + convert(T, big"1.689434168754859644351230590422137972e-01")) + + γ22end = SVector(convert(T, big"2.499262792574495009336242992898153462e+00"), + convert(T, big"5.866820377718875577451517985847920081e-01"), + convert(T, big"1.205146086523094569925592464380295241e+00"), + convert(T, big"3.474793722186732780030762737753849272e-01"), + convert(T, big"1.321346060965113109321230804210670518e+00"), + convert(T, big"3.119636464694193615946633676950358444e-01"), + convert(T, big"4.351419539684379261368971206040518552e-01"), + convert(T, big"2.359698130028753572503744518147537768e-01")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"7.621006678721315291614677352949377871e-01"), + convert(T, big"-1.981182504339400567765766904309673119e-01"), + convert(T, big"-6.228959218699007450469629366684127462e-01"), + convert(T, big"-3.752248380775956442989480369774937099e-01"), + convert(T, big"-3.355438309135169811915662336248989661e-01"), + convert(T, big"-4.560955005031121479972862973705108039e-02")) + + δ2end = SVector(convert(T, big"1.262923876648114432874834923838556100e+00"), + convert(T, big"7.574967189685911558308119415539596711e-01"), + convert(T, big"5.163589453140728104667573195005629833e-01"), + convert(T, big"-2.746327421802609557034437892013640319e-02"), + convert(T, big"-4.382673178127944142238606608356542890e-01"), + convert(T, big"1.273587294602656522645691372699677063e+00"), + convert(T, big"-6.294740283927400326554066998751383342e-01"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.836343005184365275160654678626695428e-01") + β2end = SVector(convert(T, big"9.736500104654741223716056170419660217e-01"), + convert(T, big"3.382359225242515288768487569778320563e-01"), + convert(T, big"-3.584943611106183357043212309791897386e-01"), + convert(T, big"-4.113944068471528211627210454497620358e-03"), + convert(T, big"1.427968894048586363415504654313371031e+00"), + convert(T, big"1.808470948394314017665968411915568633e-02"), + convert(T, big"1.605770645946802213926893453819236685e-01"), + convert(T, big"2.952227015964591648775833803635147962e-01")) + + c2end = SVector(convert(T, big"2.836343005184365275160654678626695428e-01"), + convert(T, big"5.484076570002894365286665352032296535e-01"), + convert(T, big"3.687228761669438493478872632332010073e-01"), + convert(T, big"-6.806126440140844191258463830024463902e-01"), + convert(T, big"3.518526124230705801739919476290327750e-01"), + convert(T, big"1.665941994879593315477304663913129942e+00"), + convert(T, big"9.715279295934715835299192116436237065e-01"), + convert(T, big"9.051569840159589594903399929316959062e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"2.483675912451591196775756814283216443e-02" + - + big"4.503732627263753698356970706617404465e-02") + bhat2end = SVector( + convert(T, + big"1.866327774562103796990092260942180726e-01" + - + big"1.859217303699847950262276860012454333e-01"), + convert(T, + big"5.671080795936984495604436622517631183e-02" + - + big"3.329729672569717599759560403851202805e-02"), + convert(T, + big"-3.447695439149287702616943808570747099e-03" + - + big"-4.784204180958975587114459316829942677e-03"), + convert(T, + big"3.602245056516636472203469198006404016e-03" + - + big"4.055835961031310727671557609188874328e-03"), + convert(T, + big"4.545570622145088936800484247980581766e-01" + - + big"4.185027772596074197662616795629003544e-01"), + convert(T, + big"-2.434665289427612407531544765622888855e-04" + - + big"-4.381901968919326084347037216500072323e-03 "), + convert(T, + big"6.642755361103549971517945063138312147e-02" + - + big"2.712843796446089829255188189179448399e-02"), + convert(T, + big"1.613697079523505006226025497715177578e-01" + - + big"2.952227015964591648775833803635147962e-01")) + bhatfsal = convert(T, big"4.955424859358438183052504342394102722e-02") + + LowStorageRK3SpFSALConstantCache{8, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, + c2end, bhat1, bhat2end, bhatfsal) +end + +function alg_cache(alg::RDPK3SpFSAL49, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3SpFSAL49ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SpFSALCache(u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3SpFSAL49, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3SpFSAL49ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function RDPK3SpFSAL510ConstantCache(T, T2) + γ12end = SVector(convert(T, big"4.043660121685749695640462197806189975e-01"), + convert(T, big"-8.503427289575839690883191973980814832e-01"), + convert(T, big"-6.950894175262117526410215315179482885e+00"), + convert(T, big"9.238765192731084931855438934978371889e-01"), + convert(T, big"-2.563178056509891340215942413817786020e+00"), + convert(T, big"2.545744879365226143946122067064118430e-01"), + convert(T, big"3.125831707411998258746812355492206137e-01"), + convert(T, big"-7.007114414440507927791249989236719346e-01"), + convert(T, big"4.839621016023833375810172323297465039e-01")) + + γ22end = SVector(convert(T, big"6.871467028161416909922221357014564412e-01"), + convert(T, big"1.093024748914750833700799552463885117e+00"), + convert(T, big"3.225975379607193001678365742708874597e+00"), + convert(T, big"1.041153702510101386914019859778740444e+00"), + convert(T, big"1.292821487912164945157744726076279306e+00"), + convert(T, big"7.391462755788122847651304143259254381e-01"), + convert(T, big"1.239129251371800313941948224441873274e-01"), + convert(T, big"1.842753472370123193132193302369345580e-01"), + convert(T, big"5.712788998796583446479387686662738843e-02")) + + γ32end = SVector(convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00"), + convert(T, big"-2.393405133244194727221124311276648940e+00"), + convert(T, big"-1.902854422421760920850597670305403139e+00"), + convert(T, big"-2.820042207399977261483046412236557428e+00"), + convert(T, big"-1.832698465277380999601896111079977378e+00"), + convert(T, big"-2.199094483084671192328083958346519535e-01"), + convert(T, big"-4.082430635847870963724591602173546218e-01"), + convert(T, big"-1.377669797880289713535665985132703979e-01")) + + δ2end = SVector(convert(T, big"-1.331778419508803397033287009506932673e-01"), + convert(T, big"8.260422814750207498262063505871077303e-01"), + convert(T, big"1.513700425755728332485300719652378197e+00"), + convert(T, big"-1.305810059935023735972298885749903694e+00"), + convert(T, big"3.036678802924163246003321318996156380e+00"), + convert(T, big"-1.449458274398895177922690618003584514e+00"), + convert(T, big"3.834313899176362315089976408899373409e+00"), + convert(T, big"4.122293760012985409330881631526514714e+00"), + convert(T, big"0.000000000000000000000000000000000000e+00")) + + β1 = convert(T, big"2.597883554788674084039539165398464630e-01") + β2end = SVector(convert(T, big"1.777008889438867858759149597539211023e-02"), + convert(T, big"2.481636629715501931294746189266601496e-01"), + convert(T, big"7.941736871152005775821844297293296135e-01"), + convert(T, big"3.885391285642019129575902994397298066e-01"), + convert(T, big"1.455051657916305055730603387469193768e-01"), + convert(T, big"1.587517385964749337690916959584348979e-01"), + convert(T, big"1.650605617880053419242434594242509601e-01"), + convert(T, big"2.118093284937153836908655490906875007e-01"), + convert(T, big"1.559392342362059886106995325687547506e-01")) + + c2end = SVector(convert(T, big"2.597883554788674084039539165398464630e-01"), + convert(T, big"9.904573247592460887087003212056568980e-02"), + convert(T, big"2.155511890524058691860390281856497503e-01"), + convert(T, big"5.007950088969676776844289399972611534e-01"), + convert(T, big"5.592251911688643533787800688765883636e-01"), + convert(T, big"5.449986978853637084972622392134732553e-01"), + convert(T, big"7.615224694532590139829150720490417596e-01"), + convert(T, big"8.427062083267360939805493320684741215e-01"), + convert(T, big"9.152209805057669959657927210873423883e-01")) + + # difference of the usual bhat coefficients and the main b coefficients + bhat1 = convert(T, + big"-2.019255440012066080909442770590267512e-02" + - + big"-2.280100321836980811830528665041532799e-03") + bhat2end = SVector( + convert(T, + big"2.737903480959184339932730854141598275e-02" + - + big"1.407393115790186300730580636032878435e-02"), + convert(T, + big"3.028818636145965534365173822296811090e-01" + - + big"2.332691775508456597719992034291118324e-01"), + convert(T, + big"-3.656843880622222190071445247906780540e-02" + - + big"4.808266741353862546318531020856621860e-02"), + convert(T, + big"3.982664774676767729863101188528827405e-01" + - + big"4.119003217706951892385733111000873172e-01"), + convert(T, + big"-5.715959421140685436681459970502471634e-02" + - + big"-1.291461067807736321056740833501596735e-01"), + convert(T, + big"9.849855103848558320961101178888983150e-02" + - + big"1.220746013848710098878384114422516148e-01"), + convert(T, + big"6.654601552456084978615342374581437947e-02" + - + big"4.357858583174420432201228508067333299e-02"), + convert(T, + big"9.073479542748112726465375642050504556e-02" + - + big"1.025076877568080726158907518254273554e-01"), + convert(T, + big"8.432289325330803924891866923939606351e-02" + - + big"1.559392342362059886106995325687547506e-01")) + bhatfsal = convert(T, big"4.529095628204896774513180907141004447e-02") + + LowStorageRK3SpFSALConstantCache{9, T, T2}(γ12end, γ22end, γ32end, δ2end, β1, β2end, + c2end, bhat1, bhat2end, bhatfsal) +end + +function alg_cache(alg::RDPK3SpFSAL510, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + utilde = zero(u) + tmp = zero(u) + if eltype(u) === uEltypeNoUnits + atmp = utilde # alias the vectors to save memory + else + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + end + tab = RDPK3SpFSAL510ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3SpFSALCache(u, uprev, fsalfirst, k, utilde, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::RDPK3SpFSAL510, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RDPK3SpFSAL510ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 2R+ low storage methods introduced by van der Houwen +@cache struct LowStorageRK2RPCache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + gprev::uType + fsalfirst::rateType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK2RPConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + Aᵢ::SVector{N, T} + Bₗ::T + B̂ₗ::T + Bᵢ::SVector{N, T} + B̂ᵢ::SVector{N, T} + Cᵢ::SVector{N, T2} +end + +function CKLLSRK43_2ConstantCache(T, T2) + A1 = convert(T, Int128(11847461282814) // Int128(36547543011857)) + A2 = convert(T, Int128(3943225443063) // Int128(7078155732230)) + A3 = convert(T, Int128(-346793006927) // Int128(4029903576067)) + Aᵢ = SVector(A1, A2, A3) + + B1 = convert(T, Int128(1017324711453) // Int128(9774461848756)) + B2 = convert(T, Int128(8237718856693) // Int128(13685301971492)) + B3 = convert(T, Int128(57731312506979) // Int128(19404895981398)) + Bᵢ = SVector(B1, B2, B3) + + B̂1 = convert(T, Int128(15763415370699) // Int128(46270243929542)) + B̂2 = convert(T, Int128(514528521746) // Int128(5659431552419)) + B̂3 = convert(T, Int128(27030193851939) // Int128(9429696342944)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3) + + Bₗ = convert(T, Int128(-101169746363290) // Int128(37734290219643)) + B̂ₗ = convert(T, Int128(-69544964788955) // Int128(30262026368149)) + + C1 = convert(T2, Int128(11847461282814) // Int128(36547543011857)) # A1 + C2 = convert(T2, Int128(2079258608735161403527719) // Int128(3144780143828896577027540)) # A2 + B1 + C3 = convert(T2, + Int128(41775191021672206476512620310545281003) // + Int128(67383242951014563804622635478530729598)) # A3 + B1 + B2 + Cᵢ = SVector(C1, C2, C3) + + LowStorageRK2RPConstantCache{3, T, T2}(Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK43_2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK43_2ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2RPCache(u, uprev, k, gprev, fsalfirst, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK43_2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK43_2ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK54_3CConstantCache(T, T2) + A1 = convert(T, BigInt(970286171893) // BigInt(4311952581923)) + A2 = convert(T, BigInt(6584761158862) // BigInt(12103376702013)) + A3 = convert(T, BigInt(2251764453980) // BigInt(15575788980749)) + A4 = convert(T, BigInt(26877169314380) // BigInt(34165994151039)) + Aᵢ = SVector(A1, A2, A3, A4) + + B1 = convert(T, BigInt(1153189308089) // BigInt(22510343858157)) + B2 = convert(T, BigInt(1772645290293) // BigInt(4653164025191)) + B3 = convert(T, BigInt(-1672844663538) // BigInt(4480602732383)) + B4 = convert(T, BigInt(2114624349019) // BigInt(3568978502595)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(1016888040809) // BigInt(7410784769900)) + B̂2 = convert(T, BigInt(11231460423587) // BigInt(58533540763752)) + B̂3 = convert(T, BigInt(-1563879915014) // BigInt(6823010717585)) + B̂4 = convert(T, BigInt(606302364029) // BigInt(971179775848)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(5198255086312) // BigInt(14908931495163)) + B̂ₗ = convert(T, BigInt(1097981568119) // BigInt(3980877426909)) + + C1 = convert(T2, BigInt(970286171893) // BigInt(4311952581923)) # A1 + C2 = convert(T2, + BigInt(18020302501594987297224499) // BigInt(30272352378568762325374449)) # A2 + B1 + C3 = convert(T2, + BigInt(940957347754451928235896289983310398260) // + BigInt(1631475460071027605339136597003329167263)) # A3 + B1 + B2 + C4 = convert(T2, + BigInt(8054848232572758807908657851968985615984276476412066) // + BigInt(8139155613487734148190408375391604039319069461908135)) # A4 + B1 + B2 + B3 + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK2RPConstantCache{4, T, T2}(Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3CConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2RPCache(u, uprev, k, gprev, fsalfirst, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3CConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK95_4SConstantCache(T, T2) + A1 = convert(T, BigInt(1107026461565) // BigInt(5417078080134)) + A2 = convert(T, BigInt(38141181049399) // BigInt(41724347789894)) + A3 = convert(T, BigInt(493273079041) // BigInt(11940823631197)) + A4 = convert(T, BigInt(1851571280403) // BigInt(6147804934346)) + A5 = convert(T, BigInt(11782306865191) // BigInt(62590030070788)) + A6 = convert(T, BigInt(9452544825720) // BigInt(13648368537481)) + A7 = convert(T, BigInt(4435885630781) // BigInt(26285702406235)) + A8 = convert(T, BigInt(2357909744247) // BigInt(11371140753790)) + Aᵢ = SVector(A1, A2, A3, A4, A5, A6, A7, A8) + + B1 = convert(T, BigInt(2274579626619) // BigInt(23610510767302)) + B2 = convert(T, BigInt(693987741272) // BigInt(12394497460941)) + B3 = convert(T, BigInt(-347131529483) // BigInt(15096185902911)) + B4 = convert(T, BigInt(1144057200723) // BigInt(32081666971178)) + B5 = convert(T, BigInt(1562491064753) // BigInt(11797114684756)) + B6 = convert(T, BigInt(13113619727965) // BigInt(44346030145118)) + B7 = convert(T, BigInt(393957816125) // BigInt(7825732611452)) + B8 = convert(T, BigInt(720647959663) // BigInt(6565743875477)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7, B8) + + B̂1 = convert(T, BigInt(266888888871) // BigInt(3040372307578)) + B̂2 = convert(T, BigInt(34125631160) // BigInt(2973680843661)) + B̂3 = convert(T, BigInt(-653811289250) // BigInt(9267220972999)) + B̂4 = convert(T, BigInt(323544662297) // BigInt(2461529853637)) + B̂5 = convert(T, BigInt(1105885670474) // BigInt(4964345317203)) + B̂6 = convert(T, BigInt(1408484642121) // BigInt(8758221613943)) + B̂7 = convert(T, BigInt(1454774750537) // BigInt(11112645198328)) + B̂8 = convert(T, BigInt(772137014323) // BigInt(4386814405182)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7, B̂8) + + Bₗ = convert(T, BigInt(3559252274877) // BigInt(14424734981077)) + B̂ₗ = convert(T, BigInt(277420604269) // BigInt(1857595682219)) + + C1 = convert(T2, BigInt(1107026461565) // BigInt(5417078080134)) # A1 + C2 = convert(T2, + BigInt(248859529315327119359384971) // BigInt(246283290687986423455311497)) # A2 + B1 + C3 = convert(T2, + BigInt(676645811244741430568548054467096184193) // + BigInt(3494367591912647069105975861901917224854)) # A3 + B1 + B2 + C4 = convert(T2, + BigInt(974370561662349106845723178377944301517533305964589) // + BigInt(2263290880944514209862892217007179742168288737673791)) # A4 + B1 + B2 + B3 + C5 = convert(T2, + BigInt(23738915426186839814576142955255044211724736499516359049188590711) // + BigInt(67203160149331519751012175988216621571869262839903428488408759604)) # A5 + B1 + B2 + B3 + B4 + C6 = convert(T2, + BigInt(1882683585832901544671586749377753597775777511029847145277760106172106584376955) // + BigInt(1901663903553486696887572033100456166564493852721284994300276200102719954709068)) # A6 + B1 + B2 + B3 + B4 + B5 + C7 = convert(T2, + BigInt(61872982955093233917984290421186995265732234396821660871734841970091372539489172106504162637) // + BigInt(81207728164913218881758751120099941603350662788460257311895072645631357391473675997419584220)) # A7 + B1 + B2 + B3 + B4 + B5 + B6 + C8 = convert(T2, + BigInt(197565042693102647130189450792520184956129841555961940530192020871289515369046683661585184411130637357) // + BigInt(232196202198018941876505157326935602816917261769279531369710269478309137067357703513986211472070374865)) # A8 + B1 + B2 + B3 + B4 + B5 + B6 + B7 + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7, C8) + + LowStorageRK2RPConstantCache{8, T, T2}(Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK95_4S, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK95_4SConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2RPCache(u, uprev, k, gprev, fsalfirst, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK95_4S, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK95_4SConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK95_4CConstantCache(T, T2) + A1 = convert(T, BigInt(2756167973529) // BigInt(16886029417639)) + A2 = convert(T, BigInt(11436141375279) // BigInt(13592993952163)) + A3 = convert(T, BigInt(88551658327) // BigInt(2352971381260)) + A4 = convert(T, BigInt(1882111988787) // BigInt(5590444193957)) + A5 = convert(T, BigInt(846820081679) // BigInt(4754706910573)) + A6 = convert(T, BigInt(4475289710031) // BigInt(6420120086209)) + A7 = convert(T, BigInt(118394748311) // BigInt(9144450320350)) + A8 = convert(T, BigInt(3307377157135) // BigInt(13111544596386)) + Aᵢ = SVector(A1, A2, A3, A4, A5, A6, A7, A8) + + B1 = convert(T, BigInt(1051460336009) // BigInt(14326298067773)) + B2 = convert(T, BigInt(930517604889) // BigInt(7067438519321)) + B3 = convert(T, BigInt(-311910530565) // BigInt(11769786407153)) + B4 = convert(T, BigInt(-410144036239) // BigInt(7045999268647)) + B5 = convert(T, BigInt(16692278975653) // BigInt(83604524739127)) + B6 = convert(T, BigInt(3777666801280) // BigInt(13181243438959)) + B7 = convert(T, BigInt(286682614203) // BigInt(12966190094317)) + B8 = convert(T, BigInt(3296161604512) // BigInt(22629905347183)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7, B8) + + B̂1 = convert(T, BigInt(3189770262221) // BigInt(35077884776239)) + B̂2 = convert(T, BigInt(780043871774) // BigInt(11919681558467)) + B̂3 = convert(T, BigInt(-483824475979) // BigInt(5387739450692)) + B̂4 = convert(T, BigInt(1306553327038) // BigInt(9528955984871)) + B̂5 = convert(T, BigInt(6521106697498) // BigInt(22565577506855)) + B̂6 = convert(T, BigInt(1400555694605) // BigInt(19784728594468)) + B̂7 = convert(T, BigInt(1183541508418) // BigInt(13436305181271)) + B̂8 = convert(T, BigInt(3036254792728) // BigInt(15493572606329)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7, B̂8) + + Bₗ = convert(T, BigInt(2993490409874) // BigInt(13266828321767)) + B̂ₗ = convert(T, BigInt(638483435745) // BigInt(4187244659458)) + + C1 = convert(T2, BigInt(2756167973529) // BigInt(16886029417639)) # A1 + C2 = convert(T2, + BigInt(178130064075748009421121134) // BigInt(194737282992122861693942999)) # A2 + B1 + C3 = convert(T2, + BigInt(57818276708998807530478158133449099851) // + BigInt(238238895426494403638887583424360627580)) # A3 + B1 + B2 + C4 = convert(T2, + BigInt(3432454166457135667348375590572529790194124848059104) // + BigInt(6662096512485931545803670383440459769502981926779993)) # A4 + B1 + B2 + B3 + C5 = convert(T2, + BigInt(11915126765643872062053118401193741919814944004335534493046474237) // + BigInt(39923715169802034300462756237193519081954994679332637422466438119)) # A5 + B1 + B2 + B3 + B4 + C6 = convert(T2, + BigInt(4583883621300589683158355859163890943947800555246686854224916208836514024614442) // + BigInt(4506922925096139856045533451931734406235454975594364558624038359246205017801029)) # A6 + B1 + B2 + B3 + B4 + B5 + C7 = convert(T2, + BigInt(52423219056629312880725209686636192777075511202228566787042655312097949192300218484424118619) // + BigInt(84615702680158836756876794083943762639542619835321175569533203672153042594634924742431352650)) # A7 + B1 + B2 + B3 + B4 + B5 + B6 + C8 = convert(T2, + BigInt(1385843715228499555828057735261132084759031703937678116167963792224108372724503731226480538087331079769069) // + BigInt(1573111845759510782008384284066606688388217112071821912231287750254246452350240904652428530379336814559998)) # A8 + B1 + B2 + B3 + B4 + B5 + B6 + B7 + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7, C8) + + LowStorageRK2RPConstantCache{8, T, T2}(Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK95_4C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK95_4CConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2RPCache(u, uprev, k, gprev, fsalfirst, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK95_4C, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK95_4CConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK95_4MConstantCache(T, T2) + A1 = convert(T, BigInt(5573095071601) // BigInt(11304125995793)) + A2 = convert(T, BigInt(315581365608) // BigInt(4729744040249)) + A3 = convert(T, BigInt(8734064225157) // BigInt(30508564569118)) + A4 = convert(T, BigInt(6457785058448) // BigInt(14982850401353)) + A5 = convert(T, BigInt(5771559441664) // BigInt(18187997215013)) + A6 = convert(T, BigInt(1906712129266) // BigInt(6681214991155)) + A7 = convert(T, BigInt(311585568784) // BigInt(2369973437185)) + A8 = convert(T, BigInt(-4840285693886) // BigInt(7758383361725)) + Aᵢ = SVector(A1, A2, A3, A4, A5, A6, A7, A8) + + B1 = convert(T, BigInt(549666665015) // BigInt(5899839355879)) + B2 = convert(T, BigInt(-548816778320) // BigInt(9402908589133)) + B3 = convert(T, BigInt(1672704946363) // BigInt(13015471661974)) + B4 = convert(T, BigInt(1025420337373) // BigInt(5970204766762)) + B5 = convert(T, BigInt(1524419752016) // BigInt(6755273790179)) + B6 = convert(T, BigInt(-10259399787359) // BigInt(43440802207630)) + B7 = convert(T, BigInt(4242280279850) // BigInt(10722460893763)) + B8 = convert(T, BigInt(1887552771913) // BigInt(6099058196803)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7, B8) + + B̂1 = convert(T, BigInt(330911065672) // BigInt(9937126492277)) + B̂2 = convert(T, BigInt(-872991930418) // BigInt(11147305689291)) + B̂3 = convert(T, BigInt(2575378033706) // BigInt(14439313202205)) + B̂4 = convert(T, BigInt(3046892121673) // BigInt(11013392356255)) + B̂5 = convert(T, BigInt(1780184658016) // BigInt(8929499316295)) + B̂6 = convert(T, BigInt(10265149063) // BigInt(2098741126425)) + B̂7 = convert(T, BigInt(1643090076625) // BigInt(4891294770654)) + B̂8 = convert(T, BigInt(116106750067) // BigInt(3955800826265)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7, B̂8) + + Bₗ = convert(T, BigInt(-453873186647) // BigInt(15285235680030)) + B̂ₗ = convert(T, BigInt(866868642257) // BigInt(42331321870877)) + + C1 = convert(T2, BigInt(5573095071601) // BigInt(11304125995793)) + C2 = convert(T2, + BigInt(4461661993774357683398167) // BigInt(27904730031895199210773871)) + C3 = convert(T2, + BigInt(543425730194107827015264404954831354769) // + BigInt(1692482454734045499140692116457071506026)) + C4 = convert(T2, + BigInt(6429586327013850295560537918723231687699697140756067) // + BigInt(10818243561353065593628044468492745774799533452459554)) + C5 = convert(T2, + BigInt(555984804780268998022260997164198311752115182012221553157164786) // + BigInt(852213854337283773231630192518719827415190771786411558523853399)) + C6 = convert(T2, + BigInt(1789345671284476461332539715762783748132668223013904373945129499237446392572) // + BigInt(2114764997945705573761804541148983827155257005191540481884326639410208291635)) + C7 = convert(T2, + BigInt(2972211964132922642906704796208250552795647483819924111704054115070043529037601892705217) // + BigInt(6517454043294174770082798998332814729652497865130816822916618330047242844192616374937270)) + C8 = convert(T2, + BigInt(22038106775746116973750004935225594022265950105933360206617843987546593773108577078867914238620973639) // + BigInt(228770596964454885481304478061363897900267080665965044117230250287302271092811814450282133504194141850)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7, C8) + + LowStorageRK2RPConstantCache{8, T, T2}(Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK95_4M, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK95_4MConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK2RPCache(u, uprev, k, gprev, fsalfirst, tmp, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK95_4M, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK95_4MConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 3R+ low storage methods introduced by van der Houwen +@cache struct LowStorageRK3RPCache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + uᵢ₋₁::uType + uᵢ₋₂::uType + fᵢ₋₂::rateType + gprev::uType + fsalfirst::rateType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK3RPConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + Aᵢ₁::SVector{N, T} + Aᵢ₂::SVector{N, T} + Bₗ::T + B̂ₗ::T + Bᵢ::SVector{N, T} + B̂ᵢ::SVector{N, T} + Cᵢ::SVector{N, T2} +end + +function CKLLSRK54_3C_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(2365592473904) // BigInt(8146167614645)) + A₁2 = convert(T, BigInt(4278267785271) // BigInt(6823155464066)) + A₁3 = convert(T, BigInt(2789585899612) // BigInt(8986505720531)) + A₁4 = convert(T, BigInt(15310836689591) // BigInt(24358012670437)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(-722262345248) // BigInt(10870640012513)) + A₂3 = convert(T, BigInt(1365858020701) // BigInt(8494387045469)) + A₂4 = convert(T, BigInt(3819021186) // BigInt(2763618202291)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4) + + B1 = convert(T, BigInt(846876320697) // BigInt(6523801458457)) + B2 = convert(T, BigInt(3032295699695) // BigInt(12397907741132)) + B3 = convert(T, BigInt(612618101729) // BigInt(6534652265123)) + B4 = convert(T, BigInt(1155491934595) // BigInt(2954287928812)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(1296459667021) // BigInt(9516889378644)) + B̂2 = convert(T, BigInt(2599004989233) // BigInt(11990680747819)) + B̂3 = convert(T, BigInt(1882083615375) // BigInt(8481715831096)) + B̂4 = convert(T, BigInt(1577862909606) // BigInt(5567358792761)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(707644755468) // BigInt(5028292464395)) + B̂ₗ = convert(T, BigInt(328334985361) // BigInt(2316973589007)) + + C1 = convert(T2, BigInt(2365592473904) // BigInt(8146167614645)) + C2 = convert(T2, + BigInt(41579400703344293287237655) // BigInt(74172066799272566561857858)) + C3 = convert(T2, + BigInt(299308060739053880467044545349561265546) // + BigInt(497993456493513966629488516767096447823)) + C4 = convert(T2, + BigInt(5468330126750791548369684419304733938034170906513585) // + BigInt(5444638279732761024893610553331663911104849888809108)) + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK3RPConstantCache{4, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3C_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3C_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3C_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3C_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK54_3M_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(17396840518954) // BigInt(49788467287365)) + A₁2 = convert(T, BigInt(21253110367599) // BigInt(14558944785238)) + A₁3 = convert(T, BigInt(4293647616769) // BigInt(14519312872408)) + A₁4 = convert(T, BigInt(-8941886866937) // BigInt(7464816931160)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(-12587430488023) // BigInt(11977319897242)) + A₂3 = convert(T, BigInt(6191878339181) // BigInt(13848262311063)) + A₂4 = convert(T, BigInt(19121624165801) // BigInt(12321025968027)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4) + + B1 = convert(T, BigInt(1977388745448) // BigInt(17714523675943)) + B2 = convert(T, BigInt(6528140725453) // BigInt(14879534818174)) + B3 = convert(T, BigInt(4395900531415) // BigInt(55649460397719)) + B4 = convert(T, BigInt(6567440254656) // BigInt(15757960182571)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(390601394181) // BigInt(3503051559916)) + B̂2 = convert(T, BigInt(31150720071161) // BigInt(68604711794052)) + B̂3 = convert(T, BigInt(416927665232) // BigInt(6953044279741)) + B̂4 = convert(T, BigInt(3879867616328) // BigInt(8869216637007)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(-436008689643) // BigInt(9453681332953)) + B̂ₗ = convert(T, BigInt(-163749046041) // BigInt(2599987820560)) + + C1 = convert(T2, BigInt(17396840518954) // BigInt(49788467287365)) + C2 = convert(T2, BigInt(2546271293606266795002053) // BigInt(6227754966395669782804057)) + C3 = convert(T2, + BigInt(3043453778831534771251734214272440269577) // + BigInt(3561810617861654942925591050154818470872)) + C4 = convert(T2, + BigInt(10963106193663894855575270257133723083246622141340761) // + BigInt(12121458300971454511596914396147459030814063072954120)) + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK3RPConstantCache{4, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3M_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3M_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3M_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3M_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK54_3N_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(4745337637855) // BigInt(22386579876409)) + A₁2 = convert(T, BigInt(6808157035527) // BigInt(13197844641179)) + A₁3 = convert(T, BigInt(4367509502613) // BigInt(10454198590847)) + A₁4 = convert(T, BigInt(1236962429870) // BigInt(3429868089329)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(546509042554) // BigInt(9152262712923)) + A₂3 = convert(T, BigInt(625707605167) // BigInt(5316659119056)) + A₂4 = convert(T, BigInt(582400652113) // BigInt(7078426004906)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4) + + B1 = convert(T, BigInt(314199625218) // BigInt(7198350928319)) + B2 = convert(T, BigInt(6410344372641) // BigInt(17000082738695)) + B3 = convert(T, BigInt(292278564125) // BigInt(5593752632744)) + B4 = convert(T, BigInt(5010207514426) // BigInt(21876007855139)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(1276689330531) // BigInt(10575835502045)) + B̂2 = convert(T, BigInt(267542835879) // BigInt(1241767155676)) + B̂3 = convert(T, BigInt(1564039648689) // BigInt(9024646069760)) + B̂4 = convert(T, BigInt(3243722451631) // BigInt(13364844673806)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(5597675544274) // BigInt(18784428342765)) + B̂ₗ = convert(T, BigInt(606464709716) // BigInt(2447238536635)) + + C1 = convert(T2, BigInt(4745337637855) // BigInt(22386579876409)) + C2 = convert(T2, + BigInt(6320253019873211389522417) // BigInt(10980921945492108365568747)) + C3 = convert(T2, + BigInt(231699760563456147635097088564862719039) // + BigInt(400094496217566390613617613962197753808)) + C4 = convert(T2, + BigInt(2565873674791335200443549967376635530873909687156071) // + BigInt(2970969302106648098855751120425897741072516011514170)) + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK3RPConstantCache{4, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3N_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3N_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3N_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3N_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK85_4C_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(141236061735) // BigInt(3636543850841)) + A₁2 = convert(T, BigInt(7367658691349) // BigInt(25881828075080)) + A₁3 = convert(T, BigInt(6185269491390) // BigInt(13597512850793)) + A₁4 = convert(T, BigInt(2669739616339) // BigInt(18583622645114)) + A₁5 = convert(T, BigInt(42158992267337) // BigInt(9664249073111)) + A₁6 = convert(T, BigInt(970532350048) // BigInt(4459675494195)) + A₁7 = convert(T, BigInt(1415616989537) // BigInt(7108576874996)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5, A₁6, A₁7) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(-343061178215) // BigInt(2523150225462)) + A₂3 = convert(T, BigInt(-4057757969325) // BigInt(18246604264081)) + A₂4 = convert(T, BigInt(1415180642415) // BigInt(13311741862438)) + A₂5 = convert(T, BigInt(-93461894168145) // BigInt(25333855312294)) + A₂6 = convert(T, BigInt(7285104933991) // BigInt(14106269434317)) + A₂7 = convert(T, BigInt(-4825949463597) // BigInt(16828400578907)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5, A₂6, A₂7) + + B1 = convert(T, BigInt(514862045033) // BigInt(4637360145389)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(0) // BigInt(1)) + B4 = convert(T, BigInt(0) // BigInt(1)) + B5 = convert(T, BigInt(2561084526938) // BigInt(7959061818733)) + B6 = convert(T, BigInt(4857652849) // BigInt(7350455163355)) + B7 = convert(T, BigInt(1059943012790) // BigInt(2822036905401)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7) + + B̂1 = convert(T, BigInt(1269299456316) // BigInt(16631323494719)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(2153976949307) // BigInt(22364028786708)) + B̂4 = convert(T, BigInt(2303038467735) // BigInt(18680122447354)) + B̂5 = convert(T, BigInt(7354111305649) // BigInt(15643939971922)) + B̂6 = convert(T, BigInt(768474111281) // BigInt(10081205039574)) + B̂7 = convert(T, BigInt(3439095334143) // BigInt(10786306938509)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7) + + Bₗ = convert(T, BigInt(2987336121747) // BigInt(15645656703944)) + B̂ₗ = convert(T, BigInt(-3808726110015) // BigInt(23644487528593)) + + C1 = convert(T2, BigInt(141236061735) // BigInt(3636543850841)) + C2 = convert(T2, + BigInt(4855329627204641469273019) // BigInt(32651870171503411731843480)) + C3 = convert(T2, + BigInt(395246570619540395679764439681768625174) // + BigInt(1150568172675067443707820382013045349637)) + C4 = convert(T2, + BigInt(103533040647279909858308372897770021461) // + BigInt(286797987459862321650077169609703051387)) + C5 = convert(T2, + BigInt(890342029406775514852349518244920625309) // + BigInt(1135377348321966192554675673174478190626)) + C6 = convert(T2, + BigInt(82180664649829640456237722943611531408) // + BigInt(97244490215364259564723087293866304345)) + C7 = convert(T2, + BigInt(1524044277359326675923410465291452002169116939509651) // + BigInt(4415279581486844959297591640758696961331751174567964)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7) + + LowStorageRK3RPConstantCache{7, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK85_4C_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK85_4C_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK85_4C_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK85_4C_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK85_4M_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(967290102210) // BigInt(6283494269639)) + A₁2 = convert(T, BigInt(852959821520) // BigInt(5603806251467)) + A₁3 = convert(T, BigInt(8043261511347) // BigInt(8583649637008)) + A₁4 = convert(T, BigInt(-115941139189) // BigInt(8015933834062)) + A₁5 = convert(T, BigInt(2151445634296) // BigInt(7749920058933)) + A₁6 = convert(T, BigInt(15619711431787) // BigInt(74684159414562)) + A₁7 = convert(T, BigInt(12444295717883) // BigInt(11188327299274)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5, A₁6, A₁7) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(475331134681) // BigInt(7396070923784)) + A₂3 = convert(T, BigInt(-8677837986029) // BigInt(16519245648862)) + A₂4 = convert(T, BigInt(2224500752467) // BigInt(10812521810777)) + A₂5 = convert(T, BigInt(1245361422071) // BigInt(3717287139065)) + A₂6 = convert(T, BigInt(1652079198131) // BigInt(3788458824028)) + A₂7 = convert(T, BigInt(-5225103653628) // BigInt(8584162722535)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5, A₂6, A₂7) + + B1 = convert(T, BigInt(83759458317) // BigInt(1018970565139)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(0) // BigInt(1)) + B4 = convert(T, BigInt(0) // BigInt(1)) + B5 = convert(T, BigInt(6968891091250) // BigInt(16855527649349)) + B6 = convert(T, BigInt(783521911849) // BigInt(8570887289572)) + B7 = convert(T, BigInt(3686104854613) // BigInt(11232032898210)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7) + + B̂1 = convert(T, BigInt(-2632078767757) // BigInt(9365288548818)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(138832778584802) // BigInt(30360463697573)) + B̂4 = convert(T, BigInt(7424139574315) // BigInt(5603229049946)) + B̂5 = convert(T, BigInt(-32993229351515) // BigInt(6883415042289)) + B̂6 = convert(T, BigInt(-3927384735361) // BigInt(7982454543710)) + B̂7 = convert(T, BigInt(9224293159931) // BigInt(15708162311543)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7) + + Bₗ = convert(T, BigInt(517396786175) // BigInt(6104475356879)) + B̂ₗ = convert(T, BigInt(624338737541) // BigInt(7691046757191)) + + C1 = convert(T2, BigInt(967290102210) // BigInt(6283494269639)) + C2 = convert(T2, + BigInt(8972214919142352493858707) // BigInt(41446148478994088895191128)) + C3 = convert(T2, + BigInt(35682660731882055122214991891899678815) // + BigInt(72242678055272695781813348615158920272)) + C4 = convert(T2, + BigInt(24151963894889409757443700144610337197) // + BigInt(88316684951621554188239538678367088186)) + C5 = convert(T2, + BigInt(20396803294876689925555603189127802602) // + BigInt(29355195069529377650856010387665377655)) + C6 = convert(T2, + BigInt(104860372573190455963699691732496938387) // + BigInt(144152676952392296448858925279884773652)) + C7 = convert(T2, + BigInt(1648260218501227913212294426176971326433416596592133) // + BigInt(1649556119556299790473636959153132604082083356090490)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7) + + LowStorageRK3RPConstantCache{7, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK85_4M_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK85_4M_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK85_4M_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK85_4M_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK85_4P_3RConstantCache(T, T2) + A₁1 = convert(T, BigInt(1298271176151) // BigInt(60748409385661)) + A₁2 = convert(T, BigInt(14078610000243) // BigInt(41877490110127)) + A₁3 = convert(T, BigInt(553998884433) // BigInt(1150223130613)) + A₁4 = convert(T, BigInt(15658478150918) // BigInt(92423611770207)) + A₁5 = convert(T, BigInt(18843935397718) // BigInt(7227975568851)) + A₁6 = convert(T, BigInt(6206560082614) // BigInt(27846110321329)) + A₁7 = convert(T, BigInt(2841125392315) // BigInt(14844217636077)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5, A₁6, A₁7) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(-2491873887327) // BigInt(11519757507826)) + A₂3 = convert(T, BigInt(-3833614938189) // BigInt(14183712281236)) + A₂4 = convert(T, BigInt(628609886693) // BigInt(8177399110319)) + A₂5 = convert(T, BigInt(-4943723744483) // BigInt(2558074780976)) + A₂6 = convert(T, BigInt(1024000837540) // BigInt(1998038638351)) + A₂7 = convert(T, BigInt(-2492809296391) // BigInt(9064568868273)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5, A₂6, A₂7) + + B1 = convert(T, BigInt(346820227625) // BigInt(3124407780749)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(0) // BigInt(1)) + B4 = convert(T, BigInt(0) // BigInt(1)) + B5 = convert(T, BigInt(814249513470) // BigInt(2521483007009)) + B6 = convert(T, BigInt(195246859987) // BigInt(15831935944600)) + B7 = convert(T, BigInt(3570596951509) // BigInt(9788921605312)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7) + + B̂1 = convert(T, BigInt(679447319381) // BigInt(8240332772531)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(798472430005) // BigInt(13882421602211)) + B̂4 = convert(T, BigInt(972791992243) // BigInt(13597677393897)) + B̂5 = convert(T, BigInt(2994516937385) // BigInt(6097853295694)) + B̂6 = convert(T, BigInt(1424705874463) // BigInt(19211220871144)) + B̂7 = convert(T, BigInt(11199564863291) // BigInt(35136367926059)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7) + + Bₗ = convert(T, BigInt(1886338382073) // BigInt(9981671730680)) + B̂ₗ = convert(T, BigInt(-1307718103703) // BigInt(13694144003901)) + + C1 = convert(T2, BigInt(1298271176151) // BigInt(60748409385661)) + C2 = convert(T2, + BigInt(57828749177833338114741189) // BigInt(482418531105044571804353902)) + C3 = convert(T2, + BigInt(16431909216114342992530887716659137419) // + BigInt(50972944352640941110022041298448213332)) + C4 = convert(T2, + BigInt(843711271601954807241466442429582743082) // + BigInt(2361379786784371499429045948205315798717)) + C5 = convert(T2, + BigInt(45377346645618697840609101263059649515) // + BigInt(57769368855607143441437855651622233424)) + C6 = convert(T2, + BigInt(147132600561369761792017800077859262701) // + BigInt(173834563932749284125206995856250290771)) + C7 = convert(T2, + BigInt(123785620236259768586332555932209432529705897037921) // + BigInt(353351523019265026737831367789312912172448045683187)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7) + + LowStorageRK3RPConstantCache{7, T, T2}(Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK85_4P_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK85_4P_3RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK3RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, fᵢ₋₂, gprev, fsalfirst, tmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK85_4P_3R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK85_4P_3RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +# 4R+ low storage methods introduced by van der Houwen +@cache struct LowStorageRK4RPCache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + uᵢ₋₁::uType + uᵢ₋₂::uType + uᵢ₋₃::uType + fᵢ₋₂::rateType + fᵢ₋₃::rateType + gprev::uType + fsalfirst::rateType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK4RPConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + Aᵢ₁::SVector{N, T} + Aᵢ₂::SVector{N, T} + Aᵢ₃::SVector{N, T} + Bₗ::T + B̂ₗ::T + Bᵢ::SVector{N, T} + B̂ᵢ::SVector{N, T} + Cᵢ::SVector{N, T2} +end + +function CKLLSRK54_3N_4RConstantCache(T, T2) + A₁1 = convert(T, BigInt(9435338793489) // BigInt(32856462503258)) + A₁2 = convert(T, BigInt(6195609865473) // BigInt(14441396468602)) + A₁3 = convert(T, BigInt(7502925572378) // BigInt(28098850972003)) + A₁4 = convert(T, BigInt(4527781290407) // BigInt(9280887680514)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(2934593324920) // BigInt(16923654741811)) + A₂3 = convert(T, BigInt(16352725096886) // BigInt(101421723321009)) + A₂4 = convert(T, BigInt(3004243580591) // BigInt(16385320447374)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4) + + A₃1 = convert(T, BigInt(0) // BigInt(1)) + A₃2 = convert(T, BigInt(0) // BigInt(1)) + A₃3 = convert(T, BigInt(390352446067) // BigInt(5989890148791)) + A₃4 = convert(T, BigInt(902830387041) // BigInt(8154716972155)) + Aᵢ₃ = SVector(A₃1, A₃2, A₃3, A₃4) + + B1 = convert(T, BigInt(929310922418) // BigInt(8329727308495)) + B2 = convert(T, BigInt(4343420149496) // BigInt(15735497610667)) + B3 = convert(T, BigInt(885252399220) // BigInt(9490460854667)) + B4 = convert(T, BigInt(3341719902227) // BigInt(13464012733180)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(2929323122013) // BigInt(17725327880387)) + B̂2 = convert(T, BigInt(4379799101587) // BigInt(35838171763617)) + B̂3 = convert(T, BigInt(2267325134734) // BigInt(9725002913543)) + B̂4 = convert(T, BigInt(1519467056643) // BigInt(5852430786130)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(2131913067577) // BigInt(7868783702050)) + B̂ₗ = convert(T, BigInt(3636375423974) // BigInt(16547514622827)) + + C1 = convert(T2, BigInt(9435338793489) // BigInt(32856462503258)) + C2 = convert(T2, + BigInt(147231987957505837822553443) // BigInt(244401207824228867478118222)) + C3 = convert(T2, + BigInt(401086457089554669663078760253749450489) // + BigInt(812866282711293513804077001645679258017)) + C4 = convert(T2, + BigInt(153823244836258719400905156342054669945035476219421) // + BigInt(172160249040778711548900853819650745575758693592285)) + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK4RPConstantCache{4, T, T2}(Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3N_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + fᵢ₋₃ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3N_4RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK4RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, fᵢ₋₂, fᵢ₋₃, gprev, fsalfirst, tmp, + atmp, tab, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3N_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3N_4RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK54_3M_4RConstantCache(T, T2) + A₁1 = convert(T, BigInt(7142524119) // BigInt(20567653057)) + A₁2 = convert(T, BigInt(20567653057) // BigInt(89550000000)) + A₁3 = convert(T, BigInt(7407775) // BigInt(2008982)) + A₁4 = convert(T, BigInt(-4577300) // BigInt(867302297)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(15198616943) // BigInt(89550000000)) + A₂3 = convert(T, BigInt(-226244183627) // BigInt(80359280000)) + A₂4 = convert(T, BigInt(33311687500) // BigInt(8703531091)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4) + + A₃1 = convert(T, BigInt(0) // BigInt(1)) + A₃2 = convert(T, BigInt(0) // BigInt(1)) + A₃3 = convert(T, BigInt(9890667227) // BigInt(80359280000)) + A₃4 = convert(T, BigInt(-20567653057) // BigInt(6979191486)) + Aᵢ₃ = SVector(A₃1, A₃2, A₃3, A₃4) + + B1 = convert(T, BigInt(297809) // BigInt(2384418)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(156250000) // BigInt(270591503)) + B4 = convert(T, BigInt(5030000) // BigInt(888933)) + Bᵢ = SVector(B1, B2, B3, B4) + + B̂1 = convert(T, BigInt(121286694859) // BigInt(931793198518)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(9680751416357) // BigInt(17201392077364)) + B̂4 = convert(T, BigInt(6633076090000) // BigInt(1042143269349)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4) + + Bₗ = convert(T, BigInt(-2927) // BigInt(546)) + B̂ₗ = convert(T, BigInt(-127961558623) // BigInt(21123456354)) + + C1 = convert(T2, BigInt(7142524119) // BigInt(20567653057)) + C2 = convert(T2, BigInt(1997) // BigInt(5000)) + C3 = convert(T2, BigInt(199) // BigInt(200)) + C4 = convert(T2, BigInt(1) // BigInt(1)) + Cᵢ = SVector(C1, C2, C3, C4) + + LowStorageRK4RPConstantCache{4, T, T2}(Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK54_3M_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + fᵢ₋₃ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK54_3M_4RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK4RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, fᵢ₋₂, fᵢ₋₃, gprev, fsalfirst, tmp, + atmp, tab, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK54_3M_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK54_3M_4RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK65_4M_4RConstantCache(T, T2) + A₁1 = convert(T, BigInt(1811061732419) // BigInt(6538712036350)) + A₁2 = convert(T, BigInt(936386506953) // BigInt(6510757757683)) + A₁3 = convert(T, BigInt(8253430823511) // BigInt(9903985211908)) + A₁4 = convert(T, BigInt(4157325866175) // BigInt(11306150349782)) + A₁5 = convert(T, BigInt(3299942024581) // BigInt(13404534943033)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(968127049827) // BigInt(6993254963231)) + A₂3 = convert(T, BigInt(-4242729801665) // BigInt(12001587034923)) + A₂4 = convert(T, BigInt(1960956671631) // BigInt(3017447659538)) + A₂5 = convert(T, BigInt(2088737530132) // BigInt(14638867961951)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5) + + A₃1 = convert(T, BigInt(0) // BigInt(1)) + A₃2 = convert(T, BigInt(0) // BigInt(1)) + A₃3 = convert(T, BigInt(332803037697) // BigInt(7529436905221)) + A₃4 = convert(T, BigInt(-19590089343957) // BigInt(51581831082203)) + A₃5 = convert(T, BigInt(3811366828049) // BigInt(10653298326636)) + Aᵢ₃ = SVector(A₃1, A₃2, A₃3, A₃4, A₃5) + + B1 = convert(T, BigInt(1437717300581) // BigInt(14622899446031)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(3070006287879) // BigInt(9321175678070)) + B4 = convert(T, BigInt(2276970273632) // BigInt(7940670647385)) + B5 = convert(T, BigInt(-1056149936631) // BigInt(7427907425983)) + Bᵢ = SVector(B1, B2, B3, B4, B5) + + B̂1 = convert(T, BigInt(399352205828) // BigInt(2843676810815)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(460449895996) // BigInt(4301836608005)) + B̂4 = convert(T, BigInt(15965746118666) // BigInt(21690343195681)) + B̂5 = convert(T, BigInt(-19281717001664) // BigInt(29911607353389)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5) + + Bₗ = convert(T, BigInt(2571845656138) // BigInt(6012342010435)) + B̂ₗ = convert(T, BigInt(5058427127221) // BigInt(7651806618075)) + + C1 = convert(T2, BigInt(1811061732419) // BigInt(6538712036350)) + C2 = convert(T2, + BigInt(12851630287335503073915984) // BigInt(45531389003311376172753773)) + C3 = convert(T2, + BigInt(468994575306978457607500930904657513641) // + BigInt(894975528626103930282351283769588361564)) + C4 = convert(T2, + BigInt(4735520442856752193881763097298943558246492547269018) // + BigInt(6433166018040288425494806218280078848936316641536447)) + C5 = convert(T2, + BigInt(25828983228256103590265182981008154883102570637999497) // + BigInt(30568689961801519095090666149791133914967119469889228)) + Cᵢ = SVector(C1, C2, C3, C4, C5) + + LowStorageRK4RPConstantCache{5, T, T2}(Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK65_4M_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + fᵢ₋₃ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK65_4M_4RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK4RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, fᵢ₋₂, fᵢ₋₃, gprev, fsalfirst, tmp, + atmp, tab, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK65_4M_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK65_4M_4RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function CKLLSRK85_4FM_4RConstantCache(T, T2) + A₁1 = convert(T, BigInt(319960152914) // BigInt(39034091721739)) + A₁2 = convert(T, BigInt(16440040368765) // BigInt(7252463661539)) + A₁3 = convert(T, BigInt(1381950791880) // BigInt(6599155371617)) + A₁4 = convert(T, BigInt(18466735994895) // BigInt(7394178462407)) + A₁5 = convert(T, BigInt(2786140924985) // BigInt(14262827431161)) + A₁6 = convert(T, BigInt(28327099865656) // BigInt(21470840267743)) + A₁7 = convert(T, BigInt(0) // BigInt(1)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5, A₁6, A₁7) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(-16195115415565) // BigInt(7808461210678)) + A₂3 = convert(T, BigInt(-1316066362688) // BigInt(10261382634081)) + A₂4 = convert(T, BigInt(-23893000145797) // BigInt(9614512377075)) + A₂5 = convert(T, BigInt(6556893593075) // BigInt(12530787773541)) + A₂6 = convert(T, BigInt(-5015572218207) // BigInt(5719938983072)) + A₂7 = convert(T, BigInt(0) // BigInt(1)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5, A₂6, A₂7) + + A₃1 = convert(T, BigInt(0) // BigInt(1)) + A₃2 = convert(T, BigInt(0) // BigInt(1)) + A₃3 = convert(T, BigInt(334167490531) // BigInt(1677017272502)) + A₃4 = convert(T, BigInt(4579492417936) // BigInt(7930641522963)) + A₃5 = convert(T, BigInt(-2255846922213) // BigInt(30066310003000)) + A₃6 = convert(T, BigInt(3212719728776) // BigInt(7037340048693)) + A₃7 = convert(T, BigInt(0) // BigInt(1)) + Aᵢ₃ = SVector(A₃1, A₃2, A₃3, A₃4, A₃5, A₃6, A₃7) + + B1 = convert(T, BigInt(1147876221211) // BigInt(13910763665259)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(182134362610) // BigInt(9852075053293)) + B4 = convert(T, BigInt(3396705055007) // BigInt(8495597747463)) + B5 = convert(T, BigInt(363006049056) // BigInt(22366003978609)) + B6 = convert(T, BigInt(6078825123673) // BigInt(15200143133108)) + B7 = convert(T, BigInt(583593328277) // BigInt(7028929464160)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6, B7) + + B̂1 = convert(T, BigInt(2023383632057) // BigInt(26525303340911)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(480990062147) // BigInt(12694528747923)) + B̂4 = convert(T, BigInt(14502014597821) // BigInt(36979005529861)) + B̂5 = convert(T, BigInt(-3883966523914) // BigInt(63014133260123)) + B̂6 = convert(T, BigInt(1643296191892) // BigInt(3432451463915)) + B̂7 = convert(T, BigInt(2576984903812) // BigInt(11692468803935)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6, B̂7) + + Bₗ = convert(T, BigInt(0) // BigInt(1)) + B̂ₗ = convert(T, BigInt(-2393889703871) // BigInt(16641202878460)) + + C1 = convert(T2, BigInt(319960152914) // BigInt(39034091721739)) + C2 = convert(T2, + BigInt(10916931475666701983218135) // BigInt(56630581182979020764713442)) + C3 = convert(T2, + BigInt(31845189551971545944223680050155078355) // + BigInt(113561670251926090809438891701398790454)) + C4 = convert(T2, + BigInt(585892393366635581491792016142825500310911249371223) // + BigInt(871432942801472160798333604371480303171919616321325)) + C5 = convert(T2, + BigInt(6030664727234996630401450278844701818157369618311237) // + BigInt(8305630304762506786823923305099106403075216590053000)) + C6 = convert(T2, + BigInt(190737487565451971541550207118478711767748834018874068552898297) // + BigInt(190737487565451971541550204260359567420033302718711745345318816)) + C7 = convert(T2, + BigInt(194373043039840208108258122050794558876) // + BigInt(388106905684556737922360607016380520227)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6, C7) + + LowStorageRK4RPConstantCache{7, T, T2}(Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK85_4FM_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + fᵢ₋₃ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK85_4FM_4RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK4RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, fᵢ₋₂, fᵢ₋₃, gprev, fsalfirst, tmp, + atmp, tab, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::CKLLSRK85_4FM_4R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK85_4FM_4RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +# 5R+ low storage methods introduced by van der Houwen +@cache struct LowStorageRK5RPCache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + uᵢ₋₁::uType + uᵢ₋₂::uType + uᵢ₋₃::uType + uᵢ₋₄::uType + fᵢ₋₂::rateType + fᵢ₋₃::rateType + fᵢ₋₄::rateType + gprev::uType + fsalfirst::rateType + tmp::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct LowStorageRK5RPConstantCache{N, T, T2} <: OrdinaryDiffEqConstantCache + Aᵢ₁::SVector{N, T} + Aᵢ₂::SVector{N, T} + Aᵢ₃::SVector{N, T} + Aᵢ₄::SVector{N, T} + Bₗ::T + B̂ₗ::T + Bᵢ::SVector{N, T} + B̂ᵢ::SVector{N, T} + Cᵢ::SVector{N, T2} +end + +function CKLLSRK75_4M_5RConstantCache(T, T2) + A₁1 = convert(T, BigInt(984894634849) // BigInt(6216792334776)) + A₁2 = convert(T, BigInt(984894634849) // BigInt(5526037630912)) + A₁3 = convert(T, BigInt(13256335809797) // BigInt(10977774807827)) + A₁4 = convert(T, BigInt(5386479425293) // BigInt(11045691190948)) + A₁5 = convert(T, BigInt(-1717767168952) // BigInt(11602237717369)) + A₁6 = convert(T, BigInt(-10054679524430) // BigInt(10306851287569)) + Aᵢ₁ = SVector(A₁1, A₁2, A₁3, A₁4, A₁5, A₁6) + + A₂1 = convert(T, BigInt(0) // BigInt(1)) + A₂2 = convert(T, BigInt(890852251480) // BigInt(14995156510369)) + A₂3 = convert(T, BigInt(-18544705752398) // BigInt(18426539884027)) + A₂4 = convert(T, BigInt(1115398761892) // BigInt(28058504699217)) + A₂5 = convert(T, BigInt(5538441135605) // BigInt(13014942352969)) + A₂6 = convert(T, BigInt(23855853001162) // BigInt(20968156556405)) + Aᵢ₂ = SVector(A₂1, A₂2, A₂3, A₂4, A₂5, A₂6) + + A₃1 = convert(T, BigInt(0) // BigInt(1)) + A₃2 = convert(T, BigInt(0) // BigInt(1)) + A₃3 = convert(T, BigInt(1722683259617) // BigInt(5669183367476)) + A₃4 = convert(T, BigInt(342961171087) // BigInt(6505721096888)) + A₃5 = convert(T, BigInt(-14472869285404) // BigInt(19736045536601)) + A₃6 = convert(T, BigInt(-8169744035288) // BigInt(5424738459363)) + Aᵢ₃ = SVector(A₃1, A₃2, A₃3, A₃4, A₃5, A₃6) + + A₄1 = convert(T, BigInt(0) // BigInt(1)) + A₄2 = convert(T, BigInt(0) // BigInt(1)) + A₄3 = convert(T, BigInt(0) // BigInt(1)) + A₄4 = convert(T, BigInt(762111618422) // BigInt(5198184381557)) + A₄5 = convert(T, BigInt(2896263505307) // BigInt(6364015805096)) + A₄6 = convert(T, BigInt(60049403517654) // BigInt(26787923986853)) + Aᵢ₄ = SVector(A₄1, A₄2, A₄3, A₄4, A₄5, A₄6) + + B1 = convert(T, BigInt(1008141064049) // BigInt(9867084721348)) + B2 = convert(T, BigInt(0) // BigInt(1)) + B3 = convert(T, BigInt(8222186491841) // BigInt(18352662300888)) + B4 = convert(T, BigInt(514621697208) // BigInt(8712119383831)) + B5 = convert(T, BigInt(1808964136873) // BigInt(4546032443428)) + B6 = convert(T, BigInt(-362754645297) // BigInt(3989911846061)) + Bᵢ = SVector(B1, B2, B3, B4, B5, B6) + + B̂1 = convert(T, BigInt(1633918545125) // BigInt(12016465907206)) + B̂2 = convert(T, BigInt(0) // BigInt(1)) + B̂3 = convert(T, BigInt(5614864639673) // BigInt(10804025076427)) + B̂4 = convert(T, BigInt(229286380958) // BigInt(6920724258831)) + B̂5 = convert(T, BigInt(5960415897193) // BigInt(14726168927560)) + B̂6 = convert(T, BigInt(-4042532386559) // BigInt(22820216867423)) + B̂ᵢ = SVector(B̂1, B̂2, B̂3, B̂4, B̂5, B̂6) + + Bₗ = convert(T, BigInt(599706619333) // BigInt(7161178965783)) + B̂ₗ = convert(T, BigInt(930770261899) // BigInt(11134660916874)) + + C1 = convert(T2, BigInt(984894634849) // BigInt(6216792334776)) + C2 = convert(T2, + BigInt(19691532261044641782999041) // BigInt(82863799157714161922926528)) + C3 = convert(T2, + BigInt(579140763944732527715749105230082493541) // + BigInt(1146776047854201324825397010814855303604)) + C4 = convert(T2, + BigInt(1904235205010770769196995566618512437342488019008993) // + BigInt(2620260981179174237577004881164696841381017975634264)) + C5 = convert(T2, + BigInt(4745866356039511505795256436748010529615723318082554645080208661) // + BigInt(46784744516176933667763632070461960177241008032286254911869725672)) + C6 = convert(T2, + BigInt(309879595293732553069368807532997606922999693101104106883289601491) // + BigInt(309879595293732553069368804305686805880909932549908997963514738540)) + Cᵢ = SVector(C1, C2, C3, C4, C5, C6) + + LowStorageRK5RPConstantCache{6, T, T2}(Aᵢ₁, Aᵢ₂, Aᵢ₃, Aᵢ₄, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ) +end + +function alg_cache(alg::CKLLSRK75_4M_5R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + k = zero(rate_prototype) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + uᵢ₋₄ = zero(u) + fᵢ₋₂ = zero(rate_prototype) + fᵢ₋₃ = zero(rate_prototype) + fᵢ₋₄ = zero(rate_prototype) + gprev = zero(u) + if calck + fsalfirst = zero(rate_prototype) + else + fsalfirst = k + end + tab = CKLLSRK75_4M_5RConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + LowStorageRK5RPCache(u, uprev, k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, uᵢ₋₄, fᵢ₋₂, fᵢ₋₃, fᵢ₋₄, gprev, + fsalfirst, tmp, atmp, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::CKLLSRK75_4M_5R, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CKLLSRK75_4M_5RConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end diff --git a/src/caches/rkc_caches.jl b/src/caches/rkc_caches.jl new file mode 100644 index 0000000000..2594804d1d --- /dev/null +++ b/src/caches/rkc_caches.jl @@ -0,0 +1,348 @@ +mutable struct ROCK2ConstantCache{T, T2, zType} <: OrdinaryDiffEqConstantCache + ms::SVector{46, Int} + fp1::SVector{46, T} + fp2::SVector{46, T} + recf::Vector{T2} + zprev::zType + mdeg::Int + deg_index::Int + start::Int + min_stage::Int + max_stage::Int +end +@cache struct ROCK2Cache{uType, rateType, uNoUnitsType, C <: ROCK2ConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uᵢ₋₁::uType + uᵢ₋₂::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::ROCK2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = ROCK2ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits), + u) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + ROCK2Cache(u, uprev, uᵢ₋₁, uᵢ₋₂, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::ROCK2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ROCK2ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits), u) +end + +mutable struct ROCK4ConstantCache{T, T2, T3, T4, zType} <: OrdinaryDiffEqConstantCache + ms::SVector{50, Int} + fpa::Vector{T} + fpb::Vector{T2} + fpbe::Vector{T3} + recf::Vector{T4} + zprev::zType + mdeg::Int + deg_index::Int + start::Int + min_stage::Int + max_stage::Int +end + +@cache struct ROCK4Cache{uType, rateType, uNoUnitsType, C <: ROCK4ConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uᵢ₋₁::uType + uᵢ₋₂::uType + uᵢ₋₃::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::ROCK4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = ROCK4ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits), + u) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + uᵢ₋₃ = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + ROCK4Cache(u, uprev, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::ROCK4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ROCK4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits), u) +end + +mutable struct RKCConstantCache{zType} <: OrdinaryDiffEqConstantCache + #to match the types to call maxeig! + zprev::zType +end +@cache struct RKCCache{uType, rateType, uNoUnitsType, C <: RKCConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + gprev::uType + gprev2::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::RKC, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = RKCConstantCache(u) + gprev = zero(u) + gprev2 = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + RKCCache(u, uprev, gprev, gprev2, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::RKC, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + RKCConstantCache(u) +end + +@cache mutable struct IRKCConstantCache{uType, rateType, N} <: OrdinaryDiffEqConstantCache + minm::Int + zprev::uType + nlsolver::N + du₁::rateType + du₂::rateType +end + +@cache mutable struct IRKCCache{uType, rateType, uNoUnitsType, N, C <: IRKCConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + gprev::uType + gprev2::uType + fsalfirst::rateType + f1ⱼ₋₁::rateType + f1ⱼ₋₂::rateType + f2ⱼ₋₁::rateType + atmp::uNoUnitsType + nlsolver::N + du₁::rateType + du₂::rateType + constantcache::C +end + +function alg_cache(alg::IRKC, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + γ, c = 1.0, 1.0 + nlsolver = build_nlsolver(alg, u, uprev, p, t, dt, f, rate_prototype, uEltypeNoUnits, + uBottomEltypeNoUnits, tTypeNoUnits, γ, c, Val(false)) + zprev = u + du₁ = rate_prototype + du₂ = rate_prototype + IRKCConstantCache(50, zprev, nlsolver, du₁, du₂) +end + +function alg_cache(alg::IRKC, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + γ, c = 1.0, 1.0 + nlsolver = build_nlsolver(alg, u, uprev, p, t, dt, f, rate_prototype, uEltypeNoUnits, + uBottomEltypeNoUnits, tTypeNoUnits, γ, c, Val(true)) + + gprev = zero(u) + gprev2 = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + zprev = zero(u) + f1ⱼ₋₁ = zero(rate_prototype) + f1ⱼ₋₂ = zero(rate_prototype) + f2ⱼ₋₁ = zero(rate_prototype) + du₁ = zero(rate_prototype) + du₂ = zero(rate_prototype) + constantcache = IRKCConstantCache(50, zprev, nlsolver, du₁, du₂) + IRKCCache(u, uprev, gprev, gprev2, fsalfirst, f1ⱼ₋₁, f1ⱼ₋₂, f2ⱼ₋₁, atmp, nlsolver, du₁, + du₂, constantcache) +end + +mutable struct ESERK4ConstantCache{T, zType} <: OrdinaryDiffEqConstantCache + ms::SVector{46, Int} + Cᵤ::SVector{4, Int} + Cₑ::SVector{4, Int} + zprev::zType + Bᵢ::Vector{T} + mdeg::Int + start::Int + internal_deg::Int +end + +@cache struct ESERK4Cache{uType, rateType, uNoUnitsType, C <: ESERK4ConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uᵢ::uType + uᵢ₋₁::uType + uᵢ₋₂::uType + Sᵢ::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::ESERK4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = ESERK4ConstantCache(u) + uᵢ = zero(u) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + Sᵢ = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + ESERK4Cache(u, uprev, uᵢ, uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::ESERK4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ESERK4ConstantCache(u) +end + +mutable struct ESERK5ConstantCache{T, zType} <: OrdinaryDiffEqConstantCache + ms::SVector{49, Int} + Cᵤ::SVector{5, Int} + Cₑ::SVector{5, Int} + zprev::zType + Bᵢ::Vector{T} + mdeg::Int + start::Int + internal_deg::Int +end + +@cache struct ESERK5Cache{uType, rateType, uNoUnitsType, C <: ESERK5ConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uᵢ::uType + uᵢ₋₁::uType + uᵢ₋₂::uType + Sᵢ::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::ESERK5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = ESERK5ConstantCache(u) + uᵢ = zero(u) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + Sᵢ = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + ESERK5Cache(u, uprev, uᵢ, uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::ESERK5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ESERK5ConstantCache(u) +end + +mutable struct SERK2ConstantCache{T, zType} <: OrdinaryDiffEqConstantCache + ms::SVector{11, Int} + zprev::zType + Bᵢ::Vector{T} + mdeg::Int + start::Int + internal_deg::Int +end + +@cache struct SERK2Cache{uType, rateType, uNoUnitsType, C <: SERK2ConstantCache} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uᵢ₋₁::uType + uᵢ₋₂::uType + Sᵢ::uType + tmp::uType + atmp::uNoUnitsType + fsalfirst::rateType + k::rateType + constantcache::C +end + +function alg_cache(alg::SERK2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + constantcache = SERK2ConstantCache(u) + uᵢ₋₁ = zero(u) + uᵢ₋₂ = zero(u) + Sᵢ = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + fsalfirst = zero(rate_prototype) + k = zero(rate_prototype) + SERK2Cache(u, uprev, uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, fsalfirst, k, constantcache) +end + +function alg_cache(alg::SERK2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SERK2ConstantCache(u) +end diff --git a/src/caches/rkn_caches.jl b/src/caches/rkn_caches.jl new file mode 100644 index 0000000000..7582e1f498 --- /dev/null +++ b/src/caches/rkn_caches.jl @@ -0,0 +1,683 @@ +@cache struct Nystrom4Cache{uType, rateType, reducedRateType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k₂::reducedRateType + k₃::reducedRateType + k₄::reducedRateType + k::rateType + tmp::uType +end + +# struct Nystrom4ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::Nystrom4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + k₁ = zero(rate_prototype) + k₂ = zero(reduced_rate_prototype) + k₃ = zero(reduced_rate_prototype) + k₄ = zero(reduced_rate_prototype) + k = zero(rate_prototype) + tmp = zero(u) + Nystrom4Cache(u, uprev, k₁, k₂, k₃, k₄, k, tmp) +end + +struct Nystrom4ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::Nystrom4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Nystrom4ConstantCache() +end + +# alg_cache(alg::Nystrom4,u,rate_prototype,::Type{uEltypeNoUnits},::Type{uBottomEltypeNoUnits},::Type{tTypeNoUnits},uprev,uprev2,f,t,dt,reltol,p,calck,::Val{false}) where {uEltypeNoUnits,uBottomEltypeNoUnits,tTypeNoUnits} = Nystrom4ConstantCache(constvalue(uBottomEltypeNoUnits),constvalue(tTypeNoUnits)) + +@cache struct FineRKN4Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::FineRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = FineRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + FineRKN4Cache(u, uprev, k1, k2, k3, k4, k5, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::FineRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + FineRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct FineRKN5Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k7::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::FineRKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = FineRKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k7 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + FineRKN5Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::FineRKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + FineRKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Nystrom4VelocityIndependentCache{uType, rateType, reducedRateType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k₂::reducedRateType + k₃::reducedRateType + k::rateType + tmp::uType +end + +function alg_cache(alg::Nystrom4VelocityIndependent, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + k₁ = zero(rate_prototype) + k₂ = zero(reduced_rate_prototype) + k₃ = zero(reduced_rate_prototype) + k = zero(rate_prototype) + tmp = zero(u) + Nystrom4VelocityIndependentCache(u, uprev, k₁, k₂, k₃, k, tmp) +end + +struct Nystrom4VelocityIndependentConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::Nystrom4VelocityIndependent, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Nystrom4VelocityIndependentConstantCache() +end + +@cache struct IRKN3Cache{uType, rateType, TabType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uprev2::uType + fsalfirst::rateType + k₂::rateType + k::rateType + tmp::uType + tmp2::rateType + onestep_cache::Nystrom4VelocityIndependentCache + tab::TabType +end + +function alg_cache(alg::IRKN3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k₁ = zero(rate_prototype) + k₂ = zero(rate_prototype) + k₃ = zero(rate_prototype) + k = zero(rate_prototype) + tmp = zero(u) + tab = IRKN3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + IRKN3Cache(u, uprev, uprev2, k₁, k₂, k, tmp, k₃, + Nystrom4VelocityIndependentCache(u, uprev, k₁, k₂.x[2], k₃.x[2], k, tmp), + tab) +end + +function alg_cache(alg::IRKN3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + IRKN3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct IRKN4Cache{uType, rateType, TabType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + uprev2::uType + fsalfirst::rateType + k₂::rateType + k₃::rateType + k::rateType + tmp::uType + tmp2::rateType + onestep_cache::Nystrom4VelocityIndependentCache + tab::TabType +end + +function alg_cache(alg::IRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k₁ = zero(rate_prototype) + k₂ = zero(rate_prototype) + k₃ = zero(rate_prototype) + k = zero(rate_prototype) + tmp = zero(u) + tmp2 = zero(rate_prototype) + tab = IRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + IRKN4Cache(u, uprev, uprev2, k₁, k₂, k₃, k, tmp, tmp2, + Nystrom4VelocityIndependentCache(u, uprev, k₁, k₂.x[2], k₃.x[2], k, tmp), + tab) +end + +function alg_cache(alg::IRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + IRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Nystrom5VelocityIndependentCache{uType, rateType, reducedRateType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k₂::reducedRateType + k₃::reducedRateType + k₄::reducedRateType + k::rateType + tmp::uType + tab::TabType +end + +function alg_cache(alg::Nystrom5VelocityIndependent, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + k₁ = zero(rate_prototype) + k₂ = zero(reduced_rate_prototype) + k₃ = zero(reduced_rate_prototype) + k₄ = zero(reduced_rate_prototype) + k = zero(rate_prototype) + tmp = zero(u) + tab = Nystrom5VelocityIndependentConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + Nystrom5VelocityIndependentCache(u, uprev, k₁, k₂, k₃, k₄, k, tmp, tab) +end + +function alg_cache(alg::Nystrom5VelocityIndependent, u, rate_prototype, + ::Type{uEltypeNoUnits}, ::Type{uBottomEltypeNoUnits}, + ::Type{tTypeNoUnits}, uprev, uprev2, f, t, dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Nystrom5VelocityIndependentConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +struct DPRKN4Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN4Cache(u, uprev, k1, k2, k3, k4, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct DPRKN5Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN5Cache(u, uprev, k1, k2, k3, k4, k5, k6, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct DPRKN6Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN6Cache(u, uprev, k1, k2, k3, k4, k5, k6, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct DPRKN6FMCache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN6FM, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN6FMConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN6FMCache(u, uprev, k1, k2, k3, k4, k5, k6, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN6FM, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN6FMConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct DPRKN8Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k7::reducedRateType + k8::reducedRateType + k9::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k7 = zero(reduced_rate_prototype) + k8 = zero(reduced_rate_prototype) + k9 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN8Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct DPRKN12Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k7::reducedRateType + k8::reducedRateType + k9::reducedRateType + k10::reducedRateType + k11::reducedRateType + k12::reducedRateType + k13::reducedRateType + k14::reducedRateType + k15::reducedRateType + k16::reducedRateType + k17::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::DPRKN12, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = DPRKN12ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k7 = zero(reduced_rate_prototype) + k8 = zero(reduced_rate_prototype) + k9 = zero(reduced_rate_prototype) + k10 = zero(reduced_rate_prototype) + k11 = zero(reduced_rate_prototype) + k12 = zero(reduced_rate_prototype) + k13 = zero(reduced_rate_prototype) + k14 = zero(reduced_rate_prototype) + k15 = zero(reduced_rate_prototype) + k16 = zero(reduced_rate_prototype) + k17 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + DPRKN12Cache( + u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, + k16, k17, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::DPRKN12, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + DPRKN12ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct ERKN4Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::ERKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = ERKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + ERKN4Cache(u, uprev, k1, k2, k3, k4, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::ERKN4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ERKN4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct ERKN5Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::ERKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = ERKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + ERKN5Cache(u, uprev, k1, k2, k3, k4, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::ERKN5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ERKN5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct ERKN7Cache{uType, rateType, reducedRateType, uNoUnitsType, TabType} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + k2::reducedRateType + k3::reducedRateType + k4::reducedRateType + k5::reducedRateType + k6::reducedRateType + k7::reducedRateType + k::rateType + utilde::uType + tmp::uType + atmp::uNoUnitsType + tab::TabType +end + +function alg_cache(alg::ERKN7, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + reduced_rate_prototype = rate_prototype.x[2] + tab = ERKN7ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(reduced_rate_prototype) + k3 = zero(reduced_rate_prototype) + k4 = zero(reduced_rate_prototype) + k5 = zero(reduced_rate_prototype) + k6 = zero(reduced_rate_prototype) + k7 = zero(reduced_rate_prototype) + k = zero(rate_prototype) + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tmp = zero(u) + ERKN7Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k, utilde, tmp, atmp, tab) +end + +function alg_cache(alg::ERKN7, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + ERKN7ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end diff --git a/src/caches/ssprk_caches.jl b/src/caches/ssprk_caches.jl new file mode 100644 index 0000000000..b2c8833c69 --- /dev/null +++ b/src/caches/ssprk_caches.jl @@ -0,0 +1,1265 @@ +@cache struct SSPRK22Cache{uType, rateType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK22ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SSPRK22, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + SSPRK22Cache(u, uprev, k, fsalfirst, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK22, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK22ConstantCache() +end + +@cache struct SSPRK33Cache{uType, rateType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK33ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SSPRK33, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + SSPRK33Cache(u, uprev, k, fsalfirst, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK33, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK33ConstantCache() +end + +@cache struct KYKSSPRK42Cache{ + uType, + rateType, + TabType, + StageLimiter, + StepLimiter, + Thread +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct KYKSSPRK42ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α20::T + α21::T + α30::T + α32::T + α40::T + α43::T + β10::T + β21::T + β30::T + β32::T + β40::T + β43::T + c1::T2 + c2::T2 + c3::T2 +end + +function KYKSSPRK42ConstantCache(T, T2) + α20 = T(0.394806441339829) + α21 = T(0.605193558660171) + α30 = T(0.002797307087390) + α32 = T(0.997202692912610) + α40 = T(0.252860909354373) + α43 = T(0.747139090645627) + β10 = T(0.406584463657504) + β21 = T(0.246062298456822) + β30 = T(0.013637216641451) + β32 = T(0.405447122055692) + β40 = T(0.016453567333598) + β43 = T(0.303775146447707) + c1 = T2(0.406584463657504) + c2 = T2(0.4921245969136438) + c3 = T2(0.9098323119879613) + KYKSSPRK42ConstantCache(α20, α21, α30, α32, α40, α43, β10, β21, β30, β32, β40, β43, c1, + c2, c3) +end + +function alg_cache(alg::KYKSSPRK42, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = KYKSSPRK42ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + KYKSSPRK42Cache( + u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::KYKSSPRK42, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + KYKSSPRK42ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK53Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tmp::uType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK53ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α30::T + α32::T + α40::T + α43::T + α52::T + α54::T + β10::T + β21::T + β32::T + β43::T + β54::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + + function SSPRK53ConstantCache(T, T2) + α30 = T(0.355909775063327) + α32 = T(0.644090224936674) + α40 = T(0.367933791638137) + α43 = T(0.632066208361863) + α52 = T(0.237593836598569) + α54 = T(0.762406163401431) + β10 = T(0.377268915331368) + β21 = T(0.377268915331368) + β32 = T(0.242995220537396) + β43 = T(0.238458932846290) + β54 = T(0.287632146308408) + c1 = T2(0.377268915331368) + c2 = T2(0.754537830662736) + c3 = T2(0.728985661612188) + c4 = T2(0.699226135931670) + + new{T, T2}(α30, α32, α40, α43, α52, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4) + end +end + +function alg_cache(alg::SSPRK53, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK53ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK53Cache(u, uprev, k, fsalfirst, tmp, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::SSPRK53, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK53ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SHLDDRK52Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SHLDDRK52ConstantCache{T1, T2} <: OrdinaryDiffEqConstantCache + α2::T1 + α3::T1 + α4::T1 + α5::T1 + β1::T1 + β2::T1 + β3::T1 + β4::T1 + β5::T1 + c2::T2 + c3::T2 + c4::T2 + c5::T2 +end + +function SHLDDRK52ConstantCache(T1, T2) + α2 = T1(-0.6913065) + α3 = T1(-2.655155) + α4 = T1(-0.8147688) + α5 = T1(-0.6686587) + β1 = T1(0.1) + β2 = T1(0.75) + β3 = T1(0.7) + β4 = T1(0.479313) + β5 = T1(0.310392) + c2 = T2(0.1) + c3 = T2(0.3315201) + c4 = T2(0.4577796) + c5 = T2(0.8666528) + SHLDDRK52ConstantCache(α2, α3, α4, α5, β1, β2, β3, β4, β5, c2, c3, c4, c5) +end + +function alg_cache(alg::SHLDDRK52, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SHLDDRK52ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::SHLDDRK52, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = SHLDDRK52ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SHLDDRK52Cache(u, uprev, k, tmp, fsalfirst, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +@cache mutable struct SHLDDRK_2NCache{uType, rateType, TabType, StageLimiter, StepLimiter, + Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + tmp::uType + fsalfirst::rateType + tab::TabType + step::Int + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +mutable struct SHLDDRK_2NConstantCache{T1, T2} <: OrdinaryDiffEqConstantCache + α21::T1 + α31::T1 + α41::T1 + α51::T1 + β11::T1 + β21::T1 + β31::T1 + β41::T1 + β51::T1 + c21::T2 + c31::T2 + c41::T2 + c51::T2 + + α22::T1 + α32::T1 + α42::T1 + α52::T1 + α62::T1 + β12::T1 + β22::T1 + β32::T1 + β42::T1 + β52::T1 + β62::T1 + c22::T2 + c32::T2 + c42::T2 + c52::T2 + c62::T2 + + step::Int +end + +function SHLDDRK_2NConstantCache(T1, T2) + α21 = T1(-0.6051226) + α31 = T1(-2.0437564) + α41 = T1(-0.7406999) + α51 = T1(-4.4231765) + β11 = T1(0.2687454) + β21 = T1(0.8014706) + β31 = T1(0.5051570) + β41 = T1(0.5623568) + β51 = T1(0.0590065) + c21 = T2(0.2687454) + c31 = T2(0.5852280) + c41 = T2(0.6827066) + c51 = T2(1.1646854) + + α22 = T1(-0.4412737) + α32 = T1(-1.0739820) + α42 = T1(-1.7063570) + α52 = T1(-2.7979293) + α62 = T1(-4.0913537) + β12 = T1(0.1158488) + β22 = T1(0.3728769) + β32 = T1(0.7379536) + β42 = T1(0.5798110) + β52 = T1(1.0312849) + β62 = T1(0.15) + c22 = T2(0.1158485) + c32 = T2(0.3241850) + c42 = T2(0.6193208) + c52 = T2(0.8034472) + c62 = T2(0.9184166) + SHLDDRK_2NConstantCache( + α21, α31, α41, α51, β11, β21, β31, β41, β51, c21, c31, c41, c51, + α22, α32, α42, α52, α62, β12, β22, β32, β42, β52, β62, c22, c32, + c42, c52, c62, 1) +end + +function alg_cache(alg::SHLDDRK_2N, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SHLDDRK_2NConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::SHLDDRK_2N, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = SHLDDRK_2NConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + SHLDDRK_2NCache(u, uprev, k, tmp, fsalfirst, tab, 1, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +@cache struct SSPRK53_2N1Cache{ + uType, + rateType, + TabType, + StageLimiter, + StepLimiter, + Thread +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK53_2N1ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α40::T + α43::T + β10::T + β21::T + β32::T + β43::T + β54::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + + function SSPRK53_2N1ConstantCache(T, T2) + α40 = T(0.571403511494104) + α43 = T(0.428596488505896) + β10 = T(0.443568244942995) + β21 = T(0.291111420073766) + β32 = T(0.270612601278217) + β43 = T(0.110577759392786) + β54 = T(0.458557505351052) + c1 = T2(0.443568244942995) + c2 = T2(0.734679665016762) + c3 = T2(1.005292266294979) + c4 = T2(0.541442494648948) + + new{T, T2}(α40, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4) + end +end + +function alg_cache(alg::SSPRK53_2N1, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK53_2N1ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + SSPRK53_2N1Cache(u, uprev, k, fsalfirst, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::SSPRK53_2N1, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK53_2N1ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK53_2N2Cache{ + uType, + rateType, + TabType, + StageLimiter, + StepLimiter, + Thread +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK53_2N2ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α30::T + α32::T + α50::T + α54::T + β10::T + β21::T + β32::T + β43::T + β54::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + + function SSPRK53_2N2ConstantCache(T, T2) + α30 = T(0.682342861037239) + α32 = T(0.317657138962761) + α50 = T(0.045230974482400) + α54 = T(0.954769025517600) + β10 = T(0.465388589249323) + β21 = T(0.465388589249323) + β32 = T(0.124745797313998) + β43 = T(0.465388589249323) + β54 = T(0.154263303748666) + c1 = T2(0.465388589249323) + c2 = T2(0.930777178498646) + c3 = T2(0.420413812847710) + c4 = T2(0.885802402097033) + + new{T, T2}(α30, α32, α50, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4) + end +end + +function alg_cache(alg::SSPRK53_2N2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK53_2N2ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + SSPRK53_2N2Cache(u, uprev, k, fsalfirst, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::SSPRK53_2N2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK53_2N2ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK53_HCache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tmp::uType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK53_HConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α30::T + α32::T + α40::T + α41::T + α43::T + β10::T + β21::T + β32::T + β43::T + β54::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + + function SSPRK53_HConstantCache(T, T2) + α30 = T(0.308684154602513) + α32 = T(0.691315845397487) + α40 = T(0.280514990468574) + α41 = T(0.270513101776498) + α43 = T(0.448971907754928) + β10 = T(0.377268915331368) + β21 = T(0.377268915331368) + β32 = T(0.260811979144498) + β43 = T(0.169383144652957) + β54 = T(0.377268915331368) + c1 = T2(0.377268915331368) + c2 = T2(0.754537830662737) + c3 = T2(0.782435937433493) + c4 = T2(0.622731084668631) + + new{T, T2}(α30, α32, α40, α41, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4) + end +end + +function alg_cache(alg::SSPRK53_H, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK53_HConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK53_HCache(u, uprev, k, fsalfirst, tmp, tab, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::SSPRK53_H, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK53_HConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK63Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tmp::uType + u₂::uType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK63ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α40::T + α41::T + α43::T + α62::T + α65::T + β10::T + β21::T + β32::T + β43::T + β54::T + β65::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + + function SSPRK63ConstantCache(T, T2) + α40 = T(0.476769811285196) + α41 = T(0.098511733286064) + α43 = T(0.424718455428740) + α62 = T(0.155221702560091) + α65 = T(0.844778297439909) + β10 = T(0.284220721334261) + β21 = T(0.284220721334261) + β32 = T(0.284220721334261) + β43 = T(0.120713785765930) + β54 = T(0.284220721334261) + β65 = T(0.240103497065900) + c1 = T2(0.284220721334261) + c2 = T2(0.568441442668522) + c3 = T2(0.852662164002783) + c4 = T2(0.510854218958172) + c5 = T2(0.795074940292433) + + new{T, T2}(α40, α41, α43, α62, α65, β10, β21, β32, β43, β54, β65, c1, c2, c3, c4, + c5) + end +end + +function alg_cache(alg::SSPRK63, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + u₂ = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK63ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK63Cache(u, uprev, k, fsalfirst, tmp, u₂, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK63, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK63ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK73Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tmp::uType + u₁::uType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK73ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α40::T + α43::T + α50::T + α51::T + α54::T + α73::T + α76::T + β10::T + β21::T + β32::T + β43::T + β54::T + β65::T + β76::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + + function SSPRK73ConstantCache(T, T2) + α40 = T(0.184962588071072) + α43 = T(0.815037411928928) + α50 = T(0.180718656570380) + α51 = T(0.314831034403793) + α54 = T(0.504450309025826) + α73 = T(0.120199000000000) + α76 = T(0.879801000000000) + β10 = T(0.233213863663009) + β21 = T(0.233213863663009) + β32 = T(0.233213863663009) + β43 = T(0.190078023865845) + β54 = T(0.117644805593912) + β65 = T(0.233213863663009) + β76 = T(0.205181790464579) + c1 = T2(0.233213863663009) + c2 = T2(0.466427727326018) + c3 = T2(0.699641590989027) + c4 = T2(0.760312095463379) + c5 = T2(0.574607439040817) + c6 = T2(0.807821302703826) + + new{T, T2}( + α40, α43, α50, α51, α54, α73, α76, β10, β21, β32, β43, β54, β65, β76, c1, + c2, c3, c4, c5, c6) + end +end + +function alg_cache(alg::SSPRK73, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + u₁ = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK73ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK73Cache(u, uprev, k, fsalfirst, tmp, u₁, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK73, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK73ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK83Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + tmp::uType + u₂::uType + u₃::uType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK83ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + α50::T + α51::T + α54::T + α61::T + α65::T + α72::T + α73::T + α76::T + β10::T + β21::T + β32::T + β43::T + β54::T + β65::T + β76::T + β87::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + + function SSPRK83ConstantCache(T, T2) + α50 = T(0.421366967085359) + α51 = T(0.005949401107575) + α54 = T(0.572683631807067) + α61 = T(0.004254010666365) + α65 = T(0.995745989333635) + α72 = T(0.104380143093325) + α73 = T(0.243265240906726) + α76 = T(0.652354615999950) + β10 = T(0.195804015330143) + β21 = T(0.195804015330143) + β32 = T(0.195804015330143) + β43 = T(0.195804015330143) + β54 = T(0.112133754621673) + β65 = T(0.194971062960412) + β76 = T(0.127733653231944) + β87 = T(0.195804015330143) + c1 = T2(0.195804015330143) + c2 = T2(0.391608030660286) + c3 = T2(0.587412045990429) + c4 = T2(0.783216061320572) + c5 = T2(0.561833689734037) + c6 = T2(0.755247658555329) + c7 = T2(0.804195984669857) + + new{T, T2}(α50, α51, α54, α61, α65, α72, α73, α76, β10, β21, β32, β43, β54, β65, + β76, β87, c1, c2, c3, c4, c5, c6, c7) + end +end + +function alg_cache(alg::SSPRK83, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + u₂ = zero(u) + u₃ = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + tab = SSPRK83ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK83Cache(u, uprev, k, fsalfirst, tmp, u₂, u₃, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK83, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK83ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK43Cache{uType, rateType, uNoUnitsType, TabType, StageLimiter, + StepLimiter, Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + utilde::uType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK43ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + one_third_u::T + two_thirds_u::T + half_u::T + half_t::T2 + + function SSPRK43ConstantCache(T, T2) + one_third_u = inv(T(3)) + two_thirds_u = 2 * one_third_u + half_u = T(0.5) + half_t = T2(0.5) + + new{T, T2}(one_third_u, two_thirds_u, half_u, half_t) + end +end + +function alg_cache(alg::SSPRK43, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + tab = SSPRK43ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK43Cache(u, uprev, k, fsalfirst, utilde, atmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK43, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK43ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK432Cache{ + uType, + rateType, + uNoUnitsType, + StageLimiter, + StepLimiter, + Thread +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + utilde::uType + atmp::uNoUnitsType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK432ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SSPRK432, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + SSPRK432Cache(u, uprev, k, fsalfirst, utilde, atmp, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK432, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK432ConstantCache() +end + +@cache mutable struct SSPRKMSVS32Cache{uType, rateType, dtArrayType, dtType, StageLimiter, + StepLimiter, Thread} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + u_2::uType + u_1::uType + k::rateType + tmp::uType + dts::dtArrayType + dtf::dtArrayType + μ::dtType + v_n::Float64 + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread + step::Int +end + +@cache mutable struct SSPRKMSVS32ConstantCache{uType, dtArrayType, dtType} <: + OrdinaryDiffEqConstantCache + u_2::uType + u_1::uType + dts::dtArrayType + dtf::dtArrayType + μ::dtType + v_n::Float64 + step::Int +end + +function alg_cache(alg::SSPRKMSVS32, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + fsalfirst = zero(rate_prototype) + dts = fill(zero(dt), 3) + dtf = fill(zero(dt), 2) + μ = zero(dt) + u_2 = zero(u) + u_1 = zero(u) + k = zero(rate_prototype) + tmp = zero(u) + SSPRKMSVS32Cache(u, uprev, fsalfirst, u_2, u_1, k, tmp, dts, dtf, μ, 0.5, + alg.stage_limiter!, alg.step_limiter!, alg.thread, 1) +end + +function alg_cache(alg::SSPRKMSVS32, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + dts = fill(zero(dt), 3) + dtf = fill(zero(dt), 2) + μ = zero(dt) + u_2 = u + u_1 = u + SSPRKMSVS32ConstantCache(u_2, u_1, dts, dtf, μ, 0.5, 1) +end + +@cache mutable struct SSPRKMSVS43Cache{ + uType, + rateType, + StageLimiter, + StepLimiter, + Thread +} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + fsalfirst::rateType + u_3::uType + u_2::uType + u_1::uType + k::rateType + k1::rateType + k2::rateType + k3::rateType + tmp::uType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread + step::Int +end + +@cache mutable struct SSPRKMSVS43ConstantCache{uType, rateType} <: + OrdinaryDiffEqConstantCache + u_3::uType + u_2::uType + u_1::uType + k1::rateType + k2::rateType + k3::rateType + step::Int +end + +function alg_cache(alg::SSPRKMSVS43, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + fsalfirst = zero(rate_prototype) + u_3 = zero(u) + u_2 = zero(u) + u_1 = zero(u) + k = zero(rate_prototype) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = zero(rate_prototype) + tmp = zero(u) + SSPRKMSVS43Cache(u, uprev, fsalfirst, u_3, u_2, u_1, k, k1, k2, k3, tmp, + alg.stage_limiter!, alg.step_limiter!, alg.thread, 1) +end + +function alg_cache(alg::SSPRKMSVS43, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + u_3 = u + u_2 = u + u_1 = u + k1 = rate_prototype + k2 = rate_prototype + k3 = rate_prototype + SSPRKMSVS43ConstantCache(u_3, u_2, u_1, k1, k2, k3, 1) +end + +@cache struct SSPRK932Cache{ + uType, + rateType, + uNoUnitsType, + StageLimiter, + StepLimiter, + Thread +} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + utilde::uType + atmp::uNoUnitsType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK932ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SSPRK932, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + SSPRK932Cache(u, uprev, k, fsalfirst, utilde, atmp, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK932, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK932ConstantCache() +end + +@cache struct SSPRK54Cache{uType, rateType, TabType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + k₃::rateType + u₂::uType + u₃::uType + tmp::uType # should be u₄, but tmp is needed for callbacks + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK54ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + β10::T + α20::T + α21::T + β21::T + α30::T + α32::T + β32::T + α40::T + α43::T + β43::T + α52::T + α53::T + β53::T + α54::T + β54::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + + function SSPRK54ConstantCache(T, T2) + β10 = T(0.391752226571890) + α20 = T(0.444370493651235) + α21 = T(0.555629506348765) + β21 = T(0.368410593050371) + α30 = T(0.620101851488403) + α32 = T(0.379898148511597) + β32 = T(0.251891774271694) + α40 = T(0.178079954393132) + α43 = T(0.821920045606868) + β43 = T(0.544974750228521) + α52 = T(0.517231671970585) + α53 = T(0.096059710526147) + β53 = T(0.063692468666290) + α54 = T(0.386708617503269) + β54 = T(0.226007483236906) + c1 = T2(0.391752226571890) + c2 = T2(0.586079689311540) + c3 = T2(0.474542363121400) + c4 = T2(0.935010630967653) + + new{T, T2}(β10, α20, α21, β21, α30, α32, β32, α40, α43, β43, α52, α53, β53, α54, + β54, c1, c2, c3, c4) + end +end + +function alg_cache(alg::SSPRK54, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + u₂ = zero(u) + u₃ = zero(u) + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + k₃ = zero(rate_prototype) + tab = SSPRK54ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SSPRK54Cache(u, uprev, k, fsalfirst, k₃, u₂, u₃, tmp, tab, alg.stage_limiter!, + alg.step_limiter!, alg.thread) +end + +function alg_cache(alg::SSPRK54, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK54ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SSPRK104Cache{uType, rateType, StageLimiter, StepLimiter, Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k::rateType + fsalfirst::rateType + k₄::rateType + tmp::uType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +struct SSPRK104ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SSPRK104, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + if calck + fsalfirst = zero(k) + else + fsalfirst = k + end + k₄ = zero(rate_prototype) + SSPRK104Cache(u, uprev, k, fsalfirst, k₄, tmp, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +function alg_cache(alg::SSPRK104, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SSPRK104ConstantCache() +end diff --git a/src/caches/symplectic_caches.jl b/src/caches/symplectic_caches.jl new file mode 100644 index 0000000000..71c55340dc --- /dev/null +++ b/src/caches/symplectic_caches.jl @@ -0,0 +1,419 @@ +@cache struct SymplecticEulerCache{uType, rateType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType +end + +function alg_cache(alg::SymplecticEuler, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SymplecticEulerCache(u, uprev, zero(u), zero(rate_prototype), zero(rate_prototype)) +end + +struct SymplecticEulerConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::SymplecticEuler, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SymplecticEulerConstantCache() +end + +@cache struct VelocityVerletCache{uType, rateType, uEltypeNoUnits} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + half::uEltypeNoUnits +end + +struct VelocityVerletConstantCache{uEltypeNoUnits} <: OrdinaryDiffEqConstantCache + half::uEltypeNoUnits +end + +function alg_cache(alg::VelocityVerlet, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(rate_prototype) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + half = uEltypeNoUnits(1 // 2) + VelocityVerletCache(u, uprev, k, tmp, fsalfirst, half) +end + +function alg_cache(alg::VelocityVerlet, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + VelocityVerletConstantCache(uEltypeNoUnits(1 // 2)) +end + +@cache struct Symplectic2Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::VerletLeapfrog, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = VerletLeapfrogConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + Symplectic2Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::VerletLeapfrog, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + VerletLeapfrogConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::PseudoVerletLeapfrog, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = PseudoVerletLeapfrogConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + Symplectic2Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::PseudoVerletLeapfrog, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + PseudoVerletLeapfrogConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::McAte2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte2ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic2Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte2, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte2ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic3Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::Ruth3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = Ruth3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic3Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::Ruth3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Ruth3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::McAte3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic3Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte3, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte3ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic4Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::McAte4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic4Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::CandyRoz4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = CandyRoz4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic4Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::CandyRoz4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic45Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::CalvoSanz4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = CalvoSanz4ConstantCache(constvalue(uBottomEltypeNoUnits), + constvalue(tTypeNoUnits)) + Symplectic45Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::CalvoSanz4, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + CalvoSanz4ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +function alg_cache(alg::McAte42, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte42ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic45Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte42, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte42ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic5Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::McAte5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic5Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte5, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte5ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic6Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::Yoshida6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = Yoshida6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic6Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::Yoshida6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Yoshida6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct Symplectic62Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::KahanLi6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = KahanLi6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Symplectic62Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::KahanLi6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + KahanLi6ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct McAte8Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::McAte8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = McAte8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + McAte8Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::McAte8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + McAte8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct KahanLi8Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::KahanLi8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = KahanLi8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + KahanLi8Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::KahanLi8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + KahanLi8ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end + +@cache struct SofSpa10Cache{uType, rateType, tableauType} <: OrdinaryDiffEqMutableCache + u::uType + uprev::uType + tmp::uType + k::rateType + fsalfirst::rateType + tab::tableauType +end + +function alg_cache(alg::SofSpa10, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tmp = zero(u) + k = zero(rate_prototype) + fsalfirst = zero(rate_prototype) + tab = SofSpa10ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + SofSpa10Cache(u, uprev, k, tmp, fsalfirst, tab) +end + +function alg_cache(alg::SofSpa10, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + SofSpa10ConstantCache(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) +end diff --git a/src/caches/verner_caches.jl b/src/caches/verner_caches.jl new file mode 100644 index 0000000000..08b1de0919 --- /dev/null +++ b/src/caches/verner_caches.jl @@ -0,0 +1,258 @@ +@cache struct Vern6Cache{uType, rateType, uNoUnitsType, TabType, StageLimiter, StepLimiter, + Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k1::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + utilde::uType + tmp::uType + rtmp::rateType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +TruncatedStacktraces.@truncate_stacktrace Vern6Cache 1 + +function alg_cache(alg::Vern6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Vern6Tableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = k2 + k4 = zero(rate_prototype) + k5 = zero(rate_prototype) + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = k3 + k9 = zero(rate_prototype) + utilde = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + rtmp = uEltypeNoUnits === eltype(u) ? utilde : zero(rate_prototype) + Vern6Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, utilde, tmp, rtmp, atmp, tab, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +struct Vern6ConstantCache{TabType} <: OrdinaryDiffEqConstantCache + tab::TabType +end + +function alg_cache(alg::Vern6, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Vern6Tableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Vern6ConstantCache(tab) +end + +@cache struct Vern7Cache{uType, rateType, uNoUnitsType, StageLimiter, StepLimiter, + Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k1::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + utilde::uType + tmp::uType + rtmp::rateType + atmp::uNoUnitsType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +TruncatedStacktraces.@truncate_stacktrace Vern7Cache 1 + +function alg_cache(alg::Vern7, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = k2 + k4 = zero(rate_prototype) + k5 = zero(rate_prototype) + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = zero(rate_prototype) + k9 = zero(rate_prototype) + k10 = k2 + utilde = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + rtmp = uEltypeNoUnits === eltype(u) ? utilde : zero(rate_prototype) + Vern7Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, utilde, tmp, rtmp, atmp, + alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +struct Vern7ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::Vern7, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Vern7ConstantCache() +end + +@cache struct Vern8Cache{uType, rateType, uNoUnitsType, TabType, StageLimiter, StepLimiter, + Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k1::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + k11::rateType + k12::rateType + k13::rateType + utilde::uType + tmp::uType + rtmp::rateType + atmp::uNoUnitsType + tab::TabType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +TruncatedStacktraces.@truncate_stacktrace Vern8Cache 1 + +function alg_cache(alg::Vern8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Vern8Tableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = k2 + k4 = zero(rate_prototype) + k5 = k2 + k6 = zero(rate_prototype) + k7 = zero(rate_prototype) + k8 = zero(rate_prototype) + tmp = zero(u) + k9 = zero(rate_prototype) + k10 = zero(rate_prototype) + k11 = zero(rate_prototype) + k12 = zero(rate_prototype) + k13 = k4 + utilde = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + rtmp = uEltypeNoUnits === eltype(u) ? utilde : zero(rate_prototype) + Vern8Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, utilde, + tmp, rtmp, atmp, tab, alg.stage_limiter!, alg.step_limiter!, alg.thread) +end + +struct Vern8ConstantCache{TabType} <: OrdinaryDiffEqConstantCache + tab::TabType +end + +function alg_cache(alg::Vern8, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + tab = Vern8Tableau(constvalue(uBottomEltypeNoUnits), constvalue(tTypeNoUnits)) + Vern8ConstantCache(tab) +end + +@cache struct Vern9Cache{uType, rateType, uNoUnitsType, StageLimiter, StepLimiter, + Thread} <: + OrdinaryDiffEqMutableCache + u::uType + uprev::uType + k1::rateType + k2::rateType + k3::rateType + k4::rateType + k5::rateType + k6::rateType + k7::rateType + k8::rateType + k9::rateType + k10::rateType + k11::rateType + k12::rateType + k13::rateType + k14::rateType + k15::rateType + k16::rateType + utilde::uType + tmp::uType + rtmp::rateType + atmp::uNoUnitsType + stage_limiter!::StageLimiter + step_limiter!::StepLimiter + thread::Thread +end + +TruncatedStacktraces.@truncate_stacktrace Vern9Cache 1 + +function alg_cache(alg::Vern9, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{true}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + k1 = zero(rate_prototype) + k2 = zero(rate_prototype) + k3 = k2 + k4 = zero(rate_prototype) + k5 = k3 + k6 = zero(rate_prototype) + k7 = k4 + k8 = k5 + k9 = zero(rate_prototype) + k10 = zero(rate_prototype) + k11 = zero(rate_prototype) + k12 = zero(rate_prototype) + k13 = zero(rate_prototype) + k14 = zero(rate_prototype) + k15 = zero(rate_prototype) + k16 = k6 + utilde = zero(u) + tmp = zero(u) + atmp = similar(u, uEltypeNoUnits) + recursivefill!(atmp, false) + rtmp = uEltypeNoUnits === eltype(u) ? utilde : zero(rate_prototype) + Vern9Cache(u, uprev, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, + k16, utilde, tmp, rtmp, atmp, alg.stage_limiter!, alg.step_limiter!, + alg.thread) +end + +struct Vern9ConstantCache <: OrdinaryDiffEqConstantCache end + +function alg_cache(alg::Vern9, u, rate_prototype, ::Type{uEltypeNoUnits}, + ::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t, + dt, reltol, p, calck, + ::Val{false}) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits} + Vern9ConstantCache() +end diff --git a/src/dense/verner_addsteps.jl b/src/dense/verner_addsteps.jl new file mode 100644 index 0000000000..9395b42cda --- /dev/null +++ b/src/dense/verner_addsteps.jl @@ -0,0 +1,1323 @@ +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern6Cache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + if length(k) < 9 || always_calc_begin + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, a95, a96, a97, a98 = cache.tab + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, tmp = cache + @.. broadcast=false tmp=uprev + dt * (a21 * k1) + f(k2, tmp, p, t + c1 * dt) + @.. broadcast=false tmp=uprev + dt * (a31 * k1 + a32 * k2) + f(k3, tmp, p, t + c2 * dt) + @.. broadcast=false tmp=uprev + dt * (a41 * k1 + a43 * k3) + f(k4, tmp, p, t + c3 * dt) + @.. broadcast=false tmp=uprev + dt * (a51 * k1 + a53 * k3 + a54 * k4) + f(k5, tmp, p, t + c4 * dt) + @.. broadcast=false tmp=uprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5) + f(k6, tmp, p, t + c5 * dt) + @.. broadcast=false tmp=uprev + + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6) + f(k7, tmp, p, t + c6 * dt) + @.. broadcast=false tmp=uprev + + dt * + (a81 * k1 + a83 * k3 + a84 * k4 + a85 * k5 + a86 * k6 + + a87 * k7) + f(k8, tmp, p, t + dt) + @.. broadcast=false tmp=uprev + + dt * + (a91 * k1 + a94 * k4 + a95 * k5 + a96 * k6 + a97 * k7 + + a98 * k8) + f(k9, tmp, p, t + dt) + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k2) + copyat_or_push!(k, 3, k3) + copyat_or_push!(k, 4, k4) + copyat_or_push!(k, 5, k5) + copyat_or_push!(k, 6, k6) + copyat_or_push!(k, 7, k7) + copyat_or_push!(k, 8, k8) + copyat_or_push!(k, 9, k9) + end + if (allow_calc_end && length(k) < 12) || force_calc_end # Have not added the extra stages yet + @unpack c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211 = cache.tab.extra + @unpack tmp = cache + rtmp = similar(cache.k1) + uidx = eachindex(uprev) + @.. broadcast=false tmp=uprev + + dt * + (a1001 * k[1] + a1004 * k[4] + a1005 * k[5] + a1006 * k[6] + + a1007 * k[7] + a1008 * k[8] + a1009 * k[9]) + f(rtmp, tmp, p, t + c10 * dt) + copyat_or_push!(k, 10, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9] + a1110 * k[10]) + f(rtmp, tmp, p, t + c11 * dt) + copyat_or_push!(k, 11, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + + a1210 * k[10] + a1211 * k[11]) + f(rtmp, tmp, p, t + c12 * dt) + copyat_or_push!(k, 12, rtmp) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern7Cache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern7Tableau T T2 + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, tmp = cache + f(k1, uprev, p, t) + @.. broadcast=false tmp=uprev + dt * (a021 * k1) + f(k2, tmp, p, t + c2 * dt) + @.. broadcast=false tmp=uprev + dt * (a031 * k1 + a032 * k2) + f(k3, tmp, p, t + c3 * dt) + @.. broadcast=false tmp=uprev + dt * (a041 * k1 + a043 * k3) + f(k4, tmp, p, t + c4 * dt) + @.. broadcast=false tmp=uprev + dt * (a051 * k1 + a053 * k3 + a054 * k4) + f(k5, tmp, p, t + c5 * dt) + @.. broadcast=false tmp=uprev + dt * (a061 * k1 + a063 * k3 + a064 * k4 + a065 * k5) + f(k6, tmp, p, t + c6 * dt) + @.. broadcast=false tmp=uprev + + dt * + (a071 * k1 + a073 * k3 + a074 * k4 + a075 * k5 + a076 * k6) + f(k7, tmp, p, t + c7 * dt) + @.. broadcast=false tmp=uprev + + dt * + (a081 * k1 + a083 * k3 + a084 * k4 + a085 * k5 + a086 * k6 + + a087 * k7) + f(k8, tmp, p, t + c8 * dt) + @.. broadcast=false tmp=uprev + + dt * + (a091 * k1 + a093 * k3 + a094 * k4 + a095 * k5 + a096 * k6 + + a097 * k7 + a098 * k8) + f(k9, tmp, p, t + dt) + @.. broadcast=false tmp=uprev + + dt * + (a101 * k1 + a103 * k3 + a104 * k4 + a105 * k5 + a106 * k6 + + a107 * k7) + f(k10, tmp, p, t + dt) + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k2) + copyat_or_push!(k, 3, k3) + copyat_or_push!(k, 4, k4) + copyat_or_push!(k, 5, k5) + copyat_or_push!(k, 6, k6) + copyat_or_push!(k, 7, k7) + copyat_or_push!(k, 8, k8) + copyat_or_push!(k, 9, k9) + copyat_or_push!(k, 10, k10) + end + if (allow_calc_end && length(k) < 16) || force_calc_end # Have not added the extra stages yet + @unpack tmp = cache + rtmp = similar(cache.k1) + @OnDemandTableauExtract Vern7ExtraStages T T2 + @.. broadcast=false tmp=uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9]) + f(rtmp, tmp, p, t + c11 * dt) + copyat_or_push!(k, 11, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1211 * k[11]) + f(rtmp, tmp, p, t + c12 * dt) + copyat_or_push!(k, 12, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1301 * k[1] + a1304 * k[4] + a1305 * k[5] + a1306 * k[6] + + a1307 * k[7] + a1308 * k[8] + a1309 * k[9] + + a1311 * k[11] + a1312 * k[12]) + f(rtmp, tmp, p, t + c13 * dt) + copyat_or_push!(k, 13, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1401 * k[1] + a1404 * k[4] + a1405 * k[5] + a1406 * k[6] + + a1407 * k[7] + a1408 * k[8] + a1409 * k[9] + + a1411 * k[11] + a1412 * k[12] + a1413 * k[13]) + f(rtmp, tmp, p, t + c14 * dt) + copyat_or_push!(k, 14, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1501 * k[1] + a1504 * k[4] + a1505 * k[5] + a1506 * k[6] + + a1507 * k[7] + a1508 * k[8] + a1509 * k[9] + + a1511 * k[11] + a1512 * k[12] + a1513 * k[13]) + f(rtmp, tmp, p, t + c15 * dt) + copyat_or_push!(k, 15, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1601 * k[1] + a1604 * k[4] + a1605 * k[5] + a1606 * k[6] + + a1607 * k[7] + a1608 * k[8] + a1609 * k[9] + + a1611 * k[11] + a1612 * k[12] + a1613 * k[13]) + f(rtmp, tmp, p, t + c16 * dt) + copyat_or_push!(k, 16, rtmp) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern7Cache{<:Array}, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern7Tableau T T2 + + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, tmp = cache + f(k1, uprev, p, t) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + dt * (a021 * k1[i]) + end + f(k2, tmp, p, t + c2 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + dt * (a031 * k1[i] + a032 * k2[i]) + end + f(k3, tmp, p, t + c3 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + dt * (a041 * k1[i] + a043 * k3[i]) + end + f(k4, tmp, p, t + c4 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + dt * (a051 * k1[i] + a053 * k3[i] + a054 * k4[i]) + end + f(k5, tmp, p, t + c5 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a061 * k1[i] + a063 * k3[i] + a064 * k4[i] + a065 * k5[i]) + end + f(k6, tmp, p, t + c6 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a071 * k1[i] + a073 * k3[i] + a074 * k4[i] + a075 * k5[i] + + a076 * k6[i]) + end + f(k7, tmp, p, t + c7 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a081 * k1[i] + a083 * k3[i] + a084 * k4[i] + a085 * k5[i] + + a086 * k6[i] + a087 * k7[i]) + end + f(k8, tmp, p, t + c8 * dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a091 * k1[i] + a093 * k3[i] + a094 * k4[i] + a095 * k5[i] + + a096 * k6[i] + a097 * k7[i] + a098 * k8[i]) + end + f(k9, tmp, p, t + dt) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a101 * k1[i] + a103 * k3[i] + a104 * k4[i] + a105 * k5[i] + + a106 * k6[i] + a107 * k7[i]) + end + f(k10, tmp, p, t + dt) + + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k2) + copyat_or_push!(k, 3, k3) + copyat_or_push!(k, 4, k4) + copyat_or_push!(k, 5, k5) + copyat_or_push!(k, 6, k6) + copyat_or_push!(k, 7, k7) + copyat_or_push!(k, 8, k8) + copyat_or_push!(k, 9, k9) + copyat_or_push!(k, 10, k10) + end + if (allow_calc_end && length(k) < 16) || force_calc_end # Have not added the extra stages yet + @unpack tmp = cache + rtmp = similar(cache.k1) + @OnDemandTableauExtract Vern7ExtraStages T T2 + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1101 * k[1][i] + a1104 * k[4][i] + a1105 * k[5][i] + + a1106 * k[6][i] + a1107 * k[7][i] + a1108 * k[8][i] + a1109 * k[9][i]) + end + f(rtmp, tmp, p, t + c11 * dt) + copyat_or_push!(k, 11, rtmp) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1201 * k[1][i] + a1204 * k[4][i] + a1205 * k[5][i] + + a1206 * k[6][i] + a1207 * k[7][i] + a1208 * k[8][i] + + a1209 * k[9][i] + a1211 * k[11][i]) + end + f(rtmp, tmp, p, t + c12 * dt) + copyat_or_push!(k, 12, rtmp) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1301 * k[1][i] + a1304 * k[4][i] + a1305 * k[5][i] + + a1306 * k[6][i] + a1307 * k[7][i] + a1308 * k[8][i] + + a1309 * k[9][i] + a1311 * k[11][i] + a1312 * k[12][i]) + end + f(rtmp, tmp, p, t + c13 * dt) + copyat_or_push!(k, 13, rtmp) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1401 * k[1][i] + a1404 * k[4][i] + a1405 * k[5][i] + + a1406 * k[6][i] + a1407 * k[7][i] + a1408 * k[8][i] + + a1409 * k[9][i] + a1411 * k[11][i] + a1412 * k[12][i] + + a1413 * k[13][i]) + end + f(rtmp, tmp, p, t + c14 * dt) + copyat_or_push!(k, 14, rtmp) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1501 * k[1][i] + a1504 * k[4][i] + a1505 * k[5][i] + + a1506 * k[6][i] + a1507 * k[7][i] + a1508 * k[8][i] + + a1509 * k[9][i] + a1511 * k[11][i] + a1512 * k[12][i] + + a1513 * k[13][i]) + end + f(rtmp, tmp, p, t + c15 * dt) + copyat_or_push!(k, 15, rtmp) + + @inbounds @simd ivdep for i in eachindex(u) + tmp[i] = uprev[i] + + dt * (a1601 * k[1][i] + a1604 * k[4][i] + a1605 * k[5][i] + + a1606 * k[6][i] + a1607 * k[7][i] + a1608 * k[8][i] + + a1609 * k[9][i] + a1611 * k[11][i] + a1612 * k[12][i] + + a1613 * k[13][i]) + end + f(rtmp, tmp, p, t + c16 * dt) + copyat_or_push!(k, 16, rtmp) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern8Cache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + if length(k) < 13 || always_calc_begin + @unpack c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, a1307, a1308, a1309, a1310 = cache.tab + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, tmp = cache + f(k1, uprev, p, t) + @.. broadcast=false tmp=uprev + dt * (a0201 * k1) + f(k2, tmp, p, t + c2 * dt) + @.. broadcast=false tmp=uprev + dt * (a0301 * k1 + a0302 * k2) + f(k3, tmp, p, t + c3 * dt) + @.. broadcast=false tmp=uprev + dt * (a0401 * k1 + a0403 * k3) + f(k4, tmp, p, t + c4 * dt) + @.. broadcast=false tmp=uprev + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4) + f(k5, tmp, p, t + c5 * dt) + @.. broadcast=false tmp=uprev + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5) + f(k6, tmp, p, t + c6 * dt) + @.. broadcast=false tmp=uprev + + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + a0706 * k6) + f(k7, tmp, p, t + c7 * dt) + @.. broadcast=false tmp=uprev + + dt * (a0801 * k1 + a0804 * k4 + a0805 * k5 + a0806 * k6 + + a0807 * k7) + f(k8, tmp, p, t + c8 * dt) + @.. broadcast=false tmp=uprev + + dt * (a0901 * k1 + a0904 * k4 + a0905 * k5 + a0906 * k6 + + a0907 * k7 + a0908 * k8) + f(k9, tmp, p, t + c9 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1001 * k1 + a1004 * k4 + a1005 * k5 + a1006 * k6 + + a1007 * k7 + a1008 * k8 + a1009 * k9) + f(k10, tmp, p, t + c10 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1101 * k1 + a1104 * k4 + a1105 * k5 + a1106 * k6 + + a1107 * k7 + a1108 * k8 + a1109 * k9 + a1110 * k10) + f(k11, tmp, p, t + c11 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1201 * k1 + a1204 * k4 + a1205 * k5 + a1206 * k6 + + a1207 * k7 + a1208 * k8 + a1209 * k9 + a1210 * k10 + + a1211 * k11) + f(k12, tmp, p, t + dt) + @.. broadcast=false tmp=uprev + + dt * (a1301 * k1 + a1304 * k4 + a1305 * k5 + a1306 * k6 + + a1307 * k7 + a1308 * k8 + a1309 * k9 + a1310 * k10) + f(k13, tmp, p, t + dt) + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k2) + copyat_or_push!(k, 3, k3) + copyat_or_push!(k, 4, k4) + copyat_or_push!(k, 5, k5) + copyat_or_push!(k, 6, k6) + copyat_or_push!(k, 7, k7) + copyat_or_push!(k, 8, k8) + copyat_or_push!(k, 9, k9) + copyat_or_push!(k, 10, k10) + copyat_or_push!(k, 11, k11) + copyat_or_push!(k, 12, k12) + copyat_or_push!(k, 13, k13) + end + if (allow_calc_end && length(k) < 21) || force_calc_end # Have not added the extra stages yet + rtmp = similar(cache.k1) + @unpack c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, a2114, a2115, a2116, a2117 = cache.tab.extra + @unpack tmp = cache + @.. broadcast=false tmp=uprev + + dt * + (a1401 * k[1] + a1406 * k[6] + a1407 * k[7] + a1408 * k[8] + + a1409 * k[9] + a1410 * k[10] + a1411 * k[11] + + a1412 * k[12]) + f(rtmp, tmp, p, t + c14 * dt) + copyat_or_push!(k, 14, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1501 * k[1] + a1506 * k[6] + a1507 * k[7] + a1508 * k[8] + + a1509 * k[9] + a1510 * k[10] + a1511 * k[11] + + a1512 * k[12] + a1514 * k[14]) + f(rtmp, tmp, p, t + c15 * dt) + copyat_or_push!(k, 15, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1601 * k[1] + a1606 * k[6] + a1607 * k[7] + a1608 * k[8] + + a1609 * k[9] + a1610 * k[10] + a1611 * k[11] + + a1612 * k[12] + a1614 * k[14] + a1615 * k[15]) + f(rtmp, tmp, p, t + c16 * dt) + copyat_or_push!(k, 16, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1701 * k[1] + a1706 * k[6] + a1707 * k[7] + a1708 * k[8] + + a1709 * k[9] + a1710 * k[10] + a1711 * k[11] + + a1712 * k[12] + a1714 * k[14] + a1715 * k[15] + + a1716 * k[16]) + f(rtmp, tmp, p, t + c17 * dt) + copyat_or_push!(k, 17, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1801 * k[1] + a1806 * k[6] + a1807 * k[7] + a1808 * k[8] + + a1809 * k[9] + a1810 * k[10] + a1811 * k[11] + + a1812 * k[12] + a1814 * k[14] + a1815 * k[15] + + a1816 * k[16] + a1817 * k[17]) + f(rtmp, tmp, p, t + c18 * dt) + copyat_or_push!(k, 18, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1901 * k[1] + a1906 * k[6] + a1907 * k[7] + a1908 * k[8] + + a1909 * k[9] + a1910 * k[10] + a1911 * k[11] + + a1912 * k[12] + a1914 * k[14] + a1915 * k[15] + + a1916 * k[16] + a1917 * k[17]) + f(rtmp, tmp, p, t + c19 * dt) + copyat_or_push!(k, 19, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2001 * k[1] + a2006 * k[6] + a2007 * k[7] + a2008 * k[8] + + a2009 * k[9] + a2010 * k[10] + a2011 * k[11] + + a2012 * k[12] + a2014 * k[14] + a2015 * k[15] + + a2016 * k[16] + a2017 * k[17]) + f(rtmp, tmp, p, t + c20 * dt) + copyat_or_push!(k, 20, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2101 * k[1] + a2106 * k[6] + a2107 * k[7] + a2108 * k[8] + + a2109 * k[9] + a2110 * k[10] + a2111 * k[11] + + a2112 * k[12] + a2114 * k[14] + a2115 * k[15] + + a2116 * k[16] + a2117 * k[17]) + f(rtmp, tmp, p, t + c21 * dt) + copyat_or_push!(k, 21, rtmp) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern9Cache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern9Tableau T T2 + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, tmp = cache + uidx = eachindex(uprev) + f(k1, uprev, p, t) + @.. broadcast=false tmp=uprev + dt * (a0201 * k1) + f(k2, tmp, p, t + c1 * dt) + @.. broadcast=false tmp=uprev + dt * (a0301 * k1 + a0302 * k2) + f(k3, tmp, p, t + c2 * dt) + @.. broadcast=false tmp=uprev + dt * (a0401 * k1 + a0403 * k3) + f(k4, tmp, p, t + c3 * dt) + @.. broadcast=false tmp=uprev + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4) + f(k5, tmp, p, t + c4 * dt) + @.. broadcast=false tmp=uprev + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5) + f(k6, tmp, p, t + c5 * dt) + @.. broadcast=false tmp=uprev + + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + a0706 * k6) + f(k7, tmp, p, t + c6 * dt) + @.. broadcast=false tmp=uprev + dt * (a0801 * k1 + a0806 * k6 + a0807 * k7) + f(k8, tmp, p, t + c7 * dt) + @.. broadcast=false tmp=uprev + + dt * (a0901 * k1 + a0906 * k6 + a0907 * k7 + a0908 * k8) + f(k9, tmp, p, t + c8 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1001 * k1 + a1006 * k6 + a1007 * k7 + a1008 * k8 + + a1009 * k9) + f(k10, tmp, p, t + c9 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1101 * k1 + a1106 * k6 + a1107 * k7 + a1108 * k8 + + a1109 * k9 + a1110 * k10) + f(k11, tmp, p, t + c10 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1201 * k1 + a1206 * k6 + a1207 * k7 + a1208 * k8 + + a1209 * k9 + a1210 * k10 + a1211 * k11) + f(k12, tmp, p, t + c11 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1301 * k1 + a1306 * k6 + a1307 * k7 + a1308 * k8 + + a1309 * k9 + a1310 * k10 + a1311 * k11 + a1312 * k12) + f(k13, tmp, p, t + c12 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1401 * k1 + a1406 * k6 + a1407 * k7 + a1408 * k8 + + a1409 * k9 + a1410 * k10 + a1411 * k11 + a1412 * k12 + + a1413 * k13) + f(k14, tmp, p, t + c13 * dt) + @.. broadcast=false tmp=uprev + + dt * (a1501 * k1 + a1506 * k6 + a1507 * k7 + a1508 * k8 + + a1509 * k9 + a1510 * k10 + a1511 * k11 + a1512 * k12 + + a1513 * k13 + a1514 * k14) + f(k15, tmp, p, t + dt) + @.. broadcast=false tmp=uprev + + dt * (a1601 * k1 + a1606 * k6 + a1607 * k7 + a1608 * k8 + + a1609 * k9 + a1610 * k10 + a1611 * k11 + a1612 * k12 + + a1613 * k13) + f(k16, tmp, p, t + dt) + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k8) + copyat_or_push!(k, 3, k9) + copyat_or_push!(k, 4, k10) + copyat_or_push!(k, 5, k11) + copyat_or_push!(k, 6, k12) + copyat_or_push!(k, 7, k13) + copyat_or_push!(k, 8, k14) + copyat_or_push!(k, 9, k15) + copyat_or_push!(k, 10, k16) + end + if (allow_calc_end && length(k) < 20) || force_calc_end # Have not added the extra stages yet + rtmp = similar(cache.k1) + uidx = eachindex(uprev) + @unpack tmp = cache + @OnDemandTableauExtract Vern9ExtraStages T T2 + @.. broadcast=false tmp=uprev + + dt * + (a1701 * k[1] + a1708 * k[2] + a1709 * k[3] + a1710 * k[4] + + a1711 * k[5] + a1712 * k[6] + a1713 * k[7] + a1714 * k[8] + + a1715 * k[9]) + f(rtmp, tmp, p, t + c17 * dt) + copyat_or_push!(k, 11, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1801 * k[1] + a1808 * k[2] + a1809 * k[3] + a1810 * k[4] + + a1811 * k[5] + a1812 * k[6] + a1813 * k[7] + a1814 * k[8] + + a1815 * k[9] + a1817 * k[11]) + f(rtmp, tmp, p, t + c18 * dt) + copyat_or_push!(k, 12, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a1901 * k[1] + a1908 * k[2] + a1909 * k[3] + a1910 * k[4] + + a1911 * k[5] + a1912 * k[6] + a1913 * k[7] + a1914 * k[8] + + a1915 * k[9] + a1917 * k[11] + a1918 * k[12]) + f(rtmp, tmp, p, t + c19 * dt) + copyat_or_push!(k, 13, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2001 * k[1] + a2008 * k[2] + a2009 * k[3] + a2010 * k[4] + + a2011 * k[5] + a2012 * k[6] + a2013 * k[7] + a2014 * k[8] + + a2015 * k[9] + a2017 * k[11] + a2018 * k[12] + + a2019 * k[13]) + f(rtmp, tmp, p, t + c20 * dt) + copyat_or_push!(k, 14, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2101 * k[1] + a2108 * k[2] + a2109 * k[3] + a2110 * k[4] + + a2111 * k[5] + a2112 * k[6] + a2113 * k[7] + a2114 * k[8] + + a2115 * k[9] + a2117 * k[11] + a2118 * k[12] + + a2119 * k[13] + a2120 * k[14]) + f(rtmp, tmp, p, t + c21 * dt) + copyat_or_push!(k, 15, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2201 * k[1] + a2208 * k[2] + a2209 * k[3] + a2210 * k[4] + + a2211 * k[5] + a2212 * k[6] + a2213 * k[7] + a2214 * k[8] + + a2215 * k[9] + a2217 * k[11] + a2218 * k[12] + + a2219 * k[13] + a2220 * k[14] + a2221 * k[15]) + f(rtmp, tmp, p, t + c22 * dt) + copyat_or_push!(k, 16, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2301 * k[1] + a2308 * k[2] + a2309 * k[3] + a2310 * k[4] + + a2311 * k[5] + a2312 * k[6] + a2313 * k[7] + a2314 * k[8] + + a2315 * k[9] + a2317 * k[11] + a2318 * k[12] + + a2319 * k[13] + a2320 * k[14] + a2321 * k[15]) + f(rtmp, tmp, p, t + c23 * dt) + copyat_or_push!(k, 17, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2401 * k[1] + a2408 * k[2] + a2409 * k[3] + a2410 * k[4] + + a2411 * k[5] + a2412 * k[6] + a2413 * k[7] + a2414 * k[8] + + a2415 * k[9] + a2417 * k[11] + a2418 * k[12] + + a2419 * k[13] + a2420 * k[14] + a2421 * k[15]) + f(rtmp, tmp, p, t + c24 * dt) + copyat_or_push!(k, 18, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2501 * k[1] + a2508 * k[2] + a2509 * k[3] + a2510 * k[4] + + a2511 * k[5] + a2512 * k[6] + a2513 * k[7] + a2514 * k[8] + + a2515 * k[9] + a2517 * k[11] + a2518 * k[12] + + a2519 * k[13] + a2520 * k[14] + a2521 * k[15]) + f(rtmp, tmp, p, t + c25 * dt) + copyat_or_push!(k, 19, rtmp) + @.. broadcast=false tmp=uprev + + dt * + (a2601 * k[1] + a2608 * k[2] + a2609 * k[3] + a2610 * k[4] + + a2611 * k[5] + a2612 * k[6] + a2613 * k[7] + a2614 * k[8] + + a2615 * k[9] + a2617 * k[11] + a2618 * k[12] + + a2619 * k[13] + a2620 * k[14] + a2621 * k[15]) + f(rtmp, tmp, p, t + c26 * dt) + copyat_or_push!(k, 20, rtmp) + end + nothing +end +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern9Cache{<:Array}, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern9Tableau T T2 + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, tmp = cache + uidx = eachindex(uprev) + f(k1, uprev, p, t) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0201 * k1[i]) + end + f(k2, tmp, p, t + c1 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0301 * k1[i] + a0302 * k2[i]) + end + f(k3, tmp, p, t + c2 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0401 * k1[i] + a0403 * k3[i]) + end + f(k4, tmp, p, t + c3 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0501 * k1[i] + a0503 * k3[i] + a0504 * k4[i]) + end + f(k5, tmp, p, t + c4 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0601 * k1[i] + a0604 * k4[i] + a0605 * k5[i]) + end + f(k6, tmp, p, t + c5 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a0701 * k1[i] + a0704 * k4[i] + a0705 * k5[i] + a0706 * k6[i]) + end + f(k7, tmp, p, t + c6 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + dt * (a0801 * k1[i] + a0806 * k6[i] + a0807 * k7[i]) + end + f(k8, tmp, p, t + c7 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a0901 * k1[i] + a0906 * k6[i] + a0907 * k7[i] + a0908 * k8[i]) + end + f(k9, tmp, p, t + c8 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1001 * k1[i] + a1006 * k6[i] + a1007 * k7[i] + a1008 * k8[i] + + a1009 * k9[i]) + end + f(k10, tmp, p, t + c9 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1101 * k1[i] + a1106 * k6[i] + a1107 * k7[i] + a1108 * k8[i] + + a1109 * k9[i] + a1110 * k10[i]) + end + f(k11, tmp, p, t + c10 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1201 * k1[i] + a1206 * k6[i] + a1207 * k7[i] + a1208 * k8[i] + + a1209 * k9[i] + a1210 * k10[i] + a1211 * k11[i]) + end + f(k12, tmp, p, t + c11 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1301 * k1[i] + a1306 * k6[i] + a1307 * k7[i] + a1308 * k8[i] + + a1309 * k9[i] + a1310 * k10[i] + a1311 * k11[i] + a1312 * k12[i]) + end + f(k13, tmp, p, t + c12 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1401 * k1[i] + a1406 * k6[i] + a1407 * k7[i] + a1408 * k8[i] + + a1409 * k9[i] + a1410 * k10[i] + a1411 * k11[i] + a1412 * k12[i] + + a1413 * k13[i]) + end + f(k14, tmp, p, t + c13 * dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1501 * k1[i] + a1506 * k6[i] + a1507 * k7[i] + a1508 * k8[i] + + a1509 * k9[i] + a1510 * k10[i] + a1511 * k11[i] + a1512 * k12[i] + + a1513 * k13[i] + a1514 * k14[i]) + end + f(k15, tmp, p, t + dt) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1601 * k1[i] + a1606 * k6[i] + a1607 * k7[i] + a1608 * k8[i] + + a1609 * k9[i] + a1610 * k10[i] + a1611 * k11[i] + a1612 * k12[i] + + a1613 * k13[i]) + end + f(k16, tmp, p, t + dt) + copyat_or_push!(k, 1, k1) + copyat_or_push!(k, 2, k8) + copyat_or_push!(k, 3, k9) + copyat_or_push!(k, 4, k10) + copyat_or_push!(k, 5, k11) + copyat_or_push!(k, 6, k12) + copyat_or_push!(k, 7, k13) + copyat_or_push!(k, 8, k14) + copyat_or_push!(k, 9, k15) + copyat_or_push!(k, 10, k16) + end + if (allow_calc_end && length(k) < 20) || force_calc_end # Have not added the extra stages yet + rtmp = similar(cache.k1) + uidx = eachindex(uprev) + @unpack tmp = cache + @OnDemandTableauExtract Vern9ExtraStages T T2 + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1701 * k[1][i] + a1708 * k[2][i] + a1709 * k[3][i] + + a1710 * k[4][i] + a1711 * k[5][i] + a1712 * k[6][i] + + a1713 * k[7][i] + a1714 * k[8][i] + a1715 * k[9][i]) + end + f(rtmp, tmp, p, t + c17 * dt) + copyat_or_push!(k, 11, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1801 * k[1][i] + a1808 * k[2][i] + a1809 * k[3][i] + + a1810 * k[4][i] + a1811 * k[5][i] + a1812 * k[6][i] + + a1813 * k[7][i] + a1814 * k[8][i] + a1815 * k[9][i] + + a1817 * k[11][i]) + end + f(rtmp, tmp, p, t + c18 * dt) + copyat_or_push!(k, 12, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a1901 * k[1][i] + a1908 * k[2][i] + a1909 * k[3][i] + + a1910 * k[4][i] + a1911 * k[5][i] + a1912 * k[6][i] + + a1913 * k[7][i] + a1914 * k[8][i] + a1915 * k[9][i] + + a1917 * k[11][i] + a1918 * k[12][i]) + end + f(rtmp, tmp, p, t + c19 * dt) + copyat_or_push!(k, 13, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2001 * k[1][i] + a2008 * k[2][i] + a2009 * k[3][i] + + a2010 * k[4][i] + a2011 * k[5][i] + a2012 * k[6][i] + + a2013 * k[7][i] + a2014 * k[8][i] + a2015 * k[9][i] + + a2017 * k[11][i] + a2018 * k[12][i] + a2019 * k[13][i]) + end + f(rtmp, tmp, p, t + c20 * dt) + copyat_or_push!(k, 14, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2101 * k[1][i] + a2108 * k[2][i] + a2109 * k[3][i] + + a2110 * k[4][i] + a2111 * k[5][i] + a2112 * k[6][i] + + a2113 * k[7][i] + a2114 * k[8][i] + a2115 * k[9][i] + + a2117 * k[11][i] + a2118 * k[12][i] + a2119 * k[13][i] + + a2120 * k[14][i]) + end + f(rtmp, tmp, p, t + c21 * dt) + copyat_or_push!(k, 15, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2201 * k[1][i] + a2208 * k[2][i] + a2209 * k[3][i] + + a2210 * k[4][i] + a2211 * k[5][i] + a2212 * k[6][i] + + a2213 * k[7][i] + a2214 * k[8][i] + a2215 * k[9][i] + + a2217 * k[11][i] + a2218 * k[12][i] + a2219 * k[13][i] + + a2220 * k[14][i] + a2221 * k[15][i]) + end + f(rtmp, tmp, p, t + c22 * dt) + copyat_or_push!(k, 16, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2301 * k[1][i] + a2308 * k[2][i] + a2309 * k[3][i] + + a2310 * k[4][i] + a2311 * k[5][i] + a2312 * k[6][i] + + a2313 * k[7][i] + a2314 * k[8][i] + a2315 * k[9][i] + + a2317 * k[11][i] + a2318 * k[12][i] + a2319 * k[13][i] + + a2320 * k[14][i] + a2321 * k[15][i]) + end + f(rtmp, tmp, p, t + c23 * dt) + copyat_or_push!(k, 17, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2401 * k[1][i] + a2408 * k[2][i] + a2409 * k[3][i] + + a2410 * k[4][i] + a2411 * k[5][i] + a2412 * k[6][i] + + a2413 * k[7][i] + a2414 * k[8][i] + a2415 * k[9][i] + + a2417 * k[11][i] + a2418 * k[12][i] + a2419 * k[13][i] + + a2420 * k[14][i] + a2421 * k[15][i]) + end + f(rtmp, tmp, p, t + c24 * dt) + copyat_or_push!(k, 18, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2501 * k[1][i] + a2508 * k[2][i] + a2509 * k[3][i] + + a2510 * k[4][i] + a2511 * k[5][i] + a2512 * k[6][i] + + a2513 * k[7][i] + a2514 * k[8][i] + a2515 * k[9][i] + + a2517 * k[11][i] + a2518 * k[12][i] + a2519 * k[13][i] + + a2520 * k[14][i] + a2521 * k[15][i]) + end + f(rtmp, tmp, p, t + c25 * dt) + copyat_or_push!(k, 19, rtmp) + + @inbounds @simd ivdep for i in uidx + tmp[i] = uprev[i] + + dt * (a2601 * k[1][i] + a2608 * k[2][i] + a2609 * k[3][i] + + a2610 * k[4][i] + a2611 * k[5][i] + a2612 * k[6][i] + + a2613 * k[7][i] + a2614 * k[8][i] + a2615 * k[9][i] + + a2617 * k[11][i] + a2618 * k[12][i] + a2619 * k[13][i] + + a2620 * k[14][i] + a2621 * k[15][i]) + end + f(rtmp, tmp, p, t + c26 * dt) + copyat_or_push!(k, 20, rtmp) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern6ConstantCache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + if length(k) < 9 || always_calc_begin + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, a95, a96, a97, a98 = cache.tab + copyat_or_push!(k, 1, f(uprev, p, t)) + copyat_or_push!(k, 2, f(uprev + dt * (a21 * k[1]), p, t + c1 * dt)) + copyat_or_push!(k, 3, f(uprev + dt * (a31 * k[1] + a32 * k[2]), p, t + c2 * dt)) + copyat_or_push!(k, 4, f(uprev + dt * (a41 * k[1] + a43 * k[3]), p, t + c3 * dt)) + copyat_or_push!(k, 5, + f(uprev + dt * (a51 * k[1] + a53 * k[3] + a54 * k[4]), p, + t + c4 * dt)) + copyat_or_push!(k, 6, + f(uprev + dt * (a61 * k[1] + a63 * k[3] + a64 * k[4] + a65 * k[5]), + p, t + c5 * dt)) + copyat_or_push!(k, 7, + f( + uprev + + dt * + (a71 * k[1] + a73 * k[3] + a74 * k[4] + a75 * k[5] + a76 * k[6]), + p, t + c6 * dt)) + copyat_or_push!(k, 8, + f( + uprev + + dt * + (a81 * k[1] + a83 * k[3] + a84 * k[4] + a85 * k[5] + a86 * k[6] + + a87 * k[7]), + p, + t + dt)) + copyat_or_push!(k, 9, + f( + uprev + + dt * + (a91 * k[1] + a94 * k[4] + a95 * k[5] + a96 * k[6] + a97 * k[7] + + a98 * k[8]), + p, + t + dt)) + end + if (allow_calc_end && length(k) < 12) || force_calc_end # Have not added the extra stages yet + @unpack c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211 = cache.tab.extra + copyat_or_push!(k, 10, + f( + uprev + + dt * + (a1001 * k[1] + a1004 * k[4] + a1005 * k[5] + a1006 * k[6] + + a1007 * k[7] + a1008 * k[8] + a1009 * k[9]), + p, + t + c10 * dt)) + copyat_or_push!(k, 11, + f( + uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9] + a1110 * k[10]), + p, + t + c11 * dt)) + copyat_or_push!(k, 12, + f( + uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1210 * k[10] + + a1211 * k[11]), + p, + t + c12 * dt)) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern7ConstantCache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern7Tableau T T2 + copyat_or_push!(k, 1, f(uprev, p, t)) + copyat_or_push!(k, 2, f(uprev + dt * (a021 * k[1]), p, t + c2 * dt)) + copyat_or_push!(k, 3, f(uprev + dt * (a031 * k[1] + a032 * k[2]), p, t + c3 * dt)) + copyat_or_push!(k, 4, f(uprev + dt * (a041 * k[1] + a043 * k[3]), p, t + c4 * dt)) + copyat_or_push!(k, 5, + f(uprev + dt * (a051 * k[1] + a053 * k[3] + a054 * k[4]), p, + t + c5 * dt)) + copyat_or_push!(k, 6, + f(uprev + + dt * (a061 * k[1] + a063 * k[3] + a064 * k[4] + a065 * k[5]), p, + t + c6 * dt)) + copyat_or_push!(k, 7, + f( + uprev + + dt * (a071 * k[1] + a073 * k[3] + a074 * k[4] + a075 * k[5] + + a076 * k[6]), + p, + t + c7 * dt)) + copyat_or_push!(k, 8, + f( + uprev + + dt * (a081 * k[1] + a083 * k[3] + a084 * k[4] + a085 * k[5] + + a086 * k[6] + a087 * k[7]), + p, + t + c8 * dt)) + copyat_or_push!(k, 9, + f( + uprev + + dt * (a091 * k[1] + a093 * k[3] + a094 * k[4] + a095 * k[5] + + a096 * k[6] + a097 * k[7] + a098 * k[8]), + p, + t + dt)) + copyat_or_push!(k, 10, + f( + uprev + + dt * (a101 * k[1] + a103 * k[3] + a104 * k[4] + a105 * k[5] + + a106 * k[6] + a107 * k[7]), + p, + t + dt)) + end + if (allow_calc_end && length(k) < 16) || force_calc_end # Have not added the extra stages yet + @OnDemandTableauExtract Vern7ExtraStages T T2 + copyat_or_push!(k, 11, + f( + uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9]), + p, + t + c11 * dt)) + copyat_or_push!(k, 12, + f( + uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1211 * k[11]), + p, + t + c12 * dt)) + copyat_or_push!(k, 13, + f( + uprev + + dt * + (a1301 * k[1] + a1304 * k[4] + a1305 * k[5] + a1306 * k[6] + + a1307 * k[7] + a1308 * k[8] + a1309 * k[9] + a1311 * k[11] + + a1312 * k[12]), + p, + t + c13 * dt)) + copyat_or_push!(k, 14, + f( + uprev + + dt * + (a1401 * k[1] + a1404 * k[4] + a1405 * k[5] + a1406 * k[6] + + a1407 * k[7] + a1408 * k[8] + a1409 * k[9] + a1411 * k[11] + + a1412 * k[12] + a1413 * k[13]), + p, + t + c14 * dt)) + copyat_or_push!(k, 15, + f( + uprev + + dt * + (a1501 * k[1] + a1504 * k[4] + a1505 * k[5] + a1506 * k[6] + + a1507 * k[7] + a1508 * k[8] + a1509 * k[9] + a1511 * k[11] + + a1512 * k[12] + a1513 * k[13]), + p, + t + c15 * dt)) + copyat_or_push!(k, 16, + f( + uprev + + dt * + (a1601 * k[1] + a1604 * k[4] + a1605 * k[5] + a1606 * k[6] + + a1607 * k[7] + a1608 * k[8] + a1609 * k[9] + a1611 * k[11] + + a1612 * k[12] + a1613 * k[13]), + p, + t + c16 * dt)) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern8ConstantCache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + if length(k) < 13 || always_calc_begin + @unpack c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, a1307, a1308, a1309, a1310 = cache.tab + copyat_or_push!(k, 1, f(uprev, p, t)) + copyat_or_push!(k, 2, f(uprev + dt * (a0201 * k[1]), p, t + c2 * dt)) + copyat_or_push!(k, 3, f(uprev + dt * (a0301 * k[1] + a0302 * k[2]), p, t + c3 * dt)) + copyat_or_push!(k, 4, f(uprev + dt * (a0401 * k[1] + a0403 * k[3]), p, t + c4 * dt)) + copyat_or_push!(k, 5, + f(uprev + dt * (a0501 * k[1] + a0503 * k[3] + a0504 * k[4]), p, + t + c5 * dt)) + copyat_or_push!(k, 6, + f(uprev + dt * (a0601 * k[1] + a0604 * k[4] + a0605 * k[5]), p, + t + c6 * dt)) + copyat_or_push!(k, 7, + f(uprev + + dt * (a0701 * k[1] + a0704 * k[4] + a0705 * k[5] + a0706 * k[6]), + p, t + c7 * dt)) + copyat_or_push!(k, 8, + f( + uprev + + dt * + (a0801 * k[1] + a0804 * k[4] + a0805 * k[5] + a0806 * k[6] + + a0807 * k[7]), + p, + t + c8 * dt)) + copyat_or_push!(k, 9, + f( + uprev + + dt * + (a0901 * k[1] + a0904 * k[4] + a0905 * k[5] + a0906 * k[6] + + a0907 * k[7] + a0908 * k[8]), + p, + t + c9 * dt)) + copyat_or_push!(k, 10, + f( + uprev + + dt * + (a1001 * k[1] + a1004 * k[4] + a1005 * k[5] + a1006 * k[6] + + a1007 * k[7] + a1008 * k[8] + a1009 * k[9]), + p, + t + c10 * dt)) + copyat_or_push!(k, 11, + f( + uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9] + a1110 * k[10]), + p, + t + c11 * dt)) + copyat_or_push!(k, 12, + f( + uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1210 * k[10] + + a1211 * k[11]), + p, + t + dt)) + copyat_or_push!(k, 13, + f( + uprev + + dt * + (a1301 * k[1] + a1304 * k[4] + a1305 * k[5] + a1306 * k[6] + + a1307 * k[7] + a1308 * k[8] + a1309 * k[9] + a1310 * k[10]), + p, + t + dt)) + end + if (allow_calc_end && length(k) < 21) || force_calc_end # Have not added the extra stages yet + @unpack c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, a2114, a2115, a2116, a2117 = cache.tab.extra + copyat_or_push!(k, 14, + f( + uprev + + dt * + (a1401 * k[1] + a1406 * k[6] + a1407 * k[7] + a1408 * k[8] + + a1409 * k[9] + a1410 * k[10] + a1411 * k[11] + a1412 * k[12]), + p, + t + c14 * dt)) + copyat_or_push!(k, 15, + f( + uprev + + dt * + (a1501 * k[1] + a1506 * k[6] + a1507 * k[7] + a1508 * k[8] + + a1509 * k[9] + a1510 * k[10] + a1511 * k[11] + a1512 * k[12] + + a1514 * k[14]), + p, + t + c15 * dt)) + copyat_or_push!(k, 16, + f( + uprev + + dt * + (a1601 * k[1] + a1606 * k[6] + a1607 * k[7] + a1608 * k[8] + + a1609 * k[9] + a1610 * k[10] + a1611 * k[11] + a1612 * k[12] + + a1614 * k[14] + a1615 * k[15]), + p, + t + c16 * dt)) + copyat_or_push!(k, 17, + f( + uprev + + dt * + (a1701 * k[1] + a1706 * k[6] + a1707 * k[7] + a1708 * k[8] + + a1709 * k[9] + a1710 * k[10] + a1711 * k[11] + a1712 * k[12] + + a1714 * k[14] + a1715 * k[15] + a1716 * k[16]), + p, + t + c17 * dt)) + copyat_or_push!(k, 18, + f( + uprev + + dt * + (a1801 * k[1] + a1806 * k[6] + a1807 * k[7] + a1808 * k[8] + + a1809 * k[9] + a1810 * k[10] + a1811 * k[11] + a1812 * k[12] + + a1814 * k[14] + a1815 * k[15] + a1816 * k[16] + a1817 * k[17]), + p, t + c18 * dt)) + copyat_or_push!(k, 19, + f( + uprev + + dt * + (a1901 * k[1] + a1906 * k[6] + a1907 * k[7] + a1908 * k[8] + + a1909 * k[9] + a1910 * k[10] + a1911 * k[11] + a1912 * k[12] + + a1914 * k[14] + a1915 * k[15] + a1916 * k[16] + a1917 * k[17]), + p, t + c19 * dt)) + copyat_or_push!(k, 20, + f( + uprev + + dt * + (a2001 * k[1] + a2006 * k[6] + a2007 * k[7] + a2008 * k[8] + + a2009 * k[9] + a2010 * k[10] + a2011 * k[11] + a2012 * k[12] + + a2014 * k[14] + a2015 * k[15] + a2016 * k[16] + a2017 * k[17]), + p, t + c20 * dt)) + copyat_or_push!(k, 21, + f( + uprev + + dt * + (a2101 * k[1] + a2106 * k[6] + a2107 * k[7] + a2108 * k[8] + + a2109 * k[9] + a2110 * k[10] + a2111 * k[11] + a2112 * k[12] + + a2114 * k[14] + a2115 * k[15] + a2116 * k[16] + a2117 * k[17]), + p, t + c21 * dt)) + end + nothing +end + +@muladd function _ode_addsteps!(k, t, uprev, u, dt, f, p, cache::Vern9ConstantCache, + always_calc_begin = false, allow_calc_end = true, + force_calc_end = false) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + if length(k) < 10 || always_calc_begin + @OnDemandTableauExtract Vern9Tableau T T2 + copyat_or_push!(k, 1, f(uprev, p, t)) + copyat_or_push!(k, 2, f(uprev + dt * (a0201 * k[1]), p, t + c1 * dt)) + copyat_or_push!(k, 3, f(uprev + dt * (a0301 * k[1] + a0302 * k[2]), p, t + c2 * dt)) + copyat_or_push!(k, 4, f(uprev + dt * (a0401 * k[1] + a0403 * k[3]), p, t + c3 * dt)) + copyat_or_push!(k, 5, + f(uprev + dt * (a0501 * k[1] + a0503 * k[3] + a0504 * k[4]), p, + t + c4 * dt)) + copyat_or_push!(k, 6, + f(uprev + dt * (a0601 * k[1] + a0604 * k[4] + a0605 * k[5]), p, + t + c5 * dt)) + copyat_or_push!(k, 7, + f(uprev + + dt * (a0701 * k[1] + a0704 * k[4] + a0705 * k[5] + a0706 * k[6]), + p, t + c6 * dt)) + copyat_or_push!(k, 2, + f(uprev + dt * (a0801 * k[1] + a0806 * k[6] + a0807 * k[7]), p, + t + c7 * dt)) + copyat_or_push!(k, 3, + f(uprev + + dt * (a0901 * k[1] + a0906 * k[6] + a0907 * k[7] + a0908 * k[2]), + p, t + c8 * dt)) + copyat_or_push!(k, 4, + f( + uprev + + dt * + (a1001 * k[1] + a1006 * k[6] + a1007 * k[7] + a1008 * k[2] + + a1009 * k[3]), + p, + t + c9 * dt)) + copyat_or_push!(k, 5, + f( + uprev + + dt * + (a1101 * k[1] + a1106 * k[6] + a1107 * k[7] + a1108 * k[2] + + a1109 * k[3] + a1110 * k[4]), + p, + t + c10 * dt)) + temp6 = recursivecopy(k[6]) + temp7 = recursivecopy(k[7]) + copyat_or_push!(k, 6, + f( + uprev + + dt * + (a1201 * k[1] + a1206 * temp6 + a1207 * temp7 + a1208 * k[2] + + a1209 * k[3] + a1210 * k[4] + a1211 * k[5]), + p, + t + c11 * dt)) + copyat_or_push!(k, 7, + f( + uprev + + dt * + (a1301 * k[1] + a1306 * temp6 + a1307 * temp7 + a1308 * k[2] + + a1309 * k[3] + a1310 * k[4] + a1311 * k[5] + a1312 * k[6]), + p, + t + c12 * dt)) + copyat_or_push!(k, 8, + f( + uprev + + dt * + (a1401 * k[1] + a1406 * temp6 + a1407 * temp7 + a1408 * k[2] + + a1409 * k[3] + a1410 * k[4] + a1411 * k[5] + a1412 * k[6] + + a1413 * k[7]), + p, + t + c13 * dt)) + copyat_or_push!(k, 9, + f( + uprev + + dt * + (a1501 * k[1] + a1506 * temp6 + a1507 * temp7 + a1508 * k[2] + + a1509 * k[3] + a1510 * k[4] + a1511 * k[5] + a1512 * k[6] + + a1513 * k[7] + a1514 * k[8]), + p, + t + dt)) + copyat_or_push!(k, 10, + f( + uprev + + dt * + (a1601 * k[1] + a1606 * temp6 + a1607 * temp7 + a1608 * k[2] + + a1609 * k[3] + a1610 * k[4] + a1611 * k[5] + a1612 * k[6] + + a1613 * k[7]), + p, + t + dt)) + end + if (allow_calc_end && length(k) < 20) || force_calc_end # Have not added the extra stages yet + @OnDemandTableauExtract Vern9ExtraStages T T2 + copyat_or_push!(k, 11, + f( + uprev + + dt * + (a1701 * k[1] + a1708 * k[2] + a1709 * k[3] + a1710 * k[4] + + a1711 * k[5] + a1712 * k[6] + a1713 * k[7] + a1714 * k[8] + + a1715 * k[9]), + p, + t + c17 * dt)) + copyat_or_push!(k, 12, + f( + uprev + + dt * + (a1801 * k[1] + a1808 * k[2] + a1809 * k[3] + a1810 * k[4] + + a1811 * k[5] + a1812 * k[6] + a1813 * k[7] + a1814 * k[8] + + a1815 * k[9] + a1817 * k[11]), + p, + t + c18 * dt)) + copyat_or_push!(k, 13, + f( + uprev + + dt * + (a1901 * k[1] + a1908 * k[2] + a1909 * k[3] + a1910 * k[4] + + a1911 * k[5] + a1912 * k[6] + a1913 * k[7] + a1914 * k[8] + + a1915 * k[9] + a1917 * k[11] + a1918 * k[12]), + p, + t + c19 * dt)) + copyat_or_push!(k, 14, + f( + uprev + + dt * + (a2001 * k[1] + a2008 * k[2] + a2009 * k[3] + a2010 * k[4] + + a2011 * k[5] + a2012 * k[6] + a2013 * k[7] + a2014 * k[8] + + a2015 * k[9] + a2017 * k[11] + a2018 * k[12] + a2019 * k[13]), + p, + t + c20 * dt)) + copyat_or_push!(k, 15, + f( + uprev + + dt * + (a2101 * k[1] + a2108 * k[2] + a2109 * k[3] + a2110 * k[4] + + a2111 * k[5] + a2112 * k[6] + a2113 * k[7] + a2114 * k[8] + + a2115 * k[9] + a2117 * k[11] + a2118 * k[12] + a2119 * k[13] + + a2120 * k[14]), + p, + t + c21 * dt)) + copyat_or_push!(k, 16, + f( + uprev + + dt * + (a2201 * k[1] + a2208 * k[2] + a2209 * k[3] + a2210 * k[4] + + a2211 * k[5] + a2212 * k[6] + a2213 * k[7] + a2214 * k[8] + + a2215 * k[9] + a2217 * k[11] + a2218 * k[12] + a2219 * k[13] + + a2220 * k[14] + a2221 * k[15]), + p, + t + c22 * dt)) + copyat_or_push!(k, 17, + f( + uprev + + dt * + (a2301 * k[1] + a2308 * k[2] + a2309 * k[3] + a2310 * k[4] + + a2311 * k[5] + a2312 * k[6] + a2313 * k[7] + a2314 * k[8] + + a2315 * k[9] + a2317 * k[11] + a2318 * k[12] + a2319 * k[13] + + a2320 * k[14] + a2321 * k[15]), + p, + t + c23 * dt)) + copyat_or_push!(k, 18, + f( + uprev + + dt * + (a2401 * k[1] + a2408 * k[2] + a2409 * k[3] + a2410 * k[4] + + a2411 * k[5] + a2412 * k[6] + a2413 * k[7] + a2414 * k[8] + + a2415 * k[9] + a2417 * k[11] + a2418 * k[12] + a2419 * k[13] + + a2420 * k[14] + a2421 * k[15]), + p, + t + c24 * dt)) + copyat_or_push!(k, 19, + f( + uprev + + dt * + (a2501 * k[1] + a2508 * k[2] + a2509 * k[3] + a2510 * k[4] + + a2511 * k[5] + a2512 * k[6] + a2513 * k[7] + a2514 * k[8] + + a2515 * k[9] + a2517 * k[11] + a2518 * k[12] + a2519 * k[13] + + a2520 * k[14] + a2521 * k[15]), + p, + t + c25 * dt)) + copyat_or_push!(k, 20, + f( + uprev + + dt * + (a2601 * k[1] + a2608 * k[2] + a2609 * k[3] + a2610 * k[4] + + a2611 * k[5] + a2612 * k[6] + a2613 * k[7] + a2614 * k[8] + + a2615 * k[9] + a2617 * k[11] + a2618 * k[12] + a2619 * k[13] + + a2620 * k[14] + a2621 * k[15]), + p, + t + c26 * dt)) + end + nothing +end diff --git a/src/integrators/controllers.jl b/src/integrators/controllers.jl index 903064e6e2..5db779bb62 100644 --- a/src/integrators/controllers.jl +++ b/src/integrators/controllers.jl @@ -403,7 +403,7 @@ end if fac_default_gamma(alg) fac = gamma else - if alg isa Union{RadauIIA3, RadauIIA5, RadauIIA7} + if alg isa Union{RadauIIA3, RadauIIA5, RadauIIA9} @unpack iter = integrator.cache @unpack maxiters = alg else diff --git a/src/integrators/integrator_interface.jl b/src/integrators/integrator_interface.jl index 58624905ac..d53859da46 100644 --- a/src/integrators/integrator_interface.jl +++ b/src/integrators/integrator_interface.jl @@ -113,7 +113,7 @@ end end # avoid method ambiguity -# for typ in (Union{RadauIIA3, RadauIIA5, RadauIIA7}) +# for typ in (Union{RadauIIA3, RadauIIA5, RadauIIA9}) # @eval @inline function DiffEqBase.get_tmp_cache(integrator, alg::$typ, # cache::OrdinaryDiffEqConstantCache) # nothing @@ -126,7 +126,7 @@ end (cache.tmp,) end @inline function DiffEqBase.get_tmp_cache( - integrator, alg::Union{RadauIIA3, RadauIIA5, RadauIIA7}, + integrator, alg::Union{RadauIIA3, RadauIIA5, RadauIIA9}, cache::OrdinaryDiffEqMutableCache) (cache.tmp, cache.atmp) end diff --git a/src/perform_step/extrapolation_perform_step.jl b/src/perform_step/extrapolation_perform_step.jl new file mode 100644 index 0000000000..48fec8c66d --- /dev/null +++ b/src/perform_step/extrapolation_perform_step.jl @@ -0,0 +1,3639 @@ +function initialize!(integrator, cache::AitkenNevilleCache) + integrator.kshortsize = 2 + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # For the interpolation, needs k at the updated point + integrator.stats.nf += 1 + + cache.step_no = 1 + alg = unwrap_alg(integrator, false) + cache.cur_order = max(alg.init_order, alg.min_order) +end + +function perform_step!(integrator, cache::AitkenNevilleCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack k, fsalfirst, T, utilde, atmp, dtpropose, cur_order, A = cache + @unpack u_tmps, k_tmps = cache + + max_order = min(size(T, 1), cur_order + 1) + + if !isthreaded(alg.threading) + for i in 1:max_order + dt_temp = dt / (2^(i - 1)) + # Solve using Euler method + @muladd @.. broadcast=false u=uprev + dt_temp * fsalfirst + f(k, u, p, t + dt_temp) + integrator.stats.nf += 1 + for j in 2:(2^(i - 1)) + @muladd @.. broadcast=false u=u + dt_temp * k + f(k, u, p, t + j * dt_temp) + integrator.stats.nf += 1 + end + @.. broadcast=false T[i, 1]=u + end + else + let max_order = max_order, uprev = uprev, dt = dt, fsalfirst = fsalfirst, p = p, + t = t, + u_tmps = u_tmps, k_tmps = k_tmps, T = T + # Balance workload of threads by computing T[1,1] with T[max_order,1] on + # same thread, T[2,1] with T[max_order-1,1] on same thread. Similarly fill + # first column of T matrix + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 1 : max_order + endIndex = (i == 1) ? max_order - 1 : max_order + for index in startIndex:endIndex + dt_temp = dt / (2^(index - 1)) + # Solve using Euler method + @muladd @.. broadcast=false u_tmps[Threads.threadid()]=uprev + + dt_temp * + fsalfirst + f(k_tmps[Threads.threadid()], u_tmps[Threads.threadid()], p, + t + dt_temp) + for j in 2:(2^(index - 1)) + @muladd @.. broadcast=false u_tmps[Threads.threadid()]=u_tmps[Threads.threadid()] + + dt_temp * + k_tmps[Threads.threadid()] + f(k_tmps[Threads.threadid()], u_tmps[Threads.threadid()], p, + t + j * dt_temp) + end + @.. broadcast=false T[index, 1]=u_tmps[Threads.threadid()] + end + end + end + integrator.stats.nf += 2^max_order - 1 + end + + # Richardson extrapolation + tmp = 1 + for j in 2:max_order + tmp *= 2 + for i in j:max_order + @.. broadcast=false T[i, j]=(tmp * T[i, j - 1] - T[i - 1, j - 1]) / (tmp - 1) + end + end + + if integrator.opts.adaptive + minimum_work = Inf + if isone(cache.step_no) + range_start = 2 + else + range_start = max(2, cur_order - 1) + end + + for i in range_start:max_order + A = 2^(i - 1) + @.. broadcast=false utilde=T[i, i] - T[i, i - 1] + atmp = calculate_residuals(utilde, uprev, T[i, i], integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + EEst = integrator.opts.internalnorm(atmp, t) + + beta1 = integrator.opts.controller.beta1 + e = integrator.EEst + qold = integrator.qold + + integrator.opts.controller.beta1 = 1 / (i + 1) + integrator.EEst = EEst + dtpropose = step_accept_controller!(integrator, alg, + stepsize_controller!(integrator, alg)) + integrator.EEst = e + integrator.opts.controller.beta1 = beta1 + integrator.qold = qold + + work = A / dtpropose + + if work < minimum_work + integrator.opts.controller.beta1 = 1 / (i + 1) + cache.dtpropose = dtpropose + cache.cur_order = i + minimum_work = work + integrator.EEst = EEst + end + end + end + + # using extrapolated value of u + @.. broadcast=false u=T[cache.cur_order, cache.cur_order] + cache.step_no = cache.step_no + 1 + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::AitkenNevilleConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + cache.step_no = 1 + alg = unwrap_alg(integrator, false) + cache.cur_order = max(alg.init_order, alg.min_order) +end + +function perform_step!(integrator, cache::AitkenNevilleConstantCache, repeat_step = false) + @unpack t, dt, uprev, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack dtpropose, T, cur_order, work, A = cache + + max_order = min(size(T, 1), cur_order + 1) + + if !isthreaded(alg.threading) + for i in 1:max_order + dt_temp = dt / (2^(i - 1)) # Romberg sequence + + # Solve using Euler method with dt_temp = dt/n_{i} + @muladd u = @.. broadcast=false uprev+dt_temp * integrator.fsalfirst + k = f(u, p, t + dt_temp) + integrator.stats.nf += 1 + + for j in 2:(2^(i - 1)) + @muladd u = @.. broadcast=false u+dt_temp * k + k = f(u, p, t + j * dt_temp) + integrator.stats.nf += 1 + end + T[i, 1] = u + end + else + let max_order = max_order, dt = dt, uprev = uprev, integrator = integrator, p = p, + t = t, T = T + # Balance workload of threads by computing T[1,1] with T[max_order,1] on + # same thread, T[2,1] with T[max_order-1,1] on same thread. Similarly fill + # first column of T matrix + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 1 : max_order + endIndex = (i == 1) ? max_order - 1 : max_order + + for index in startIndex:endIndex + dt_temp = dt / 2^(index - 1) + @muladd u = @.. broadcast=false uprev+dt_temp * integrator.fsalfirst + k_temp = f(u, p, t + dt_temp) + for j in 2:(2^(index - 1)) + @muladd u = @.. broadcast=false u+dt_temp * k_temp + k_temp = f(u, p, t + j * dt_temp) + end + T[index, 1] = u + end + end + end + + integrator.stats.nf += 2^max_order - 1 + end + + # Richardson extrapolation + tmp = 1 + for j in 2:max_order + tmp *= 2 + for i in j:max_order + T[i, j] = (tmp * T[i, j - 1] - T[i - 1, j - 1]) / (tmp - 1) + end + end + + if integrator.opts.adaptive + minimum_work = Inf + if isone(cache.step_no) + range_start = 2 + else + range_start = max(2, cur_order - 1) + end + + for i in range_start:max_order + A = 2^(i - 1) + utilde = T[i, i] - T[i, i - 1] + atmp = calculate_residuals(utilde, uprev, T[i, i], integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + EEst = integrator.opts.internalnorm(atmp, t) + + beta1 = integrator.opts.controller.beta1 + e = integrator.EEst + qold = integrator.qold + + integrator.opts.controller.beta1 = 1 / (i + 1) + integrator.EEst = EEst + dtpropose = step_accept_controller!(integrator, alg, + stepsize_controller!(integrator, alg)) + integrator.EEst = e + integrator.opts.controller.beta1 = beta1 + integrator.qold = qold + + work = A / dtpropose + + if work < minimum_work + integrator.opts.controller.beta1 = 1 / (i + 1) + cache.dtpropose = dtpropose + cache.cur_order = i + minimum_work = work + integrator.EEst = EEst + end + end + end + + cache.step_no = cache.step_no + 1 + + # Use extrapolated value of u + integrator.u = T[cache.cur_order, cache.cur_order] + + k = f(integrator.u, p, t + dt) + integrator.stats.nf += 1 + integrator.fsallast = k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::ImplicitEulerExtrapolationCache) + integrator.kshortsize = 2 + + integrator.fsalfirst = zero(first(cache.k_tmps)) + integrator.f(integrator.fsalfirst, integrator.u, integrator.p, integrator.t) + integrator.fsallast = zero(integrator.fsalfirst) + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.stats.nf += 1 + + cache.step_no = 1 + #alg = unwrap_alg(integrator, true) + #cache.cur_order = max(alg.init_order, alg.min_order) +end + +function perform_step!(integrator, cache::ImplicitEulerExtrapolationCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack T, utilde, atmp, dtpropose, n_curr, A, stage_number, diff1, diff2 = cache + @unpack J, W, uf, tf, jac_config = cache + @unpack u_tmps, k_tmps, linsolve_tmps, u_tmps2 = cache + + @unpack sequence = cache + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + if !isthreaded(alg.threading) + calc_J!(J, integrator, cache) # Store the calculated jac as it won't change in internal discretisation + for index in 1:(n_curr + 1) + dt_temp = dt / sequence[index] + jacobian2W!(W[1], integrator.f.mass_matrix, dt_temp, J, false) + integrator.stats.nw += 1 + @.. broadcast=false k_tmps[1]=integrator.fsalfirst + @.. broadcast=false u_tmps[1]=uprev + + for j in 1:sequence[index] + @.. broadcast=false linsolve_tmps[1]=dt_temp * k_tmps[1] + + linsolve = cache.linsolve[1] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k_tmps[1])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k_tmps[1])) + end + + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k_tmps[1]=-k_tmps[1] + @.. broadcast=false u_tmps2[1]=u_tmps[1] + @.. broadcast=false u_tmps[1]=u_tmps[1] + k_tmps[1] + if index <= 2 && j >= 2 + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[1]=u_tmps[1] - u_tmps2[1] + @.. broadcast=false diff2[1]=0.5 * (diff2[1] - diff1[1]) + if integrator.opts.internalnorm(diff1[1], t) < + integrator.opts.internalnorm(diff2[1], t) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[1]=u_tmps[1] - u_tmps2[1] + + f(k_tmps[1], u_tmps[1], p, t + j * dt_temp) + integrator.stats.nf += 1 + end + + @.. broadcast=false T[index, 1]=u_tmps[1] + end + else + calc_J!(J, integrator, cache) # Store the calculated jac as it won't change in internal discretisation + let n_curr = n_curr, uprev = uprev, dt = dt, p = p, t = t, T = T, W = W, + integrator = integrator, cache = cache, repeat_step = repeat_step, + k_tmps = k_tmps, u_tmps = u_tmps, u_tmps2 = u_tmps2, diff1 = diff1, + diff2 = diff2 + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 1 : n_curr + 1 + endIndex = (i == 1) ? n_curr : n_curr + 1 + for index in startIndex:endIndex + dt_temp = dt / sequence[index] + jacobian2W!( + W[Threads.threadid()], integrator.f.mass_matrix, dt_temp, J, + false) + @.. broadcast=false k_tmps[Threads.threadid()]=integrator.fsalfirst + @.. broadcast=false u_tmps[Threads.threadid()]=uprev + for j in 1:sequence[index] + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_temp * + k_tmps[Threads.threadid()] + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_tmps2[Threads.threadid()]=u_tmps[Threads.threadid()] + @.. broadcast=false u_tmps[Threads.threadid()]=u_tmps[Threads.threadid()] + + k_tmps[Threads.threadid()] + if index <= 2 && j >= 2 + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_tmps[Threads.threadid()] - + u_tmps2[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if integrator.opts.internalnorm(diff1[Threads.threadid()], t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], t) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[Threads.threadid()]=u_tmps[Threads.threadid()] - + u_tmps2[Threads.threadid()] + f(k_tmps[Threads.threadid()], u_tmps[Threads.threadid()], p, + t + j * dt_temp) + end + + @.. broadcast=false T[index, 1]=u_tmps[Threads.threadid()] + end + integrator.force_stepfail ? break : continue + end + end + + nevals = sum(sequence[1:(n_curr + 1)]) - 1 + integrator.stats.nw += n_curr + 1 + integrator.stats.nf += nevals + integrator.stats.nsolve += nevals + end + + if integrator.force_stepfail + return + end + + # Polynomial extrapolation + for j in 2:(n_curr + 1) + for i in j:(n_curr + 1) + @.. broadcast=false T[i, j]=((sequence[i] / sequence[i - j + 1]) * T[i, j - 1] - + T[i - 1, j - 1]) / + ((sequence[i] / sequence[i - j + 1]) - 1) + end + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + @.. broadcast=false integrator.u=T[i + 1, i + 1] + @.. broadcast=false cache.utilde=T[i + 1, i] + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(sequence[(n_curr + 2):(win_max + 1)] .// + sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + dt_temp = dt / sequence[n_curr + 1] + jacobian2W!(W[1], integrator.f.mass_matrix, dt_temp, J, false) + integrator.stats.nw += 1 + @.. broadcast=false k_tmps[1]=integrator.fsalfirst + @.. broadcast=false u_tmps[1]=uprev + + for j in 1:sequence[n_curr + 1] + @.. broadcast=false linsolve_tmps[1]=dt_temp * k_tmps[1] + + linsolve = cache.linsolve[1] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), + linu = _vec(k_tmps[1])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), + linu = _vec(k_tmps[1])) + end + + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k_tmps[1]=-k_tmps[1] + @.. broadcast=false u_tmps[1]=u_tmps[1] + k_tmps[1] + f(k_tmps[1], u_tmps[1], p, t + j * dt_temp) + integrator.stats.nf += 1 + end + + @.. broadcast=false T[n_curr + 1, 1]=u_tmps[1] + + for j in 2:(n_curr + 1) + for i in j:(n_curr + 1) + @.. broadcast=false T[i, j]=((sequence[i] / sequence[i - j + 1]) * + T[i, j - 1] - T[i - 1, j - 1]) / + ((sequence[i] / sequence[i - j + 1]) - + 1) + end + end + + @.. broadcast=false integrator.u=T[n_curr + 1, n_curr + 1] + @.. broadcast=false cache.utilde=T[n_curr + 1, n_curr] + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + @.. broadcast=false integrator.u=T[n_curr + 1, n_curr + 1] + end + + cache.step_no = cache.step_no + 1 + f(integrator.fsallast, integrator.u, p, t + dt) + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ImplicitEulerExtrapolationConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::ImplicitEulerExtrapolationConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack dtpropose, T, n_curr, work, A, tf, uf = cache + @unpack sequence, stage_number = cache + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + J = calc_J(integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for index in 1:(n_curr + 1) + dt_temp = dt / sequence[index] + W = dt_temp * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + k_copy = integrator.fsalfirst + u_tmp = uprev + diff1 = zero(u_tmp) + for j in 1:sequence[index] + k = _reshape(W \ -_vec(dt_temp * k_copy), axes(uprev)) + integrator.stats.nsolve += 1 + u_tmp2 = u_tmp + u_tmp = u_tmp + k + if index <= 2 && j >= 2 + # Deuflhard Stability check for initial two sequences + diff2 = u_tmp - u_tmp2 + diff2 = 0.5 * (diff2 - diff1) + if integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(diff2, t) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_tmp - u_tmp2 + k_copy = f(u_tmp, p, t + j * dt_temp) + integrator.stats.nf += 1 + end + + T[index, 1] = u_tmp + end + else + J = calc_J(integrator, cache) # Store the calculated jac as it won't change in internal discretisation + let n_curr = n_curr, dt = dt, integrator = integrator, cache = cache, + repeat_step = repeat_step, + uprev = uprev, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 1 : n_curr + 1 + endIndex = (i == 1) ? n_curr : n_curr + 1 + for index in startIndex:endIndex + dt_temp = dt / sequence[index] + W = dt_temp * J - integrator.f.mass_matrix + k_copy = integrator.fsalfirst + u_tmp = uprev + diff1 = zero(u_tmp) + for j in 1:sequence[index] + k = _reshape(W \ -_vec(dt_temp * k_copy), axes(uprev)) + u_tmp2 = u_tmp + u_tmp = u_tmp + k + if index <= 2 && j >= 2 + # Deuflhard Stability check for initial two sequences + diff2 = u_tmp - u_tmp2 + diff2 = 0.5 * (diff2 - diff1) + if integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(diff2, t) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_tmp - u_tmp2 + k_copy = f(u_tmp, p, t + j * dt_temp) + end + T[index, 1] = u_tmp + end + integrator.force_stepfail ? break : continue + end + end + + if integrator.force_stepfail + return + end + + nevals = sum(sequence[1:(n_curr + 1)]) - 1 + integrator.stats.nw += n_curr + 1 + integrator.stats.nf += nevals + integrator.stats.nsolve += nevals + end + + # Richardson extrapolation + tmp = 1 + for j in 2:(n_curr + 1) + tmp *= 2 + for i in j:(n_curr + 1) + T[i, j] = ((sequence[i] / sequence[i - j + 1]) * T[i, j - 1] - + T[i - 1, j - 1]) / + ((sequence[i] / sequence[i - j + 1]) - 1) + end + end + + integrator.dt = dt + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + u = T[i + 1, i + 1] + utilde = T[i + 1, i] + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(sequence[(n_curr + 2):(win_max + 1)] .// + sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Always compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + dt_temp = dt / sequence[n_curr + 1] + W = dt_temp * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + k_copy = integrator.fsalfirst + u_tmp = uprev + + for j in 1:sequence[n_curr + 1] + k = _reshape(W \ -_vec(dt_temp * k_copy), axes(uprev)) + integrator.stats.nsolve += 1 + u_tmp = u_tmp + k + k_copy = f(u_tmp, p, t + j * dt_temp) + integrator.stats.nf += 1 + end + + T[n_curr + 1, 1] = u_tmp + + #Extrapolate to new order + for j in 2:(n_curr + 1) + for i in j:(n_curr + 1) + T[i, j] = ((sequence[i] / sequence[i - j + 1]) * T[i, j - 1] - + T[i - 1, j - 1]) / + ((sequence[i] / sequence[i - j + 1]) - 1) + end + end + # Update u, integrator.EEst and cache.Q + u = T[n_curr + 1, n_curr + 1] + utilde = T[n_curr + 1, n_curr] + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + integrator.u = T[n_curr + 1, n_curr + 1] + end + + # Use extrapolated value of u + integrator.u = T[n_curr + 1, n_curr + 1] + k_temp = f(integrator.u, p, t + dt) + integrator.stats.nf += 1 + integrator.fsallast = k_temp + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::ExtrapolationMidpointDeuflhardCache) + # cf. initialize! of MidpointCache + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +function perform_step!(integrator, cache::ExtrapolationMidpointDeuflhardCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack n_curr, u_temp1, u_temp2, utilde, res, T, fsalfirst, k = cache + @unpack u_temp3, u_temp4, k_tmps = cache + + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack stage_number = cache + @unpack sequence_factor = alg + + fill!(cache.Q, zero(eltype(cache.Q))) + tol = integrator.opts.internalnorm(integrator.opts.reltol, t) # Used by the convergence monitor + + if integrator.opts.adaptive + # Set up the order window + win_min = max(alg.min_order, n_curr - 1) + win_max = min(alg.max_order, n_curr + 1) + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp2=uprev + @.. broadcast=false u_temp1=u_temp2 + dt_int * fsalfirst # Euler starting step + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false T[i + 1]=u_temp2 + 2 * dt_int * k # Explicit Midpoint rule + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[i + 1] + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + for index in startIndex:endIndex + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + dt_int_temp * + fsalfirst # Euler starting step + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false T[index + 1]=u_temp4[Threads.threadid()] + + 2 * dt_int_temp * + k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + end + end + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = (i, n_curr - i) + for index in indices + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + dt_int_temp * + fsalfirst # Euler starting step + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], u_temp3[Threads.threadid()], p, + t + (j - 1) * dt_int_temp) + @.. broadcast=false T[index + 1]=u_temp4[Threads.threadid()] + + 2 * dt_int_temp * + k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + end + if indices[2] <= indices[1] + break + end + end + end + end + end + nevals = cache.stage_number[n_curr - alg.min_order + 1] - 1 + integrator.stats.nf += nevals + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (alg.min_order):n_curr + + #integrator.u .= extrapolation_scalars[i+1] * sum( broadcast(*, cache.T[1:(i+1)], extrapolation_weights[1:(i+1), (i+1)]) ) # Approximation of extrapolation order i + #cache.utilde .= extrapolation_scalars_2[i] * sum( broadcast(*, cache.T[2:(i+1)], extrapolation_weights_2[1:i, i]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(i + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (i + 1)] + end + for j in 2:(i + 1) + @.. broadcast=false u_temp2+=cache.T[j] * extrapolation_weights_2[j - 1, i] + end + @.. broadcast=false integrator.u=extrapolation_scalars[i + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[i] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif integrator.EEst <= + tol^(stage_number[n_curr - alg.min_order + 1] / + stage_number[win_max - alg.min_order + 1] - 1) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update cache.T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + @.. broadcast=false u_temp2=uprev + @.. broadcast=false u_temp1=u_temp2 + dt_int * fsalfirst # Euler starting step + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false T[n_curr + 1]=u_temp2 + 2 * dt_int * k + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + #cache.utilde .= extrapolation_scalars_2[n_curr] * sum( broadcast(*, cache.T[2:(n_curr+1)], extrapolation_weights_2[1:n_curr, n_curr]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * + extrapolation_weights[j, (n_curr + 1)] + end + for j in 2:(n_curr + 1) + @.. broadcast=false u_temp2+=cache.T[j] * + extrapolation_weights_2[j - 1, n_curr] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[n_curr] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + u_temp1 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (n_curr + 1)] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + end + + f(cache.k, integrator.u, p, t + dt) # Update FSAL + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ExtrapolationMidpointDeuflhardConstantCache) + # cf. initialize! of MidpointConstantCache + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::ExtrapolationMidpointDeuflhardConstantCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack n_curr = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack stage_number = cache + @unpack sequence_factor = alg + + # Create auxiliary variables + u_temp1, u_temp2 = copy(uprev), copy(uprev) # Auxiliary variables for computing the internal discretisations + u, utilde = copy(uprev), copy(uprev) # Storage for the latest approximation and its internal counterpart + tol = integrator.opts.internalnorm(integrator.opts.reltol, t) # Used by the convergence monitor + T = fill(zero(uprev), alg.max_order + 1) # Storage for the internal discretisations obtained by the explicit midpoint rule + fill!(cache.Q, zero(eltype(cache.Q))) + + # Start computation + if integrator.opts.adaptive + # Set up the order window + win_min = max(alg.min_order, n_curr - 1) + win_max = min(alg.max_order, n_curr + 1) + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + # Compute the internal discretisations + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + u_temp2 = uprev + u_temp1 = u_temp2 + dt_int * integrator.fsalfirst # Euler starting step + for j in 2:j_int + T[i + 1] = u_temp2 + 2 * dt_int * f(u_temp1, p, t + (j - 1) * dt_int) # Explicit Midpoint rule + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[i + 1] + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, + integrator = integrator, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + for index in startIndex:endIndex + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + u_temp4 = uprev + u_temp3 = u_temp4 + dt_int_temp * integrator.fsalfirst # Euler starting step + for j in 2:j_int_temp + T[index + 1] = u_temp4 + + 2 * dt_int_temp * + f(u_temp3, p, t + (j - 1) * dt_int_temp) # Explicit Midpoint rule + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + end + end + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, dt = dt, + uprev = uprev, + p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = (i, n_curr - i) + for index in indices + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + u_temp4 = uprev + u_temp3 = u_temp4 + dt_int_temp * integrator.fsalfirst # Euler starting step + for j in 2:j_int_temp + T[index + 1] = u_temp4 + + 2 * dt_int_temp * + f(u_temp3, p, t + (j - 1) * dt_int_temp) # Explicit Midpoint rule + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + end + if indices[2] <= indices[1] + break + end + end + end + end + end + nevals = cache.stage_number[n_curr - alg.min_order + 1] - 1 + integrator.stats.nf += nevals + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (alg.min_order):n_curr + u = eltype(uprev).(extrapolation_scalars[i + 1]) * + sum(broadcast(*, T[1:(i + 1)], + eltype(uprev).(extrapolation_weights[1:(i + 1), (i + 1)]))) # Approximation of extrapolation order i + utilde = eltype(uprev).(extrapolation_scalars_2[i]) * + sum(broadcast(*, T[2:(i + 1)], + eltype(uprev).(extrapolation_weights_2[1:i, i]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif integrator.EEst <= + tol^(stage_number[n_curr - alg.min_order + 1] / + stage_number[win_max - alg.min_order + 1] - 1) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + u_temp2 = uprev + u_temp1 = u_temp2 + dt_int * integrator.fsalfirst # Euler starting step + for j in 2:j_int + T[n_curr + 1] = u_temp2 + + 2 * dt_int * f(u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + utilde = eltype(uprev).(extrapolation_scalars_2[n_curr]) * + sum(broadcast(*, T[2:(n_curr + 1)], + eltype(uprev).(extrapolation_weights_2[1:n_curr, + n_curr]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + end + + # Save the latest approximation and update FSAL + integrator.u = u + integrator.fsallast = f(u, p, t + dt) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::ImplicitDeuflhardExtrapolationCache) + # cf. initialize! of MidpointCache + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +function perform_step!(integrator, cache::ImplicitDeuflhardExtrapolationCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr, u_temp1, u_temp2, utilde, res, T, fsalfirst, k, diff1, diff2 = cache + @unpack u_temp3, u_temp4, k_tmps = cache + + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack stage_number = cache + + @unpack J, W, uf, tf, linsolve_tmps, jac_config = cache + + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + win_min = max(alg.min_order, n_curr - 1) + win_max = min(alg.max_order, n_curr + 1) + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + calc_J!(J, integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = 4 * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + @.. broadcast=false diff1[1]=u_temp1 - u_temp2 + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k - (u_temp1 - u_temp2) + + linsolve = cache.linsolve[1] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[i + 1]=2 * u_temp1 - u_temp2 + 2 * k # Explicit Midpoint rule + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[1]=u_temp1 - u_temp2 + if (integrator.opts.internalnorm(diff1[1], t) < + integrator.opts.internalnorm(0.5 * (diff2[1] - diff1[1]), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int_temp = 4 * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[Threads.threadid()], integrator.f.mass_matrix, + dt_int_temp, J, false) + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + fsalfirst + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + k_tmps[Threads.threadid()] # Euler starting step + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + k_tmps[Threads.threadid()] - + (u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()]) + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false T[index + 1]=2 * + u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + + 2 * k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if (integrator.opts.internalnorm(diff1[Threads.threadid()], + t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], + t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) #Use flag to avoid union + for index in indices + index == -1 && continue + j_int_temp = 4 * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[Threads.threadid()], integrator.f.mass_matrix, + dt_int_temp, J, false) + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + fsalfirst + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + k_tmps[Threads.threadid()] # Euler starting step + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + k_tmps[Threads.threadid()] - + (u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()]) + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false T[index + 1]=2 * + u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + + 2 * k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if (integrator.opts.internalnorm(diff1[Threads.threadid()], + t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], + t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (alg.min_order):n_curr + + #integrator.u .= extrapolation_scalars[i+1] * sum( broadcast(*, cache.T[1:(i+1)], extrapolation_weights[1:(i+1), (i+1)]) ) # Approximation of extrapolation order i + #cache.utilde .= extrapolation_scalars_2[i] * sum( broadcast(*, cache.T[2:(i+1)], extrapolation_weights_2[1:i, i]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(i + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (i + 1)] + end + for j in 2:(i + 1) + @.. broadcast=false u_temp2+=cache.T[j] * extrapolation_weights_2[j - 1, i] + end + @.. broadcast=false integrator.u=extrapolation_scalars[i + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[i] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + while n_curr <= win_max + tol = integrator.opts.internalnorm(cache.utilde - integrator.u, t) / + integrator.EEst # Used by the convergence monitor + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif integrator.EEst <= + tol^(stage_number[n_curr - alg.min_order + 1] / + stage_number[win_max - alg.min_order + 1] - 1) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update cache.T + j_int = 4 * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + linres = dolinsolve(integrator, linsolve; b = _vec(linsolve_tmps[1]), + linu = _vec(k)) + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k - (u_temp1 - u_temp2) + + linsolve = cache.linsolve[1] + linres = dolinsolve(integrator, linsolve; b = _vec(linsolve_tmps[1]), + linu = _vec(k)) + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[n_curr + 1]=2 * u_temp1 - u_temp2 + 2 * k # Explicit Midpoint rule + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + #cache.utilde .= extrapolation_scalars_2[n_curr] * sum( broadcast(*, cache.T[2:(n_curr+1)], extrapolation_weights_2[1:n_curr, n_curr]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * + extrapolation_weights[j, (n_curr + 1)] + end + for j in 2:(n_curr + 1) + @.. broadcast=false u_temp2+=cache.T[j] * + extrapolation_weights_2[j - 1, n_curr] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[n_curr] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + u_temp1 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (n_curr + 1)] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + end + + f(cache.k, integrator.u, p, t + dt) # Update FSAL + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ImplicitDeuflhardExtrapolationConstantCache) + # cf. initialize! of MidpointConstantCache + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::ImplicitDeuflhardExtrapolationConstantCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack stage_number = cache + + # Create auxiliary variables + u_temp1, u_temp2 = copy(uprev), copy(uprev) # Auxiliary variables for computing the internal discretisations + u, utilde = copy(uprev), copy(uprev) # Storage for the latest approximation and its internal counterpart + T = fill(zero(uprev), alg.max_order + 1) # Storage for the internal discretisations obtained by the explicit midpoint rule + fill!(cache.Q, zero(eltype(cache.Q))) + + # Start computation + if integrator.opts.adaptive + # Set up the order window + win_min = max(alg.min_order, n_curr - 1) + win_max = min(alg.max_order, n_curr + 1) + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + # Compute the internal discretisations + J = calc_J(integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = 4 * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + diff1 = u_temp1 - u_temp2 + for j in 2:j_int + T[i + 1] = 2 * u_temp1 - u_temp2 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp1, p, t + (j - 1) * dt_int) - + (u_temp1 - u_temp2)), + axes(uprev)) + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp1 - u_temp2 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp2 = u_temp2, + u_temp2 = u_temp2, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int = 4 * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:j_int + T[index + 1] = 2 * u_temp3 - u_temp4 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int) - + (u_temp3 - u_temp4)), + axes(uprev)) + integrator.stats.nf += 1 + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1[1], t) < + integrator.opts.internalnorm( + 0.5 * + (diff2[1] - diff1[1]), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, + integrator = integrator, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int = 4 * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:j_int + T[index + 1] = 2 * u_temp3 - u_temp4 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int) - + (u_temp3 - u_temp4)), + axes(uprev)) + integrator.stats.nf += 1 + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (alg.min_order):n_curr + u = eltype(uprev).(extrapolation_scalars[i + 1]) * + sum(broadcast(*, T[1:(i + 1)], + eltype(uprev).(extrapolation_weights[1:(i + 1), (i + 1)]))) # Approximation of extrapolation order i + utilde = eltype(uprev).(extrapolation_scalars_2[i]) * + sum(broadcast(*, T[2:(i + 1)], + eltype(uprev).(extrapolation_weights_2[1:i, i]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + while n_curr <= win_max + tol = integrator.opts.internalnorm(utilde - u, t) / integrator.EEst # Used by the convergence monitor + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif integrator.EEst <= + tol^(stage_number[n_curr - alg.min_order + 1] / + stage_number[win_max - alg.min_order + 1] - 1) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + j_int = 4 * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + for j in 2:j_int + T[n_curr + 1] = 2 * u_temp1 - u_temp2 + + 2 * _reshape( + W \ + -_vec(dt_int * + f(u_temp1, p, t + (j - 1) * dt_int) - + (u_temp1 - u_temp2)), + axes(uprev)) + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + utilde = eltype(uprev).(extrapolation_scalars_2[n_curr]) * + sum(broadcast(*, T[2:(n_curr + 1)], + eltype(uprev).(extrapolation_weights_2[1:n_curr, + n_curr]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + end + + # Save the latest approximation and update FSAL + integrator.u = u + integrator.fsallast = f(u, p, t + dt) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ExtrapolationMidpointHairerWannerCache) + # cf. initialize! of MidpointCache + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +function perform_step!(integrator, cache::ExtrapolationMidpointHairerWannerCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack n_curr, u_temp1, u_temp2, utilde, res, T, fsalfirst, k = cache + @unpack u_temp3, u_temp4, k_tmps = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack sequence_factor = alg + + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp2=uprev + @.. broadcast=false u_temp1=u_temp2 + dt_int * fsalfirst # Euler starting step + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false T[i + 1]=u_temp2 + 2 * dt_int * k # Explicit Midpoint rule + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[i + 1] + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + dt_int_temp * + fsalfirst # Euler starting step + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false T[index + 1]=u_temp4[Threads.threadid()] + + 2 * dt_int_temp * + k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + end + end + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + dt_int_temp * + fsalfirst # Euler starting step + for j in 2:j_int_temp + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false T[index + 1]=u_temp4[Threads.threadid()] + + 2 * dt_int_temp * + k_tmps[Threads.threadid()] # Explicit Midpoint rule + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + end + end + end + end + end + nevals = cache.stage_number[n_curr + 1] - 1 + integrator.stats.nf += nevals + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + + #integrator.u .= extrapolation_scalars[i+1] * sum( broadcast(*, cache.T[1:(i+1)], extrapolation_weights[1:(i+1), (i+1)]) ) # Approximation of extrapolation order i + #cache.utilde .= extrapolation_scalars_2[i] * sum( broadcast(*, cache.T[2:(i+1)], extrapolation_weights_2[1:i, i]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(i + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (i + 1)] + end + for j in 2:(i + 1) + @.. broadcast=false u_temp2+=cache.T[j] * extrapolation_weights_2[j - 1, i] + end + @.. broadcast=false integrator.u=extrapolation_scalars[i + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[i] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(subdividing_sequence[(n_curr + 2):(win_max + 1)] .// + subdividing_sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update cache.T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + @.. broadcast=false u_temp2=uprev + @.. broadcast=false u_temp1=u_temp2 + dt_int * fsalfirst # Euler starting step + for j in 2:j_int + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false T[n_curr + 1]=u_temp2 + 2 * dt_int * k + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + #cache.utilde .= extrapolation_scalars_2[n_curr] * sum( broadcast(*, cache.T[2:(n_curr+1)], extrapolation_weights_2[1:n_curr, n_curr]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * + extrapolation_weights[j, (n_curr + 1)] + end + for j in 2:(n_curr + 1) + @.. broadcast=false u_temp2+=cache.T[j] * + extrapolation_weights_2[j - 1, n_curr] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[n_curr] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + u_temp1 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (n_curr + 1)] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + end + + f(cache.k, integrator.u, p, t + dt) # Update FSAL + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ExtrapolationMidpointHairerWannerConstantCache) + # cf. initialize! of MidpointConstantCache + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::ExtrapolationMidpointHairerWannerConstantCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack n_curr = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack sequence_factor = alg + + # Create auxiliary variables + u_temp1, u_temp2 = copy(uprev), copy(uprev) # Auxiliary variables for computing the internal discretisations + u, utilde = copy(uprev), copy(uprev) # Storage for the latest approximation and its internal counterpart + T = fill(zero(uprev), alg.max_order + 1) # Storage for the internal discretisations obtained by the explicit midpoint rule + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + u_temp2 = uprev + u_temp1 = u_temp2 + dt_int * integrator.fsalfirst # Euler starting step + for j in 2:j_int + T[i + 1] = u_temp2 + 2 * dt_int * f(u_temp1, p, t + (j - 1) * dt_int) # Explicit Midpoint rule + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[i + 1] + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, dt = dt, + uprev = uprev, + integrator = integrator, T = T, p = p, t = t + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + for index in startIndex:endIndex + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + u_temp4 = uprev + u_temp3 = u_temp4 + dt_int_temp * integrator.fsalfirst # Euler starting step + for j in 2:j_int_temp + T[index + 1] = u_temp4 + + 2 * dt_int_temp * + f(u_temp3, p, t + (j - 1) * dt_int_temp) # Explicit Midpoint rule + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + end + end + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, dt = dt, + uprev = uprev, + integrator = integrator, T = T, p = p, t = t + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + u_temp4 = uprev + u_temp3 = u_temp4 + dt_int_temp * integrator.fsalfirst # Euler starting step + for j in 2:j_int_temp + T[index + 1] = u_temp4 + + 2 * dt_int_temp * + f(u_temp3, p, t + (j - 1) * dt_int_temp) # Explicit Midpoint rule + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + end + end + end + end + end + nevals = cache.stage_number[n_curr + 1] - 1 + integrator.stats.nf += nevals + end + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + u = eltype(uprev).(extrapolation_scalars[i + 1]) * + sum(broadcast(*, T[1:(i + 1)], + eltype(uprev).(extrapolation_weights[1:(i + 1), (i + 1)]))) # Approximation of extrapolation order i + utilde = eltype(uprev).(extrapolation_scalars_2[i]) * + sum(broadcast(*, T[2:(i + 1)], + eltype(uprev).(extrapolation_weights_2[1:i, i]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(subdividing_sequence[(n_curr + 2):(win_max + 1)] .// + subdividing_sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Always compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + u_temp2 = uprev + u_temp1 = u_temp2 + dt_int * integrator.fsalfirst # Euler starting step + for j in 2:j_int + T[n_curr + 1] = u_temp2 + + 2 * dt_int * f(u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + u_temp2 = u_temp1 + u_temp1 = T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + utilde = eltype(uprev).(extrapolation_scalars_2[n_curr]) * + sum(broadcast(*, T[2:(n_curr + 1)], + eltype(uprev).(extrapolation_weights_2[1:n_curr, + n_curr]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + end + + # Save the latest approximation and update FSAL + integrator.u = u + integrator.fsallast = f(u, p, t + dt) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ImplicitHairerWannerExtrapolationConstantCache) + # cf. initialize! of MidpointConstantCache + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::ImplicitHairerWannerExtrapolationConstantCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + + # Create auxiliary variables + u_temp1, u_temp2 = copy(uprev), copy(uprev) # Auxiliary variables for computing the internal discretisations + u, utilde = copy(uprev), copy(uprev) # Storage for the latest approximation and its internal counterpart + T = fill(zero(uprev), alg.max_order + 1) # Storage for the internal discretisations obtained by the explicit midpoint rule + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + J = calc_J(integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = 4 * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + diff1 = u_temp1 - u_temp2 + for j in 2:(j_int + 1) + T[i + 1] = 2 * u_temp1 - u_temp2 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp1, p, t + (j - 1) * dt_int) - + (u_temp1 - u_temp2)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[i + 1] = 0.5(T[i + 1] + u_temp2) + end + u_temp2 = u_temp1 + u_temp1 = T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp1 - u_temp2 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp1 - u_temp2 + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp2 = u_temp2, + u_temp2 = u_temp2, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int = 4 * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:(j_int + 1) + T[index + 1] = 2 * u_temp3 - u_temp4 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int) - + (u_temp3 - u_temp4)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[index + 1] = 0.5(T[index + 1] + u_temp4) + end + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp3 - u_temp4 + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, + integrator = integrator, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int = 4 * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:(j_int + 1) + T[index + 1] = 2 * u_temp3 - u_temp4 + + 2 * _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int) - + (u_temp3 - u_temp4)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[index + 1] = 0.5(T[index + 1] + u_temp4) + end + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp3 - u_temp4 + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + u = eltype(uprev).(extrapolation_scalars[i + 1]) * + sum(broadcast(*, T[1:(i + 1)], + eltype(uprev).(extrapolation_weights[1:(i + 1), (i + 1)]))) # Approximation of extrapolation order i + utilde = eltype(uprev).(extrapolation_scalars_2[i]) * + sum(broadcast(*, T[2:(i + 1)], + eltype(uprev).(extrapolation_weights_2[1:i, i]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(subdividing_sequence[(n_curr + 2):(win_max + 1)] .// + subdividing_sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Always compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + j_int = 4 * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + for j in 2:(j_int + 1) + T[n_curr + 1] = 2 * u_temp1 - u_temp2 + + 2 * _reshape( + W \ + -_vec(dt_int * + f(u_temp1, p, t + (j - 1) * dt_int) - + (u_temp1 - u_temp2)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[n_curr + 1] = 0.5(T[n_curr + 1] + u_temp2) + end + u_temp2 = u_temp1 + u_temp1 = T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + utilde = eltype(uprev).(extrapolation_scalars_2[n_curr]) * + sum(broadcast(*, T[2:(n_curr + 1)], + eltype(uprev).(extrapolation_weights_2[1:n_curr, + n_curr]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + end + + # Save the latest approximation and update FSAL + integrator.u = u + integrator.fsallast = f(u, p, t + dt) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::ImplicitHairerWannerExtrapolationCache) + # cf. initialize! of MidpointCache + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +function perform_step!(integrator, cache::ImplicitHairerWannerExtrapolationCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr, u_temp1, u_temp2, utilde, res, T, fsalfirst, k, diff1, diff2 = cache + @unpack u_temp3, u_temp4, k_tmps = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + + @unpack J, W, uf, tf, linsolve_tmps, jac_config = cache + + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + calc_J!(J, integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = 4 * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + @.. broadcast=false diff1[1]=u_temp1 - u_temp2 + for j in 2:(j_int + 1) + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k - (u_temp1 - u_temp2) + + linsolve = cache.linsolve[1] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[i + 1]=2 * u_temp1 - u_temp2 + 2 * k # Explicit Midpoint rule + if (j == j_int + 1) + @.. broadcast=false T[i + 1]=0.5(T[i + 1] + u_temp2) + end + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[1]=u_temp1 - u_temp2 + @.. broadcast=false diff2[1]=0.5 * (diff2[1] - diff1[1]) + if (integrator.opts.internalnorm(diff1[1], t) < + integrator.opts.internalnorm(diff2[1], t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[1]=u_temp1 - u_temp2 + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int_temp = 4 * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[Threads.threadid()], integrator.f.mass_matrix, + dt_int_temp, J, false) + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + fsalfirst + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + k_tmps[Threads.threadid()] # Euler starting step + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + for j in 2:(j_int_temp + 1) + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + k_tmps[Threads.threadid()] - + (u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()]) + + linsolve = cache.linsolve[Threads.threadid()] + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false T[index + 1]=2 * + u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + + 2 * k_tmps[Threads.threadid()] # Explicit Midpoint rule + if (j == j_int_temp + 1) + @.. broadcast=false T[index + 1]=0.5(T[index + 1] + + u_temp4[Threads.threadid()]) + end + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if (integrator.opts.internalnorm(diff1[Threads.threadid()], + t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], + t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + tid = Threads.threadid() + linsolvetmp = linsolve_tmps[tid] + ktmp = k_tmps[tid] + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) #Use flag to avoid type union/branch + for index in indices + index == -1 && continue + j_int_temp = 4 * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[tid], integrator.f.mass_matrix, dt_int_temp, J, false) + @.. broadcast=false u_temp4[tid]=uprev + @.. broadcast=false linsolvetmp=dt_int_temp * fsalfirst + + linsolve = cache.linsolve[tid] + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[tid], + b = _vec(linsolvetmp), linu = _vec(ktmp)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolvetmp), linu = _vec(ktmp)) + end + cache.linsolve[tid] = linres.cache + + @.. broadcast=false ktmp=-ktmp + @.. broadcast=false u_temp3[tid]=u_temp4[tid] + ktmp # Euler starting step + @.. broadcast=false diff1[tid]=u_temp3[tid] - u_temp4[tid] + for j in 2:(j_int_temp + 1) + f(ktmp, cache.u_temp3[tid], p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolvetmp=dt_int_temp * ktmp - + (u_temp3[tid] - u_temp4[tid]) + + linsolve = cache.linsolve[tid] + + if (!repeat_step && j == 1) + linres = dolinsolve(integrator, linsolve; A = W[tid], + b = _vec(linsolvetmp), + linu = _vec(ktmp)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolvetmp), + linu = _vec(ktmp)) + end + cache.linsolve[tid] = linres.cache + + @.. broadcast=false ktmp=-ktmp + @.. broadcast=false T[index + 1]=2 * u_temp3[tid] - + u_temp4[tid] + 2 * ktmp # Explicit Midpoint rule + if (j == j_int_temp + 1) + @.. broadcast=false T[index + 1]=0.5(T[index + 1] + + u_temp4[tid]) + end + @.. broadcast=false u_temp4[tid]=u_temp3[tid] + @.. broadcast=false u_temp3[tid]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[tid]=u_temp3[tid] - u_temp4[tid] + @.. broadcast=false diff2[tid]=0.5 * + (diff2[tid] - diff1[tid]) + if (integrator.opts.internalnorm(diff1[tid], t) < + integrator.opts.internalnorm(diff2[tid], t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[tid]=u_temp3[tid] - u_temp4[tid] + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + + #integrator.u .= extrapolation_scalars[i+1] * sum( broadcast(*, cache.T[1:(i+1)], extrapolation_weights[1:(i+1), (i+1)]) ) # Approximation of extrapolation order i + #cache.utilde .= extrapolation_scalars_2[i] * sum( broadcast(*, cache.T[2:(i+1)], extrapolation_weights_2[1:i, i]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(i + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (i + 1)] + end + for j in 2:(i + 1) + @.. broadcast=false u_temp2+=cache.T[j] * extrapolation_weights_2[j - 1, i] + end + @.. broadcast=false integrator.u=extrapolation_scalars[i + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[i] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + EEst1 = one(integrator.EEst) + for i in (n_curr + 2):(win_max + 1) + EEst1 *= subdividing_sequence[i] / subdividing_sequence[1] + end + EEst1 *= EEst1 + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || integrator.EEst <= EEst1 + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update cache.T + j_int = 4 * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + for j in 2:(j_int + 1) + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k - (u_temp1 - u_temp2) + + linsolve = cache.linsolve[1] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[n_curr + 1]=2 * u_temp1 - u_temp2 + 2 * k # Explicit Midpoint rule + if (j == j_int + 1) + @.. broadcast=false T[n_curr + 1]=0.5(T[n_curr + 1] + u_temp2) + end + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + #cache.utilde .= extrapolation_scalars_2[n_curr] * sum( broadcast(*, cache.T[2:(n_curr+1)], extrapolation_weights_2[1:n_curr, n_curr]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * + extrapolation_weights[j, (n_curr + 1)] + end + for j in 2:(n_curr + 1) + @.. broadcast=false u_temp2+=cache.T[j] * + extrapolation_weights_2[j - 1, n_curr] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[n_curr] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + u_temp1 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (n_curr + 1)] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + end + + f(cache.k, integrator.u, p, t + dt) # Update FSAL + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::ImplicitEulerBarycentricExtrapolationConstantCache) + # cf. initialize! of MidpointConstantCache + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, + cache::ImplicitEulerBarycentricExtrapolationConstantCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack sequence_factor = alg + + # Create auxiliary variables + u_temp1, u_temp2 = copy(uprev), copy(uprev) # Auxiliary variables for computing the internal discretisations + u, utilde = copy(uprev), copy(uprev) # Storage for the latest approximation and its internal counterpart + T = fill(zero(uprev), alg.max_order + 1) # Storage for the internal discretisations obtained by the explicit midpoint rule + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + J = calc_J(integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + diff1 = u_temp1 - u_temp2 + for j in 2:(j_int + 1) + T[i + 1] = u_temp1 + + _reshape( + W \ -_vec(dt_int * f(u_temp1, p, t + (j - 1) * dt_int)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[i + 1] = 0.25(T[i + 1] + 2 * u_temp1 + u_temp2) + end + u_temp2 = u_temp1 + u_temp1 = T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp1 - u_temp2 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp1 - u_temp2 + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp2 = u_temp2, + u_temp2 = u_temp2, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int = sequence_factor * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:(j_int + 1) + T[index + 1] = u_temp3 + _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[index + 1] = 0.25(T[index + 1] + 2 * u_temp3 + u_temp4) + end + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp3 - u_temp4 + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, + integrator = integrator, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int = sequence_factor * subdividing_sequence[index + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp4 = uprev + u_temp3 = u_temp4 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), + axes(uprev)) # Euler starting step + diff1 = u_temp3 - u_temp4 + for j in 2:(j_int + 1) + T[index + 1] = u_temp3 + _reshape( + W \ + -_vec(dt_int * f(u_temp3, p, + t + (j - 1) * dt_int)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[index + 1] = 0.25(T[index + 1] + 2 * u_temp3 + u_temp4) + end + u_temp4 = u_temp3 + u_temp3 = T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + diff2 = u_temp3 - u_temp4 + if (integrator.opts.internalnorm(diff1, t) < + integrator.opts.internalnorm(0.5 * (diff2 - diff1), t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + diff1 = u_temp3 - u_temp4 + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + u = eltype(uprev).(extrapolation_scalars[i + 1]) * + sum(broadcast(*, T[1:(i + 1)], + eltype(uprev).(extrapolation_weights[1:(i + 1), (i + 1)]))) # Approximation of extrapolation order i + utilde = eltype(uprev).(extrapolation_scalars_2[i]) * + sum(broadcast(*, T[2:(i + 1)], + eltype(uprev).(extrapolation_weights_2[1:i, i]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, + t) + integrator.EEst = integrator.opts.internalnorm(res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || + integrator.EEst <= + typeof(integrator.EEst)(prod(subdividing_sequence[(n_curr + 2):(win_max + 1)] .// + subdividing_sequence[1]^2)) + # Reject current approximation order but pass convergence monitor + # Always compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + W = dt_int * J - integrator.f.mass_matrix + integrator.stats.nw += 1 + u_temp2 = uprev + u_temp1 = u_temp2 + + _reshape(W \ -_vec(dt_int * integrator.fsalfirst), axes(uprev)) # Euler starting step + for j in 2:(j_int + 1) + T[n_curr + 1] = u_temp1 + _reshape( + W \ + -_vec(dt_int * + f(u_temp1, p, t + (j - 1) * dt_int)), + axes(uprev)) + integrator.stats.nf += 1 + if (j == j_int + 1) + T[n_curr + 1] = 0.25(T[n_curr + 1] + 2 * u_temp1 + u_temp2) + end + u_temp2 = u_temp1 + u_temp1 = T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + utilde = eltype(uprev).(extrapolation_scalars_2[n_curr]) * + sum(broadcast(*, T[2:(n_curr + 1)], + eltype(uprev).(extrapolation_weights_2[1:n_curr, + n_curr]))) # and its internal counterpart + res = calculate_residuals(u, utilde, integrator.opts.abstol, + integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + u = eltype(uprev).(extrapolation_scalars[n_curr + 1]) * + sum(broadcast(*, T[1:(n_curr + 1)], + eltype(uprev).(extrapolation_weights[1:(n_curr + 1), + (n_curr + 1)]))) # Approximation of extrapolation order n_curr + end + + # Save the latest approximation and update FSAL + integrator.u = u + integrator.fsallast = f(u, p, t + dt) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::ImplicitEulerBarycentricExtrapolationCache) + # cf. initialize! of MidpointCache + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +function perform_step!(integrator, cache::ImplicitEulerBarycentricExtrapolationCache, + repeat_step = false) + # Unpack all information needed + @unpack t, uprev, dt, f, p = integrator + alg = unwrap_alg(integrator, true) + @unpack n_curr, u_temp1, u_temp2, utilde, res, T, fsalfirst, k, diff1, diff2 = cache + @unpack u_temp3, u_temp4, k_tmps = cache + # Coefficients for obtaining u + @unpack extrapolation_weights, extrapolation_scalars = cache.coefficients + # Coefficients for obtaining utilde + @unpack extrapolation_weights_2, extrapolation_scalars_2 = cache.coefficients + # Additional constant information + @unpack subdividing_sequence = cache.coefficients + @unpack sequence_factor = alg + + @unpack J, W, uf, tf, linsolve_tmps, jac_config = cache + + fill!(cache.Q, zero(eltype(cache.Q))) + + if integrator.opts.adaptive + # Set up the order window + # alg.min_order + 1 ≦ n_curr ≦ alg.max_order - 1 is enforced by step_*_controller! + if !(alg.min_order + 1 <= n_curr <= alg.max_order - 1) + error("Something went wrong while setting up the order window: $n_curr ∉ [$(alg.min_order+1),$(alg.max_order-1)]. + Please report this error ") + end + win_min = n_curr - 1 + win_max = n_curr + 1 + + # Set up the current extrapolation order + cache.n_old = n_curr # Save the suggested order for step_*_controller! + n_curr = win_min # Start with smallest order in the order window + end + + #Compute the internal discretisations + calc_J!(J, integrator, cache) # Store the calculated jac as it won't change in internal discretisation + if !isthreaded(alg.threading) + for i in 0:n_curr + j_int = sequence_factor * subdividing_sequence[i + 1] + dt_int = dt / j_int # Stepsize of the ith internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + @.. broadcast=false diff1[1]=u_temp1 - u_temp2 + for j in 2:(j_int + 1) + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k + + linsolve = cache.linsolve[1] + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[i + 1]=u_temp1 + k + if (j == j_int + 1) + @.. broadcast=false T[i + 1]=0.25(T[i + 1] + 2 * u_temp1 + u_temp2) + end + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[i + 1] + if (i <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[1]=u_temp1 - u_temp2 + @.. broadcast=false diff2[1]=0.5 * (diff2[1] - diff1[1]) + if (integrator.opts.internalnorm(diff1[1], t) < + integrator.opts.internalnorm(diff2[1], t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[1]=u_temp1 - u_temp2 + end + end + else + if alg.sequence == :romberg + # Compute solution by using maximum two threads for romberg sequence + # One thread will fill T matrix till second last element and another thread will + # fill last element of T matrix. + # Romberg sequence --> 1, 2, 4, 8, ..., 2^(i) + # 1 + 2 + 4 + ... + 2^(i-1) = 2^(i) - 1 + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 1:2 + startIndex = (i == 1) ? 0 : n_curr + endIndex = (i == 1) ? n_curr - 1 : n_curr + + for index in startIndex:endIndex + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[Threads.threadid()], integrator.f.mass_matrix, + dt_int_temp, J, false) + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + fsalfirst + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + k_tmps[Threads.threadid()] # Euler starting step + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + for j in 2:(j_int_temp + 1) + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + k_tmps[Threads.threadid()] + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step && j == 1 + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false T[index + 1]=u_temp3[Threads.threadid()] + + k_tmps[Threads.threadid()] # Explicit Midpoint rule + if (j == j_int_temp + 1) + @.. broadcast=false T[index + 1]=0.25(T[index + 1] + + 2 * + u_temp3[Threads.threadid()] + + u_temp4[Threads.threadid()]) + end + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if (integrator.opts.internalnorm(diff1[Threads.threadid()], + t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], + t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + end + end + integrator.force_stepfail ? break : continue + end + end + else + let n_curr = n_curr, subdividing_sequence = subdividing_sequence, uprev = uprev, + dt = dt, u_temp3 = u_temp3, + u_temp4 = u_temp4, k_tmps = k_tmps, p = p, t = t, T = T + + @threaded alg.threading for i in 0:(n_curr ÷ 2) + indices = i != n_curr - i ? (i, n_curr - i) : (-1, n_curr - i) + for index in indices + index == -1 && continue + j_int_temp = sequence_factor * subdividing_sequence[index + 1] + dt_int_temp = dt / j_int_temp # Stepsize of the ith internal discretisation + jacobian2W!(W[Threads.threadid()], integrator.f.mass_matrix, + dt_int_temp, J, false) + @.. broadcast=false u_temp4[Threads.threadid()]=uprev + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + fsalfirst + + linsolve = cache.linsolve[Threads.threadid()] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=u_temp4[Threads.threadid()] + + k_tmps[Threads.threadid()] # Euler starting step + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + for j in 2:(j_int_temp + 1) + f(k_tmps[Threads.threadid()], + cache.u_temp3[Threads.threadid()], + p, t + (j - 1) * dt_int_temp) + @.. broadcast=false linsolve_tmps[Threads.threadid()]=dt_int_temp * + k_tmps[Threads.threadid()] + + linsolve = cache.linsolve[Threads.threadid()] + + if (!repeat_step && j == 1) + linres = dolinsolve(integrator, linsolve; + A = W[Threads.threadid()], + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[Threads.threadid()]), + linu = _vec(k_tmps[Threads.threadid()])) + end + cache.linsolve[Threads.threadid()] = linres.cache + + @.. broadcast=false k_tmps[Threads.threadid()]=-k_tmps[Threads.threadid()] + @.. broadcast=false T[index + 1]=u_temp3[Threads.threadid()] + + k_tmps[Threads.threadid()] # Explicit Midpoint rule + if (j == j_int_temp + 1) + @.. broadcast=false T[index + 1]=0.25(T[index + 1] + + 2 * + u_temp3[Threads.threadid()] + + u_temp4[Threads.threadid()]) + end + @.. broadcast=false u_temp4[Threads.threadid()]=u_temp3[Threads.threadid()] + @.. broadcast=false u_temp3[Threads.threadid()]=T[index + 1] + if (index <= 1) + # Deuflhard Stability check for initial two sequences + @.. broadcast=false diff2[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + @.. broadcast=false diff2[Threads.threadid()]=0.5 * + (diff2[Threads.threadid()] - + diff1[Threads.threadid()]) + if (integrator.opts.internalnorm(diff1[Threads.threadid()], + t) < + integrator.opts.internalnorm(diff2[Threads.threadid()], + t)) + # Divergence of iteration, overflow is possible. Force fail and start with smaller step + integrator.force_stepfail = true + return + end + end + @.. broadcast=false diff1[Threads.threadid()]=u_temp3[Threads.threadid()] - + u_temp4[Threads.threadid()] + end + end + integrator.force_stepfail ? break : continue + end + end + end + end + + if integrator.force_stepfail + return + end + + if integrator.opts.adaptive + # Compute all information relating to an extrapolation order ≦ win_min + for i in (win_min - 1):win_min + + #integrator.u .= extrapolation_scalars[i+1] * sum( broadcast(*, cache.T[1:(i+1)], extrapolation_weights[1:(i+1), (i+1)]) ) # Approximation of extrapolation order i + #cache.utilde .= extrapolation_scalars_2[i] * sum( broadcast(*, cache.T[2:(i+1)], extrapolation_weights_2[1:i, i]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(i + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (i + 1)] + end + for j in 2:(i + 1) + @.. broadcast=false u_temp2+=cache.T[j] * extrapolation_weights_2[j - 1, i] + end + @.. broadcast=false integrator.u=extrapolation_scalars[i + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[i] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + cache.n_curr = i # Update cache's n_curr for stepsize_controller_internal! + stepsize_controller_internal!(integrator, alg) # Update cache.Q + end + + # Check if an approximation of some order in the order window can be accepted + # Make sure a stepsize scaling factor of order (alg.min_order + 1) is provided for the step_*_controller! + while n_curr <= win_max + EEst1 = one(integrator.EEst) + for i in (n_curr + 2):(win_max + 1) + EEst1 *= subdividing_sequence[i] / subdividing_sequence[1] + end + EEst1 *= EEst1 + + #@show integrator.opts.internalnorm(integrator.u - cache.utilde,t) + if accept_step_controller(integrator, integrator.opts.controller) + # Accept current approximation u of order n_curr + break + elseif (n_curr < alg.min_order + 1) || integrator.EEst <= EEst1 + # Reject current approximation order but pass convergence monitor + # Compute approximation of order (n_curr + 1) + n_curr = n_curr + 1 + cache.n_curr = n_curr + + # Update cache.T + j_int = sequence_factor * subdividing_sequence[n_curr + 1] + dt_int = dt / j_int # Stepsize of the new internal discretisation + jacobian2W!(W[1], integrator.f.mass_matrix, dt_int, J, false) + integrator.stats.nw += 1 + @.. broadcast=false u_temp2=uprev + @.. broadcast=false linsolve_tmps[1]=dt_int * fsalfirst + + linsolve = cache.linsolve[1] + + if !repeat_step + linres = dolinsolve(integrator, linsolve; A = W[1], + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + else + linres = dolinsolve(integrator, linsolve; A = nothing, + b = _vec(linsolve_tmps[1]), linu = _vec(k)) + end + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false u_temp1=u_temp2 + k # Euler starting step + for j in 2:(j_int + 1) + f(k, cache.u_temp1, p, t + (j - 1) * dt_int) + integrator.stats.nf += 1 + @.. broadcast=false linsolve_tmps[1]=dt_int * k + + linsolve = cache.linsolve[1] + linres = dolinsolve(integrator, linsolve; b = _vec(linsolve_tmps[1]), + linu = _vec(k)) + cache.linsolve[1] = linres.cache + + integrator.stats.nsolve += 1 + @.. broadcast=false k=-k + @.. broadcast=false T[n_curr + 1]=u_temp1 + k # Explicit Midpoint rule + if (j == j_int + 1) + @.. broadcast=false T[n_curr + 1]=0.25(T[n_curr + 1] + 2 * u_temp1 + + u_temp2) + end + @.. broadcast=false u_temp2=u_temp1 + @.. broadcast=false u_temp1=T[n_curr + 1] + end + + # Update u, integrator.EEst and cache.Q + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + #cache.utilde .= extrapolation_scalars_2[n_curr] * sum( broadcast(*, cache.T[2:(n_curr+1)], extrapolation_weights_2[1:n_curr, n_curr]) ) # and its internal counterpart + + u_temp1 .= false + u_temp2 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * + extrapolation_weights[j, (n_curr + 1)] + end + for j in 2:(n_curr + 1) + @.. broadcast=false u_temp2+=cache.T[j] * + extrapolation_weights_2[j - 1, n_curr] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + @.. broadcast=false cache.utilde=extrapolation_scalars_2[n_curr] * u_temp2 + + calculate_residuals!(cache.res, integrator.u, cache.utilde, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(cache.res, t) + stepsize_controller_internal!(integrator, alg) # Update cache.Q + else + # Reject the current approximation and not pass convergence monitor + break + end + end + else + + #integrator.u .= extrapolation_scalars[n_curr+1] * sum( broadcast(*, cache.T[1:(n_curr+1)], extrapolation_weights[1:(n_curr+1), (n_curr+1)]) ) # Approximation of extrapolation order n_curr + u_temp1 .= false + for j in 1:(n_curr + 1) + @.. broadcast=false u_temp1+=cache.T[j] * extrapolation_weights[j, (n_curr + 1)] + end + @.. broadcast=false integrator.u=extrapolation_scalars[n_curr + 1] * u_temp1 + end + + f(cache.k, integrator.u, p, t + dt) # Update FSAL + integrator.stats.nf += 1 +end diff --git a/src/perform_step/feagin_rk_perform_step.jl b/src/perform_step/feagin_rk_perform_step.jl new file mode 100644 index 0000000000..a0ded6fa0b --- /dev/null +++ b/src/perform_step/feagin_rk_perform_step.jl @@ -0,0 +1,1288 @@ +function initialize!(integrator, cache::Feagin10ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Feagin10ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1203, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1300, a1302, a1303, a1305, a1306, a1307, a1308, a1309, a1310, a1311, a1312, a1400, a1401, a1404, a1406, a1412, a1413, a1500, a1502, a1514, a1600, a1601, a1602, a1604, a1605, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16 = cache + k1 = integrator.fsalfirst + a = dt * a0100 + k2 = f(uprev + a * k1, p, t + c1 * dt) + k3 = f(uprev + dt * (a0200 * k1 + a0201 * k2), p, t + c2 * dt) + k4 = f(uprev + dt * (a0300 * k1 + a0302 * k3), p, t + c3 * dt) + k5 = f(uprev + dt * (a0400 * k1 + a0402 * k3 + a0403 * k4), p, t + c4 * dt) + k6 = f(uprev + dt * (a0500 * k1 + a0503 * k4 + a0504 * k5), p, t + c5 * dt) + k7 = f(uprev + dt * (a0600 * k1 + a0603 * k4 + a0604 * k5 + a0605 * k6), p, t + c6 * dt) + k8 = f(uprev + dt * (a0700 * k1 + a0704 * k5 + a0705 * k6 + a0706 * k7), p, t + c7 * dt) + k9 = f(uprev + dt * (a0800 * k1 + a0805 * k6 + a0806 * k7 + a0807 * k8), p, t + c8 * dt) + k10 = f(uprev + dt * (a0900 * k1 + a0905 * k6 + a0906 * k7 + a0907 * k8 + a0908 * k9), + p, t + c9 * dt) + k11 = f( + uprev + + dt * + (a1000 * k1 + a1005 * k6 + a1006 * k7 + a1007 * k8 + a1008 * k9 + a1009 * k10), + p, t + c10 * dt) + k12 = f( + uprev + + dt * + (a1100 * k1 + a1105 * k6 + a1106 * k7 + a1107 * k8 + a1108 * k9 + a1109 * k10 + + a1110 * k11), + p, + t + c11 * dt) + k13 = f( + uprev + + dt * + (a1200 * k1 + a1203 * k4 + a1204 * k5 + a1205 * k6 + a1206 * k7 + a1207 * k8 + + a1208 * k9 + a1209 * k10 + a1210 * k11 + a1211 * k12), + p, + t + c12 * dt) + k14 = f( + uprev + + dt * + (a1300 * k1 + a1302 * k3 + a1303 * k4 + a1305 * k6 + a1306 * k7 + a1307 * k8 + + a1308 * k9 + a1309 * k10 + a1310 * k11 + a1311 * k12 + a1312 * k13), + p, + t + c13 * dt) + k15 = f( + uprev + + dt * + (a1400 * k1 + a1401 * k2 + a1404 * k5 + a1406 * k7 + a1412 * k13 + a1413 * k14), + p, t + c14 * dt) + k16 = f(uprev + dt * (a1500 * k1 + a1502 * k3 + a1514 * k15), p, t + c15 * dt) + k17 = f( + uprev + + dt * + (a1600 * k1 + a1601 * k2 + a1602 * k3 + a1604 * k5 + a1605 * k6 + a1606 * k7 + + a1607 * k8 + a1608 * k9 + a1609 * k10 + a1610 * k11 + a1611 * k12 + + a1612 * k13 + a1613 * k14 + a1614 * k15 + a1615 * k16), + p, + t + c16 * dt) + integrator.stats.nf += 16 + u = uprev + + dt * + (b1 * k1 + b2 * k2 + b3 * k3 + b5 * k5 + b7 * k7 + b9 * k9 + b10 * k10 + b11 * k11 + + b12 * k12 + b13 * k13 + b14 * k14 + b15 * k15 + b16 * k16 + b17 * k17) + if integrator.opts.adaptive + utilde = @.. broadcast=false dt*(k2-k16)*adaptiveConst + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + k = f(u, p, t + dt) # For the interpolation, needs k at the updated point + integrator.stats.nf += 1 + integrator.fsallast = k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::Feagin10Cache) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +#= +@muladd function perform_step!(integrator, cache::Feagin10Cache, repeat_step=false) + @unpack t,dt,uprev,u,f,p = integrator + @unpack adaptiveConst,a0100,a0200,a0201,a0300,a0302,a0400,a0402,a0403,a0500,a0503,a0504,a0600,a0603,a0604,a0605,a0700,a0704,a0705,a0706,a0800,a0805,a0806,a0807,a0900,a0905,a0906,a0907,a0908,a1000,a1005,a1006,a1007,a1008,a1009,a1100,a1105,a1106,a1107,a1108,a1109,a1110,a1200,a1203,a1204,a1205,a1206,a1207,a1208,a1209,a1210,a1211,a1300,a1302,a1303,a1305,a1306,a1307,a1308,a1309,a1310,a1311,a1312,a1400,a1401,a1404,a1406,a1412,a1413,a1500,a1502,a1514,a1600,a1601,a1602,a1604,a1605,a1606,a1607,a1608,a1609,a1610,a1611,a1612,a1613,a1614,a1615,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16 = cache.tab + @unpack k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15,k16,k17,tmp,atmp,uprev,k = cache + k1 = cache.fsalfirst + a = dt*a0100 + @.. broadcast=false tmp = uprev + a*k1 + f(k2, tmp, p, t + c1*dt) + @.. broadcast=false tmp = uprev + dt*(a0200*k1 + a0201*k2) + f(k3, tmp, p, t + c2*dt ) + @.. broadcast=false tmp = uprev + dt*(a0300*k1 + a0302*k3) + f(k4, tmp, p, t + c3*dt) + @.. broadcast=false tmp = uprev + dt*(a0400*k1 + a0402*k3 + a0403*k4) + f(k5, tmp, p, t + c4*dt) + @.. broadcast=false tmp = uprev + dt*(a0500*k1 + a0503*k4 + a0504*k5) + f(k6, tmp, p, t + c5*dt) + @.. broadcast=false tmp = uprev + dt*(a0600*k1 + a0603*k4 + a0604*k5 + a0605*k6) + f(k7, tmp, p, t + c6*dt) + @.. broadcast=false tmp = uprev + dt*(a0700*k1 + a0704*k5 + a0705*k6 + a0706*k7) + f(k8, tmp, p, t + c7*dt) + @.. broadcast=false tmp = uprev + dt*(a0800*k1 + a0805*k6 + a0806*k7 + a0807*k8) + f(k9, tmp, p, t + c8*dt) + @.. broadcast=false tmp = uprev + dt*(a0900*k1 + a0905*k6 + a0906*k7 + a0907*k8 + a0908*k9) + f(k10, tmp, p, t + c9*dt) + @.. broadcast=false tmp = uprev + dt*(a1000*k1 + a1005*k6 + a1006*k7 + a1007*k8 + a1008*k9 + a1009*k10) + f(k11, tmp, p, t + c10*dt) + @.. broadcast=false tmp = uprev + dt*(a1100*k1 + a1105*k6 + a1106*k7 + a1107*k8 + a1108*k9 + a1109*k10 + a1110*k11) + f(k12, tmp, p, t + c11*dt) + @.. broadcast=false tmp = uprev + dt*(a1200*k1 + a1203*k4 + a1204*k5 + a1205*k6 + a1206*k7 + a1207*k8 + a1208*k9 + a1209*k10 + a1210*k11 + a1211*k12) + f(k13, tmp, p, t + c12*dt) + @.. broadcast=false tmp = uprev + dt*(a1300*k1 + a1302*k3 + a1303*k4 + a1305*k6 + a1306*k7 + a1307*k8 + a1308*k9 + a1309*k10 + a1310*k11 + a1311*k12 + a1312*k13) + f(k14, tmp, p, t + c13*dt) + @.. broadcast=false tmp = uprev + dt*(a1400*k1 + a1401*k2 + a1404*k5 + a1406*k7 + a1412*k13 + a1413*k14) + f(k15, tmp, p, t + c14*dt) + @.. broadcast=false tmp = uprev + dt*(a1500*k1 + a1502*k3 + a1514*k15) + f(k16, tmp, p, t + c15*dt) + @.. broadcast=false tmp = uprev + dt*(a1600*k1 + a1601*k2 + a1602*k3 + a1604*k5 + a1605*k6 + a1606*k7 + a1607*k8 + a1608*k9 + a1609*k10 + a1610*k11 + a1611*k12 + a1612*k13 + a1613*k14 + a1614*k15 + a1615*k16) + f(k17, tmp, p, t + c16*dt) + @.. broadcast=false u = uprev + dt*(b1*k1 + b2*k2 + b3*k3 + b5*k5 + b7*k7 + b9*k9 + b10*k10 + b11*k11 + b12*k12 + b13*k13 + b14*k14 + b15*k15 + b16*k16 + b17*k17) + if integrator.opts.adaptive + @.. broadcast=false tmp = dt*(k2 - k16) * adaptiveConst + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, integrator.opts.reltol,integrator.opts.internalnorm,t) + integrator.EEst = integrator.opts.internalnorm(atmp,t) + end + f(integrator.fsallast,u,p,t+dt) # For the interpolation, needs k at the updated point +end +=# + +@muladd function perform_step!(integrator, cache::Feagin10Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1203, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1300, a1302, a1303, a1305, a1306, a1307, a1308, a1309, a1310, a1311, a1312, a1400, a1401, a1404, a1406, a1412, a1413, a1500, a1502, a1514, a1600, a1601, a1602, a1604, a1605, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16 = cache.tab + @unpack k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, tmp, atmp, uprev, k = cache + k1 = cache.fsalfirst + a = dt * a0100 + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + a * k1[i] + end + f(k2, tmp, p, t + c1 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0200 * k1[i] + a0201 * k2[i]) + end + f(k3, tmp, p, t + c2 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0300 * k1[i] + a0302 * k3[i]) + end + f(k4, tmp, p, t + c3 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0400 * k1[i] + a0402 * k3[i] + a0403 * k4[i]) + end + f(k5, tmp, p, t + c4 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0500 * k1[i] + a0503 * k4[i] + a0504 * k5[i]) + end + f(k6, tmp, p, t + c5 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0600 * k1[i] + a0603 * k4[i] + a0604 * k5[i] + a0605 * k6[i]) + end + f(k7, tmp, p, t + c6 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0700 * k1[i] + a0704 * k5[i] + a0705 * k6[i] + a0706 * k7[i]) + end + f(k8, tmp, p, t + c7 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0800 * k1[i] + a0805 * k6[i] + a0806 * k7[i] + a0807 * k8[i]) + end + f(k9, tmp, p, t + c8 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0900 * k1[i] + a0905 * k6[i] + a0906 * k7[i] + a0907 * k8[i] + + a0908 * k9[i]) + end + f(k10, tmp, p, t + c9 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1000 * k1[i] + a1005 * k6[i] + a1006 * k7[i] + a1007 * k8[i] + + a1008 * k9[i] + a1009 * k10[i]) + end + f(k11, tmp, p, t + c10 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1100 * k1[i] + a1105 * k6[i] + a1106 * k7[i] + a1107 * k8[i] + + a1108 * k9[i] + a1109 * k10[i] + a1110 * k11[i]) + end + f(k12, tmp, p, t + c11 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1200 * k1[i] + a1203 * k4[i] + a1204 * k5[i] + a1205 * k6[i] + + a1206 * k7[i] + a1207 * k8[i] + a1208 * k9[i] + a1209 * k10[i] + + a1210 * k11[i] + a1211 * k12[i]) + end + f(k13, tmp, p, t + c12 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1300 * k1[i] + a1302 * k3[i] + a1303 * k4[i] + a1305 * k6[i] + + a1306 * k7[i] + a1307 * k8[i] + a1308 * k9[i] + a1309 * k10[i] + + a1310 * k11[i] + a1311 * k12[i] + a1312 * k13[i]) + end + f(k14, tmp, p, t + c13 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1400 * k1[i] + a1401 * k2[i] + a1404 * k5[i] + a1406 * k7[i] + + a1412 * k13[i] + a1413 * k14[i]) + end + f(k15, tmp, p, t + c14 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a1500 * k1[i] + a1502 * k3[i] + a1514 * k15[i]) + end + f(k16, tmp, p, t + c15 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1600 * k1[i] + a1601 * k2[i] + a1602 * k3[i] + a1604 * k5[i] + + a1605 * k6[i] + a1606 * k7[i] + a1607 * k8[i] + a1608 * k9[i] + + a1609 * k10[i] + a1610 * k11[i] + a1611 * k12[i] + + a1612 * k13[i] + a1613 * k14[i] + a1614 * k15[i] + + a1615 * k16[i]) + end + f(k17, tmp, p, t + c16 * dt) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * + (b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b5 * k5[i] + b7 * k7[i] + + b9 * k9[i] + b10 * k10[i] + b11 * k11[i] + b12 * k12[i] + + b13 * k13[i] + b14 * k14[i] + b15 * k15[i] + b16 * k16[i] + + b17 * k17[i]) + end + integrator.stats.nf += 16 + if integrator.opts.adaptive + @tight_loop_macros for i in uidx + @inbounds tmp[i] = dt * (k2[i] - k16[i]) * adaptiveConst + end + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + f(integrator.fsallast, u, p, t + dt) # For the interpolation, needs k at the updated point + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::Feagin12ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Feagin12ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1705, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, a1716, a1800, a1805, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1904, a1905, a1906, a1908, a1909, a1910, a1911, a1912, a1913, a1914, a1915, a1916, a1917, a1918, a2000, a2003, a2004, a2005, a2007, a2009, a2010, a2017, a2018, a2019, a2100, a2102, a2103, a2106, a2107, a2109, a2110, a2117, a2118, a2119, a2120, a2200, a2201, a2204, a2206, a2220, a2221, a2300, a2302, a2322, a2400, a2401, a2402, a2404, a2406, a2407, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25 = cache + k1 = integrator.fsalfirst + a = dt * a0100 + k2 = f(uprev + a * k1, p, t + c1 * dt) + k3 = f(uprev + dt * (a0200 * k1 + a0201 * k2), p, t + c2 * dt) + k4 = f(uprev + dt * (a0300 * k1 + a0302 * k3), p, t + c3 * dt) + k5 = f(uprev + dt * (a0400 * k1 + a0402 * k3 + a0403 * k4), p, t + c4 * dt) + k6 = f(uprev + dt * (a0500 * k1 + a0503 * k4 + a0504 * k5), p, t + c5 * dt) + k7 = f(uprev + dt * (a0600 * k1 + a0603 * k4 + a0604 * k5 + a0605 * k6), p, t + c6 * dt) + k8 = f(uprev + dt * (a0700 * k1 + a0704 * k5 + a0705 * k6 + a0706 * k7), p, t + c7 * dt) + k9 = f(uprev + dt * (a0800 * k1 + a0805 * k6 + a0806 * k7 + a0807 * k8), p, t + c8 * dt) + k10 = f(uprev + dt * (a0900 * k1 + a0905 * k6 + a0906 * k7 + a0907 * k8 + a0908 * k9), + p, t + c9 * dt) + k11 = f( + uprev + + dt * + (a1000 * k1 + a1005 * k6 + a1006 * k7 + a1007 * k8 + a1008 * k9 + a1009 * k10), + p, t + c10 * dt) + k12 = f( + uprev + + dt * + (a1100 * k1 + a1105 * k6 + a1106 * k7 + a1107 * k8 + a1108 * k9 + a1109 * k10 + + a1110 * k11), + p, + t + c11 * dt) + k13 = f( + uprev + + dt * (a1200 * k1 + a1208 * k9 + a1209 * k10 + a1210 * k11 + a1211 * k12), p, + t + c12 * dt) + k14 = f( + uprev + + dt * (a1300 * k1 + a1308 * k9 + a1309 * k10 + a1310 * k11 + a1311 * k12 + + a1312 * k13), + p, + t + c13 * dt) + k15 = f( + uprev + + dt * (a1400 * k1 + a1408 * k9 + a1409 * k10 + a1410 * k11 + a1411 * k12 + + a1412 * k13 + a1413 * k14), + p, + t + c14 * dt) + k16 = f( + uprev + + dt * (a1500 * k1 + a1508 * k9 + a1509 * k10 + a1510 * k11 + a1511 * k12 + + a1512 * k13 + a1513 * k14 + a1514 * k15), + p, + t + c15 * dt) + k17 = f( + uprev + + dt * ((a1600 * k1 + a1608 * k9 + a1609 * k10) + + (a1610 * k11 + a1611 * k12 + a1612 * k13 + a1613 * k14) + + (a1614 * k15 + a1615 * k16)), + p, + t + c16 * dt) + k18 = f( + uprev + + dt * ((a1700 * k1 + a1705 * k6 + a1706 * k7) + + (a1707 * k8 + a1708 * k9 + a1709 * k10 + a1710 * k11) + + (a1711 * k12 + a1712 * k13 + a1713 * k14 + a1714 * k15) + + (a1715 * k16 + a1716 * k17)), + p, + t + c17 * dt) + k19 = f( + uprev + + dt * ((a1800 * k1 + a1805 * k6 + a1806 * k7) + + (a1807 * k8 + a1808 * k9 + a1809 * k10 + a1810 * k11) + + (a1811 * k12 + a1812 * k13 + a1813 * k14 + a1814 * k15) + + (a1815 * k16 + a1816 * k17 + a1817 * k18)), + p, + t + c18 * dt) + k20 = f( + uprev + + dt * ((a1900 * k1 + a1904 * k5 + a1905 * k6) + + (a1906 * k7 + a1908 * k9 + a1909 * k10 + a1910 * k11) + + (a1911 * k12 + a1912 * k13 + a1913 * k14 + a1914 * k15) + + (a1915 * k16 + a1916 * k17 + a1917 * k18 + a1918 * k19)), + p, + t + c19 * dt) + k21 = f( + uprev + + dt * ((a2000 * k1 + a2003 * k4 + a2004 * k5) + + (a2005 * k6 + a2007 * k8 + a2009 * k10 + a2010 * k11) + + (a2017 * k18 + a2018 * k19 + a2019 * k20)), + p, + t + c20 * dt) + k22 = f( + uprev + + dt * ((a2100 * k1 + a2102 * k3 + a2103 * k4) + + (a2106 * k7 + a2107 * k8 + a2109 * k10 + a2110 * k11) + + (a2117 * k18 + a2118 * k19 + a2119 * k20 + a2120 * k21)), + p, + t + c21 * dt) + k23 = f( + uprev + + dt * ((a2200 * k1 + a2201 * k2 + a2204 * k5) + + (a2206 * k7 + a2220 * k21 + a2221 * k22)), + p, + t + c22 * dt) + k24 = f(uprev + dt * (a2300 * k1 + a2302 * k3 + a2322 * k23), p, t + c23 * dt) + k25 = f( + uprev + + dt * ((a2400 * k1 + a2401 * k2 + a2402 * k3) + + (a2404 * k5 + a2406 * k7 + a2407 * k8 + a2408 * k9) + + (a2409 * k10 + a2410 * k11 + a2411 * k12 + a2412 * k13) + + (a2413 * k14 + a2414 * k15 + a2415 * k16 + a2416 * k17) + + (a2417 * k18 + a2418 * k19 + a2419 * k20 + a2420 * k21) + + (a2421 * k22 + a2422 * k23 + a2423 * k24)), + p, + t + c24 * dt) + integrator.stats.nf += 24 + u = uprev + + dt * ((b1 * k1 + b2 * k2 + b3 * k3 + b5 * k5) + + (b7 * k7 + b8 * k8 + b10 * k10 + b11 * k11) + + (b13 * k13 + b14 * k14 + b15 * k15 + b16 * k16) + + (b17 * k17 + b18 * k18 + b19 * k19 + b20 * k20) + + (b21 * k21 + b22 * k22 + b23 * k23) + (b24 * k24 + b25 * k25)) + k = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.fsallast = k + if integrator.opts.adaptive + utilde = @.. broadcast=false dt*(k2-k24)*adaptiveConst + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::Feagin12Cache) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +#= +@muladd function perform_step!(integrator, cache::Feagin12Cache, repeat_step=false) + @unpack t,dt,uprev,u,f,p = integrator + @unpack adaptiveConst,a0100,a0200,a0201,a0300,a0302,a0400,a0402,a0403,a0500,a0503,a0504,a0600,a0603,a0604,a0605,a0700,a0704,a0705,a0706,a0800,a0805,a0806,a0807,a0900,a0905,a0906,a0907,a0908,a1000,a1005,a1006,a1007,a1008,a1009,a1100,a1105,a1106,a1107,a1108,a1109,a1110,a1200,a1208,a1209,a1210,a1211,a1300,a1308,a1309,a1310,a1311,a1312,a1400,a1408,a1409,a1410,a1411,a1412,a1413,a1500,a1508,a1509,a1510,a1511,a1512,a1513,a1514,a1600,a1608,a1609,a1610,a1611,a1612,a1613,a1614,a1615,a1700,a1705,a1706,a1707,a1708,a1709,a1710,a1711,a1712,a1713,a1714,a1715,a1716,a1800,a1805,a1806,a1807,a1808,a1809,a1810,a1811,a1812,a1813,a1814,a1815,a1816,a1817,a1900,a1904,a1905,a1906,a1908,a1909,a1910,a1911,a1912,a1913,a1914,a1915,a1916,a1917,a1918,a2000,a2003,a2004,a2005,a2007,a2009,a2010,a2017,a2018,a2019,a2100,a2102,a2103,a2106,a2107,a2109,a2110,a2117,a2118,a2119,a2120,a2200,a2201,a2204,a2206,a2220,a2221,a2300,a2302,a2322,a2400,a2401,a2402,a2404,a2406,a2407,a2408,a2409,a2410,a2411,a2412,a2413,a2414,a2415,a2416,a2417,a2418,a2419,a2420,a2421,a2422,a2423,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25 = cache.tab + @unpack k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,k22,k23,k24,k25,tmp,atmp,uprev,k = cache + k1 = cache.fsalfirst + a = dt*a0100 + @.. broadcast=false tmp = uprev + a*k1 + f(k2, tmp, p, t + c1*dt) + @.. broadcast=false tmp = uprev + dt*(a0200*k1 + a0201*k2) + f(k3, tmp, p, t + c2*dt ) + @.. broadcast=false tmp = uprev + dt*(a0300*k1 + a0302*k3) + f(k4, tmp, p, t + c3*dt) + @.. broadcast=false tmp = uprev + dt*(a0400*k1 + a0402*k3 + a0403*k4) + f(k5, tmp, p, t + c4*dt) + @.. broadcast=false tmp = uprev + dt*(a0500*k1 + a0503*k4 + a0504*k5) + f(k6, tmp, p, t + c5*dt) + @.. broadcast=false tmp = uprev + dt*(a0600*k1 + a0603*k4 + a0604*k5 + a0605*k6) + f(k7, tmp, p, t + c6*dt) + @.. broadcast=false tmp = uprev + dt*(a0700*k1 + a0704*k5 + a0705*k6 + a0706*k7) + f(k8, tmp, p, t + c7*dt) + @.. broadcast=false tmp = uprev + dt*(a0800*k1 + a0805*k6 + a0806*k7 + a0807*k8) + f(k9, tmp, p, t + c8*dt) + @.. broadcast=false tmp = uprev + dt*(a0900*k1 + a0905*k6 + a0906*k7 + a0907*k8 + a0908*k9) + f(k10, tmp, p, t + c9*dt) + @.. broadcast=false tmp = uprev + dt*(a1000*k1 + a1005*k6 + a1006*k7 + a1007*k8 + a1008*k9 + a1009*k10) + f(k11, tmp, p, t + c10*dt) + @.. broadcast=false tmp = uprev + dt*(a1100*k1 + a1105*k6 + a1106*k7 + a1107*k8 + a1108*k9 + a1109*k10 + a1110*k11) + f(k12, tmp, p, t + c11*dt) + @.. broadcast=false tmp = uprev + dt*(a1200*k1 + a1208*k9 + a1209*k10 + a1210*k11 + a1211*k12) + f(k13, tmp, p, t + c12*dt) + @.. broadcast=false tmp = uprev + dt*(a1300*k1 + a1308*k9 + a1309*k10 + a1310*k11 + a1311*k12 + a1312*k13) + f(k14, tmp, p, t + c13*dt) + @.. broadcast=false tmp = uprev + dt*(a1400*k1 + a1408*k9 + a1409*k10 + a1410*k11 + a1411*k12 + a1412*k13 + a1413*k14) + f(k15, tmp, p, t + c14*dt) + @.. broadcast=false tmp = uprev + dt*(a1500*k1 + a1508*k9 + a1509*k10 + a1510*k11 + a1511*k12 + a1512*k13 + a1513*k14 + a1514*k15) + f(k16, tmp, p, t + c15*dt) + @.. broadcast=false tmp = uprev + dt*((a1600*k1 + a1608*k9 + a1609*k10) + (a1610*k11 + a1611*k12 + a1612*k13 + a1613*k14) + (a1614*k15 + a1615*k16)) + f(k17, tmp, p, t + c16*dt) + @.. broadcast=false tmp = uprev + dt*((a1700*k1 + a1705*k6 + a1706*k7) + (a1707*k8 + a1708*k9 + a1709*k10 + a1710*k11) + (a1711*k12 + a1712*k13 + a1713*k14 + a1714*k15) + (a1715*k16 + a1716*k17)) + f(k18, tmp, p, t + c17*dt) + @.. broadcast=false tmp = uprev + dt*((a1800*k1 + a1805*k6 + a1806*k7) + (a1807*k8 + a1808*k9 + a1809*k10 + a1810*k11) + (a1811*k12 + a1812*k13 + a1813*k14 + a1814*k15) + (a1815*k16 + a1816*k17 + a1817*k18)) + f(k19, tmp, p, t + c18*dt) + @.. broadcast=false tmp = uprev + dt*((a1900*k1 + a1904*k5 + a1905*k6) + (a1906*k7 + a1908*k9 + a1909*k10 + a1910*k11) + (a1911*k12 + a1912*k13 + a1913*k14 + a1914*k15) + (a1915*k16 + a1916*k17 + a1917*k18 + a1918*k19)) + f(k20, tmp, p, t + c19*dt) + @.. broadcast=false tmp = uprev + dt*((a2000*k1 + a2003*k4 + a2004*k5) + (a2005*k6 + a2007*k8 + a2009*k10 + a2010*k11) + (a2017*k18 + a2018*k19 + a2019*k20)) + f(k21, tmp, p, t + c20*dt) + @.. broadcast=false tmp = uprev + dt*((a2100*k1 + a2102*k3 + a2103*k4) + (a2106*k7 + a2107*k8 + a2109*k10 + a2110*k11) + (a2117*k18 + a2118*k19 + a2119*k20 + a2120*k21)) + f(k22, tmp, p, t + c21*dt) + @.. broadcast=false tmp = uprev + dt*((a2200*k1 + a2201*k2 + a2204*k5) + (a2206*k7 + a2220*k21 + a2221*k22)) + f(k23, tmp, p, t + c22*dt) + @.. broadcast=false tmp = uprev + dt*(a2300*k1 + a2302*k3 + a2322*k23) + f(k24, tmp, p, t + c23*dt) + @.. broadcast=false tmp = uprev + dt*((a2400*k1 + a2401*k2 + a2402*k3) + (a2404*k5 + a2406*k7 + a2407*k8 + a2408*k9) + (a2409*k10 + a2410*k11 + a2411*k12 + a2412*k13) + (a2413*k14 + a2414*k15 + a2415*k16 + a2416*k17) + (a2417*k18 + a2418*k19 + a2419*k20 + a2420*k21) + (a2421*k22 + a2422*k23 + a2423*k24)) + f(k25, tmp, p, t + c24*dt) + @.. broadcast=false u = uprev + dt*((b1*k1 + b2*k2 + b3*k3 + b5*k5) + (b7*k7 + b8*k8 + b10*k10 + b11*k11) + (b13*k13 + b14*k14 + b15*k15 + b16*k16) + (b17*k17 + b18*k18 + b19*k19 + b20*k20) + (b21*k21 + b22*k22 + b23*k23) + (b24*k24 + b25*k25)) + if integrator.opts.adaptive + @.. broadcast=false tmp = dt*(k2 - k24) * adaptiveConst + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, integrator.opts.reltol,integrator.opts.internalnorm,t) + integrator.EEst = integrator.opts.internalnorm(atmp,t) + end + f(k, u, p, t+dt) +end +=# + +@muladd function perform_step!(integrator, cache::Feagin12Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1705, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, a1716, a1800, a1805, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1904, a1905, a1906, a1908, a1909, a1910, a1911, a1912, a1913, a1914, a1915, a1916, a1917, a1918, a2000, a2003, a2004, a2005, a2007, a2009, a2010, a2017, a2018, a2019, a2100, a2102, a2103, a2106, a2107, a2109, a2110, a2117, a2118, a2119, a2120, a2200, a2201, a2204, a2206, a2220, a2221, a2300, a2302, a2322, a2400, a2401, a2402, a2404, a2406, a2407, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25 = cache.tab + @unpack k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, tmp, atmp, uprev, k = cache + k1 = cache.fsalfirst + a = dt * a0100 + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + a * k1[i] + end + f(k2, tmp, p, t + c1 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0200 * k1[i] + a0201 * k2[i]) + end + f(k3, tmp, p, t + c2 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0300 * k1[i] + a0302 * k3[i]) + end + f(k4, tmp, p, t + c3 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0400 * k1[i] + a0402 * k3[i] + a0403 * k4[i]) + end + f(k5, tmp, p, t + c4 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0500 * k1[i] + a0503 * k4[i] + a0504 * k5[i]) + end + f(k6, tmp, p, t + c5 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0600 * k1[i] + a0603 * k4[i] + a0604 * k5[i] + a0605 * k6[i]) + end + f(k7, tmp, p, t + c6 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0700 * k1[i] + a0704 * k5[i] + a0705 * k6[i] + a0706 * k7[i]) + end + f(k8, tmp, p, t + c7 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0800 * k1[i] + a0805 * k6[i] + a0806 * k7[i] + a0807 * k8[i]) + end + f(k9, tmp, p, t + c8 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0900 * k1[i] + a0905 * k6[i] + a0906 * k7[i] + a0907 * k8[i] + + a0908 * k9[i]) + end + f(k10, tmp, p, t + c9 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1000 * k1[i] + a1005 * k6[i] + a1006 * k7[i] + a1007 * k8[i] + + a1008 * k9[i] + a1009 * k10[i]) + end + f(k11, tmp, p, t + c10 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1100 * k1[i] + a1105 * k6[i] + a1106 * k7[i] + a1107 * k8[i] + + a1108 * k9[i] + a1109 * k10[i] + a1110 * k11[i]) + end + f(k12, tmp, p, t + c11 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1200 * k1[i] + a1208 * k9[i] + a1209 * k10[i] + + a1210 * k11[i] + a1211 * k12[i]) + end + f(k13, tmp, p, t + c12 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1300 * k1[i] + a1308 * k9[i] + a1309 * k10[i] + + a1310 * k11[i] + a1311 * k12[i] + a1312 * k13[i]) + end + f(k14, tmp, p, t + c13 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1400 * k1[i] + a1408 * k9[i] + a1409 * k10[i] + + a1410 * k11[i] + a1411 * k12[i] + a1412 * k13[i] + + a1413 * k14[i]) + end + f(k15, tmp, p, t + c14 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1500 * k1[i] + a1508 * k9[i] + a1509 * k10[i] + + a1510 * k11[i] + a1511 * k12[i] + a1512 * k13[i] + + a1513 * k14[i] + a1514 * k15[i]) + end + f(k16, tmp, p, t + c15 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a1600 * k1[i] + a1608 * k9[i] + a1609 * k10[i]) + + (a1610 * k11[i] + a1611 * k12[i] + a1612 * k13[i] + + a1613 * k14[i]) + (a1614 * k15[i] + a1615 * k16[i])) + end + f(k17, tmp, p, t + c16 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a1700 * k1[i] + a1705 * k6[i] + a1706 * k7[i]) + + (a1707 * k8[i] + a1708 * k9[i] + a1709 * k10[i] + + a1710 * k11[i]) + + (a1711 * k12[i] + a1712 * k13[i] + a1713 * k14[i] + + a1714 * k15[i]) + (a1715 * k16[i] + a1716 * k17[i])) + end + f(k18, tmp, p, t + c17 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a1800 * k1[i] + a1805 * k6[i] + a1806 * k7[i]) + + (a1807 * k8[i] + a1808 * k9[i] + a1809 * k10[i] + + a1810 * k11[i]) + + (a1811 * k12[i] + a1812 * k13[i] + a1813 * k14[i] + + a1814 * k15[i]) + + (a1815 * k16[i] + a1816 * k17[i] + a1817 * k18[i])) + end + f(k19, tmp, p, t + c18 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a1900 * k1[i] + a1904 * k5[i] + a1905 * k6[i]) + + (a1906 * k7[i] + a1908 * k9[i] + a1909 * k10[i] + + a1910 * k11[i]) + + (a1911 * k12[i] + a1912 * k13[i] + a1913 * k14[i] + + a1914 * k15[i]) + + (a1915 * k16[i] + a1916 * k17[i] + a1917 * k18[i] + + a1918 * k19[i])) + end + f(k20, tmp, p, t + c19 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a2000 * k1[i] + a2003 * k4[i] + a2004 * k5[i]) + + (a2005 * k6[i] + a2007 * k8[i] + a2009 * k10[i] + + a2010 * k11[i]) + + (a2017 * k18[i] + a2018 * k19[i] + a2019 * k20[i])) + end + f(k21, tmp, p, t + c20 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a2100 * k1[i] + a2102 * k3[i] + a2103 * k4[i]) + + (a2106 * k7[i] + a2107 * k8[i] + a2109 * k10[i] + + a2110 * k11[i]) + + (a2117 * k18[i] + a2118 * k19[i] + a2119 * k20[i] + + a2120 * k21[i])) + end + f(k22, tmp, p, t + c21 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a2200 * k1[i] + a2201 * k2[i] + a2204 * k5[i]) + + (a2206 * k7[i] + a2220 * k21[i] + a2221 * k22[i])) + end + f(k23, tmp, p, t + c22 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a2300 * k1[i] + a2302 * k3[i] + a2322 * k23[i]) + end + f(k24, tmp, p, t + c23 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * ((a2400 * k1[i] + a2401 * k2[i] + a2402 * k3[i]) + + (a2404 * k5[i] + a2406 * k7[i] + a2407 * k8[i] + + a2408 * k9[i]) + + (a2409 * k10[i] + a2410 * k11[i] + a2411 * k12[i] + + a2412 * k13[i]) + + (a2413 * k14[i] + a2414 * k15[i] + a2415 * k16[i] + + a2416 * k17[i]) + + (a2417 * k18[i] + a2418 * k19[i] + a2419 * k20[i] + + a2420 * k21[i]) + + (a2421 * k22[i] + a2422 * k23[i] + a2423 * k24[i])) + end + f(k25, tmp, p, t + c24 * dt) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * ((b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b5 * k5[i]) + + (b7 * k7[i] + b8 * k8[i] + b10 * k10[i] + b11 * k11[i]) + + (b13 * k13[i] + b14 * k14[i] + b15 * k15[i] + b16 * k16[i]) + + (b17 * k17[i] + b18 * k18[i] + b19 * k19[i] + b20 * k20[i]) + + (b21 * k21[i] + b22 * k22[i] + b23 * k23[i]) + + (b24 * k24[i] + b25 * k25[i])) + end + integrator.stats.nf += 24 + if integrator.opts.adaptive + @tight_loop_macros for i in uidx + @inbounds tmp[i] = dt * (k2[i] - k24[i]) * adaptiveConst + end + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +function initialize!(integrator, cache::Feagin14ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Feagin14ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1712, a1713, a1714, a1715, a1716, a1800, a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1912, a1913, a1914, a1915, a1916, a1917, a1918, a2000, a2012, a2013, a2014, a2015, a2016, a2017, a2018, a2019, a2100, a2112, a2113, a2114, a2115, a2116, a2117, a2118, a2119, a2120, a2200, a2212, a2213, a2214, a2215, a2216, a2217, a2218, a2219, a2220, a2221, a2300, a2308, a2309, a2310, a2311, a2312, a2313, a2314, a2315, a2316, a2317, a2318, a2319, a2320, a2321, a2322, a2400, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, a2500, a2508, a2509, a2510, a2511, a2512, a2513, a2514, a2515, a2516, a2517, a2518, a2519, a2520, a2521, a2522, a2523, a2524, a2600, a2605, a2606, a2607, a2608, a2609, a2610, a2612, a2613, a2614, a2615, a2616, a2617, a2618, a2619, a2620, a2621, a2622, a2623, a2624, a2625, a2700, a2705, a2706, a2707, a2708, a2709, a2711, a2712, a2713, a2714, a2715, a2716, a2717, a2718, a2719, a2720, a2721, a2722, a2723, a2724, a2725, a2726, a2800, a2805, a2806, a2807, a2808, a2810, a2811, a2813, a2814, a2815, a2823, a2824, a2825, a2826, a2827, a2900, a2904, a2905, a2906, a2909, a2910, a2911, a2913, a2914, a2915, a2923, a2924, a2925, a2926, a2927, a2928, a3000, a3003, a3004, a3005, a3007, a3009, a3010, a3013, a3014, a3015, a3023, a3024, a3025, a3027, a3028, a3029, a3100, a3102, a3103, a3106, a3107, a3109, a3110, a3113, a3114, a3115, a3123, a3124, a3125, a3127, a3128, a3129, a3130, a3200, a3201, a3204, a3206, a3230, a3231, a3300, a3302, a3332, a3400, a3401, a3402, a3404, a3406, a3407, a3409, a3410, a3411, a3412, a3413, a3414, a3415, a3416, a3417, a3418, a3419, a3420, a3421, a3422, a3423, a3424, a3425, a3426, a3427, a3428, a3429, a3430, a3431, a3432, a3433, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35 = cache + k1 = integrator.fsalfirst + a = dt * a0100 + k2 = f(uprev + a * k1, p, t + c1 * dt) + k3 = f(uprev + dt * (a0200 * k1 + a0201 * k2), p, t + c2 * dt) + k4 = f(uprev + dt * (a0300 * k1 + a0302 * k3), p, t + c3 * dt) + k5 = f(uprev + dt * (a0400 * k1 + a0402 * k3 + a0403 * k4), p, t + c4 * dt) + k6 = f(uprev + dt * (a0500 * k1 + a0503 * k4 + a0504 * k5), p, t + c5 * dt) + k7 = f(uprev + dt * (a0600 * k1 + a0603 * k4 + a0604 * k5 + a0605 * k6), p, t + c6 * dt) + k8 = f(uprev + dt * (a0700 * k1 + a0704 * k5 + a0705 * k6 + a0706 * k7), p, t + c7 * dt) + k9 = f(uprev + dt * (a0800 * k1 + a0805 * k6 + a0806 * k7 + a0807 * k8), p, t + c8 * dt) + k10 = f(uprev + dt * (a0900 * k1 + a0905 * k6 + a0906 * k7 + a0907 * k8 + a0908 * k9), + p, t + c9 * dt) + k11 = f( + uprev + + dt * + (a1000 * k1 + a1005 * k6 + a1006 * k7 + a1007 * k8 + a1008 * k9 + a1009 * k10), + p, t + c10 * dt) + k12 = f( + uprev + + dt * + (a1100 * k1 + a1105 * k6 + a1106 * k7 + a1107 * k8 + a1108 * k9 + a1109 * k10 + + a1110 * k11), + p, + t + c11 * dt) + k13 = f( + uprev + + dt * (a1200 * k1 + a1208 * k9 + a1209 * k10 + a1210 * k11 + a1211 * k12), p, + t + c12 * dt) + k14 = f( + uprev + + dt * (a1300 * k1 + a1308 * k9 + a1309 * k10 + a1310 * k11 + a1311 * k12 + + a1312 * k13), + p, + t + c13 * dt) + k15 = f( + uprev + + dt * (a1400 * k1 + a1408 * k9 + a1409 * k10 + a1410 * k11 + a1411 * k12 + + a1412 * k13 + a1413 * k14), + p, + t + c14 * dt) + k16 = f( + uprev + + dt * (a1500 * k1 + a1508 * k9 + a1509 * k10 + a1510 * k11 + a1511 * k12 + + a1512 * k13 + a1513 * k14 + a1514 * k15), + p, + t + c15 * dt) + k17 = f( + uprev + + dt * (a1600 * k1 + a1608 * k9 + a1609 * k10 + a1610 * k11 + a1611 * k12 + + a1612 * k13 + a1613 * k14 + a1614 * k15 + a1615 * k16), + p, + t + c16 * dt) + k18 = f( + uprev + + dt * (a1700 * k1 + a1712 * k13 + a1713 * k14 + a1714 * k15 + a1715 * k16 + + a1716 * k17), + p, + t + c17 * dt) + k19 = f( + uprev + + dt * (a1800 * k1 + a1812 * k13 + a1813 * k14 + a1814 * k15 + a1815 * k16 + + a1816 * k17 + a1817 * k18), + p, + t + c18 * dt) + k20 = f( + uprev + + dt * (a1900 * k1 + a1912 * k13 + a1913 * k14 + a1914 * k15 + a1915 * k16 + + a1916 * k17 + a1917 * k18 + a1918 * k19), + p, + t + c19 * dt) + k21 = f( + uprev + + dt * (a2000 * k1 + a2012 * k13 + a2013 * k14 + a2014 * k15 + a2015 * k16 + + a2016 * k17 + a2017 * k18 + a2018 * k19 + a2019 * k20), + p, + t + c20 * dt) + k22 = f( + uprev + + dt * (a2100 * k1 + a2112 * k13 + a2113 * k14 + a2114 * k15 + a2115 * k16 + + a2116 * k17 + a2117 * k18 + a2118 * k19 + a2119 * k20 + a2120 * k21), + p, + t + c21 * dt) + k23 = f( + uprev + + dt * (a2200 * k1 + a2212 * k13 + a2213 * k14 + a2214 * k15 + a2215 * k16 + + a2216 * k17 + a2217 * k18 + a2218 * k19 + a2219 * k20 + a2220 * k21 + + a2221 * k22), + p, + t + c22 * dt) + k24 = f( + uprev + + dt * (a2300 * k1 + a2308 * k9 + a2309 * k10 + a2310 * k11 + a2311 * k12 + + a2312 * k13 + a2313 * k14 + a2314 * k15 + a2315 * k16 + a2316 * k17 + + a2317 * k18 + a2318 * k19 + a2319 * k20 + a2320 * k21 + a2321 * k22 + + a2322 * k23), + p, + t + c23 * dt) + k25 = f( + uprev + + dt * (a2400 * k1 + a2408 * k9 + a2409 * k10 + a2410 * k11 + a2411 * k12 + + a2412 * k13 + a2413 * k14 + a2414 * k15 + a2415 * k16 + a2416 * k17 + + a2417 * k18 + a2418 * k19 + a2419 * k20 + a2420 * k21 + a2421 * k22 + + a2422 * k23 + a2423 * k24), + p, + t + c24 * dt) + k26 = f( + uprev + + dt * (a2500 * k1 + a2508 * k9 + a2509 * k10 + a2510 * k11 + a2511 * k12 + + a2512 * k13 + a2513 * k14 + a2514 * k15 + a2515 * k16 + a2516 * k17 + + a2517 * k18 + a2518 * k19 + a2519 * k20 + a2520 * k21 + a2521 * k22 + + a2522 * k23 + a2523 * k24 + a2524 * k25), + p, + t + c25 * dt) + k27 = f( + uprev + + dt * + (a2600 * k1 + a2605 * k6 + a2606 * k7 + a2607 * k8 + a2608 * k9 + a2609 * k10 + + a2610 * k11 + a2612 * k13 + a2613 * k14 + a2614 * k15 + a2615 * k16 + + a2616 * k17 + a2617 * k18 + a2618 * k19 + a2619 * k20 + a2620 * k21 + + a2621 * k22 + a2622 * k23 + a2623 * k24 + a2624 * k25 + a2625 * k26), + p, + t + c26 * dt) + k28 = f( + uprev + + dt * + (a2700 * k1 + a2705 * k6 + a2706 * k7 + a2707 * k8 + a2708 * k9 + a2709 * k10 + + a2711 * k12 + a2712 * k13 + a2713 * k14 + a2714 * k15 + a2715 * k16 + + a2716 * k17 + a2717 * k18 + a2718 * k19 + a2719 * k20 + a2720 * k21 + + a2721 * k22 + a2722 * k23 + a2723 * k24 + a2724 * k25 + a2725 * k26 + + a2726 * k27), + p, + t + c27 * dt) + k29 = f( + uprev + + dt * + (a2800 * k1 + a2805 * k6 + a2806 * k7 + a2807 * k8 + a2808 * k9 + a2810 * k11 + + a2811 * k12 + a2813 * k14 + a2814 * k15 + a2815 * k16 + a2823 * k24 + + a2824 * k25 + a2825 * k26 + a2826 * k27 + a2827 * k28), + p, + t + c28 * dt) + k30 = f( + uprev + + dt * + (a2900 * k1 + a2904 * k5 + a2905 * k6 + a2906 * k7 + a2909 * k10 + a2910 * k11 + + a2911 * k12 + a2913 * k14 + a2914 * k15 + a2915 * k16 + a2923 * k24 + + a2924 * k25 + a2925 * k26 + a2926 * k27 + a2927 * k28 + a2928 * k29), + p, + t + c29 * dt) + k31 = f( + uprev + + dt * + (a3000 * k1 + a3003 * k4 + a3004 * k5 + a3005 * k6 + a3007 * k8 + a3009 * k10 + + a3010 * k11 + a3013 * k14 + a3014 * k15 + a3015 * k16 + a3023 * k24 + + a3024 * k25 + a3025 * k26 + a3027 * k28 + a3028 * k29 + a3029 * k30), + p, + t + c30 * dt) + k32 = f( + uprev + + dt * + (a3100 * k1 + a3102 * k3 + a3103 * k4 + a3106 * k7 + a3107 * k8 + a3109 * k10 + + a3110 * k11 + a3113 * k14 + a3114 * k15 + a3115 * k16 + a3123 * k24 + + a3124 * k25 + a3125 * k26 + a3127 * k28 + a3128 * k29 + a3129 * k30 + + a3130 * k31), + p, + t + c31 * dt) + k33 = f( + uprev + + dt * + (a3200 * k1 + a3201 * k2 + a3204 * k5 + a3206 * k7 + a3230 * k31 + a3231 * k32), + p, t + c32 * dt) + k34 = f(uprev + dt * (a3300 * k1 + a3302 * k3 + a3332 * k33), p, t + c33 * dt) + k35 = f( + uprev + + dt * + (a3400 * k1 + a3401 * k2 + a3402 * k3 + a3404 * k5 + a3406 * k7 + a3407 * k8 + + a3409 * k10 + a3410 * k11 + a3411 * k12 + a3412 * k13 + a3413 * k14 + + a3414 * k15 + a3415 * k16 + a3416 * k17 + a3417 * k18 + a3418 * k19 + + a3419 * k20 + a3420 * k21 + a3421 * k22 + a3422 * k23 + a3423 * k24 + + a3424 * k25 + a3425 * k26 + a3426 * k27 + a3427 * k28 + a3428 * k29 + + a3429 * k30 + a3430 * k31 + a3431 * k32 + a3432 * k33 + a3433 * k34), + p, + t + c34 * dt) + integrator.stats.nf += 34 + u = uprev + + dt * + (b1 * k1 + b2 * k2 + b3 * k3 + b5 * k5 + b7 * k7 + b8 * k8 + b10 * k10 + b11 * k11 + + b12 * k12 + b14 * k14 + b15 * k15 + b16 * k16 + b18 * k18 + b19 * k19 + b20 * k20 + + b21 * k21 + b22 * k22 + b23 * k23 + b24 * k24 + b25 * k25 + b26 * k26 + b27 * k27 + + b28 * k28 + b29 * k29 + b30 * k30 + b31 * k31 + b32 * k32 + b33 * k33 + b34 * k34 + + b35 * k35) + if integrator.opts.adaptive + utilde = @.. broadcast=false dt*(k2-k34)*adaptiveConst + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + k = f(u, p, t + dt) # For the interpolation, needs k at the updated point + integrator.stats.nf += 1 + integrator.fsallast = k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::Feagin14Cache) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +#= +@muladd function perform_step!(integrator, cache::Feagin14Cache, repeat_step=false) + @unpack t,dt,uprev,u,f,p = integrator + @unpack adaptiveConst,a0100,a0200,a0201,a0300,a0302,a0400,a0402,a0403,a0500,a0503,a0504,a0600,a0603,a0604,a0605,a0700,a0704,a0705,a0706,a0800,a0805,a0806,a0807,a0900,a0905,a0906,a0907,a0908,a1000,a1005,a1006,a1007,a1008,a1009,a1100,a1105,a1106,a1107,a1108,a1109,a1110,a1200,a1208,a1209,a1210,a1211,a1300,a1308,a1309,a1310,a1311,a1312,a1400,a1408,a1409,a1410,a1411,a1412,a1413,a1500,a1508,a1509,a1510,a1511,a1512,a1513,a1514,a1600,a1608,a1609,a1610,a1611,a1612,a1613,a1614,a1615,a1700,a1712,a1713,a1714,a1715,a1716,a1800,a1812,a1813,a1814,a1815,a1816,a1817,a1900,a1912,a1913,a1914,a1915,a1916,a1917,a1918,a2000,a2012,a2013,a2014,a2015,a2016,a2017,a2018,a2019,a2100,a2112,a2113,a2114,a2115,a2116,a2117,a2118,a2119,a2120,a2200,a2212,a2213,a2214,a2215,a2216,a2217,a2218,a2219,a2220,a2221,a2300,a2308,a2309,a2310,a2311,a2312,a2313,a2314,a2315,a2316,a2317,a2318,a2319,a2320,a2321,a2322,a2400,a2408,a2409,a2410,a2411,a2412,a2413,a2414,a2415,a2416,a2417,a2418,a2419,a2420,a2421,a2422,a2423,a2500,a2508,a2509,a2510,a2511,a2512,a2513,a2514,a2515,a2516,a2517,a2518,a2519,a2520,a2521,a2522,a2523,a2524,a2600,a2605,a2606,a2607,a2608,a2609,a2610,a2612,a2613,a2614,a2615,a2616,a2617,a2618,a2619,a2620,a2621,a2622,a2623,a2624,a2625,a2700,a2705,a2706,a2707,a2708,a2709,a2711,a2712,a2713,a2714,a2715,a2716,a2717,a2718,a2719,a2720,a2721,a2722,a2723,a2724,a2725,a2726,a2800,a2805,a2806,a2807,a2808,a2810,a2811,a2813,a2814,a2815,a2823,a2824,a2825,a2826,a2827,a2900,a2904,a2905,a2906,a2909,a2910,a2911,a2913,a2914,a2915,a2923,a2924,a2925,a2926,a2927,a2928,a3000,a3003,a3004,a3005,a3007,a3009,a3010,a3013,a3014,a3015,a3023,a3024,a3025,a3027,a3028,a3029,a3100,a3102,a3103,a3106,a3107,a3109,a3110,a3113,a3114,a3115,a3123,a3124,a3125,a3127,a3128,a3129,a3130,a3200,a3201,a3204,a3206,a3230,a3231,a3300,a3302,a3332,a3400,a3401,a3402,a3404,a3406,a3407,a3409,a3410,a3411,a3412,a3413,a3414,a3415,a3416,a3417,a3418,a3419,a3420,a3421,a3422,a3423,a3424,a3425,a3426,a3427,a3428,a3429,a3430,a3431,a3432,a3433,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,c31,c32,c33,c34,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31,b32,b33,b34,b35 = cache.tab + @unpack k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,k22,k23,k24,k25,k26,k27,k28,k29,k30,k31,k32,k33,k34,k35,tmp,atmp,uprev,k = cache + k1 = cache.fsalfirst + f(k1, uprev, p, t) + a = dt*a0100 + @.. broadcast=false tmp = uprev + a*k1 + f(k2, tmp, p, t + c1*dt) + @.. broadcast=false tmp = uprev + dt*(a0200*k1 + a0201*k2) + f(k3, tmp, p, t + c2*dt ) + @.. broadcast=false tmp = uprev + dt*(a0300*k1 + a0302*k3) + f(k4, tmp, p, t + c3*dt) + @.. broadcast=false tmp = uprev + dt*(a0400*k1 + a0402*k3 + a0403*k4) + f(k5, tmp, p, t + c4*dt) + @.. broadcast=false tmp = uprev + dt*(a0500*k1 + a0503*k4 + a0504*k5) + f(k6, tmp, p, t + c5*dt) + @.. broadcast=false tmp = uprev + dt*(a0600*k1 + a0603*k4 + a0604*k5 + a0605*k6) + f(k7, tmp, p, t + c6*dt) + @.. broadcast=false tmp = uprev + dt*(a0700*k1 + a0704*k5 + a0705*k6 + a0706*k7) + f(k8, tmp, p, t + c7*dt) + @.. broadcast=false tmp = uprev + dt*(a0800*k1 + a0805*k6 + a0806*k7 + a0807*k8) + f(k9, tmp, p, t + c8*dt) + @.. broadcast=false tmp = uprev + dt*(a0900*k1 + a0905*k6 + a0906*k7 + a0907*k8 + a0908*k9) + f(k10, tmp, p, t + c9*dt) + @.. broadcast=false tmp = uprev + dt*(a1000*k1 + a1005*k6 + a1006*k7 + a1007*k8 + a1008*k9 + a1009*k10) + f(k11, tmp, p, t + c10*dt) + @.. broadcast=false tmp = uprev + dt*(a1100*k1 + a1105*k6 + a1106*k7 + a1107*k8 + a1108*k9 + a1109*k10 + a1110*k11) + f(k12, tmp, p, t + c11*dt) + @.. broadcast=false tmp = uprev + dt*(a1200*k1 + a1208*k9 + a1209*k10 + a1210*k11 + a1211*k12) + f(k13, tmp, p, t + c12*dt) + @.. broadcast=false tmp = uprev + dt*(a1300*k1 + a1308*k9 + a1309*k10 + a1310*k11 + a1311*k12 + a1312*k13) + f(k14, tmp, p, t + c13*dt) + @.. broadcast=false tmp = uprev + dt*(a1400*k1 + a1408*k9 + a1409*k10 + a1410*k11 + a1411*k12 + a1412*k13 + a1413*k14) + f(k15, tmp, p, t + c14*dt) + @.. broadcast=false tmp = uprev + dt*(a1500*k1 + a1508*k9 + a1509*k10 + a1510*k11 + a1511*k12 + a1512*k13 + a1513*k14 + a1514*k15) + f(k16, tmp, p, t + c15*dt) + @.. broadcast=false tmp = uprev + dt*(a1600*k1 + a1608*k9 + a1609*k10 + a1610*k11 + a1611*k12 + a1612*k13 + a1613*k14 + a1614*k15 + a1615*k16) + f(k17, tmp, p, t + c16*dt) + @.. broadcast=false tmp = uprev + dt*(a1700*k1 + a1712*k13 + a1713*k14 + a1714*k15 + a1715*k16 + a1716*k17) + f(k18, tmp, p, t + c17*dt) + @.. broadcast=false tmp = uprev + dt*(a1800*k1 + a1812*k13 + a1813*k14 + a1814*k15 + a1815*k16 + a1816*k17 + a1817*k18) + f(k19, tmp, p, t + c18*dt) + @.. broadcast=false tmp = uprev + dt*(a1900*k1 + a1912*k13 + a1913*k14 + a1914*k15 + a1915*k16 + a1916*k17 + a1917*k18 + a1918*k19) + f(k20, tmp, p, t + c19*dt) + @.. broadcast=false tmp = uprev + dt*(a2000*k1 + a2012*k13 + a2013*k14 + a2014*k15 + a2015*k16 + a2016*k17 + a2017*k18 + a2018*k19 + a2019*k20) + f(k21, tmp, p, t + c20*dt) + @.. broadcast=false tmp = uprev + dt*(a2100*k1 + a2112*k13 + a2113*k14 + a2114*k15 + a2115*k16 + a2116*k17 + a2117*k18 + a2118*k19 + a2119*k20 + a2120*k21) + f(k22, tmp, p, t + c21*dt) + @.. broadcast=false tmp = uprev + dt*(a2200*k1 + a2212*k13 + a2213*k14 + a2214*k15 + a2215*k16 + a2216*k17 + a2217*k18 + a2218*k19 + a2219*k20 + a2220*k21 + a2221*k22) + f(k23, tmp, p, t + c22*dt) + @.. broadcast=false tmp = uprev + dt*(a2300*k1 + a2308*k9 + a2309*k10 + a2310*k11 + a2311*k12 + a2312*k13 + a2313*k14 + a2314*k15 + a2315*k16 + a2316*k17 + a2317*k18 + a2318*k19 + a2319*k20 + a2320*k21 + a2321*k22 + a2322*k23) + f(k24, tmp, p, t + c23*dt) + @.. broadcast=false tmp = uprev + dt*(a2400*k1 + a2408*k9 + a2409*k10 + a2410*k11 + a2411*k12 + a2412*k13 + a2413*k14 + a2414*k15 + a2415*k16 + a2416*k17 + a2417*k18 + a2418*k19 + a2419*k20 + a2420*k21 + a2421*k22 + a2422*k23 + a2423*k24) + f(k25, tmp, p, t + c24*dt) + @.. broadcast=false tmp = uprev + dt*(a2500*k1 + a2508*k9 + a2509*k10 + a2510*k11 + a2511*k12 + a2512*k13 + a2513*k14 + a2514*k15 + a2515*k16 + a2516*k17 + a2517*k18 + a2518*k19 + a2519*k20 + a2520*k21 + a2521*k22 + a2522*k23 + a2523*k24 + a2524*k25) + f(k26, tmp, p, t + c25*dt) + @.. broadcast=false tmp = uprev + dt*(a2600*k1 + a2605*k6 + a2606*k7 + a2607*k8 + a2608*k9 + a2609*k10 + a2610*k11 + a2612*k13 + a2613*k14 + a2614*k15 + a2615*k16 + a2616*k17 + a2617*k18 + a2618*k19 + a2619*k20 + a2620*k21 + a2621*k22 + a2622*k23 + a2623*k24 + a2624*k25 + a2625*k26) + f(k27, tmp, p, t + c26*dt) + @.. broadcast=false tmp = uprev + dt*(a2700*k1 + a2705*k6 + a2706*k7 + a2707*k8 + a2708*k9 + a2709*k10 + a2711*k12 + a2712*k13 + a2713*k14 + a2714*k15 + a2715*k16 + a2716*k17 + a2717*k18 + a2718*k19 + a2719*k20 + a2720*k21 + a2721*k22 + a2722*k23 + a2723*k24 + a2724*k25 + a2725*k26 + a2726*k27) + f(k28, tmp, p, t + c27*dt) + @.. broadcast=false tmp = uprev + dt*(a2800*k1 + a2805*k6 + a2806*k7 + a2807*k8 + a2808*k9 + a2810*k11 + a2811*k12 + a2813*k14 + a2814*k15 + a2815*k16 + a2823*k24 + a2824*k25 + a2825*k26 + a2826*k27 + a2827*k28) + f(k29, tmp, p, t + c28*dt) + @.. broadcast=false tmp = uprev + dt*(a2900*k1 + a2904*k5 + a2905*k6 + a2906*k7 + a2909*k10 + a2910*k11 + a2911*k12 + a2913*k14 + a2914*k15 + a2915*k16 + a2923*k24 + a2924*k25 + a2925*k26 + a2926*k27 + a2927*k28 + a2928*k29) + f(k30, tmp, p, t + c29*dt) + @.. broadcast=false tmp = uprev + dt*(a3000*k1 + a3003*k4 + a3004*k5 + a3005*k6 + a3007*k8 + a3009*k10 + a3010*k11 + a3013*k14 + a3014*k15 + a3015*k16 + a3023*k24 + a3024*k25 + a3025*k26 + a3027*k28 + a3028*k29 + a3029*k30) + f(k31, tmp, p, t + c30*dt) + @.. broadcast=false tmp = uprev + dt*(a3100*k1 + a3102*k3 + a3103*k4 + a3106*k7 + a3107*k8 + a3109*k10 + a3110*k11 + a3113*k14 + a3114*k15 + a3115*k16 + a3123*k24 + a3124*k25 + a3125*k26 + a3127*k28 + a3128*k29 + a3129*k30 + a3130*k31) + f(k32, tmp, p, t + c31*dt) + @.. broadcast=false tmp = uprev + dt*(a3200*k1 + a3201*k2 + a3204*k5 + a3206*k7 + a3230*k31 + a3231*k32) + f(k33, tmp, p, t + c32*dt) + @.. broadcast=false tmp = uprev + dt*(a3300*k1 + a3302*k3 + a3332*k33) + f(k34, tmp, p, t + c33*dt) + @.. broadcast=false tmp = uprev + dt*(a3400*k1 + a3401*k2 + a3402*k3 + a3404*k5 + a3406*k7 + a3407*k8 + a3409*k10 + a3410*k11 + a3411*k12 + a3412*k13 + a3413*k14 + a3414*k15 + a3415*k16 + a3416*k17 + a3417*k18 + a3418*k19 + a3419*k20 + a3420*k21 + a3421*k22 + a3422*k23 + a3423*k24 + a3424*k25 + a3425*k26 + a3426*k27 + a3427*k28 + a3428*k29 + a3429*k30 + a3430*k31 + a3431*k32 + a3432*k33 + a3433*k34) + f(k35, tmp, p, t + c34*dt) + @.. broadcast=false u = uprev + dt*(b1*k1 + b2*k2 + b3*k3 + b5*k5 + b7*k7 + b8*k8 + b10*k10 + b11*k11 + b12*k12 + b14*k14 + b15*k15 + b16*k16 + b18*k18 + b19*k19 + b20*k20 + b21*k21 + b22*k22 + b23*k23 + b24*k24 + b25*k25 + b26*k26 + b27*k27 + b28*k28 + b29*k29 + b30*k30 + b31*k31 + b32*k32 + b33*k33 + b34*k34 + b35*k35) + if integrator.opts.adaptive + @.. broadcast=false tmp = dt*(k2 - k34) * adaptiveConst + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, integrator.opts.reltol,integrator.opts.internalnorm,t) + integrator.EEst = integrator.opts.internalnorm(atmp,t) + end + f(integrator.fsallast,u,p,t+dt) # For the interpolation, needs k at the updated point +end +=# + +@muladd function perform_step!(integrator, cache::Feagin14Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + @unpack adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1712, a1713, a1714, a1715, a1716, a1800, a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1912, a1913, a1914, a1915, a1916, a1917, a1918, a2000, a2012, a2013, a2014, a2015, a2016, a2017, a2018, a2019, a2100, a2112, a2113, a2114, a2115, a2116, a2117, a2118, a2119, a2120, a2200, a2212, a2213, a2214, a2215, a2216, a2217, a2218, a2219, a2220, a2221, a2300, a2308, a2309, a2310, a2311, a2312, a2313, a2314, a2315, a2316, a2317, a2318, a2319, a2320, a2321, a2322, a2400, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, a2500, a2508, a2509, a2510, a2511, a2512, a2513, a2514, a2515, a2516, a2517, a2518, a2519, a2520, a2521, a2522, a2523, a2524, a2600, a2605, a2606, a2607, a2608, a2609, a2610, a2612, a2613, a2614, a2615, a2616, a2617, a2618, a2619, a2620, a2621, a2622, a2623, a2624, a2625, a2700, a2705, a2706, a2707, a2708, a2709, a2711, a2712, a2713, a2714, a2715, a2716, a2717, a2718, a2719, a2720, a2721, a2722, a2723, a2724, a2725, a2726, a2800, a2805, a2806, a2807, a2808, a2810, a2811, a2813, a2814, a2815, a2823, a2824, a2825, a2826, a2827, a2900, a2904, a2905, a2906, a2909, a2910, a2911, a2913, a2914, a2915, a2923, a2924, a2925, a2926, a2927, a2928, a3000, a3003, a3004, a3005, a3007, a3009, a3010, a3013, a3014, a3015, a3023, a3024, a3025, a3027, a3028, a3029, a3100, a3102, a3103, a3106, a3107, a3109, a3110, a3113, a3114, a3115, a3123, a3124, a3125, a3127, a3128, a3129, a3130, a3200, a3201, a3204, a3206, a3230, a3231, a3300, a3302, a3332, a3400, a3401, a3402, a3404, a3406, a3407, a3409, a3410, a3411, a3412, a3413, a3414, a3415, a3416, a3417, a3418, a3419, a3420, a3421, a3422, a3423, a3424, a3425, a3426, a3427, a3428, a3429, a3430, a3431, a3432, a3433, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35 = cache.tab + @unpack k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, tmp, atmp, uprev, k = cache + k1 = cache.fsalfirst + a = dt * a0100 + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + a * k1[i] + end + f(k2, tmp, p, t + c1 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0200 * k1[i] + a0201 * k2[i]) + end + f(k3, tmp, p, t + c2 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0300 * k1[i] + a0302 * k3[i]) + end + f(k4, tmp, p, t + c3 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0400 * k1[i] + a0402 * k3[i] + a0403 * k4[i]) + end + f(k5, tmp, p, t + c4 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a0500 * k1[i] + a0503 * k4[i] + a0504 * k5[i]) + end + f(k6, tmp, p, t + c5 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0600 * k1[i] + a0603 * k4[i] + a0604 * k5[i] + a0605 * k6[i]) + end + f(k7, tmp, p, t + c6 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0700 * k1[i] + a0704 * k5[i] + a0705 * k6[i] + a0706 * k7[i]) + end + f(k8, tmp, p, t + c7 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0800 * k1[i] + a0805 * k6[i] + a0806 * k7[i] + a0807 * k8[i]) + end + f(k9, tmp, p, t + c8 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a0900 * k1[i] + a0905 * k6[i] + a0906 * k7[i] + a0907 * k8[i] + + a0908 * k9[i]) + end + f(k10, tmp, p, t + c9 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1000 * k1[i] + a1005 * k6[i] + a1006 * k7[i] + a1007 * k8[i] + + a1008 * k9[i] + a1009 * k10[i]) + end + f(k11, tmp, p, t + c10 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a1100 * k1[i] + a1105 * k6[i] + a1106 * k7[i] + a1107 * k8[i] + + a1108 * k9[i] + a1109 * k10[i] + a1110 * k11[i]) + end + f(k12, tmp, p, t + c11 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1200 * k1[i] + a1208 * k9[i] + a1209 * k10[i] + + a1210 * k11[i] + a1211 * k12[i]) + end + f(k13, tmp, p, t + c12 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1300 * k1[i] + a1308 * k9[i] + a1309 * k10[i] + + a1310 * k11[i] + a1311 * k12[i] + a1312 * k13[i]) + end + f(k14, tmp, p, t + c13 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1400 * k1[i] + a1408 * k9[i] + a1409 * k10[i] + + a1410 * k11[i] + a1411 * k12[i] + a1412 * k13[i] + + a1413 * k14[i]) + end + f(k15, tmp, p, t + c14 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1500 * k1[i] + a1508 * k9[i] + a1509 * k10[i] + + a1510 * k11[i] + a1511 * k12[i] + a1512 * k13[i] + + a1513 * k14[i] + a1514 * k15[i]) + end + f(k16, tmp, p, t + c15 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1600 * k1[i] + a1608 * k9[i] + a1609 * k10[i] + + a1610 * k11[i] + a1611 * k12[i] + a1612 * k13[i] + + a1613 * k14[i] + a1614 * k15[i] + a1615 * k16[i]) + end + f(k17, tmp, p, t + c16 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1700 * k1[i] + a1712 * k13[i] + a1713 * k14[i] + + a1714 * k15[i] + a1715 * k16[i] + a1716 * k17[i]) + end + f(k18, tmp, p, t + c17 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1800 * k1[i] + a1812 * k13[i] + a1813 * k14[i] + + a1814 * k15[i] + a1815 * k16[i] + a1816 * k17[i] + + a1817 * k18[i]) + end + f(k19, tmp, p, t + c18 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a1900 * k1[i] + a1912 * k13[i] + a1913 * k14[i] + + a1914 * k15[i] + a1915 * k16[i] + a1916 * k17[i] + + a1917 * k18[i] + a1918 * k19[i]) + end + f(k20, tmp, p, t + c19 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2000 * k1[i] + a2012 * k13[i] + a2013 * k14[i] + + a2014 * k15[i] + a2015 * k16[i] + a2016 * k17[i] + + a2017 * k18[i] + a2018 * k19[i] + a2019 * k20[i]) + end + f(k21, tmp, p, t + c20 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2100 * k1[i] + a2112 * k13[i] + a2113 * k14[i] + + a2114 * k15[i] + a2115 * k16[i] + a2116 * k17[i] + + a2117 * k18[i] + a2118 * k19[i] + a2119 * k20[i] + + a2120 * k21[i]) + end + f(k22, tmp, p, t + c21 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2200 * k1[i] + a2212 * k13[i] + a2213 * k14[i] + + a2214 * k15[i] + a2215 * k16[i] + a2216 * k17[i] + + a2217 * k18[i] + a2218 * k19[i] + a2219 * k20[i] + + a2220 * k21[i] + a2221 * k22[i]) + end + f(k23, tmp, p, t + c22 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2300 * k1[i] + a2308 * k9[i] + a2309 * k10[i] + + a2310 * k11[i] + a2311 * k12[i] + a2312 * k13[i] + + a2313 * k14[i] + a2314 * k15[i] + a2315 * k16[i] + + a2316 * k17[i] + a2317 * k18[i] + a2318 * k19[i] + + a2319 * k20[i] + a2320 * k21[i] + a2321 * k22[i] + + a2322 * k23[i]) + end + f(k24, tmp, p, t + c23 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2400 * k1[i] + a2408 * k9[i] + a2409 * k10[i] + + a2410 * k11[i] + a2411 * k12[i] + a2412 * k13[i] + + a2413 * k14[i] + a2414 * k15[i] + a2415 * k16[i] + + a2416 * k17[i] + a2417 * k18[i] + a2418 * k19[i] + + a2419 * k20[i] + a2420 * k21[i] + a2421 * k22[i] + + a2422 * k23[i] + a2423 * k24[i]) + end + f(k25, tmp, p, t + c24 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * (a2500 * k1[i] + a2508 * k9[i] + a2509 * k10[i] + + a2510 * k11[i] + a2511 * k12[i] + a2512 * k13[i] + + a2513 * k14[i] + a2514 * k15[i] + a2515 * k16[i] + + a2516 * k17[i] + a2517 * k18[i] + a2518 * k19[i] + + a2519 * k20[i] + a2520 * k21[i] + a2521 * k22[i] + + a2522 * k23[i] + a2523 * k24[i] + a2524 * k25[i]) + end + f(k26, tmp, p, t + c25 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a2600 * k1[i] + a2605 * k6[i] + a2606 * k7[i] + a2607 * k8[i] + + a2608 * k9[i] + a2609 * k10[i] + a2610 * k11[i] + + a2612 * k13[i] + a2613 * k14[i] + a2614 * k15[i] + + a2615 * k16[i] + a2616 * k17[i] + a2617 * k18[i] + + a2618 * k19[i] + a2619 * k20[i] + a2620 * k21[i] + + a2621 * k22[i] + a2622 * k23[i] + a2623 * k24[i] + + a2624 * k25[i] + a2625 * k26[i]) + end + f(k27, tmp, p, t + c26 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a2700 * k1[i] + a2705 * k6[i] + a2706 * k7[i] + a2707 * k8[i] + + a2708 * k9[i] + a2709 * k10[i] + a2711 * k12[i] + + a2712 * k13[i] + a2713 * k14[i] + a2714 * k15[i] + + a2715 * k16[i] + a2716 * k17[i] + a2717 * k18[i] + + a2718 * k19[i] + a2719 * k20[i] + a2720 * k21[i] + + a2721 * k22[i] + a2722 * k23[i] + a2723 * k24[i] + + a2724 * k25[i] + a2725 * k26[i] + a2726 * k27[i]) + end + f(k28, tmp, p, t + c27 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a2800 * k1[i] + a2805 * k6[i] + a2806 * k7[i] + a2807 * k8[i] + + a2808 * k9[i] + a2810 * k11[i] + a2811 * k12[i] + + a2813 * k14[i] + a2814 * k15[i] + a2815 * k16[i] + + a2823 * k24[i] + a2824 * k25[i] + a2825 * k26[i] + + a2826 * k27[i] + a2827 * k28[i]) + end + f(k29, tmp, p, t + c28 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a2900 * k1[i] + a2904 * k5[i] + a2905 * k6[i] + a2906 * k7[i] + + a2909 * k10[i] + a2910 * k11[i] + a2911 * k12[i] + + a2913 * k14[i] + a2914 * k15[i] + a2915 * k16[i] + + a2923 * k24[i] + a2924 * k25[i] + a2925 * k26[i] + + a2926 * k27[i] + a2927 * k28[i] + a2928 * k29[i]) + end + f(k30, tmp, p, t + c29 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a3000 * k1[i] + a3003 * k4[i] + a3004 * k5[i] + a3005 * k6[i] + + a3007 * k8[i] + a3009 * k10[i] + a3010 * k11[i] + + a3013 * k14[i] + a3014 * k15[i] + a3015 * k16[i] + + a3023 * k24[i] + a3024 * k25[i] + a3025 * k26[i] + + a3027 * k28[i] + a3028 * k29[i] + a3029 * k30[i]) + end + f(k31, tmp, p, t + c30 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a3100 * k1[i] + a3102 * k3[i] + a3103 * k4[i] + a3106 * k7[i] + + a3107 * k8[i] + a3109 * k10[i] + a3110 * k11[i] + + a3113 * k14[i] + a3114 * k15[i] + a3115 * k16[i] + + a3123 * k24[i] + a3124 * k25[i] + a3125 * k26[i] + + a3127 * k28[i] + a3128 * k29[i] + a3129 * k30[i] + + a3130 * k31[i]) + end + f(k32, tmp, p, t + c31 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a3200 * k1[i] + a3201 * k2[i] + a3204 * k5[i] + a3206 * k7[i] + + a3230 * k31[i] + a3231 * k32[i]) + end + f(k33, tmp, p, t + c32 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + dt * (a3300 * k1[i] + a3302 * k3[i] + a3332 * k33[i]) + end + f(k34, tmp, p, t + c33 * dt) + @tight_loop_macros for i in uidx + @inbounds tmp[i] = uprev[i] + + dt * + (a3400 * k1[i] + a3401 * k2[i] + a3402 * k3[i] + a3404 * k5[i] + + a3406 * k7[i] + a3407 * k8[i] + a3409 * k10[i] + + a3410 * k11[i] + a3411 * k12[i] + a3412 * k13[i] + + a3413 * k14[i] + a3414 * k15[i] + a3415 * k16[i] + + a3416 * k17[i] + a3417 * k18[i] + a3418 * k19[i] + + a3419 * k20[i] + a3420 * k21[i] + a3421 * k22[i] + + a3422 * k23[i] + a3423 * k24[i] + a3424 * k25[i] + + a3425 * k26[i] + a3426 * k27[i] + a3427 * k28[i] + + a3428 * k29[i] + a3429 * k30[i] + a3430 * k31[i] + + a3431 * k32[i] + a3432 * k33[i] + a3433 * k34[i]) + end + f(k35, tmp, p, t + c34 * dt) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * + (b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b5 * k5[i] + b7 * k7[i] + + b8 * k8[i] + b10 * k10[i] + b11 * k11[i] + b12 * k12[i] + + b14 * k14[i] + b15 * k15[i] + b16 * k16[i] + b18 * k18[i] + + b19 * k19[i] + b20 * k20[i] + b21 * k21[i] + b22 * k22[i] + + b23 * k23[i] + b24 * k24[i] + b25 * k25[i] + b26 * k26[i] + + b27 * k27[i] + b28 * k28[i] + b29 * k29[i] + b30 * k30[i] + + b31 * k31[i] + b32 * k32[i] + b33 * k33[i] + b34 * k34[i] + + b35 * k35[i]) + end + integrator.stats.nf += 35 + if integrator.opts.adaptive + @tight_loop_macros for i in uidx + @inbounds tmp[i] = dt * (k2[i] - k34[i]) * adaptiveConst + end + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + f(integrator.fsallast, u, p, t + dt) # For the interpolation, needs k at the updated point + integrator.stats.nf += 1 +end diff --git a/src/perform_step/firk_perform_step.jl b/src/perform_step/firk_perform_step.jl index ba2db6da42..b60e9b0e38 100644 --- a/src/perform_step/firk_perform_step.jl +++ b/src/perform_step/firk_perform_step.jl @@ -51,7 +51,7 @@ function initialize!(integrator, cache::RadauIIA5ConstantCache) nothing end -function initialize!(integrator, cache::RadauIIA7ConstantCache) +function initialize!(integrator, cache::RadauIIA9ConstantCache) integrator.kshortsize = 2 integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal @@ -98,7 +98,7 @@ function initialize!(integrator, cache::RadauIIA5Cache) nothing end -function initialize!(integrator, cache::RadauIIA7Cache) +function initialize!(integrator, cache::RadauIIA9Cache) integrator.kshortsize = 2 integrator.fsalfirst = cache.fsalfirst integrator.fsallast = cache.k @@ -784,7 +784,7 @@ end return end -@muladd function perform_step!(integrator, cache::RadauIIA7ConstantCache, +@muladd function perform_step!(integrator, cache::RadauIIA9ConstantCache, repeat_step = false) @unpack t, dt, uprev, u, f, p = integrator @unpack T11, T12, T13, T14, T15, T21, T22, T23, T24, T25, T31, T32, T33, T34, T35, T41, T42, T43, T44, T45, T51 = cache.tab #= T52 = 1, T53 = 0, T54 = 1, T55 = 0=# @@ -1014,7 +1014,7 @@ end return end -@muladd function perform_step!(integrator, cache::RadauIIA7Cache, repeat_step = false) +@muladd function perform_step!(integrator, cache::RadauIIA9Cache, repeat_step = false) @unpack t, dt, uprev, u, f, p, fsallast, fsalfirst = integrator @unpack T11, T12, T13, T14, T15, T21, T22, T23, T24, T25, T31, T32, T33, T34, T35, T41, T42, T43, T44, T45, T51 = cache.tab #= T52 = 1, T53 = 0, T54 = 1, T55 = 0=# @unpack TI11, TI12, TI13, TI14, TI15, TI21, TI22, TI23, TI24, TI25, TI31, TI32, TI33, TI34, TI35, TI41, TI42, TI43, TI44, TI45, TI51, TI52, TI53, TI54, TI55 = cache.tab diff --git a/src/perform_step/low_storage_rk_perform_step.jl b/src/perform_step/low_storage_rk_perform_step.jl new file mode 100644 index 0000000000..4ee07826a7 --- /dev/null +++ b/src/perform_step/low_storage_rk_perform_step.jl @@ -0,0 +1,842 @@ + +# 2N low storage methods +function initialize!(integrator, cache::LowStorageRK2NConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2NConstantCache, + repeat_step = false) + @unpack t, dt, u, f, p = integrator + @unpack A2end, B1, B2end, c2end = cache + + # u1 + tmp = dt * integrator.fsalfirst + u = u + B1 * tmp + + # other stages + for i in eachindex(A2end) + k = f(u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + tmp = A2end[i] * tmp + dt * k + u = u + B2end[i] * tmp + end + + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + integrator.fsalfirst = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK2NCache) + @unpack k, tmp, williamson_condition = cache + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = k + integrator.fsalfirst = k # used for get_du + integrator.fsallast = k + integrator.f(k, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2NCache, repeat_step = false) + @unpack t, dt, u, f, p = integrator + @unpack k, tmp, williamson_condition, stage_limiter!, step_limiter!, thread = cache + @unpack A2end, B1, B2end, c2end = cache.tab + + # u1 + f(k, u, p, t) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread tmp=dt * k + @.. broadcast=false thread=thread u=u + B1 * tmp + # other stages + for i in eachindex(A2end) + if williamson_condition + f(ArrayFuse(tmp, u, (A2end[i], dt, B2end[i])), u, p, t + c2end[i] * dt) + else + @.. broadcast=false thread=thread tmp=A2end[i] * tmp + stage_limiter!(u, integrator, p, t + c2end[i] * dt) + f(k, u, p, t + c2end[i] * dt) + @.. broadcast=false thread=thread tmp=tmp + dt * k + @.. broadcast=false thread=thread u=u + B2end[i] * tmp + end + integrator.stats.nf += 1 + end + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) +end + +# 2C low storage methods +function initialize!(integrator, cache::LowStorageRK2CConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2CConstantCache, + repeat_step = false) + @unpack t, dt, u, f, p = integrator + @unpack A2end, B1, B2end, c2end = cache + + # u1 + k = integrator.fsalfirst = f(u, p, t) + integrator.k[1] = integrator.fsalfirst + integrator.stats.nf += 1 + u = u + B1 * dt * k + + # other stages + for i in eachindex(A2end) + tmp = u + A2end[i] * dt * k + k = f(tmp, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + u = u + B2end[i] * dt * k + end + + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK2CCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2CCache, repeat_step = false) + @unpack t, dt, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack A2end, B1, B2end, c2end = cache.tab + + # u1 + @.. broadcast=false thread=thread k=integrator.fsalfirst + @.. broadcast=false thread=thread u=u + B1 * dt * k + + # other stages + for i in eachindex(A2end) + @.. broadcast=false thread=thread tmp=u + A2end[i] * dt * k + f(k, tmp, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread u=u + B2end[i] * dt * k + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +# 3S low storage methods +function initialize!(integrator, cache::LowStorageRK3SConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end = cache + + # u1 + tmp = u + u = tmp + β1 * dt * integrator.fsalfirst + + # other stages + for i in eachindex(γ12end) + k = f(u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + tmp = tmp + δ2end[i] * u + u = γ12end[i] * u + γ22end[i] * tmp + γ32end[i] * uprev + β2end[i] * dt * k + end + + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK3SCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end = cache.tab + + # u1 + @.. broadcast=false thread=thread tmp=u + @.. broadcast=false thread=thread u=tmp + β1 * dt * integrator.fsalfirst + + # other stages + for i in eachindex(γ12end) + f(k, u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread tmp=tmp + δ2end[i] * u + @.. broadcast=false thread=thread u=γ12end[i] * u + γ22end[i] * tmp + + γ32end[i] * uprev + + β2end[i] * dt * k + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +# 3S+ low storage methods: 3S methods adding another memory location for the embedded method (non-FSAL version) +function initialize!(integrator, cache::LowStorageRK3SpConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SpConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, bhat1, bhat2end = cache + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + tmp = uprev + u = tmp + β1 * dt * integrator.fsalfirst + if integrator.opts.adaptive + utilde = bhat1 * dt * integrator.fsalfirst + end + + # other stages + for i in eachindex(γ12end) + k = f(u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + tmp = tmp + δ2end[i] * u + u = γ12end[i] * u + γ22end[i] * tmp + γ32end[i] * uprev + β2end[i] * dt * k + if integrator.opts.adaptive + utilde = utilde + bhat2end[i] * dt * k + end + end + + if integrator.opts.adaptive + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK3SpCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SpCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, tmp, utilde, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, bhat1, bhat2end = cache.tab + + # u1 + f(integrator.fsalfirst, uprev, p, t) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread tmp=uprev + @.. broadcast=false thread=thread u=tmp + β1 * dt * integrator.fsalfirst + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=bhat1 * dt * integrator.fsalfirst + end + + # other stages + for i in eachindex(γ12end) + stage_limiter!(u, integrator, p, t + c2end[i] * dt) + f(k, u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread tmp=tmp + δ2end[i] * u + @.. broadcast=false thread=thread u=γ12end[i] * u + γ22end[i] * tmp + + γ32end[i] * uprev + β2end[i] * dt * k + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=utilde + bhat2end[i] * dt * k + end + end + + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + if integrator.opts.adaptive + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +# 3S+ FSAL low storage methods: 3S methods adding another memory location for the embedded method (FSAL version) +function initialize!(integrator, cache::LowStorageRK3SpFSALConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SpFSALConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, bhat1, bhat2end, bhatfsal = cache + + # u1 + tmp = uprev + u = tmp + β1 * dt * integrator.fsalfirst + if integrator.opts.adaptive + utilde = bhat1 * dt * integrator.fsalfirst + end + + # other stages + for i in eachindex(γ12end) + k = f(u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + tmp = tmp + δ2end[i] * u + u = γ12end[i] * u + γ22end[i] * tmp + γ32end[i] * uprev + β2end[i] * dt * k + if integrator.opts.adaptive + utilde = utilde + bhat2end[i] * dt * k + end + end + + # FSAL + integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + utilde = utilde + bhatfsal * dt * integrator.fsallast + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK3SpFSALCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3SpFSALCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, tmp, utilde, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack γ12end, γ22end, γ32end, δ2end, β1, β2end, c2end, bhat1, bhat2end, bhatfsal = cache.tab + + # u1 + @.. broadcast=false thread=thread tmp=uprev + @.. broadcast=false thread=thread u=tmp + β1 * dt * integrator.fsalfirst + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=bhat1 * dt * integrator.fsalfirst + end + + # other stages + for i in eachindex(γ12end) + stage_limiter!(u, integrator, p, t + c2end[i] * dt) + f(k, u, p, t + c2end[i] * dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread tmp=tmp + δ2end[i] * u + @.. broadcast=false thread=thread u=γ12end[i] * u + γ22end[i] * tmp + + γ32end[i] * uprev + β2end[i] * dt * k + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=utilde + bhat2end[i] * dt * k + end + end + + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + # FSAL + f(k, u, p, t + dt) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=utilde + bhatfsal * dt * k + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +# 2R+ low storage methods +function initialize!(integrator, cache::LowStorageRK2RPConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2RPConstantCache, + repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache + + k = fsalfirst + integrator.opts.adaptive && (tmp = zero(uprev)) + + #stages 1 to s-1 + for i in eachindex(Aᵢ) + integrator.opts.adaptive && (tmp = tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + gprev = u + Aᵢ[i] * dt * k + u = u + Bᵢ[i] * dt * k + k = f(gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && (tmp = tmp + (Bₗ - B̂ₗ) * dt * k) + u = u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.k[1] = integrator.fsalfirst + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK2RPCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK2RPCache, repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack k, gprev, tmp, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack Aᵢ, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache.tab + + @.. broadcast=false thread=thread k=fsalfirst + integrator.opts.adaptive && (@.. broadcast=false tmp=zero(uprev)) + + #stages 1 to s-1 + for i in eachindex(Aᵢ) + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + @.. broadcast=false thread=thread gprev=u + Aᵢ[i] * dt * k + @.. broadcast=false thread=thread u=u + Bᵢ[i] * dt * k + f(k, gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bₗ - B̂ₗ) * dt * k) + @.. broadcast=false thread=thread u=u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +# 3R+ low storage methods +function initialize!(integrator, cache::LowStorageRK3RPConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3RPConstantCache, + repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache + + fᵢ₋₂ = zero(fsalfirst) + k = fsalfirst + uᵢ₋₁ = uprev + uᵢ₋₂ = uprev + integrator.opts.adaptive && (tmp = zero(uprev)) + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && (tmp = tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + gprev = uᵢ₋₂ + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂) * dt + u = u + Bᵢ[i] * dt * k + fᵢ₋₂ = k + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = u + k = f(gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && (tmp = tmp + (Bₗ - B̂ₗ) * dt * k) + u = u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.k[1] = integrator.fsalfirst + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK3RPCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK3RPCache, repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack k, uᵢ₋₁, uᵢ₋₂, gprev, fᵢ₋₂, tmp, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack Aᵢ₁, Aᵢ₂, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache.tab + + @.. broadcast=false thread=thread fᵢ₋₂=zero(fsalfirst) + @.. broadcast=false thread=thread k=fsalfirst + integrator.opts.adaptive && (@.. broadcast=false thread=thread tmp=zero(uprev)) + @.. broadcast=false thread=thread uᵢ₋₁=uprev + @.. broadcast=false thread=thread uᵢ₋₂=uprev + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + @.. broadcast=false thread=thread gprev=uᵢ₋₂ + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂) * dt + @.. broadcast=false thread=thread u=u + Bᵢ[i] * dt * k + @.. broadcast=false thread=thread fᵢ₋₂=k + @.. broadcast=false thread=thread uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false thread=thread uᵢ₋₁=u + f(k, gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bₗ - B̂ₗ) * dt * k) + @.. broadcast=false thread=thread u=u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +# 4R+ low storage methods +function initialize!(integrator, cache::LowStorageRK4RPConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK4RPConstantCache, + repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache + + fᵢ₋₂ = zero(fsalfirst) + fᵢ₋₃ = zero(fsalfirst) + k = fsalfirst + uᵢ₋₁ = uprev + uᵢ₋₂ = uprev + uᵢ₋₃ = uprev + integrator.opts.adaptive && (tmp = zero(uprev)) + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && (tmp = tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + gprev = uᵢ₋₃ + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂ + Aᵢ₃[i] * fᵢ₋₃) * dt + u = u + Bᵢ[i] * dt * k + fᵢ₋₃ = fᵢ₋₂ + fᵢ₋₂ = k + uᵢ₋₃ = uᵢ₋₂ + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = u + k = f(gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && (tmp = tmp + (Bₗ - B̂ₗ) * dt * k) + u = u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.k[1] = integrator.fsalfirst + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK4RPCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK4RPCache, repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, gprev, fᵢ₋₂, fᵢ₋₃, tmp, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack Aᵢ₁, Aᵢ₂, Aᵢ₃, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache.tab + + @.. broadcast=false thread=thread fᵢ₋₂=zero(fsalfirst) + @.. broadcast=false thread=thread fᵢ₋₃=zero(fsalfirst) + @.. broadcast=false thread=thread k=fsalfirst + integrator.opts.adaptive && (@.. broadcast=false thread=thread tmp=zero(uprev)) + @.. broadcast=false thread=thread uᵢ₋₁=uprev + @.. broadcast=false thread=thread uᵢ₋₂=uprev + @.. broadcast=false thread=thread uᵢ₋₃=uprev + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + @.. broadcast=false thread=thread gprev=uᵢ₋₃ + + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂ + + Aᵢ₃[i] * fᵢ₋₃) * + dt + @.. broadcast=false thread=thread u=u + Bᵢ[i] * dt * k + @.. broadcast=false thread=thread fᵢ₋₃=fᵢ₋₂ + @.. broadcast=false thread=thread fᵢ₋₂=k + @.. broadcast=false thread=thread uᵢ₋₃=uᵢ₋₂ + @.. broadcast=false thread=thread uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false thread=thread uᵢ₋₁=u + f(k, gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bₗ - B̂ₗ) * dt * k) + @.. broadcast=false thread=thread u=u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end + +# 5R+ low storage methods +function initialize!(integrator, cache::LowStorageRK5RPConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::LowStorageRK5RPConstantCache, + repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack Aᵢ₁, Aᵢ₂, Aᵢ₃, Aᵢ₄, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache + + fᵢ₋₂ = zero(fsalfirst) + fᵢ₋₃ = zero(fsalfirst) + fᵢ₋₄ = zero(fsalfirst) + k = fsalfirst + uᵢ₋₁ = uprev + uᵢ₋₂ = uprev + uᵢ₋₃ = uprev + uᵢ₋₄ = uprev + integrator.opts.adaptive && (tmp = zero(uprev)) + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && (tmp = tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + gprev = uᵢ₋₄ + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂ + Aᵢ₃[i] * fᵢ₋₃ + Aᵢ₄[i] * fᵢ₋₄) * dt + u = u + Bᵢ[i] * dt * k + fᵢ₋₄ = fᵢ₋₃ + fᵢ₋₃ = fᵢ₋₂ + fᵢ₋₂ = k + uᵢ₋₄ = uᵢ₋₃ + uᵢ₋₃ = uᵢ₋₂ + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = u + k = f(gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && (tmp = tmp + (Bₗ - B̂ₗ) * dt * k) + u = u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.k[1] = integrator.fsalfirst + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::LowStorageRK5RPCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::LowStorageRK5RPCache, repeat_step = false) + @unpack t, dt, u, uprev, f, fsalfirst, p = integrator + @unpack k, uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, uᵢ₋₄, gprev, fᵢ₋₂, fᵢ₋₃, fᵢ₋₄, tmp, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack Aᵢ₁, Aᵢ₂, Aᵢ₃, Aᵢ₄, Bₗ, B̂ₗ, Bᵢ, B̂ᵢ, Cᵢ = cache.tab + + @.. broadcast=false thread=thread fᵢ₋₂=zero(fsalfirst) + @.. broadcast=false thread=thread fᵢ₋₃=zero(fsalfirst) + @.. broadcast=false thread=thread fᵢ₋₄=zero(fsalfirst) + @.. broadcast=false thread=thread k=fsalfirst + integrator.opts.adaptive && (@.. broadcast=false thread=thread tmp=zero(uprev)) + @.. broadcast=false thread=thread uᵢ₋₁=uprev + @.. broadcast=false thread=thread uᵢ₋₂=uprev + @.. broadcast=false thread=thread uᵢ₋₃=uprev + @.. broadcast=false thread=thread uᵢ₋₄=uprev + + #stages 1 to s-1 + for i in eachindex(Aᵢ₁) + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bᵢ[i] - B̂ᵢ[i]) * dt * k) + @.. broadcast=false thread=thread gprev=uᵢ₋₄ + + (Aᵢ₁[i] * k + Aᵢ₂[i] * fᵢ₋₂ + + Aᵢ₃[i] * fᵢ₋₃ + + Aᵢ₄[i] * fᵢ₋₄) * dt + @.. broadcast=false thread=thread u=u + Bᵢ[i] * dt * k + @.. broadcast=false thread=thread fᵢ₋₄=fᵢ₋₃ + @.. broadcast=false thread=thread fᵢ₋₃=fᵢ₋₂ + @.. broadcast=false thread=thread fᵢ₋₂=k + @.. broadcast=false thread=thread uᵢ₋₄=uᵢ₋₃ + @.. broadcast=false thread=thread uᵢ₋₃=uᵢ₋₂ + @.. broadcast=false thread=thread uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false thread=thread uᵢ₋₁=u + f(k, gprev, p, t + Cᵢ[i] * dt) + integrator.stats.nf += 1 + end + + #last stage + integrator.opts.adaptive && + (@.. broadcast=false thread=thread tmp=tmp + (Bₗ - B̂ₗ) * dt * k) + @.. broadcast=false thread=thread u=u + Bₗ * dt * k + + #Error estimate + if integrator.opts.adaptive + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + f(k, u, p, t + dt) + integrator.stats.nf += 1 +end diff --git a/src/perform_step/rkc_perform_step.jl b/src/perform_step/rkc_perform_step.jl new file mode 100644 index 0000000000..d96ce34b59 --- /dev/null +++ b/src/perform_step/rkc_perform_step.jl @@ -0,0 +1,1296 @@ +function initialize!(integrator, cache::ROCK2ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + alg = unwrap_alg(integrator, true) + cache.max_stage = (alg.max_stages < 1 || alg.max_stages > 200) ? 200 : alg.max_stages + cache.min_stage = (alg.min_stages > cache.max_stage) ? cache.max_stage : alg.min_stages + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::ROCK2ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack ms, fp1, fp2, recf = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + mdeg = Int(floor(sqrt((1.5 + abs(dt) * integrator.eigen_est) / 0.811) + 1)) + mdeg = min(max(mdeg, cache.min_stage), cache.max_stage) + cache.mdeg = max(mdeg, 3) - 2 + choosedeg!(cache) + # recurrence + # for the first stage + tᵢ₋₁ = t + dt * recf[cache.start] + tᵢ₋₂ = t + dt * recf[cache.start] + tᵢ₋₃ = t + uᵢ₋₂ = copy(uprev) + uᵢ₋₁ = uprev + (dt * recf[cache.start]) * fsalfirst + cache.mdeg < 2 && (u = uᵢ₋₁) + # for the second to the ms[cache.mdeg] th stages + for i in 2:(cache.mdeg) + μ, κ = recf[cache.start + (i - 2) * 2 + 1], recf[cache.start + (i - 2) * 2 + 2] + ν = -1 - κ + u = f(uᵢ₋₁, p, tᵢ₋₁) + tᵢ₋₁ = dt * μ - ν * tᵢ₋₂ - κ * tᵢ₋₃ + u = (dt * μ) * u - ν * uᵢ₋₁ - κ * uᵢ₋₂ + i < cache.mdeg && (uᵢ₋₂ = uᵢ₋₁; + uᵢ₋₁ = u) + tᵢ₋₃ = tᵢ₋₂ + tᵢ₋₂ = tᵢ₋₁ + end # end if + # two-stage finishing procedure. + δt₁ = dt * fp1[cache.deg_index] + δt₂ = dt * fp2[cache.deg_index] + uᵢ₋₂ = f(u, p, tᵢ₋₁) + integrator.stats.nf += 1 + uᵢ₋₁ = u + δt₁ * uᵢ₋₂ + tᵢ₋₁ += δt₁ + u = f(uᵢ₋₁, p, tᵢ₋₁) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + tmp = δt₂ * (u - uᵢ₋₂) + u = uᵢ₋₁ + δt₁ * u + tmp + else + u = uᵢ₋₁ + δt₁ * u + δt₂ * (u - uᵢ₋₂) + end + # error estimate + if integrator.opts.adaptive + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::ROCK2Cache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst # done by pointers, no copying + integrator.fsallast = cache.k + alg = unwrap_alg(integrator, true) + cache.constantcache.max_stage = (alg.max_stages < 1 || alg.max_stages > 200) ? 200 : + alg.max_stages + cache.constantcache.min_stage = (alg.min_stages > cache.constantcache.max_stage) ? + cache.constantcache.max_stage : alg.min_stages + + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::ROCK2Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack k, tmp, uᵢ₋₂, uᵢ₋₁, atmp = cache + @unpack ms, fp1, fp2, recf = cache.constantcache + ccache = cache.constantcache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + mdeg = Int(floor(sqrt((1.5 + abs(dt) * integrator.eigen_est) / 0.811) + 1)) + mdeg = min(max(mdeg, ccache.min_stage), ccache.max_stage) + ccache.mdeg = max(mdeg, 3) - 2 + choosedeg!(cache) + # recurrence + # for the first stage + tᵢ₋₁ = t + dt * recf[ccache.start] + tᵢ₋₂ = t + dt * recf[ccache.start] + tᵢ₋₃ = t + @.. broadcast=false uᵢ₋₂=uprev + @.. broadcast=false uᵢ₋₁=uprev + (dt * recf[ccache.start]) * fsalfirst + ccache.mdeg < 2 && (@.. broadcast=false u=uᵢ₋₁) + # for the second to the ms[ccache.mdeg] th stages + for i in 2:(ccache.mdeg) + μ, κ = recf[ccache.start + (i - 2) * 2 + 1], recf[ccache.start + (i - 2) * 2 + 2] + ν = -1 - κ + f(k, uᵢ₋₁, p, tᵢ₋₁) + tᵢ₋₁ = dt * μ - ν * tᵢ₋₂ - κ * tᵢ₋₃ + @.. broadcast=false u=(dt * μ) * k - ν * uᵢ₋₁ - κ * uᵢ₋₂ + if i < ccache.mdeg + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=u + end + tᵢ₋₃ = tᵢ₋₂ + tᵢ₋₂ = tᵢ₋₁ + end # end if + # two-stage finishing procedure. + δt₁ = dt * fp1[ccache.deg_index] + δt₂ = dt * fp2[ccache.deg_index] + f(k, u, p, tᵢ₋₁) + integrator.stats.nf += 1 + @.. broadcast=false uᵢ₋₁=u + δt₁ * k + if integrator.opts.adaptive + @.. broadcast=false tmp=-δt₂ * k + else + @.. broadcast=false u=-δt₂ * k + end + c = DiffEqBase.value(sign(δt₁)) * integrator.opts.internalnorm(δt₁, t) + tᵢ₋₁ += c + f(k, uᵢ₋₁, p, tᵢ₋₁) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + @.. broadcast=false tmp+=δt₂ * k + @.. broadcast=false u=uᵢ₋₁ + δt₁ * k + tmp + else + @.. broadcast=false u+=uᵢ₋₁ + (δt₁ + δt₂) * k + end + + # error estimate + if integrator.opts.adaptive + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + f(integrator.fsallast, u, p, t + dt) + integrator.stats.nf += 1 + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::ROCK4ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + alg = unwrap_alg(integrator, true) + cache.max_stage = (alg.max_stages < 1 || alg.max_stages > 152) ? 152 : alg.max_stages + cache.min_stage = (alg.min_stages > cache.max_stage) ? cache.max_stage : alg.min_stages + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::ROCK4ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack ms, fpa, fpb, fpbe, recf = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + mdeg = Int(floor(sqrt((3 + abs(dt) * integrator.eigen_est) / 0.353) + 1)) + mdeg = min(max(mdeg, cache.min_stage), cache.max_stage) + cache.mdeg = max(mdeg, 5) - 4 + choosedeg!(cache) + # recurrence + # for the first stage + tᵢ₋₁ = t + dt * recf[cache.start] + tᵢ₋₂ = t + dt * recf[cache.start] + tᵢ₋₃ = t + uᵢ₋₂ = copy(uprev) + uᵢ₋₁ = uprev + (dt * recf[cache.start]) * fsalfirst + cache.mdeg < 2 && (u = uᵢ₋₁) + # for the second to the cache.mdeg th stages + for i in 2:(cache.mdeg) + μ, κ = recf[cache.start + (i - 2) * 2 + 1], recf[cache.start + (i - 2) * 2 + 2] + ν = -1 - κ + u = f(uᵢ₋₁, p, tᵢ₋₁) + tᵢ₋₁ = dt * μ - ν * tᵢ₋₂ - κ * tᵢ₋₃ + u = (dt * μ) * u - ν * uᵢ₋₁ - κ * uᵢ₋₂ + i < cache.mdeg && (uᵢ₋₂ = uᵢ₋₁; + uᵢ₋₁ = u) + tᵢ₋₃ = tᵢ₋₂ + tᵢ₋₂ = tᵢ₋₁ + end + + # These constants correspond to the Buther Tableau coefficients of explicit RK methods + a₂₁ = dt * fpa[cache.deg_index][1] + a₃₁ = dt * fpa[cache.deg_index][2] + a₃₂ = dt * fpa[cache.deg_index][3] + a₄₁ = dt * fpa[cache.deg_index][4] + a₄₂ = dt * fpa[cache.deg_index][5] + a₄₃ = dt * fpa[cache.deg_index][6] + B₁ = dt * fpb[cache.deg_index][1] + B₂ = dt * fpb[cache.deg_index][2] + B₃ = dt * fpb[cache.deg_index][3] + B₄ = dt * fpb[cache.deg_index][4] + # coefficients of embedded method for error estimation + B̂₁ = dt * (fpbe[cache.deg_index][1] - fpb[cache.deg_index][1]) + B̂₂ = dt * (fpbe[cache.deg_index][2] - fpb[cache.deg_index][2]) + B̂₃ = dt * (fpbe[cache.deg_index][3] - fpb[cache.deg_index][3]) + B̂₄ = dt * (fpbe[cache.deg_index][4] - fpb[cache.deg_index][4]) + B̂₅ = dt * fpbe[cache.deg_index][5] + + # 4-stage finishing procedure. + # Stage-1 + uᵢ₋₁ = f(u, p, tᵢ₋₁) + integrator.stats.nf += 1 + uᵢ₋₂ = u + a₃₁ * uᵢ₋₁ + uᵢ₋₃ = u + a₄₁ * uᵢ₋₁ + u += B₁ * uᵢ₋₁ + integrator.opts.adaptive && (tmp = B̂₁ * uᵢ₋₁) + uᵢ₋₁ = u + (a₂₁ - B₁) * uᵢ₋₁ + + # Stage-2 + c₂ = a₂₁ + _c₂ = DiffEqBase.value(sign(c₂)) * integrator.opts.internalnorm(c₂, t) + tᵢ₋₂ = tᵢ₋₁ + _c₂ + uᵢ₋₁ = f(uᵢ₋₁, p, tᵢ₋₂) + integrator.stats.nf += 1 + uᵢ₋₂ += a₃₂ * uᵢ₋₁ + uᵢ₋₃ += a₄₂ * uᵢ₋₁ + u += B₂ * uᵢ₋₁ + integrator.opts.adaptive && (tmp += B̂₂ * uᵢ₋₁) + + # Stage-3 + c₃ = a₃₁ + a₃₂ + _c₃ = DiffEqBase.value(sign(c₃)) * integrator.opts.internalnorm(c₃, t) + tᵢ₋₂ = tᵢ₋₁ + _c₃ + uᵢ₋₂ = f(uᵢ₋₂, p, tᵢ₋₂) + integrator.stats.nf += 1 + uᵢ₋₃ += a₄₃ * uᵢ₋₂ + u += B₃ * uᵢ₋₂ + integrator.opts.adaptive && (tmp += B̂₃ * uᵢ₋₂) + + #Stage-4 + c₄ = a₄₁ + a₄₂ + a₄₃ + _c₄ = DiffEqBase.value(sign(c₄)) * integrator.opts.internalnorm(c₄, t) + tᵢ₋₂ = tᵢ₋₁ + _c₄ + uᵢ₋₃ = f(uᵢ₋₃, p, tᵢ₋₂) + integrator.stats.nf += 1 + u += B₄ * uᵢ₋₃ + integrator.opts.adaptive && (tmp += B̂₄ * uᵢ₋₃) + + uᵢ₋₁ = f(u, p, t + dt) + integrator.stats.nf += 1 + + #Error estimate (embedded method of order 3) + if integrator.opts.adaptive + tmp += B̂₅ * uᵢ₋₁ + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = uᵢ₋₁ + integrator.u = u +end + +function initialize!(integrator, cache::ROCK4Cache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + alg = unwrap_alg(integrator, true) + cache.constantcache.max_stage = (alg.max_stages < 1 || alg.max_stages > 152) ? 152 : + alg.max_stages + cache.constantcache.min_stage = (alg.min_stages > cache.constantcache.max_stage) ? + cache.constantcache.max_stage : alg.min_stages + + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::ROCK4Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack uᵢ₋₁, uᵢ₋₂, uᵢ₋₃, tmp, atmp, k = cache + @unpack ms, fpa, fpb, fpbe, recf = cache.constantcache + ccache = cache.constantcache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + mdeg = Int(floor(sqrt((3 + abs(dt) * integrator.eigen_est) / 0.353) + 1)) + mdeg = min(max(mdeg, ccache.min_stage), ccache.max_stage) + ccache.mdeg = max(mdeg, 5) - 4 + choosedeg!(cache) + # recurrence + # for the first stage + tᵢ₋₁ = t + dt * recf[ccache.start] + tᵢ₋₂ = t + dt * recf[ccache.start] + tᵢ₋₃ = t + @.. broadcast=false uᵢ₋₂=uprev + @.. broadcast=false uᵢ₋₁=uprev + (dt * recf[ccache.start]) * fsalfirst + ccache.mdeg < 2 && (@.. broadcast=false u=uᵢ₋₁) + # for the second to the ccache.mdeg th stages + for i in 2:(ccache.mdeg) + μ, κ = recf[ccache.start + (i - 2) * 2 + 1], recf[ccache.start + (i - 2) * 2 + 2] + ν = -1 - κ + f(k, uᵢ₋₁, p, tᵢ₋₁) + tᵢ₋₁ = (dt * μ) - ν * tᵢ₋₂ - κ * tᵢ₋₃ + @.. broadcast=false u=(dt * μ) * k - ν * uᵢ₋₁ - κ * uᵢ₋₂ + if i < ccache.mdeg + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=u + end + tᵢ₋₃ = tᵢ₋₂ + tᵢ₋₂ = tᵢ₋₁ + end + + # These constants correspond to the Buther Tableau coefficients of explicit RK methods + a₂₁ = dt * fpa[ccache.deg_index][1] + a₃₁ = dt * fpa[ccache.deg_index][2] + a₃₂ = dt * fpa[ccache.deg_index][3] + a₄₁ = dt * fpa[ccache.deg_index][4] + a₄₂ = dt * fpa[ccache.deg_index][5] + a₄₃ = dt * fpa[ccache.deg_index][6] + B₁ = dt * fpb[ccache.deg_index][1] + B₂ = dt * fpb[ccache.deg_index][2] + B₃ = dt * fpb[ccache.deg_index][3] + B₄ = dt * fpb[ccache.deg_index][4] + # coefficients of embedded method for error estimation + B̂₁ = dt * (fpbe[ccache.deg_index][1] - fpb[ccache.deg_index][1]) + B̂₂ = dt * (fpbe[ccache.deg_index][2] - fpb[ccache.deg_index][2]) + B̂₃ = dt * (fpbe[ccache.deg_index][3] - fpb[ccache.deg_index][3]) + B̂₄ = dt * (fpbe[ccache.deg_index][4] - fpb[ccache.deg_index][4]) + B̂₅ = dt * fpbe[ccache.deg_index][5] + + # 4-stage finishing procedure. + # Stage-1 + + f(k, u, p, tᵢ₋₁) + integrator.stats.nf += 1 + @.. broadcast=false uᵢ₋₂=u + a₃₁ * k + @.. broadcast=false uᵢ₋₃=u + a₄₁ * k + @.. broadcast=false uᵢ₋₁=u + a₂₁ * k + @.. broadcast=false u+=B₁ * k + integrator.opts.adaptive && (@.. broadcast=false tmp=B̂₁ * k) + + # Stage-2 + c₂ = a₂₁ + _c₂ = DiffEqBase.value(sign(c₂)) * integrator.opts.internalnorm(c₂, t) + tᵢ₋₂ = tᵢ₋₁ + _c₂ + f(k, uᵢ₋₁, p, tᵢ₋₂) + integrator.stats.nf += 1 + @.. broadcast=false uᵢ₋₂+=a₃₂ * k + @.. broadcast=false uᵢ₋₃+=a₄₂ * k + @.. broadcast=false u+=B₂ * k + integrator.opts.adaptive && (@.. broadcast=false tmp+=B̂₂ * k) + + # Stage-3 + c₃ = a₃₁ + a₃₂ + _c₃ = DiffEqBase.value(sign(c₃)) * integrator.opts.internalnorm(c₃, t) + tᵢ₋₂ = tᵢ₋₁ + _c₃ + f(k, uᵢ₋₂, p, tᵢ₋₂) + integrator.stats.nf += 1 + @.. broadcast=false uᵢ₋₃+=a₄₃ * k + @.. broadcast=false u+=B₃ * k + integrator.opts.adaptive && (@.. broadcast=false tmp+=B̂₃ * k) + + #Stage-4 + c₄ = a₄₁ + a₄₂ + a₄₃ + _c₄ = DiffEqBase.value(sign(c₄)) * integrator.opts.internalnorm(c₄, t) + tᵢ₋₂ = tᵢ₋₁ + _c₄ + f(k, uᵢ₋₃, p, tᵢ₋₂) + integrator.stats.nf += 1 + @.. broadcast=false u+=B₄ * k + integrator.opts.adaptive && (tmp += B̂₄ * k) + + f(k, u, p, t + dt) + integrator.stats.nf += 1 + + #Error estimate (embedded method of order 3) + if integrator.opts.adaptive + tmp += B̂₅ * k + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + @.. broadcast=false integrator.fsallast=k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::RKCConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::RKCConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + #maxm = max(2,Int(floor(sqrt(integrator.opts.internalnorm(integrator.opts.reltol,t)/(10*eps(integrator.opts.internalnorm(uprev,t))))))) + maxm = 50 + mdeg = 1 + Int(floor(sqrt(1.54 * abs(dt) * integrator.eigen_est + 1))) + mdeg = (mdeg > maxm) ? maxm : mdeg + + w0 = 1 + 2 / (13 * (mdeg^2)) + temp1 = w0^2 - 1 + temp2 = sqrt(temp1) + arg = mdeg * log(w0 + temp2) + w1 = (sinh(arg) * temp1) / (cosh(arg) * mdeg * temp2 - w0 * sinh(arg)) + b1 = 1 / ((2 * w0)^2) + b2 = b1 + + # stage-1 + gprev2 = copy(uprev) + μs = w1 * b1 + gprev = uprev + dt * μs * fsalfirst + th2 = zero(eltype(u)) + th1 = μs + z1 = w0 + z2 = one(eltype(u)) + dz1 = one(eltype(u)) + dz2 = zero(eltype(u)) + d2z1 = zero(eltype(u)) + d2z2 = zero(eltype(u)) + + # stage 2 - mdeg + for iter in 2:mdeg + z = 2 * w0 * z1 - z2 + dz = 2 * w0 * dz1 - dz2 + 2 * z1 + d2z = 2 * w0 * d2z1 - d2z2 + 4 * dz1 + b = d2z / (dz^2) + νs = 1 - z1 * b1 + μ = (2 * w0 * b) / b1 + ν = -b / b2 + μs = μ * w1 / w0 + #using u as temporary storage + u = f(gprev, p, t + dt * th1) + integrator.stats.nf += 1 + u = μ * gprev + ν * gprev2 + (1 - μ - ν) * uprev + dt * μs * (u - νs * fsalfirst) + th = μ * th1 + ν * th2 + μs * (1 - νs) + if (iter < mdeg) + gprev2 = gprev + gprev = u + th2 = th1 + th1 = th + b2 = b1 + b1 = b + z2 = z1 + z1 = z + dz2 = dz1 + dz1 = dz + d2z2 = d2z1 + d2z1 = d2z + end + end + # error estimate + if integrator.opts.adaptive + tmp = 0.8 * (uprev - u) + 0.4 * dt * (fsalfirst + gprev) + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::RKCCache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst # done by pointers, no copying + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::RKCCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack k, tmp, gprev2, gprev, atmp = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + #maxm = max(2,Int(floor(sqrt(integrator.opts.internalnorm(integrator.opts.reltol,t)/10eps(t))))) + maxm = 50 + mdeg = 1 + Int(floor(sqrt(1.54 * abs(dt) * integrator.eigen_est + 1))) + mdeg = (mdeg > maxm) ? maxm : mdeg + + w0 = 1 + 2 / (13 * (mdeg^2)) + temp1 = w0^2 - 1 + temp2 = sqrt(temp1) + arg = mdeg * log(w0 + temp2) + w1 = (sinh(arg) * temp1) / (cosh(arg) * mdeg * temp2 - w0 * sinh(arg)) + b1 = 1 / ((2 * w0)^2) + b2 = b1 + + # stage-1 + @.. broadcast=false gprev2=uprev + μs = w1 * b1 + @.. broadcast=false gprev=uprev + dt * μs * fsalfirst + th2 = zero(eltype(u)) + th1 = μs + z1 = w0 + z2 = one(eltype(u)) + dz1 = one(eltype(u)) + dz2 = zero(eltype(u)) + d2z1 = zero(eltype(u)) + d2z2 = zero(eltype(u)) + + # stage 2 - mdeg + for iter in 2:mdeg + z = 2 * w0 * z1 - z2 + dz = 2 * w0 * dz1 - dz2 + 2 * z1 + d2z = 2 * w0 * d2z1 - d2z2 + 4 * dz1 + b = d2z / (dz^2) + νs = 1 - z1 * b1 + μ = (2 * w0 * b) / b1 + ν = -b / b2 + μs = μ * w1 / w0 + f(k, gprev, p, t + dt * th1) + integrator.stats.nf += 1 + @.. broadcast=false u=μ * gprev + ν * gprev2 + (1 - μ - ν) * uprev + + dt * μs * (k - νs * fsalfirst) + th = μ * th1 + ν * th2 + μs * (1 - νs) + if (iter < mdeg) + gprev2 = gprev + gprev = u + th2 = th1 + th1 = th + b2 = b1 + b1 = b + z2 = z1 + z1 = z + dz2 = dz1 + dz1 = dz + d2z2 = d2z1 + d2z1 = d2z + end + end + # error estimate + if integrator.opts.adaptive + @.. broadcast=false tmp=0.8 * (uprev - u) + 0.4 * dt * (fsalfirst + gprev) + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + f(integrator.fsallast, u, p, t + dt) + integrator.stats.nf += 1 + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::IRKCConstantCache) + @unpack uprev, p, t = integrator + @unpack f1, f2 = integrator.f + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + cache.du₁ = f1(uprev, p, t) + cache.du₂ = f2(uprev, p, t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + integrator.fsalfirst = cache.du₁ + cache.du₂ + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function perform_step!(integrator, cache::IRKCConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack minm, du₁, du₂, nlsolver = cache + @unpack f1, f2 = integrator.f + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + # The the number of degree for Chebyshev polynomial + #maxm = max(2,Int(floor(sqrt(integrator.opts.internalnorm(integrator.opts.reltol,t)/(10 *eps(integrator.opts.internalnorm(uprev,t))))))) + maxm = 50 + mdeg = 1 + floor(Int, sqrt(1.54 * abs(dt) * integrator.eigen_est + 1)) + mdeg = min(maxm, max(minm, mdeg)) + + ω₀ = 1 + 2 / (13 * (mdeg^2)) + temp₁ = ω₀^2 - 1 + temp₂ = sqrt(temp₁) + θ = mdeg * log(ω₀ + temp₂) + ω₁ = (sinh(θ) * temp₁) / (cosh(θ) * mdeg * temp₂ - ω₀ * sinh(θ)) + Bⱼ₋₂ = 1 / (4 * ω₀^2) + Bⱼ₋₁ = 1 / ω₀ + + #stage-1 + f1ⱼ₋₂ = du₁ + gprev2 = copy(uprev) + μs = ω₁ * Bⱼ₋₁ + μs₁ = μs + + # initial guess for implicit part + # if alg.extrapolant == :linear + # nlsolver.z = dt*du₁ + # else # :constant + # nlsolver.z = zero(u) + # end + + nlsolver.z = dt * du₁ + + nlsolver.tmp = uprev + dt * μs₁ * du₂ + nlsolver.γ = μs₁ + nlsolver.c = μs + markfirststage!(nlsolver) + z = nlsolve!(nlsolver, integrator, cache, false) + # nlsolvefail(nlsolver) && return + gprev = nlsolver.tmp + μs₁ * z + + Cⱼ₋₂ = zero(eltype(u)) + Cⱼ₋₁ = μs + Tⱼ₋₁ = ω₀ + Tⱼ₋₂ = one(eltype(u)) + Tⱼ₋₁′ = one(eltype(u)) + Tⱼ₋₂′ = zero(eltype(u)) + Tⱼ₋₁″ = zero(eltype(u)) + Tⱼ₋₂″ = zero(eltype(u)) + + #stage- 2...mdeg + for iter in 2:mdeg + Tⱼ = 2 * ω₀ * Tⱼ₋₁ - Tⱼ₋₂ + Tⱼ′ = 2 * ω₀ * Tⱼ₋₁′ + 2 * Tⱼ₋₁ - Tⱼ₋₂′ + Tⱼ″ = 2 * ω₀ * Tⱼ₋₁″ + 4 * Tⱼ₋₁′ - Tⱼ₋₂″ + Bⱼ = Tⱼ″ / (Tⱼ′^2) + μ = (2 * ω₀ * Bⱼ) / Bⱼ₋₁ + ν = -Bⱼ / Bⱼ₋₂ + μs = (μ * ω₁) / ω₀ + νs = -(1 - Tⱼ₋₁ * Bⱼ₋₁) * μs + Cⱼ = μ * Cⱼ₋₁ + ν * Cⱼ₋₂ + μs + νs + + f1ⱼ₋₁ = f1(gprev, p, t + Cⱼ₋₁ * dt) + f2ⱼ₋₁ = f2(gprev, p, t + Cⱼ₋₁ * dt) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + nlsolver.tmp = (1 - μ - ν) * uprev + μ * gprev + ν * gprev2 + dt * μs * f2ⱼ₋₁ + + dt * νs * du₂ + (νs - (1 - μ - ν) * μs₁) * dt * du₁ - + ν * μs₁ * dt * f1ⱼ₋₂ + nlsolver.z = dt * f1ⱼ₋₁ + nlsolver.c = Cⱼ + z = nlsolve!(nlsolver, integrator, cache, false) + # ignoring newton method's convergence failure + # nlsolvefail(nlsolver) && return + u = nlsolver.tmp + μs₁ * z + if (iter < mdeg) + f1ⱼ₋₂ = f1ⱼ₋₁ + gprev2 = gprev + gprev = u + Cⱼ₋₂ = Cⱼ₋₁ + Cⱼ₋₁ = Cⱼ + Bⱼ₋₂ = Bⱼ₋₁ + Bⱼ₋₁ = Bⱼ + Tⱼ₋₂ = Tⱼ₋₁ + Tⱼ₋₁ = Tⱼ + Tⱼ₋₂′ = Tⱼ₋₁′ + Tⱼ₋₁′ = Tⱼ′ + Tⱼ₋₂″ = Tⱼ₋₁″ + Tⱼ₋₁″ = Tⱼ″ + end + end + + cache.du₁ = f1(u, p, t + dt) + cache.du₂ = f2(u, p, t + dt) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + # error estimate + if isnewton(nlsolver) && integrator.opts.adaptive + update_W!(integrator, cache, dt, false) + tmp = dt * (0.5 * (cache.du₂ - du₂) + (0.5 - μs₁) * (cache.du₁ - du₁)) + tmp = _reshape(get_W(nlsolver) \ _vec(tmp), axes(tmp)) + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + integrator.fsallast = cache.du₁ + cache.du₂ + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::IRKCCache) + @unpack uprev, p, t = integrator + @unpack f1, f2 = integrator.f + integrator.kshortsize = 2 + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = du_alias_or_new(cache.nlsolver, integrator.fsalfirst) + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + f1(cache.du₁, uprev, p, t) + f2(cache.du₂, uprev, p, t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + @.. broadcast=false integrator.fsalfirst=cache.du₁ + cache.du₂ +end + +function perform_step!(integrator, cache::IRKCCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack gprev, gprev2, f1ⱼ₋₁, f1ⱼ₋₂, f2ⱼ₋₁, du₁, du₂, atmp, nlsolver = cache + @unpack tmp, z = nlsolver + @unpack minm = cache.constantcache + @unpack f1, f2 = integrator.f + + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + # The the number of degree for Chebyshev polynomial + #maxm = max(2,int(floor(sqrt(integrator.opts.internalnorm(integrator.opts.reltol,t)/(10 *eps(integrator.opts.internalnorm(uprev,t))))))) + maxm = 50 + mdeg = 1 + Int(floor(sqrt(1.54 * abs(dt) * integrator.eigen_est + 1))) + mdeg = (mdeg < minm) ? minm : mdeg + mdeg = (mdeg >= maxm) ? maxm : mdeg + + ω₀ = 1 + 2 / (13 * (mdeg^2)) + temp₁ = ω₀^2 - 1 + temp₂ = sqrt(temp₁) + θ = mdeg * log(ω₀ + temp₂) + ω₁ = (sinh(θ) * temp₁) / (cosh(θ) * mdeg * temp₂ - ω₀ * sinh(θ)) + Bⱼ₋₂ = 1 / (4 * ω₀^2) + Bⱼ₋₁ = 1 / ω₀ + + #stage-1 + f1ⱼ₋₂ = du₁ + @.. broadcast=false gprev2=uprev + μs = ω₁ * Bⱼ₋₁ + μs₁ = μs + + # initial guess + # if alg.extrapolant == :linear + # @.. broadcast=false z = dt*du₁ + # else # :constant + # @.. broadcast=false z = zero(eltype(u)) + # end + @.. broadcast=false nlsolver.z=dt * du₁ + + @.. broadcast=false nlsolver.tmp=uprev + dt * μs₁ * du₂ + nlsolver.γ = μs₁ + nlsolver.c = μs + markfirststage!(nlsolver) + z = nlsolve!(nlsolver, integrator, cache, false) + # ignoring newton method's convergence failure + # nlsolvefail(nlsolver) && return + @.. broadcast=false gprev=nlsolver.tmp + μs₁ * nlsolver.z + + Cⱼ₋₂ = zero(eltype(u)) + Cⱼ₋₁ = μs + Tⱼ₋₁ = ω₀ + Tⱼ₋₂ = one(eltype(u)) + Tⱼ₋₁′ = one(eltype(u)) + Tⱼ₋₂′ = zero(eltype(u)) + Tⱼ₋₁″ = zero(eltype(u)) + Tⱼ₋₂″ = zero(eltype(u)) + + #stage- 2...mdeg + for iter in 2:mdeg + Tⱼ = 2 * ω₀ * Tⱼ₋₁ - Tⱼ₋₂ + Tⱼ′ = 2 * ω₀ * Tⱼ₋₁′ + 2 * Tⱼ₋₁ - Tⱼ₋₂′ + Tⱼ″ = 2 * ω₀ * Tⱼ₋₁″ + 4 * Tⱼ₋₁′ - Tⱼ₋₂″ + Bⱼ = Tⱼ″ / (Tⱼ′^2) + μ = (2 * ω₀ * Bⱼ) / Bⱼ₋₁ + ν = -Bⱼ / Bⱼ₋₂ + μs = (μ * ω₁) / ω₀ + νs = -(1 - Tⱼ₋₁ * Bⱼ₋₁) * μs + Cⱼ = μ * Cⱼ₋₁ + ν * Cⱼ₋₂ + μs + νs + + f1(f1ⱼ₋₁, gprev, p, t + Cⱼ₋₁ * dt) + f2(f2ⱼ₋₁, gprev, p, t + Cⱼ₋₁ * dt) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + @.. broadcast=false nlsolver.tmp=(1 - μ - ν) * uprev + μ * gprev + ν * gprev2 + + dt * μs * f2ⱼ₋₁ + dt * νs * du₂ + + (νs - (1 - μ - ν) * μs₁) * dt * du₁ - + ν * μs₁ * dt * f1ⱼ₋₂ + @.. broadcast=false nlsolver.z=dt * f1ⱼ₋₁ + nlsolver.c = Cⱼ + + z = nlsolve!(nlsolver, integrator, cache, false) + # nlsolvefail(nlsolver) && return + @.. broadcast=false u=nlsolver.tmp + μs₁ * nlsolver.z + if (iter < mdeg) + @.. broadcast=false f1ⱼ₋₂=f1ⱼ₋₁ + @.. broadcast=false gprev2=gprev + @.. broadcast=false gprev=u + Cⱼ₋₂ = Cⱼ₋₁ + Cⱼ₋₁ = Cⱼ + Bⱼ₋₂ = Bⱼ₋₁ + Bⱼ₋₁ = Bⱼ + Tⱼ₋₂ = Tⱼ₋₁ + Tⱼ₋₁ = Tⱼ + Tⱼ₋₂′ = Tⱼ₋₁′ + Tⱼ₋₁′ = Tⱼ′ + Tⱼ₋₂″ = Tⱼ₋₁″ + Tⱼ₋₁″ = Tⱼ″ + end + end + + @.. broadcast=false f1ⱼ₋₁=du₁ + @.. broadcast=false f2ⱼ₋₁=du₂ + f1(du₁, u, p, t + dt) + f2(du₂, u, p, t + dt) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + # error estimate + if isnewton(nlsolver) && integrator.opts.adaptive + update_W!(integrator, cache, dt, false) + @.. broadcast=false gprev=dt * 0.5 * (du₂ - f2ⱼ₋₁) + + dt * (0.5 - μs₁) * (du₁ - f1ⱼ₋₁) + + linsolve = nlsolver.cache.linsolve + linres = dolinsolve(integrator, linsolve; b = _vec(gprev), linu = _vec(tmp)) + + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + @.. broadcast=false integrator.fsallast=du₁ + du₂ + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::ESERK4ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::ESERK4ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack ms, Cᵤ, Cₑ = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est)) + 1) + mdeg = (mdeg > 4000) ? 4000 : mdeg + cache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = cache.mdeg + start = cache.start + internal_deg = cache.internal_deg + α = 2.0 / (mdeg^2) + + u = zero(uprev) + tmp = zero(uprev) + + for i in 1:4 + hᵢ = dt / i + tᵢ = t + Sᵢ = zero(u) + uᵢ₋₁ = uprev + uᵢ₋₂ = zero(u) + for j in 1:i + r = tᵢ + Sᵢ = (cache.Bᵢ[start]) * uᵢ₋₁ + for st in 1:mdeg + k = f(uᵢ₋₁, p, r) + integrator.stats.nf += 1 + + if st % internal_deg == 1 + uᵢ = uᵢ₋₁ + α * hᵢ * k + else + uᵢ = 2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * hᵢ * k + end + q = convert(Int, floor(st / internal_deg)) + r = tᵢ + α * (st^2 + q * internal_deg^2) * hᵢ + Sᵢ = Sᵢ + (cache.Bᵢ[start + st]) * uᵢ + if st < mdeg + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = uᵢ + end + end + + if j < i + tᵢ = tᵢ + hᵢ + uᵢ₋₁ = Sᵢ + end + end + + u = u + Cᵤ[i] * Sᵢ + integrator.opts.adaptive && (tmp = tmp + Cₑ[i] * Sᵢ) + end + + u = u / 6 + if integrator.opts.adaptive + tmp = tmp / 6 + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::ESERK4Cache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::ESERK4Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack uᵢ, uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, k = cache + @unpack ms, Cᵤ, Cₑ = cache.constantcache + ccache = cache.constantcache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est)) + 1) + mdeg = (mdeg > 4000) ? 4000 : mdeg + ccache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = ccache.mdeg + start = ccache.start + internal_deg = ccache.internal_deg + α = 2.0 / (mdeg^2) + + @.. broadcast=false u=zero(uprev) + @.. broadcast=false tmp=zero(uprev) + for i in 1:4 + hᵢ = dt / i + tᵢ = t + @.. broadcast=false Sᵢ=zero(u) + @.. broadcast=false uᵢ₋₁=uprev + @.. broadcast=false uᵢ₋₂=zero(u) + for j in 1:i + r = tᵢ + @.. broadcast=false Sᵢ=(cache.constantcache.Bᵢ[start]) * uᵢ₋₁ + for st in 1:mdeg + f(k, uᵢ₋₁, p, r) + integrator.stats.nf += 1 + + if st % internal_deg == 1 + @.. broadcast=false uᵢ=uᵢ₋₁ + α * hᵢ * k + else + @.. broadcast=false uᵢ=2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * hᵢ * k + end + q = convert(Int, floor(st / internal_deg)) + r = tᵢ + α * (st^2 + q * internal_deg^2) * hᵢ + @.. broadcast=false Sᵢ=Sᵢ + (cache.constantcache.Bᵢ[start + st]) * uᵢ + if st < mdeg + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=uᵢ + end + end + + if j < i + tᵢ = tᵢ + hᵢ + @.. broadcast=false uᵢ₋₁=Sᵢ + end + end + + @.. broadcast=false u=u + Cᵤ[i] * Sᵢ + integrator.opts.adaptive && (@.. broadcast=false tmp=tmp + Cₑ[i] * Sᵢ) + end + + @.. broadcast=false u=u / 6 + + if integrator.opts.adaptive + @.. broadcast=false tmp=tmp / 6 + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + f(integrator.fsallast, u, p, t + dt) + integrator.stats.nf += 1 + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::ESERK5ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::ESERK5ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack ms, Cᵤ, Cₑ, Bᵢ = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est / 0.98)) + 1) + mdeg = (mdeg > 2000) ? 2000 : mdeg + cache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = cache.mdeg + start = cache.start + internal_deg = cache.internal_deg + α = 100.0 / (49.0 * mdeg^2) + + u = zero(uprev) + tmp = zero(uprev) + for i in 1:5 + hᵢ = dt / i + tᵢ = t + Sᵢ = zero(u) + uᵢ₋₁ = uprev + uᵢ₋₂ = zero(u) + for j in 1:i + r = tᵢ + Sᵢ = (Bᵢ[start]) * uᵢ₋₁ + for st in 1:mdeg + k = f(uᵢ₋₁, p, r) + integrator.stats.nf += 1 + + if st % internal_deg == 1 + uᵢ = uᵢ₋₁ + α * hᵢ * k + else + uᵢ = 2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * hᵢ * k + end + q = convert(Int, floor(st / internal_deg)) + r = tᵢ + α * (st^2 + q * internal_deg^2) * hᵢ + Sᵢ = Sᵢ + (Bᵢ[start + st]) * uᵢ + if st < mdeg + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = uᵢ + end + end + + if j < i + tᵢ = tᵢ + hᵢ + uᵢ₋₁ = Sᵢ + end + end + + u = u + Cᵤ[i] * Sᵢ + integrator.opts.adaptive && (tmp = tmp + Cₑ[i] * Sᵢ) + end + + u = u / 24 + if integrator.opts.adaptive + tmp = tmp / 24 + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::ESERK5Cache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::ESERK5Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack uᵢ, uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, k = cache + @unpack ms, Cᵤ, Cₑ, Bᵢ = cache.constantcache + ccache = cache.constantcache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est / 0.98)) + 1) + mdeg = (mdeg > 2000) ? 2000 : mdeg + ccache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = ccache.mdeg + start = ccache.start + internal_deg = ccache.internal_deg + α = 100.0 / (49.0 * mdeg^2) + + @.. broadcast=false u=zero(uprev) + @.. broadcast=false tmp=zero(uprev) + for i in 1:5 + hᵢ = dt / i + tᵢ = t + @.. broadcast=false Sᵢ=zero(u) + @.. broadcast=false uᵢ₋₁=uprev + @.. broadcast=false uᵢ₋₂=zero(u) + for j in 1:i + r = tᵢ + @.. broadcast=false Sᵢ=(Bᵢ[start]) * uᵢ₋₁ + for st in 1:mdeg + f(k, uᵢ₋₁, p, r) + integrator.stats.nf += 1 + + if st % internal_deg == 1 + @.. broadcast=false uᵢ=uᵢ₋₁ + α * hᵢ * k + else + @.. broadcast=false uᵢ=2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * hᵢ * k + end + q = convert(Int, floor(st / internal_deg)) + r = tᵢ + α * (st^2 + q * internal_deg^2) * hᵢ + @.. broadcast=false Sᵢ=Sᵢ + (Bᵢ[start + st]) * uᵢ + if st < mdeg + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=uᵢ + end + end + + if j < i + tᵢ = tᵢ + hᵢ + @.. broadcast=false uᵢ₋₁=Sᵢ + end + end + + @.. broadcast=false u=u + Cᵤ[i] * Sᵢ + integrator.opts.adaptive && (@.. broadcast=false tmp=tmp + Cₑ[i] * Sᵢ) + end + + @.. broadcast=false u=u / 24 + + if integrator.opts.adaptive + @.. broadcast=false tmp=tmp / 24 + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + f(integrator.fsallast, u, p, t + dt) + integrator.stats.nf += 1 + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::SERK2ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::SERK2ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack ms, Bᵢ = cache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est / 0.8)) + 1) + mdeg = (mdeg > 250) ? 250 : mdeg + cache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = cache.mdeg + start = cache.start + internal_deg = cache.internal_deg + α = 1.0 / (0.4 * mdeg^2) + + uᵢ₋₁ = uprev + uᵢ₋₂ = uprev + Sᵢ = Bᵢ[start] * uprev + for i in 1:10 + k = f(uᵢ₋₁, p, t + (1 + (i - 1) * internal_deg^2) * α * dt) + integrator.stats.nf += 1 + u = uᵢ₋₁ + α * dt * k + Sᵢ = Sᵢ + Bᵢ[start + (i - 1) * internal_deg + 1] * u + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = u + for j in 2:internal_deg + k = f(uᵢ₋₁, p, t + (j^2 + (i - 1) * internal_deg^2) * α * dt) + integrator.stats.nf += 1 + u = 2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * dt * k + Sᵢ = Sᵢ + Bᵢ[start + j + (i - 1) * internal_deg] * u + if j * i < mdeg + uᵢ₋₂ = uᵢ₋₁ + uᵢ₋₁ = u + end + end + end + u = Sᵢ + k = f(u, p, t + dt) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + tmp = u - uprev - dt * k + atmp = calculate_residuals(tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = k + integrator.u = u +end + +function initialize!(integrator, cache::SERK2Cache) + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::SERK2Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + @unpack uᵢ₋₁, uᵢ₋₂, Sᵢ, tmp, atmp, k = cache + @unpack ms, Bᵢ = cache.constantcache + ccache = cache.constantcache + alg = unwrap_alg(integrator, true) + alg.eigen_est === nothing ? maxeig!(integrator, cache) : alg.eigen_est(integrator) + + mdeg = Int(floor(sqrt(abs(dt) * integrator.eigen_est / 0.8)) + 1) + mdeg = (mdeg > 250) ? 250 : mdeg + ccache.mdeg = mdeg + choosedeg_SERK!(integrator, cache) + mdeg = ccache.mdeg + start = ccache.start + internal_deg = ccache.internal_deg + α = 1.0 / (0.4 * mdeg^2) + + @.. broadcast=false uᵢ₋₁=uprev + @.. broadcast=false uᵢ₋₂=uprev + @.. broadcast=false Sᵢ=Bᵢ[start] * uprev + for i in 1:10 + f(k, uᵢ₋₁, p, t + (1 + (i - 1) * internal_deg^2) * α * dt) + integrator.stats.nf += 1 + @.. broadcast=false u=uᵢ₋₁ + α * dt * k + @.. broadcast=false Sᵢ=Sᵢ + Bᵢ[start + (i - 1) * internal_deg + 1] * u + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=u + for j in 2:internal_deg + f(k, uᵢ₋₂, p, t + (j^2 + (i - 1) * internal_deg^2) * α * dt) + integrator.stats.nf += 1 + @.. broadcast=false u=2 * uᵢ₋₁ - uᵢ₋₂ + 2 * α * dt * k + @.. broadcast=false Sᵢ=Sᵢ + Bᵢ[start + j + (i - 1) * internal_deg] * u + if j < mdeg + @.. broadcast=false uᵢ₋₂=uᵢ₋₁ + @.. broadcast=false uᵢ₋₁=u + end + end + end + @.. broadcast=false u=Sᵢ + f(k, u, p, t + dt) + integrator.stats.nf += 1 + + if integrator.opts.adaptive + @.. broadcast=false tmp=u - uprev - dt * k + calculate_residuals!(atmp, tmp, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast = k + integrator.u = u +end diff --git a/src/perform_step/rkn_perform_step.jl b/src/perform_step/rkn_perform_step.jl new file mode 100644 index 0000000000..1c29dc53e4 --- /dev/null +++ b/src/perform_step/rkn_perform_step.jl @@ -0,0 +1,1821 @@ +## y'' = f(t, y, y') +## y(t₀) = y₀; y'(t₀) = y'₀ +## kᵢ' = f(t₀+cᵢh, y₀+cᵢhy'₀+h²∑āᵢⱼk'ⱼ, y'₀+h∑aᵢⱼk'ⱼ) +## y₁ = y₀ + hy'₀ + h²∑b̄ᵢk'ᵢ +## y'₁ = y'₀ + h∑bᵢk'ᵢ + +const NystromCCDefaultInitialization = Union{Nystrom4ConstantCache, FineRKN4ConstantCache, + FineRKN5ConstantCache, + Nystrom4VelocityIndependentConstantCache, + Nystrom5VelocityIndependentConstantCache, + IRKN3ConstantCache, IRKN4ConstantCache, + DPRKN4ConstantCache, DPRKN5ConstantCache, + DPRKN6FMConstantCache, DPRKN8ConstantCache, + DPRKN12ConstantCache, ERKN4ConstantCache, + ERKN5ConstantCache, ERKN7ConstantCache} + +function initialize!(integrator, cache::NystromCCDefaultInitialization) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + duprev, uprev = integrator.uprev.x + kdu = integrator.f.f1(duprev, uprev, integrator.p, integrator.t) + ku = integrator.f.f2(duprev, uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + integrator.fsalfirst = ArrayPartition((kdu, ku)) +end + +const NystromDefaultInitialization = Union{Nystrom4Cache, FineRKN4Cache, FineRKN5Cache, + Nystrom4VelocityIndependentCache, + Nystrom5VelocityIndependentCache, + IRKN3Cache, IRKN4Cache, + DPRKN4Cache, DPRKN5Cache, + DPRKN6FMCache, DPRKN8Cache, + DPRKN12Cache, ERKN4Cache, + ERKN5Cache, ERKN7Cache} + +function initialize!(integrator, cache::NystromDefaultInitialization) + @unpack fsalfirst, k = cache + duprev, uprev = integrator.uprev.x + + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f.f1(integrator.k[1].x[1], duprev, uprev, integrator.p, integrator.t) + integrator.f.f2(integrator.k[1].x[2], duprev, uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 +end + +@muladd function perform_step!(integrator, cache::Nystrom4ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + k₁ = integrator.fsalfirst.x[1] + halfdt = dt / 2 + dtsq = dt^2 + eighth_dtsq = dtsq / 8 + half_dtsq = dtsq / 2 + ttmp = t + halfdt + + ## y₁ = y₀ + hy'₀ + h²∑b̄ᵢk'ᵢ + ku = uprev + halfdt * duprev + eighth_dtsq * k₁ + ## y'₁ = y'₀ + h∑bᵢk'ᵢ + kdu = duprev + halfdt * k₁ + + k₂ = f.f1(kdu, ku, p, ttmp) + ku = uprev + halfdt * duprev + eighth_dtsq * k₁ + kdu = duprev + halfdt * k₂ + + k₃ = f.f1(kdu, ku, p, ttmp) + ku = uprev + dt * duprev + half_dtsq * k₃ + kdu = duprev + dt * k₃ + + k₄ = f.f1(kdu, ku, p, t + dt) + u = uprev + (dtsq / 6) * (k₁ + k₂ + k₃) + dt * duprev + du = duprev + (dt / 6) * (k₁ + k₄ + 2 * (k₂ + k₃)) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Nystrom4Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, fsalfirst, k₂, k₃, k₄, k = cache + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + k₁ = integrator.fsalfirst.x[1] + halfdt = dt / 2 + dtsq = dt^2 + eighth_dtsq = dtsq / 8 + half_dtsq = dtsq / 2 + ttmp = t + halfdt + + ## y₁ = y₀ + hy'₀ + h²∑b̄ᵢk'ᵢ + @.. broadcast=false ku=uprev + halfdt * duprev + eighth_dtsq * k₁ + ## y'₁ = y'₀ + h∑bᵢk'ᵢ + @.. broadcast=false kdu=duprev + halfdt * k₁ + + f.f1(k₂, kdu, ku, p, ttmp) + @.. broadcast=false ku=uprev + halfdt * duprev + eighth_dtsq * k₁ + @.. broadcast=false kdu=duprev + halfdt * k₂ + + f.f1(k₃, kdu, ku, p, ttmp) + @.. broadcast=false ku=uprev + dt * duprev + half_dtsq * k₃ + @.. broadcast=false kdu=duprev + dt * k₃ + + f.f1(k₄, kdu, ku, p, t + dt) + @.. broadcast=false u=uprev + (dtsq / 6) * (k₁ + k₂ + k₃) + dt * duprev + @.. broadcast=false du=duprev + (dt / 6) * (k₁ + k₄ + 2 * (k₂ + k₃)) + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 +end + +@muladd function perform_step!(integrator, cache::FineRKN4ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, + a52, a53, a54, abar21, abar31, abar32, abar41, abar42, abar43, abar51, + abar52, abar53, abar54, b1, b3, b4, b5, bbar1, bbar3, bbar4, bbar5, btilde1, btilde3, btilde4, btilde5, bptilde1, + bptilde3, bptilde4, bptilde5 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c2 * duprev + dt * (a21 * k1)) + kdu = duprev + dt * (abar21 * k1) + + k2 = f.f1(kdu, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a31 * k1 + a32 * k2)) + kdu = duprev + dt * (abar31 * k1 + abar32 * k2) + + k3 = f.f1(kdu, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a41 * k1 + a43 * k3)) # a42 = 0 + kdu = duprev + dt * (abar41 * k1 + abar42 * k2 + abar43 * k3) + + k4 = f.f1(kdu, ku, p, t + dt * c4) + ku = uprev + dt * (c5 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + kdu = duprev + dt * (abar51 * k1 + abar52 * k2 + abar53 * k3 + abar54 * k4) + + k5 = f.f1(kdu, ku, p, t + dt * c5) + + u = uprev + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) # b2 = 0 + du = duprev + dt * (bbar1 * k1 + bbar3 * k3 + bbar4 * k4 + bbar5 * k5) # bbar2 = 0 + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 5 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5) # btilde2 = 0 + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5) # bptilde2 = 0 + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::FineRKN4Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k, utilde = cache + @unpack c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, + a52, a53, a54, abar21, abar31, abar32, abar41, abar42, abar43, abar51, + abar52, abar53, abar54, b1, b3, b4, b5, bbar1, bbar3, bbar4, bbar5, btilde1, btilde3, btilde4, btilde5, bptilde1, + bptilde3, bptilde4, bptilde5 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a21 * k1)) + @.. broadcast=false kdu=duprev + dt * (abar21 * k1) + + f.f1(k2, kdu, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + dt * (c3 * duprev + dt * (a31 * k1 + a32 * k2)) + @.. broadcast=false kdu=duprev + dt * (abar31 * k1 + abar32 * k2) + + f.f1(k3, kdu, ku, p, t + dt * c3) + @.. broadcast=false ku=uprev + + dt * (c4 * duprev + dt * (a41 * k1 + a43 * k3)) # a42 = 0 + @.. broadcast=false kdu=duprev + dt * (abar41 * k1 + abar42 * k2 + abar43 * k3) + + f.f1(k4, kdu, ku, p, t + dt * c4) + @.. broadcast=false ku=uprev + + dt * + (c5 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + @.. broadcast=false kdu=duprev + + dt * (abar51 * k1 + abar52 * k2 + abar53 * k3 + abar54 * k4) + + f.f1(k5, kdu, ku, p, t + dt * c5) + @.. broadcast=false u=uprev + + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) # b2 = 0 + @.. broadcast=false du=duprev + + dt * + (bbar1 * k1 + bbar3 * k3 + bbar4 * k4 + bbar5 * k5) # bbar2 = 0 + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 5 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @.. broadcast=false uhat=dtsq * + (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + + btilde5 * k5) # btilde2 = 0 + @.. broadcast=false duhat=dt * + (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + + bptilde5 * k5) # bptilde2 = 0 + + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::FineRKN5ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c2, c3, c4, c5, c6, c7, a21, a31, a32, a41, a43, a51, a52, a53, a54, a61, a62, a63, a64, a71, a73, a74, a75, abar21, abar31, abar32, abar41, abar42, abar43, abar51, abar52, abar53, abar54, abar61, abar62, abar63, abar64, abar65, abar71, abar73, abar74, abar75, abar76, b1, b3, b4, b5, bbar1, bbar3, bbar4, bbar5, bbar6, btilde1, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c2 * duprev + dt * (a21 * k1)) + kdu = duprev + dt * (abar21 * k1) + + k2 = f.f1(kdu, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a31 * k1 + a32 * k2)) + kdu = duprev + dt * (abar31 * k1 + abar32 * k2) + + k3 = f.f1(kdu, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a41 * k1 + a43 * k3)) # a42 = 0 + kdu = duprev + dt * (abar41 * k1 + abar42 * k2 + abar43 * k3) + + k4 = f.f1(kdu, ku, p, t + dt * c4) + ku = uprev + dt * (c5 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + kdu = duprev + dt * (abar51 * k1 + abar52 * k2 + abar53 * k3 + abar54 * k4) + + k5 = f.f1(kdu, ku, p, t + dt * c5) + ku = uprev + + dt * (c6 * duprev + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4)) # a65 = 0 + kdu = duprev + + dt * (abar61 * k1 + abar62 * k2 + abar63 * k3 + abar64 * k4 + abar65 * k5) + + k6 = f.f1(kdu, ku, p, t + dt * c6) + ku = uprev + + dt * (c7 * duprev + + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5)) # a72 = a76 = 0 + kdu = duprev + + dt * (abar71 * k1 + abar73 * k3 + abar74 * k4 + abar75 * k5 + + abar76 * k6) # abar72 = 0 + + k7 = f.f1(kdu, ku, p, t + dt * c7) + u = uprev + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) # no b6, b7 + du = duprev + dt * (bbar1 * k1 + bbar3 * k3 + bbar4 * k4 + bbar5 * k5 + bbar6 * k6) # no b2, b7 + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 7 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5) + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5 + + bptilde6 * k6 + bptilde7 * k7) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::FineRKN5Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k7, k, utilde = cache + @unpack c1, c2, c3, c4, c5, c6, c7, a21, a31, a32, a41, a43, a51, a52, a53, a54, a61, a62, a63, a64, a71, a73, a74, a75, abar21, abar31, abar32, abar41, abar42, abar43, abar51, abar52, abar53, abar54, abar61, abar62, abar63, abar64, abar65, abar71, abar73, abar74, abar75, abar76, b1, b3, b4, b5, bbar1, bbar3, bbar4, bbar5, bbar6, btilde1, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a21 * k1)) + @.. broadcast=false kdu=duprev + dt * (abar21 * k1) + + f.f1(k2, kdu, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + dt * (c3 * duprev + dt * (a31 * k1 + a32 * k2)) + @.. broadcast=false kdu=duprev + dt * (abar31 * k1 + abar32 * k2) + + f.f1(k3, kdu, ku, p, t + dt * c3) + @.. broadcast=false ku=uprev + + dt * (c4 * duprev + dt * (a41 * k1 + a43 * k3)) # a42 = 0 + @.. broadcast=false kdu=duprev + dt * (abar41 * k1 + abar42 * k2 + abar43 * k3) + + f.f1(k4, kdu, ku, p, t + dt * c4) + @.. broadcast=false ku=uprev + + dt * + (c5 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + @.. broadcast=false kdu=duprev + + dt * (abar51 * k1 + abar52 * k2 + abar53 * k3 + abar54 * k4) + + f.f1(k5, kdu, ku, p, t + dt * c5) + @.. broadcast=false ku=uprev + + dt * (c6 * duprev + + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4)) # a65 = 0 + @.. broadcast=false kdu=duprev + + dt * (abar61 * k1 + abar62 * k2 + abar63 * k3 + abar64 * k4 + + abar65 * k5) + + f.f1(k6, kdu, ku, p, t + dt * c6) + @.. broadcast=false ku=uprev + + dt * (c7 * duprev + + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5)) # a72 = a76 = 0 + @.. broadcast=false kdu=duprev + + dt * (abar71 * k1 + abar73 * k3 + abar74 * k4 + + abar75 * k5 + abar76 * k6) # abar72 = 0 + + f.f1(k7, kdu, ku, p, t + dt * c7) + @.. broadcast=false u=uprev + + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) + @.. broadcast=false du=duprev + + dt * + (bbar1 * k1 + bbar3 * k3 + bbar4 * k4 + bbar5 * k5 + bbar6 * k6) + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 7 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @.. broadcast=false uhat=dtsq * + (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + + btilde5 * k5) + @.. broadcast=false duhat=dt * + (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + + bptilde5 * k5 + bptilde6 * k6 + bptilde7 * k7) + + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::Nystrom4VelocityIndependentConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + k₁ = integrator.fsalfirst.x[1] + halfdt = dt / 2 + dtsq = dt^2 + eighth_dtsq = dtsq / 8 + half_dtsq = dtsq / 2 + ttmp = t + halfdt + + ## y₁ = y₀ + hy'₀ + h²∑b̄ᵢk'ᵢ + ku = uprev + halfdt * duprev + eighth_dtsq * k₁ + + k₂ = f.f1(duprev, ku, p, ttmp) + ku = uprev + dt * duprev + half_dtsq * k₂ + + k₃ = f.f1(duprev, ku, p, t + dt) + u = uprev + (dtsq / 6) * (k₁ + 2 * k₂) + dt * duprev + du = duprev + (dt / 6) * (k₁ + k₃ + 4 * k₂) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 3 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Nystrom4VelocityIndependentCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, fsalfirst, k₂, k₃, k = cache + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + k₁ = integrator.fsalfirst.x[1] + halfdt = dt / 2 + dtsq = dt^2 + eighth_dtsq = dtsq / 8 + half_dtsq = dtsq / 2 + ttmp = t + halfdt + + ## y₁ = y₀ + hy'₀ + h²∑b̄ᵢk'ᵢ + @.. broadcast=false ku=uprev + halfdt * duprev + eighth_dtsq * k₁ + + f.f1(k₂, duprev, ku, p, ttmp) + @.. broadcast=false ku=uprev + dt * duprev + half_dtsq * k₂ + + f.f1(k₃, duprev, ku, p, t + dt) + @.. broadcast=false u=uprev + (dtsq / 6) * (k₁ + 2 * k₂) + dt * duprev + @.. broadcast=false du=duprev + (dt / 6) * (k₁ + k₃ + 4 * k₂) + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 3 + integrator.stats.nf2 += 1 +end + +@muladd function perform_step!(integrator, cache::IRKN3ConstantCache, repeat_step = false) + @unpack t, dt, k, tprev, f, p = integrator + duprev, uprev = integrator.uprev.x + duprev2, uprev2 = integrator.uprev2.x + @unpack bconst1, bconst2, c1, a21, b1, b2, bbar1, bbar2 = cache + k₁ = integrator.fsalfirst + # if there's a discontinuity or the solver is in the first step + if integrator.iter < 2 && !integrator.u_modified + perform_step!(integrator, Nystrom4VelocityIndependentConstantCache()) + k = integrator.fsallast + k1cache = ArrayPartition((k.x[1], f.f1(duprev, uprev, p, t + c1 * dt))) + kdu = uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[1]) + k₂.x[1] = f.f1(duprev, kdu, p, t + c1 * dt) + integrator.stats.nf += 2 + else + kdu = uprev2 + dt * (c1 * duprev2 + dt * a21 * k1cache.x[1]) + ku = uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[2]) + + k₂x1 = f.f1(duprev, ku, p, t + c1 * dt) + du = duprev + + dt * (b1 * k1cache.x[1] + bbar1 * k1cache.x[1] + b2 * (k₂x1 - k₂.x[1])) + u = uprev + bconst1 * dt * duprev + + dt * (bconst2 * duprev2 + dt * bbar2 * (k₂x1 - k₂.x[1])) + + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), + f.f2(du, u, p, t + dt))) + integrator.stats.nf += 3 + integrator.stats.nf2 += 1 + copyto!(k₂.x[1], k₂.x[2]) + k1cache = ArrayPartition((k1cache.x[1], k.x[2])) + end # end if +end + +@muladd function perform_step!(integrator, cache::IRKN3Cache, repeat_step = false) + @unpack t, dt, k, tprev, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + duprev2, uprev2 = integrator.uprev2.x + uidx = eachindex(integrator.uprev.x[1]) + @unpack tmp, fsalfirst, k₂, k = cache + @unpack bconst1, bconst2, c1, a21, b1, b2, bbar1, bbar2 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + k1cache = cache.tmp2 + k₁ = fsalfirst + # if there's a discontinuity or the solver is in the first step + if integrator.iter < 2 && !integrator.u_modified + perform_step!(integrator, integrator.cache.onestep_cache) + copyto!(k1cache.x[1], k.x[1]) + f.f1(k1cache.x[2], duprev, uprev, p, t + c1 * dt) + @.. broadcast=false kdu=uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[2]) + f.f1(k₂.x[1], duprev, kdu, p, t + c1 * dt) + integrator.stats.nf += 2 + else + @.. broadcast=false kdu=uprev2 + dt * (c1 * duprev2 + dt * a21 * k1cache.x[1]) + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[2]) + + f.f1(k₂.x[2], duprev, ku, p, t + c1 * dt) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + bconst1 * dt * duprev[i] + + dt * + (bconst2 * duprev2[i] + dt * bbar2 * (k₂.x[2][i] - k₂.x[1][i])) + @inbounds du[i] = duprev[i] + + dt * (b1 * k1cache.x[1][i] + bbar1 * k1cache.x[2][i] + + b2 * (k₂.x[2][i] - k₂.x[1][i])) + end + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 3 + integrator.stats.nf2 += 1 + copyto!(k₂.x[1], k₂.x[2]) + copyto!(k1cache.x[2], k1cache.x[1]) + copyto!(k1cache.x[1], k.x[1]) + end # end if +end + +@muladd function perform_step!(integrator, cache::IRKN4Cache, repeat_step = false) + @unpack t, dt, k, tprev, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + duprev2, uprev2 = integrator.uprev2.x + uidx = eachindex(integrator.uprev.x[1]) + @unpack tmp, tmp2, fsalfirst, k₂, k₃, k = cache + @unpack bconst1, bconst2, c1, c2, a21, a32, b1, b2, b3, bbar1, bbar2, bbar3 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + k1cache = integrator.cache.tmp2 + k₁ = fsalfirst + # if there's a discontinuity or the solver is in the first step + if integrator.iter < 2 && !integrator.u_modified + perform_step!(integrator, integrator.cache.onestep_cache) + copyto!(k1cache.x[1], k.x[1]) + f.f1(k1cache.x[2], duprev, uprev, p, t + c1 * dt) + @.. broadcast=false kdu=uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[1]) + f.f1(k₂.x[1], duprev, kdu, p, t + c1 * dt) + @.. broadcast=false kdu=uprev + dt * (c2 * duprev + dt * a32 * k1cache.x[2]) + f.f1(k₃.x[1], duprev, kdu, p, t + c1 * dt) + integrator.stats.nf += 3 + else + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1cache.x[1]) + @.. broadcast=false kdu=uprev2 + dt * (c1 * duprev2 + dt * a21 * k1cache.x[2]) + + f.f1(k₂.x[2], duprev, ku, p, t + c1 * dt) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * a32 * k₂.x[2]) + @.. broadcast=false kdu=uprev2 + dt * (c2 * duprev2 + dt * a32 * k₂.x[1]) + + f.f1(k₃.x[2], duprev, ku, p, t + c2 * dt) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + dt * bconst1 * duprev[i] + + dt * (bconst2 * duprev2[i] + + dt * (bbar2 * (k₂.x[2][i] - k₂.x[1][i]) + + bbar3 * (k₃.x[2][i] - k₃.x[1][i]))) + @inbounds du[i] = duprev[i] + + dt * (b1 * k1cache.x[1][i] + bbar1 * k1cache.x[2][i] + + b2 * (k₂.x[2][i] - k₂.x[1][i]) + + b3 * (k₃.x[2][i] - k₃.x[1][i])) + end + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + copyto!(k₂.x[1], k₂.x[2]) + copyto!(k₃.x[1], k₃.x[2]) + copyto!(k1cache.x[2], k1cache.x[1]) + copyto!(k1cache.x[1], k.x[1]) + end # end if +end + +@muladd function perform_step!(integrator, cache::Nystrom5VelocityIndependentConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, a21, a31, a32, a41, a42, a43, bbar1, bbar2, bbar3, b1, b2, b3, b4 = cache + k₁ = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k₁) + + k₂ = f.f1(duprev, ku, p, t + c1 * dt) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k₁ + a32 * k₂)) + + k₃ = f.f1(duprev, ku, p, t + c2 * dt) + ku = uprev + dt * (duprev + dt * (a41 * k₁ + a42 * k₂ + a43 * k₃)) + + k₄ = f.f1(duprev, ku, p, t + dt) + u = uprev + dt * (duprev + dt * (bbar1 * k₁ + bbar2 * k₂ + bbar3 * k₃)) + du = duprev + dt * (b1 * k₁ + b2 * k₂ + b3 * k₃ + b4 * k₄) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::Nystrom5VelocityIndependentCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + uidx = eachindex(integrator.uprev.x[1]) + @unpack tmp, fsalfirst, k₂, k₃, k₄, k = cache + @unpack c1, c2, a21, a31, a32, a41, a42, a43, bbar1, bbar2, bbar3, b1, b2, b3, b4 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + k₁ = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k₁) + + f.f1(k₂, du, ku, p, t + c1 * dt) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k₁ + a32 * k₂)) + + f.f1(k₃, du, ku, p, t + c2 * dt) + #@tight_loop_macros for i in uidx + # @inbounds ku[i] = uprev[i] + dt*(duprev[i] + dt*(a41*k₁[i] + a42*k₂[i] + a43*k₃[i])) + #end + @.. broadcast=false ku=uprev + dt * (duprev + dt * (a41 * k₁ + a42 * k₂ + a43 * k₃)) + + f.f1(k₄, duprev, ku, p, t + dt) + #@tight_loop_macros for i in uidx + # @inbounds u[i] = uprev[i] + dt*(duprev[i] + dt*(bbar1*k₁[i] + bbar2*k₂[i] + bbar3*k₃[i])) + # @inbounds du[i] = duprev[i] + dt*(b1*k₁[i] + b2*k₂[i] + b3*k₃[i] + b4*k₄[i]) + #end + @.. broadcast=false u=uprev + + dt * (duprev + dt * (bbar1 * k₁ + bbar2 * k₂ + bbar3 * k₃)) + @.. broadcast=false du=duprev + dt * (b1 * k₁ + b2 * k₂ + b3 * k₃ + b4 * k₄) + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + return nothing +end + +@muladd function perform_step!(integrator, cache::DPRKN4ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, bptilde1, bptilde2, bptilde3, bptilde4 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + + u = uprev + dt * (duprev + dt * (b1 * k1 + b2 * k2 + b3 * k3)) + du = duprev + dt * (bp1 * k1 + bp2 * k2 + bp3 * k3 + bp4 * k4) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + btilde4 * k4) + duhat = dt * (bptilde1 * k1 + bptilde2 * k2 + bptilde3 * k3 + bptilde4 * k4) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN4Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k, utilde = cache + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, bptilde1, bptilde2, bptilde3, bptilde4 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * (b1 * k1[i] + b2 * k2[i] + b3 * k3[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp2 * k2[i] + bp3 * k3[i] + bp4 * k4[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde2 * k2[i] + btilde3 * k3[i] + + btilde4 * k4[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde2 * k2[i] + bptilde3 * k3[i] + + bptilde4 * k4[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN5ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, bp3, bp4, bp5, bp6, btilde1, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a53 * k3 + a54 * k4)) + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + + dt * (c5 * duprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5)) + + k6 = f.f1(duprev, ku, p, t + dt * c5) + u = uprev + + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) + du = duprev + + dt * (bp1 * k1 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5) + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5 + + bptilde6 * k6) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN5Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k, utilde = cache + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, bp3, bp4, bp5, bp6, btilde1, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c4 * duprev[i] + + dt * (a51 * k1[i] + a53 * k3[i] + a54 * k4[i])) + end + + f.f1(k5, duprev, ku, p, t + dt * c4) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c5 * duprev[i] + + dt * (a61 * k1[i] + a63 * k3[i] + a64 * k4[i] + a65 * k5[i])) + end + + f.f1(k6, duprev, ku, p, t + dt * c5) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * (b1 * k1[i] + b3 * k3[i] + b4 * k4[i] + b5 * k5[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp3 * k3[i] + bp4 * k4[i] + bp5 * k5[i] + + bp6 * k6[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde3 * k3[i] + btilde4 * k4[i] + + btilde5 * k5[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde3 * k3[i] + bptilde4 * k4[i] + + bptilde5 * k5[i] + bptilde6 * k6[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +function initialize!(integrator, cache::DPRKN6ConstantCache) + duprev, uprev = integrator.uprev.x + integrator.kshortsize = 3 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + kdu = integrator.f.f1(duprev, uprev, integrator.p, integrator.t) + ku = integrator.f.f2(duprev, uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + integrator.fsalfirst = ArrayPartition((kdu, ku)) + integrator.fsallast = zero(integrator.fsalfirst) + + integrator.k[1] = integrator.fsalfirst + @inbounds for i in 2:(integrator.kshortsize - 1) + integrator.k[i] = zero(integrator.fsalfirst) + end + integrator.k[integrator.kshortsize] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::DPRKN6ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + dt * (c5 * duprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5)) # no a62 + + k6 = f.f1(duprev, ku, p, t + dt * c5) + u = uprev + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) # b1 -- b5, no b2 + du = duprev + dt * (bp1 * k1 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6) # bp1 -- bp6, no bp2 + + #= + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + dt*(duprev[i] + dt*(bhat1*k1.x[2][i] + bhat2*k2.x[2][i] + bhat3*k3.x[2][i])) + @inbounds du[i] = duprev[i]+ dt*(bphat1*k1.x[2][i] + bphat3*k3.x[2][i] + bphat4*k4.x[2][i] + bphat5*k5.x[2][i] + bphat6*k6.x[2][i]) + end + =# + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.k[1] = ArrayPartition(integrator.fsalfirst.x[1], k2) + integrator.k[2] = ArrayPartition(k3, k4) + integrator.k[3] = ArrayPartition(k5, k6) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * + (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5) + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5 + + bptilde6 * k6) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +function initialize!(integrator, cache::DPRKN6Cache) + @unpack fsalfirst, k = cache + duprev, uprev = integrator.uprev.x + + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 3 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = ArrayPartition(cache.fsalfirst.x[1], cache.k2) + integrator.k[2] = ArrayPartition(cache.k3, cache.k4) + integrator.k[3] = ArrayPartition(cache.k5, cache.k6) + integrator.f.f1(integrator.fsallast.x[1], duprev, uprev, integrator.p, integrator.t) + integrator.f.f2(integrator.fsallast.x[2], duprev, uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 +end + +@muladd function perform_step!(integrator, cache::DPRKN6Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k, utilde = cache + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, du, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, du, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, du, ku, p, t + dt * c3) + @.. broadcast=false ku=uprev + + dt * + (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + f.f1(k5, du, ku, p, t + dt * c4) + @.. broadcast=false ku=uprev + + dt * + (c5 * duprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5)) # no a62 + + f.f1(k6, du, ku, p, t + dt * c5) + + @.. broadcast=false u=uprev + + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5)) # b1 -- b5, no b2 + @.. broadcast=false du=duprev + + dt * (bp1 * k1 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6) # bp1 -- bp6, no bp2 + + #= + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + dt*(duprev[i] + dt*(bhat1*k1.x[2][i] + bhat2*k2.x[2][i] + bhat3*k3.x[2][i])) + @inbounds du[i] = duprev[i]+ dt*(bphat1*k1.x[2][i] + bphat3*k3.x[2][i] + bphat4*k4.x[2][i] + bphat5*k5.x[2][i] + bphat6*k6.x[2][i]) + end + =# + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @.. broadcast=false uhat=dtsq * (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + + btilde4 * k4 + btilde5 * k5) + @.. broadcast=false duhat=dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + + bptilde5 * k5 + bptilde6 * k6) + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN6FMConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, b1, b2, b3, b4, b5, bp1, bp2, bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, bptilde1, bptilde2, bptilde3, bptilde4, bptilde5 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + + dt * (c5 * duprev + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4 + a65 * k5)) + + k6 = f.f1(duprev, ku, p, t + dt * c5) + u = uprev + + dt * (duprev + dt * (b1 * k1 + b2 * k2 + b3 * k3 + b4 * k4 + b5 * k5)) + du = duprev + + dt * (bp1 * k1 + bp2 * k2 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * + (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5) + duhat = dt * (bptilde1 * k1 + bptilde2 * k2 + bptilde3 * k3 + bptilde4 * k4 + + bptilde5 * k5) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN6FMCache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k, utilde = cache + @unpack c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, b1, b2, b3, b4, b5, bp1, bp2, bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, bptilde1, bptilde2, bptilde3, bptilde4, bptilde5 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c4 * duprev[i] + + dt * (a51 * k1[i] + a52 * k2[i] + a53 * k3[i] + a54 * k4[i])) + end + + f.f1(k5, duprev, ku, p, t + dt * c4) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c5 * duprev[i] + + dt * (a61 * k1[i] + a62 * k2[i] + a63 * k3[i] + a64 * k4[i] + + a65 * k5[i])) + end + + f.f1(k6, duprev, ku, p, t + dt * c5) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * + (b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b4 * k4[i] + b5 * k5[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp2 * k2[i] + bp3 * k3[i] + bp4 * k4[i] + + bp5 * k5[i] + bp6 * k6[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 6 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde2 * k2[i] + btilde3 * k3[i] + + btilde4 * k4[i] + btilde5 * k5[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde2 * k2[i] + bptilde3 * k3[i] + + bptilde4 * k4[i] + bptilde5 * k5[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN8ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, c6, c7, c8, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, a71, a72, a73, a74, a75, a76, a81, a82, a83, a84, a85, a86, a87, a91, a93, a94, a95, a96, a97, b1, b3, b4, b5, b6, b7, bp1, bp3, bp4, bp5, bp6, bp7, bp8, btilde1, btilde3, btilde4, btilde5, btilde6, btilde7, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7, bptilde8, bptilde9 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + + dt * (c5 * duprev + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4 + a65 * k5)) + + k6 = f.f1(duprev, ku, p, t + dt * c5) + ku = uprev + + dt * (c6 * duprev + + dt * (a71 * k1 + a72 * k2 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6)) + + k7 = f.f1(duprev, ku, p, t + dt * c6) + ku = uprev + + dt * (c7 * duprev + + dt * (a81 * k1 + a82 * k2 + a83 * k3 + a84 * k4 + a85 * k5 + a86 * k6 + a87 * k7)) + + k8 = f.f1(duprev, ku, p, t + dt * c7) + ku = uprev + + dt * (c8 * duprev + + dt * (a91 * k1 + a93 * k3 + a94 * k4 + a95 * k5 + a96 * k6 + a97 * k7)) # no a92 & a98 + + k9 = f.f1(duprev, ku, p, t + dt * c8) + u = uprev + + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5 + b6 * k6 + b7 * k7)) # b1 -- b7, no b2 + du = duprev + + dt * (bp1 * k1 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6 + bp7 * k7 + bp8 * k8) # bp1 -- bp8, no bp2 + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 9 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * + (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5 + btilde6 * k6 + + btilde7 * k7) + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5 + + bptilde6 * k6 + bptilde7 * k7 + bptilde8 * k8 + bptilde9 * k9) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN8Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k7, k8, k9, k, utilde = cache + @unpack c1, c2, c3, c4, c5, c6, c7, c8, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, a71, a72, a73, a74, a75, a76, a81, a82, a83, a84, a85, a86, a87, a91, a93, a94, a95, a96, a97, b1, b3, b4, b5, b6, b7, bp1, bp3, bp4, bp5, bp6, bp7, bp8, btilde1, btilde3, btilde4, btilde5, btilde6, btilde7, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7, bptilde8, bptilde9 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c4 * duprev[i] + + dt * (a51 * k1[i] + a52 * k2[i] + a53 * k3[i] + a54 * k4[i])) + end + + f.f1(k5, duprev, ku, p, t + dt * c4) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c5 * duprev[i] + + dt * (a61 * k1[i] + a62 * k2[i] + a63 * k3[i] + a64 * k4[i] + + a65 * k5[i])) + end + + f.f1(k6, duprev, ku, p, t + dt * c5) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c6 * duprev[i] + + dt * (a71 * k1[i] + a72 * k2[i] + a73 * k3[i] + a74 * k4[i] + + a75 * k5[i] + a76 * k6[i])) + end + + f.f1(k7, duprev, ku, p, t + dt * c6) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c7 * duprev[i] + + dt * (a81 * k1[i] + a82 * k2[i] + a83 * k3[i] + a84 * k4[i] + + a85 * k5[i] + a86 * k6[i] + a87 * k7[i])) + end + + f.f1(k8, duprev, ku, p, t + dt * c7) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c8 * duprev[i] + + dt * (a91 * k1[i] + a93 * k3[i] + a94 * k4[i] + a95 * k5[i] + + a96 * k6[i] + a97 * k7[i])) # no a92 & a98 + end + + f.f1(k9, duprev, ku, p, t + dt * c8) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * + (b1 * k1[i] + b3 * k3[i] + b4 * k4[i] + b5 * k5[i] + b6 * k6[i] + + b7 * k7[i])) # b1 -- b7, no b2 + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp3 * k3[i] + bp4 * k4[i] + bp5 * k5[i] + + bp6 * k6[i] + bp7 * k7[i] + bp8 * k8[i]) # bp1 -- bp8, no bp2 + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 9 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde3 * k3[i] + btilde4 * k4[i] + + btilde5 * k5[i] + btilde6 * k6[i] + btilde7 * k7[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde3 * k3[i] + bptilde4 * k4[i] + + bptilde5 * k5[i] + bptilde6 * k6[i] + bptilde7 * k7[i] + + bptilde8 * k8[i] + bptilde9 * k9[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN12ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, a21, a31, a32, a41, a42, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a84, a85, a86, a87, a91, a93, a94, a95, a96, a97, a98, a101, a103, a104, a105, a106, a107, a108, a109, a111, a113, a114, a115, a116, a117, a118, a119, a1110, a121, a123, a124, a125, a126, a127, a128, a129, a1210, a1211, a131, a133, a134, a135, a136, a137, a138, a139, a1310, a1311, a1312, a141, a143, a144, a145, a146, a147, a148, a149, a1410, a1411, a1412, a1413, a151, a153, a154, a155, a156, a157, a158, a159, a1510, a1511, a1512, a1513, a1514, a161, a163, a164, a165, a166, a167, a168, a169, a1610, a1611, a1612, a1613, a1614, a1615, a171, a173, a174, a175, a176, a177, a178, a179, a1710, a1711, a1712, a1713, a1714, a1715, b1, b7, b8, b9, b10, b11, b12, b13, b14, b15, bp1, bp7, bp8, bp9, bp10, bp11, bp12, bp13, bp14, bp15, bp16, bp17, btilde1, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, btilde14, btilde15, bptilde1, bptilde7, bptilde8, bptilde9, bptilde10, bptilde11, bptilde12, bptilde13, bptilde14, bptilde15, bptilde16, bptilde17 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a53 * k3 + a54 * k4)) # no a52 + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + dt * (c5 * duprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5)) # no a62 + + k6 = f.f1(duprev, ku, p, t + dt * c5) + ku = uprev + + dt * (c6 * duprev + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6)) # no a72 + + k7 = f.f1(duprev, ku, p, t + dt * c6) + ku = uprev + + dt * (c7 * duprev + dt * (a81 * k1 + a84 * k4 + a85 * k5 + a86 * k6 + a87 * k7)) # no a82, a83 + + k8 = f.f1(duprev, ku, p, t + dt * c7) + ku = uprev + + dt * (c8 * duprev + + dt * (a91 * k1 + a93 * k3 + a94 * k4 + a95 * k5 + a96 * k6 + a97 * k7 + a98 * k8)) # no a92 + + k9 = f.f1(duprev, ku, p, t + dt * c8) + ku = uprev + + dt * (c9 * duprev + + dt * (a101 * k1 + a103 * k3 + a104 * k4 + a105 * k5 + a106 * k6 + a107 * k7 + + a108 * k8 + a109 * k9)) # no a102 + + k10 = f.f1(duprev, ku, p, t + dt * c9) + ku = uprev + + dt * (c10 * duprev + + dt * (a111 * k1 + a113 * k3 + a114 * k4 + a115 * k5 + a116 * k6 + a117 * k7 + + a118 * k8 + a119 * k9 + a1110 * k10)) # no a112 + + k11 = f.f1(duprev, ku, p, t + dt * c10) + ku = uprev + + dt * (c11 * duprev + + dt * (a121 * k1 + a123 * k3 + a124 * k4 + a125 * k5 + a126 * k6 + a127 * k7 + + a128 * k8 + a129 * k9 + a1210 * k10 + a1211 * k11)) # no a122 + + k12 = f.f1(duprev, ku, p, t + dt * c11) + ku = uprev + + dt * (c12 * duprev + + dt * (a131 * k1 + a133 * k3 + a134 * k4 + a135 * k5 + a136 * k6 + a137 * k7 + + a138 * k8 + a139 * k9 + a1310 * k10 + a1311 * k11 + a1312 * k12)) # no a132 + + k13 = f.f1(duprev, ku, p, t + dt * c12) + ku = uprev + + dt * (c13 * duprev + + dt * (a141 * k1 + a143 * k3 + a144 * k4 + a145 * k5 + a146 * k6 + a147 * k7 + + a148 * k8 + a149 * k9 + a1410 * k10 + a1411 * k11 + a1412 * k12 + a1413 * k13)) # no a142 + + k14 = f.f1(duprev, ku, p, t + dt * c13) + ku = uprev + + dt * (c14 * duprev + + dt * (a151 * k1 + a153 * k3 + a154 * k4 + a155 * k5 + a156 * k6 + a157 * k7 + + a158 * k8 + a159 * k9 + a1510 * k10 + a1511 * k11 + a1512 * k12 + a1513 * k13 + + a1514 * k14)) # no a152 + + k15 = f.f1(duprev, ku, p, t + dt * c14) + ku = uprev + + dt * (c15 * duprev + + dt * (a161 * k1 + a163 * k3 + a164 * k4 + a165 * k5 + a166 * k6 + a167 * k7 + + a168 * k8 + a169 * k9 + a1610 * k10 + a1611 * k11 + a1612 * k12 + a1613 * k13 + + a1614 * k14 + a1615 * k15)) # no a162 + + k16 = f.f1(duprev, ku, p, t + dt * c15) + ku = uprev + + dt * (c16 * duprev + + dt * (a171 * k1 + a173 * k3 + a174 * k4 + a175 * k5 + a176 * k6 + a177 * k7 + + a178 * k8 + a179 * k9 + a1710 * k10 + a1711 * k11 + a1712 * k12 + a1713 * k13 + + a1714 * k14 + a1715 * k15)) # no a172, a1716 + + k17 = f.f1(duprev, ku, p, t + dt * c16) + u = uprev + + dt * (duprev + + dt * (b1 * k1 + b7 * k7 + b8 * k8 + b9 * k9 + b10 * k10 + b11 * k11 + b12 * k12 + + b13 * k13 + b14 * k14 + b15 * k15)) # b1 & b7 -- b15 + du = duprev + + dt * + (bp1 * k1 + bp7 * k7 + bp8 * k8 + bp9 * k9 + bp10 * k10 + bp11 * k11 + bp12 * k12 + + bp13 * k13 + bp14 * k14 + bp15 * k15 + bp16 * k16 + bp17 * k17) # bp1 & bp7 -- bp17 + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 17 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * + (btilde1 * k1 + btilde7 * k7 + btilde8 * k8 + btilde9 * k9 + btilde10 * k10 + + btilde11 * k11 + btilde12 * k12 + btilde13 * k13 + btilde14 * k14 + + btilde15 * k15) # btilde1 & btilde7 -- btilde15 + duhat = dt * (bptilde1 * k1 + bptilde7 * k7 + bptilde8 * k8 + bptilde9 * k9 + + bptilde10 * k10 + bptilde11 * k11 + bptilde12 * k12 + bptilde13 * k13 + + bptilde14 * k14 + bptilde15 * k15 + bptilde16 * k16 + bptilde17 * k17) # bptilde1 & bptilde7 -- bptilde17 + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::DPRKN12Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k, utilde = cache + @unpack c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, a21, a31, a32, a41, a42, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a84, a85, a86, a87, a91, a93, a94, a95, a96, a97, a98, a101, a103, a104, a105, a106, a107, a108, a109, a111, a113, a114, a115, a116, a117, a118, a119, a1110, a121, a123, a124, a125, a126, a127, a128, a129, a1210, a1211, a131, a133, a134, a135, a136, a137, a138, a139, a1310, a1311, a1312, a141, a143, a144, a145, a146, a147, a148, a149, a1410, a1411, a1412, a1413, a151, a153, a154, a155, a156, a157, a158, a159, a1510, a1511, a1512, a1513, a1514, a161, a163, a164, a165, a166, a167, a168, a169, a1610, a1611, a1612, a1613, a1614, a1615, a171, a173, a174, a175, a176, a177, a178, a179, a1710, a1711, a1712, a1713, a1714, a1715, b1, b7, b8, b9, b10, b11, b12, b13, b14, b15, bp1, bp7, bp8, bp9, bp10, bp11, bp12, bp13, bp14, bp15, bp16, bp17, btilde1, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, btilde14, btilde15, bptilde1, bptilde7, bptilde8, bptilde9, bptilde10, bptilde11, bptilde12, bptilde13, bptilde14, bptilde15, bptilde16, bptilde17 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * + (c4 * duprev[i] + dt * (a51 * k1[i] + a53 * k3[i] + a54 * k4[i])) # no a52 + end + + f.f1(k5, duprev, ku, p, t + dt * c4) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c5 * duprev[i] + + dt * (a61 * k1[i] + a63 * k3[i] + a64 * k4[i] + a65 * k5[i])) # no a62 + end + + f.f1(k6, duprev, ku, p, t + dt * c5) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c6 * duprev[i] + + dt * (a71 * k1[i] + a73 * k3[i] + a74 * k4[i] + a75 * k5[i] + + a76 * k6[i])) # no a72 + end + + f.f1(k7, duprev, ku, p, t + dt * c6) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c7 * duprev[i] + + dt * (a81 * k1[i] + a84 * k4[i] + a85 * k5[i] + a86 * k6[i] + + a87 * k7[i])) # no a82, a83 + end + + f.f1(k8, duprev, ku, p, t + dt * c7) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c8 * duprev[i] + + dt * (a91 * k1[i] + a93 * k3[i] + a94 * k4[i] + a95 * k5[i] + + a96 * k6[i] + a97 * k7[i] + a98 * k8[i])) # no a92 + end + + f.f1(k9, duprev, ku, p, t + dt * c8) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c9 * duprev[i] + + dt * + (a101 * k1[i] + a103 * k3[i] + a104 * k4[i] + a105 * k5[i] + + a106 * k6[i] + a107 * k7[i] + a108 * k8[i] + a109 * k9[i])) # no a102 + end + + f.f1(k10, duprev, ku, p, t + dt * c9) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c10 * duprev[i] + + dt * + (a111 * k1[i] + a113 * k3[i] + a114 * k4[i] + a115 * k5[i] + + a116 * k6[i] + a117 * k7[i] + a118 * k8[i] + a119 * k9[i] + + a1110 * k10[i])) # no a112 + end + + f.f1(k11, duprev, ku, p, t + dt * c10) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c11 * duprev[i] + + dt * + (a121 * k1[i] + a123 * k3[i] + a124 * k4[i] + a125 * k5[i] + + a126 * k6[i] + a127 * k7[i] + a128 * k8[i] + a129 * k9[i] + + a1210 * k10[i] + a1211 * k11[i])) # no a122 + end + + f.f1(k12, duprev, ku, p, t + dt * c11) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c12 * duprev[i] + + dt * + (a131 * k1[i] + a133 * k3[i] + a134 * k4[i] + a135 * k5[i] + + a136 * k6[i] + a137 * k7[i] + a138 * k8[i] + a139 * k9[i] + + a1310 * k10[i] + a1311 * k11[i] + a1312 * k12[i])) # no a132 + end + + f.f1(k13, duprev, ku, p, t + dt * c12) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c13 * duprev[i] + + dt * + (a141 * k1[i] + a143 * k3[i] + a144 * k4[i] + a145 * k5[i] + + a146 * k6[i] + a147 * k7[i] + a148 * k8[i] + a149 * k9[i] + + a1410 * k10[i] + a1411 * k11[i] + a1412 * k12[i] + + a1413 * k13[i])) # no a142 + end + + f.f1(k14, duprev, ku, p, t + dt * c13) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c14 * duprev[i] + + dt * + (a151 * k1[i] + a153 * k3[i] + a154 * k4[i] + a155 * k5[i] + + a156 * k6[i] + a157 * k7[i] + a158 * k8[i] + a159 * k9[i] + + a1510 * k10[i] + a1511 * k11[i] + a1512 * k12[i] + + a1513 * k13[i] + a1514 * k14[i])) # no a152 + end + + f.f1(k15, duprev, ku, p, t + dt * c14) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c15 * duprev[i] + + dt * + (a161 * k1[i] + a163 * k3[i] + a164 * k4[i] + a165 * k5[i] + + a166 * k6[i] + a167 * k7[i] + a168 * k8[i] + a169 * k9[i] + + a1610 * k10[i] + a1611 * k11[i] + a1612 * k12[i] + + a1613 * k13[i] + a1614 * k14[i] + a1615 * k15[i])) # no a162 + end + + f.f1(k16, duprev, ku, p, t + dt * c15) + @tight_loop_macros for i in uidx + @inbounds ku[i] = uprev[i] + + dt * (c16 * duprev[i] + + dt * + (a171 * k1[i] + a173 * k3[i] + a174 * k4[i] + a175 * k5[i] + + a176 * k6[i] + a177 * k7[i] + a178 * k8[i] + a179 * k9[i] + + a1710 * k10[i] + a1711 * k11[i] + a1712 * k12[i] + + a1713 * k13[i] + a1714 * k14[i] + a1715 * k15[i])) # no a172, a1716 + end + + f.f1(k17, duprev, ku, p, t + dt * c16) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * (b1 * k1[i] + b7 * k7[i] + b8 * k8[i] + b9 * k9[i] + + b10 * k10[i] + b11 * k11[i] + b12 * k12[i] + b13 * k13[i] + + b14 * k14[i] + b15 * k15[i])) # b1 & b7 -- b15 + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp7 * k7[i] + bp8 * k8[i] + bp9 * k9[i] + + bp10 * k10[i] + bp11 * k11[i] + bp12 * k12[i] + bp13 * k13[i] + + bp14 * k14[i] + bp15 * k15[i] + bp16 * k16[i] + bp17 * k17[i]) # bp1 & bp7 -- bp17 + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 17 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde7 * k7[i] + btilde8 * k8[i] + + btilde9 * k9[i] + btilde10 * k10[i] + btilde11 * k11[i] + + btilde12 * k12[i] + btilde13 * k13[i] + btilde14 * k14[i] + + btilde15 * k15[i]) # btilde1 & btilde7 -- btilde15 + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde7 * k7[i] + bptilde8 * k8[i] + + bptilde9 * k9[i] + bptilde10 * k10[i] + + bptilde11 * k11[i] + bptilde12 * k12[i] + + bptilde13 * k13[i] + bptilde14 * k14[i] + + bptilde15 * k15[i] + bptilde16 * k16[i] + + bptilde17 * k17[i]) # bptilde1 & bptilde7 -- bptilde17 + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN4ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, bptilde1, bptilde2, bptilde3, bptilde4 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + u = uprev + dt * (duprev + dt * (b1 * k1 + b2 * k2 + b3 * k3 + b4 * k4)) + du = duprev + dt * (bp1 * k1 + bp2 * k2 + bp3 * k3 + bp4 * k4) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + btilde4 * k4) + duhat = dt * (bptilde1 * k1 + bptilde2 * k2 + bptilde3 * k3 + bptilde4 * k4) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN4Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k, utilde = cache + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, bptilde1, bptilde2, bptilde3, bptilde4 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * (b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b4 * k4[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp2 * k2[i] + bp3 * k3[i] + bp4 * k4[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde2 * k2[i] + btilde3 * k3[i] + + btilde4 * k4[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde2 * k2[i] + bptilde3 * k3[i] + + bptilde4 * k4[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN5ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + u = uprev + dt * (duprev + dt * (b1 * k1 + b2 * k2 + b3 * k3 + b4 * k4)) + du = duprev + dt * (bp1 * k1 + bp2 * k2 + bp3 * k3 + bp4 * k4) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * (btilde1 * k1 + btilde2 * k2 + btilde3 * k3 + btilde4 * k4) + atmp = calculate_residuals(uhat, integrator.uprev.x[2], integrator.u.x[2], + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN5Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k, utilde = cache + @unpack c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * (b1 * k1[i] + b2 * k2[i] + b3 * k3[i] + b4 * k4[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp2 * k2[i] + bp3 * k3[i] + bp4 * k4[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde2 * k2[i] + btilde3 * k3[i] + + btilde4 * k4[i]) + end + calculate_residuals!(atmp.x[2], uhat, integrator.uprev.x[2], integrator.u.x[2], + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp.x[2], t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN7ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, a71, a73, a74, a75, a76, b1, b3, b4, b5, b6, bp1, bp3, bp4, bp5, bp6, bp7, btilde1, btilde3, btilde4, btilde5, btilde6, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7 = cache + k1 = integrator.fsalfirst.x[1] + + ku = uprev + dt * (c1 * duprev + dt * a21 * k1) + + k2 = f.f1(duprev, ku, p, t + dt * c1) + ku = uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + k3 = f.f1(duprev, ku, p, t + dt * c2) + ku = uprev + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + k4 = f.f1(duprev, ku, p, t + dt * c3) + ku = uprev + dt * (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + k5 = f.f1(duprev, ku, p, t + dt * c4) + ku = uprev + + dt * (c5 * duprev + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4 + a65 * k5)) + + k6 = f.f1(duprev, ku, p, t + dt * c5) + ku = uprev + + dt * (c6 * duprev + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6)) + + k7 = f.f1(duprev, ku, p, t + dt * c6) + u = uprev + dt * (duprev + dt * (b1 * k1 + b3 * k3 + b4 * k4 + b5 * k5 + b6 * k6)) + du = duprev + dt * (bp1 * k1 + bp3 * k3 + bp4 * k4 + bp5 * k5 + bp6 * k6 + bp7 * k7) + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((f.f1(du, u, p, t + dt), f.f2(du, u, p, t + dt))) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + if integrator.opts.adaptive + dtsq = dt^2 + uhat = dtsq * + (btilde1 * k1 + btilde3 * k3 + btilde4 * k4 + btilde5 * k5 + btilde6 * k6) + duhat = dt * (bptilde1 * k1 + bptilde3 * k3 + bptilde4 * k4 + bptilde5 * k5 + + bptilde6 * k6 + bptilde7 * k7) + utilde = ArrayPartition((duhat, uhat)) + atmp = calculate_residuals(utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +@muladd function perform_step!(integrator, cache::ERKN7Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + du, u = integrator.u.x + duprev, uprev = integrator.uprev.x + @unpack tmp, atmp, fsalfirst, k2, k3, k4, k5, k6, k7, k, utilde = cache + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a42, a43, a51, a52, a53, a54, a61, a62, a63, a64, a65, a71, a73, a74, a75, a76, b1, b3, b4, b5, b6, bp1, bp3, bp4, bp5, bp6, bp7, btilde1, btilde3, btilde4, btilde5, btilde6, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7 = cache.tab + kdu, ku = integrator.cache.tmp.x[1], integrator.cache.tmp.x[2] + uidx = eachindex(integrator.uprev.x[2]) + k1 = integrator.fsalfirst.x[1] + + @.. broadcast=false ku=uprev + dt * (c1 * duprev + dt * a21 * k1) + + f.f1(k2, duprev, ku, p, t + dt * c1) + @.. broadcast=false ku=uprev + dt * (c2 * duprev + dt * (a31 * k1 + a32 * k2)) + + f.f1(k3, duprev, ku, p, t + dt * c2) + @.. broadcast=false ku=uprev + + dt * (c3 * duprev + dt * (a41 * k1 + a42 * k2 + a43 * k3)) + + f.f1(k4, duprev, ku, p, t + dt * c3) + @.. broadcast=false ku=uprev + + dt * + (c4 * duprev + dt * (a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4)) + + f.f1(k5, duprev, ku, p, t + dt * c4) + @.. broadcast=false ku=uprev + + dt * (c5 * duprev + + dt * (a61 * k1 + a62 * k2 + a63 * k3 + a64 * k4 + a65 * k5)) + + f.f1(k6, duprev, ku, p, t + dt * c5) + @.. broadcast=false ku=uprev + + dt * (c6 * duprev + + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6)) + + f.f1(k7, duprev, ku, p, t + dt * c6) + @tight_loop_macros for i in uidx + @inbounds u[i] = uprev[i] + + dt * (duprev[i] + + dt * + (b1 * k1[i] + b3 * k3[i] + b4 * k4[i] + b5 * k5[i] + b6 * k6[i])) + @inbounds du[i] = duprev[i] + + dt * (bp1 * k1[i] + bp3 * k3[i] + bp4 * k4[i] + bp5 * k5[i] + + bp6 * k6[i] + bp7 * k7[i]) + end + + f.f1(k.x[1], du, u, p, t + dt) + f.f2(k.x[2], du, u, p, t + dt) + integrator.stats.nf += 4 + integrator.stats.nf2 += 1 + if integrator.opts.adaptive + duhat, uhat = utilde.x + dtsq = dt^2 + @tight_loop_macros for i in uidx + @inbounds uhat[i] = dtsq * + (btilde1 * k1[i] + btilde3 * k3[i] + btilde4 * k4[i] + + btilde5 * k5[i] + btilde6 * k6[i]) + @inbounds duhat[i] = dt * + (bptilde1 * k1[i] + bptilde3 * k3[i] + bptilde4 * k4[i] + + bptilde5 * k5[i] + bptilde6 * k6[i] + bptilde7 * k7[i]) + end + calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u, + integrator.opts.abstol, integrator.opts.reltol, + integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end diff --git a/src/perform_step/ssprk_perform_step.jl b/src/perform_step/ssprk_perform_step.jl new file mode 100644 index 0000000000..4f39c2e83c --- /dev/null +++ b/src/perform_step/ssprk_perform_step.jl @@ -0,0 +1,1707 @@ +function initialize!(integrator, cache::SSPRK22ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK22ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + + # u1 -> stored as u + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + dt * integrator.fsalfirst + k = f(u, p, t + dt) + # u + u = (uprev + u + dt * k) / 2 + + integrator.stats.nf += 2 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK22Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK22Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, stage_limiter!, step_limiter!, thread = cache + + # u1 -> stored as u + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + dt * fsalfirst + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + # u + @.. broadcast=false thread=thread u=(uprev + u + dt * k) / 2 + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 2 +end + +function initialize!(integrator, cache::KYKSSPRK42Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +@muladd function perform_step!(integrator, cache::KYKSSPRK42Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, tmp, fsalfirst, stage_limiter!, step_limiter!, thread = cache + @unpack α20, α21, α30, α32, α40, α43, β10, β21, β30, β32, β40, β43, c1, c2, c3 = cache.tab + + δ = fsalfirst + # u1 -> stored as u + @.. broadcast=false thread=thread u=uprev + dt * β10 * δ + stage_limiter!(u, integrator, p, t + c1 * dt) + f(k, u, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread tmp=α20 * uprev + α21 * u + dt * β21 * k + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k, tmp, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread tmp=α30 * uprev + α32 * tmp + dt * β30 * δ + + dt * β32 * k + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k, tmp, p, t + c3 * dt) + # u + @.. broadcast=false thread=thread u=α40 * uprev + α43 * tmp + dt * β40 * δ + + dt * β43 * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) +end + +function initialize!(integrator, cache::KYKSSPRK42ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::KYKSSPRK42ConstantCache) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α20, α21, α30, α32, α40, α43, β10, β21, β30, β32, β40, β43, c1, c2, c3 = cache + + #u1 + δ = integrator.fsalfirst + u = uprev + dt * β10 * δ + k = f(u, p, t + c1 * dt) + #u2 + tmp = α20 * uprev + α21 * u + dt * β21 * k + k = f(tmp, p, t + c2 * dt) + #u3 + tmp = α30 * uprev + α32 * tmp + dt * β30 * δ + dt * β32 * k + k = f(tmp, p, t + c3 * dt) + #u + u = α40 * uprev + α43 * tmp + dt * β40 * δ + dt * β43 * k + + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.k[1] = integrator.fsalfirst + integrator.u = u +end + +function initialize!(integrator, cache::SHLDDRK52ConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::SHLDDRK52ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α2, α3, α4, α5, β1, β2, β3, β4, β5, c2, c3, c4, c5 = cache + + # u1 + tmp = dt * integrator.fsalfirst + u = uprev + β1 * tmp + # u2 + tmp = α2 * tmp + dt * f(u, p, t + c2 * dt) + u = u + β2 * tmp + # u3 + tmp = α3 * tmp + dt * f(u, p, t + c3 * dt) + u = u + β3 * tmp + # u4 + tmp = α4 * tmp + dt * f(u, p, t + c4 * dt) + u = u + β4 * tmp + # u5 = u + tmp = α5 * tmp + dt * f(u, p, t + c5 * dt) + u = u + β5 * tmp + + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::SHLDDRK52Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +@muladd function perform_step!(integrator, cache::SHLDDRK52Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack α2, α3, α4, α5, β1, β2, β3, β4, β5, c2, c3, c4, c5 = cache.tab + + # u1 + @.. thread=thread tmp=dt * fsalfirst + @.. thread=thread u=uprev + β1 * tmp + stage_limiter!(u, integrator, p, t + c2 * dt) + # u2 + f(k, u, p, t + c2 * dt) + @.. thread=thread tmp=α2 * tmp + dt * k + @.. thread=thread u=u + β2 * tmp + stage_limiter!(u, integrator, p, t + c3 * dt) + # u3 + f(k, u, p, t + c3 * dt) + @.. thread=thread tmp=α3 * tmp + dt * k + @.. thread=thread u=u + β3 * tmp + stage_limiter!(u, integrator, p, t + c4 * dt) + # u4 + f(k, u, p, t + c4 * dt) + @.. thread=thread tmp=α4 * tmp + dt * k + @.. thread=thread u=u + β4 * tmp + stage_limiter!(u, integrator, p, t + c5 * dt) + # u5 = u + f(k, u, p, t + c5 * dt) + @.. thread=thread tmp=α5 * tmp + dt * k + @.. thread=thread u=u + β5 * tmp + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + f(k, u, p, t + dt) +end + +function initialize!(integrator, cache::SHLDDRK_2NConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::SHLDDRK_2NConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α21, α31, α41, α51, β11, β21, β31, β41, β51, c21, c31, c41, c51, α22, α32, α42, α52, α62, β12, β22, β32, β42, β52, β62, c22, c32, c42, c52, c62 = cache + + if integrator.u_modified + cache.step = 1 + end + # cnt = cache.step + + if cache.step % 2 == 1 + cache.step += 1 + # u1 + tmp = dt * integrator.fsalfirst + u = uprev + β11 * tmp + # u2 + tmp = α21 * tmp + dt * f(u, p, t + c21 * dt) + u = u + β21 * tmp + # u3 + tmp = α31 * tmp + dt * f(u, p, t + c31 * dt) + u = u + β31 * tmp + # u4 + tmp = α41 * tmp + dt * f(u, p, t + c41 * dt) + u = u + β41 * tmp + # u5 = u + tmp = α51 * tmp + dt * f(u, p, t + c51 * dt) + u = u + β51 * tmp + + else + cache.step += 1 + # u1 + tmp = dt * integrator.fsalfirst + u = uprev + β12 * tmp + # u2 + tmp = α22 * tmp + dt * f(u, p, t + c22 * dt) + u = u + β22 * tmp + # u3 + tmp = α32 * tmp + dt * f(u, p, t + c32 * dt) + u = u + β32 * tmp + # u4 + tmp = α42 * tmp + dt * f(u, p, t + c42 * dt) + u = u + β42 * tmp + # u5 = u + tmp = α52 * tmp + dt * f(u, p, t + c52 * dt) + u = u + β52 * tmp + tmp = α62 * tmp + dt * f(u, p, t + c62 * dt) + u = u + β62 * tmp + end + + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.u = u +end + +function initialize!(integrator, cache::SHLDDRK_2NCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # FSAL for interpolation +end + +@muladd function perform_step!(integrator, cache::SHLDDRK_2NCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack α21, α31, α41, α51, β11, β21, β31, β41, β51, c21, c31, c41, c51, α22, α32, α42, α52, α62, β12, β22, β32, β42, β52, β62, c22, c32, c42, c52, c62 = cache.tab + + if integrator.u_modified + cache.step = 1 + end + + if cache.step % 2 == 1 + # u1 + @.. thread=thread tmp=dt * fsalfirst + @.. thread=thread u=uprev + β11 * tmp + stage_limiter!(u, integrator, p, t + c21 * dt) + # u2 + f(k, u, p, t + c21 * dt) + @.. thread=thread tmp=α21 * tmp + dt * k + @.. thread=thread u=u + β21 * tmp + stage_limiter!(u, integrator, p, t + c31 * dt) + # u3 + f(k, u, p, t + c31 * dt) + @.. thread=thread tmp=α31 * tmp + dt * k + @.. thread=thread u=u + β31 * tmp + stage_limiter!(u, integrator, p, t + c41 * dt) + # u4 + f(k, u, p, t + c41 * dt) + @.. thread=thread tmp=α41 * tmp + dt * k + @.. thread=thread u=u + β41 * tmp + stage_limiter!(u, integrator, p, t + c51 * dt) + # u5 = u + f(k, u, p, t + c51 * dt) + @.. thread=thread tmp=α51 * tmp + dt * k + @.. thread=thread u=u + β51 * tmp + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + f(k, u, p, t + dt) + else + # u1 + @.. thread=thread tmp=dt * fsalfirst + @.. thread=thread u=uprev + β12 * tmp + stage_limiter!(u, integrator, p, t + c22 * dt) + # u2 + f(k, u, p, t + c22 * dt) + @.. thread=thread tmp=α22 * tmp + dt * k + @.. thread=thread u=u + β22 * tmp + stage_limiter!(u, integrator, p, t + c32 * dt) + # u3 + f(k, u, p, t + c32 * dt) + @.. thread=thread tmp=α32 * tmp + dt * k + @.. thread=thread u=u + β32 * tmp + stage_limiter!(u, integrator, p, t + c42 * dt) + # u4 + f(k, u, p, t + c42 * dt) + @.. thread=thread tmp=α42 * tmp + dt * k + @.. thread=thread u=u + β42 * tmp + stage_limiter!(u, integrator, p, t + c52 * dt) + # u5 = u + f(k, u, p, t + c52 * dt) + @.. thread=thread tmp=α52 * tmp + dt * k + @.. thread=thread u=u + β52 * tmp + stage_limiter!(u, integrator, p, t + c62 * dt) + # u6 = u + f(k, u, p, t + c62 * dt) + @.. thread=thread tmp=α62 * tmp + dt * k + @.. thread=thread u=u + β62 * tmp + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + f(k, u, p, t + dt) + end +end + +function initialize!(integrator, cache::SSPRK33ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK33ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + dt * integrator.fsalfirst + k = f(u, p, t + dt) + # u2 + u = (3 * uprev + u + dt * k) / 4 + k = f(u, p, t + dt / 2) + # u + u = (uprev + 2 * u + 2 * dt * k) / 3 + + integrator.stats.nf += 3 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK33Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK33Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, stage_limiter!, step_limiter!, thread = cache + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + dt * fsalfirst + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + # u2 + @.. broadcast=false thread=thread u=(3 * uprev + u + dt * k) / 4 + stage_limiter!(u, integrator, p, t + dt / 2) + f(k, u, p, t + dt / 2) + # u + @.. broadcast=false thread=thread u=(uprev + 2 * u + 2 * dt * k) / 3 + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 3 +end + +function initialize!(integrator, cache::SSPRK53ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α30, α32, α40, α43, α52, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + tmp = uprev + β10 * dt * integrator.fsalfirst + k = f(tmp, p, t + c1 * dt) + # u2 -> stored as u + u = tmp + β21 * dt * k + k = f(u, p, t + c2 * dt) + # u3 + tmp = α30 * uprev + α32 * u + β32 * dt * k + k = f(tmp, p, t + c3 * dt) + # u4 + tmp = α40 * uprev + α43 * tmp + β43 * dt * k + k = f(tmp, p, t + c4 * dt) + # u + u = α52 * u + α54 * tmp + β54 * dt * k + + integrator.stats.nf += 5 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK53Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack α30, α32, α40, α43, α52, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache.tab + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread tmp=uprev + β10 * dt * fsalfirst + stage_limiter!(tmp, integrator, p, t + c1 * dt) + f(k, tmp, p, t + c1 * dt) + # u2 -> stored as u + @.. broadcast=false thread=thread u=tmp + β21 * dt * k + stage_limiter!(u, integrator, p, t + c2 * dt) + f(k, u, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread tmp=α30 * uprev + α32 * u + β32 * dt * k + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k, tmp, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread tmp=α40 * uprev + α43 * tmp + β43 * dt * k + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k, tmp, p, t + c4 * dt) + # u + @.. broadcast=false thread=thread u=α52 * u + α54 * tmp + β54 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 5 +end + +function initialize!(integrator, cache::SSPRK53_2N1ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_2N1ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α40, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache + #stores in u for all intermediate stages + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + β10 * dt * integrator.fsalfirst + k = f(u, p, t + c1 * dt) + # u2 + u = u + β21 * dt * k + k = f(u, p, t + c2 * dt) + # u3 + u = u + β32 * dt * k + k = f(u, p, t + c3 * dt) + # u4 + u = α40 * uprev + α43 * u + β43 * dt * k + k = f(u, p, t + c4 * dt) + # u + u = u + β54 * dt * k + + integrator.stats.nf += 1 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK53_2N1Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_2N1Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, stage_limiter!, step_limiter!, thread = cache + @unpack α40, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache.tab + + #stores in u for all intermediate stages + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + β10 * dt * fsalfirst + stage_limiter!(u, integrator, p, t + c1 * dt) + f(k, u, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread u=u + β21 * dt * k + stage_limiter!(u, integrator, p, t + c2 * dt) + f(k, u, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread u=u + β32 * dt * k + stage_limiter!(u, integrator, p, t + c3 * dt) + f(k, u, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread u=α40 * uprev + α43 * u + β43 * dt * k + stage_limiter!(u, integrator, p, t + c4 * dt) + f(k, u, p, t + c4 * dt) + # u + @.. broadcast=false thread=thread u=u + β54 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 5 +end + +function initialize!(integrator, cache::SSPRK53_2N2ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_2N2ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α30, α32, α50, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache + #stores in u for all intermediate stages + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + β10 * dt * integrator.fsalfirst + k = f(u, p, t + c1 * dt) + # u2 -> stored as u + u = u + β21 * dt * k + k = f(u, p, t + c2 * dt) + # u3 + u = α30 * uprev + α32 * u + β32 * dt * k + k = f(u, p, t + c3 * dt) + # u4 + u = u + β43 * dt * k + k = f(u, p, t + c4 * dt) + # u + u = α50 * uprev + α54 * u + β54 * dt * k + + integrator.stats.nf += 5 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK53_2N2Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_2N2Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, stage_limiter!, step_limiter!, thread = cache + @unpack α30, α32, α50, α54, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache.tab + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + β10 * dt * fsalfirst + stage_limiter!(u, integrator, p, t + c1 * dt) + f(k, u, p, t + c1 * dt) + # u2 -> stored as u + @.. broadcast=false thread=thread u=u + β21 * dt * k + stage_limiter!(u, integrator, p, t + c2 * dt) + f(k, u, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread u=α30 * uprev + α32 * u + β32 * dt * k + stage_limiter!(u, integrator, p, t + c3 * dt) + f(k, u, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread u=u + β43 * dt * k + stage_limiter!(u, integrator, p, t + c4 * dt) + f(k, u, p, t + c4 * dt) + # u + @.. broadcast=false thread=thread u=α50 * uprev + α54 * u + β54 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 5 +end + +function initialize!(integrator, cache::SSPRK53_HConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_HConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α30, α32, α40, α41, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache + #stores in u for all intermediate stages + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + tmp = uprev + β10 * dt * integrator.fsalfirst + k = f(tmp, p, t + c1 * dt) + # u2 + u = tmp + β21 * dt * k + k = f(u, p, t + c2 * dt) + # u3 + u = α30 * uprev + α32 * u + β32 * dt * k + k = f(u, p, t + c3 * dt) + # u4 + u = α40 * uprev + α41 * tmp + α43 * u + β43 * dt * k + k = f(u, p, t + c4 * dt) + # u + u = u + β54 * dt * k + + integrator.stats.nf += 5 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK53_HCache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK53_HCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack α30, α32, α40, α41, α43, β10, β21, β32, β43, β54, c1, c2, c3, c4 = cache.tab + #stores in u for all intermediate stages + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread tmp=uprev + β10 * dt * fsalfirst + stage_limiter!(tmp, integrator, p, t + c1 * dt) + f(k, tmp, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread u=tmp + β21 * dt * k + stage_limiter!(u, integrator, p, t + c2 * dt) + f(k, u, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread u=α30 * uprev + α32 * u + β32 * dt * k + stage_limiter!(u, integrator, p, t + c3 * dt) + f(k, u, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread u=α40 * uprev + α41 * tmp + α43 * u + β43 * dt * k + stage_limiter!(u, integrator, p, t + c4 * dt) + f(k, u, p, t + c4 * dt) + # u + @.. broadcast=false thread=thread u=u + β54 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 5 +end + +function initialize!(integrator, cache::SSPRK63ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK63ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α40, α41, α43, α62, α65, β10, β21, β32, β43, β54, β65, c1, c2, c3, c4, c5 = cache + + # u1 -> stored as u + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + β10 * dt * integrator.fsalfirst + k = f(u, p, t + c1 * dt) + # u2 + u₂ = u + β21 * dt * k + k = f(u₂, p, t + c2 * dt) + # u3 + tmp = u₂ + β32 * dt * k + k = f(tmp, p, t + c3 * dt) + # u4 + tmp = α40 * uprev + α41 * u + α43 * tmp + β43 * dt * k + k = f(tmp, p, t + c4 * dt) + # u5 + tmp = tmp + β54 * dt * k + k = f(tmp, p, t + c5 * dt) + # u + u = α62 * u₂ + α65 * tmp + β65 * dt * k + + integrator.stats.nf += 6 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK63Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK63Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, u₂, stage_limiter!, step_limiter!, thread = cache + @unpack α40, α41, α43, α62, α65, β10, β21, β32, β43, β54, β65, c1, c2, c3, c4, c5 = cache.tab + + # u1 -> stored as u + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + β10 * dt * fsalfirst + stage_limiter!(u, integrator, p, t + c1 * dt) + f(k, u, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread u₂=u + β21 * dt * k + stage_limiter!(u₂, integrator, p, t + c2 * dt) + f(k, u₂, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread tmp=u₂ + β32 * dt * k + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k, tmp, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread tmp=α40 * uprev + α41 * u + α43 * tmp + β43 * dt * k + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k, tmp, p, t + c4 * dt) + # u5 + @.. broadcast=false thread=thread tmp=tmp + β54 * dt * k + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k, tmp, p, t + c5 * dt) + # u + @.. broadcast=false thread=thread u=α62 * u₂ + α65 * tmp + β65 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 6 +end + +function initialize!(integrator, cache::SSPRK73ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK73ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α40, α43, α50, α51, α54, α73, α76, β10, β21, β32, β43, β54, β65, β76, c1, c2, c3, c4, c5, c6 = cache + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u₁ = uprev + β10 * dt * integrator.fsalfirst + k = f(u₁, p, t + c1 * dt) + # u2 + tmp = u₁ + β21 * dt * k + k = f(tmp, p, t + c2 * dt) + # u3 -> stored as u + u = tmp + β32 * dt * k + k = f(u, p, t + c3 * dt) + # u4 + tmp = α40 * uprev + α43 * u + β43 * dt * k + k = f(tmp, p, t + c4 * dt) + # u5 + tmp = α50 * uprev + α51 * u₁ + α54 * tmp + β54 * dt * k + k = f(tmp, p, t + c5 * dt) + # u6 + tmp = tmp + β65 * dt * k + k = f(tmp, p, t + c6 * dt) + # u + u = α73 * u + α76 * tmp + β76 * dt * k + + integrator.stats.nf += 7 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK73Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK73Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, u₁, stage_limiter!, step_limiter!, thread = cache + @unpack α40, α43, α50, α51, α54, α73, α76, β10, β21, β32, β43, β54, β65, β76, c1, c2, c3, c4, c5, c6 = cache.tab + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u₁=uprev + β10 * dt * fsalfirst + stage_limiter!(u₁, integrator, p, t + c1 * dt) + f(k, u₁, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread tmp=u₁ + β21 * dt * k + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k, tmp, p, t + c2 * dt) + # u3 -> stored as u + @.. broadcast=false thread=thread u=tmp + β32 * dt * k + stage_limiter!(u, integrator, p, t + c3 * dt) + f(k, u, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread tmp=α40 * uprev + α43 * u + β43 * dt * k + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k, tmp, p, t + c4 * dt) + # u5 + @.. broadcast=false thread=thread tmp=α50 * uprev + α51 * u₁ + α54 * tmp + β54 * dt * k + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k, tmp, p, t + c5 * dt) + # u6 + @.. broadcast=false thread=thread tmp=tmp + β65 * dt * k + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k, tmp, p, t + c6 * dt) + # u + @.. broadcast=false thread=thread u=α73 * u + α76 * tmp + β76 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 7 +end + +function initialize!(integrator, cache::SSPRK83ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK83ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack α50, α51, α54, α61, α65, α72, α73, α76, β10, β21, β32, β43, β54, β65, β76, β87, c1, c2, c3, c4, c5, c6, c7 = cache + + # u1 -> save as u + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + β10 * dt * integrator.fsalfirst + k = f(u, p, t + c1 * dt) + # u2 + u₂ = u + β21 * dt * k + k = f(u₂, p, t + c2 * dt) + # u3 + u₃ = u₂ + β32 * dt * k + k = f(u₃, p, t + c3 * dt) + # u4 + tmp = u₃ + β43 * dt * k + k = f(tmp, p, t + c4 * dt) + # u5 + tmp = α50 * uprev + α51 * u + α54 * tmp + β54 * dt * k + k = f(tmp, p, t + c5 * dt) + # u6 + tmp = α61 * u + α65 * tmp + β65 * dt * k + k = f(tmp, p, t + c6 * dt) + # u7 + tmp = α72 * u₂ + α73 * u₃ + α76 * tmp + β76 * dt * k + k = f(tmp, p, t + c7 * dt) + # u + u = tmp + β87 * dt * k + + integrator.stats.nf += 8 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK83Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK83Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, tmp, u₂, u₃, stage_limiter!, step_limiter!, thread = cache + @unpack α50, α51, α54, α61, α65, α72, α73, α76, β10, β21, β32, β43, β54, β65, β76, β87, c1, c2, c3, c4, c5, c6, c7 = cache.tab + + # u1 -> save as u + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + β10 * dt * fsalfirst + stage_limiter!(u, integrator, p, t + c1 * dt) + f(k, u, p, t + c1 * dt) + # u2 + @.. broadcast=false thread=thread u₂=u + β21 * dt * k + stage_limiter!(u₂, integrator, p, t + c2 * dt) + f(k, u₂, p, t + c2 * dt) + # u3 + @.. broadcast=false thread=thread u₃=u₂ + β32 * dt * k + stage_limiter!(u₃, integrator, p, t + c3 * dt) + f(k, u₃, p, t + c3 * dt) + # u4 + @.. broadcast=false thread=thread tmp=u₃ + β43 * dt * k + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k, tmp, p, t + c4 * dt) + # u5 + @.. broadcast=false thread=thread tmp=α50 * uprev + α51 * u + α54 * tmp + β54 * dt * k + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k, tmp, p, t + c5 * dt) + # u6 + @.. broadcast=false thread=thread tmp=α61 * u + α65 * tmp + β65 * dt * k + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k, tmp, p, t + c6 * dt) + # u7 + @.. broadcast=false thread=thread tmp=α72 * u₂ + α73 * u₃ + α76 * tmp + β76 * dt * k + stage_limiter!(tmp, integrator, p, t + c7 * dt) + f(k, tmp, p, t + c7 * dt) + # u + @.. broadcast=false thread=thread u=tmp + β87 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 8 +end + +function initialize!(integrator, cache::SSPRK43ConstantCache) + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK43ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack one_third_u, two_thirds_u, half_u, half_t = cache + dt_2 = half_t * dt + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + dt_2 * integrator.fsalfirst + k = f(u, p, t + dt_2) + # u2 + u = u + dt_2 * k + k = f(u, p, t + dt) + u = u + dt_2 * k + if integrator.opts.adaptive + utilde = one_third_u * uprev + two_thirds_u * u # corresponds to bhat = (1/3, 1/3, 1/3, 0) + end + # u3 + u = two_thirds_u * uprev + one_third_u * u + k = f(u, p, t + dt_2) + # u + u = u + dt_2 * k # corresponds to b = (1/6, 1/6, 1/6, 1/2) + + integrator.stats.nf += 4 + if integrator.opts.adaptive + utilde = half_u * (utilde - u) # corresponds to bhat = (1/4, 1/4, 1/4, 1/4) + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK43Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK43Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, utilde, atmp, stage_limiter!, step_limiter!, thread = cache + @unpack one_third_u, two_thirds_u, half_u, half_t = cache.tab + dt_2 = half_t * dt + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + dt_2 * fsalfirst + stage_limiter!(u, integrator, p, t + dt_2) + f(k, u, p, t + dt_2) + # u2 + @.. broadcast=false thread=thread u=u + dt_2 * k + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + # + @.. broadcast=false thread=thread u=u + dt_2 * k + stage_limiter!(u, integrator, p, t + dt + dt_2) + if integrator.opts.adaptive + @.. broadcast=false utilde=one_third_u * uprev + two_thirds_u * u # corresponds to bhat = (1/3, 1/3, 1/3, 0) + end + # u3 + @.. broadcast=false thread=thread u=two_thirds_u * uprev + one_third_u * u + f(k, u, p, t + dt_2) + # + @.. broadcast=false thread=thread u=u + dt_2 * k # corresponds to b = (1/6, 1/6, 1/6, 1/2) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=half_u * (utilde - u) # corresponds to bhat = (1/4, 1/4, 1/4, 1/4) + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.stats.nf += 4 +end + +function initialize!(integrator, cache::SSPRK432ConstantCache) + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK432ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + dt_2 = dt / 2 + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + dt_2 * integrator.fsalfirst + k = f(u, p, t + dt_2) + # u2 + u = u + dt_2 * k + k = f(u, p, t + dt) + u = u + dt_2 * k + if integrator.opts.adaptive + utilde = (uprev + 2 * u) / 3 + end + # u3 + u = (2 * uprev + u) / 3 + k = f(u, p, t + dt_2) + # u + u = u + dt_2 * k + + integrator.stats.nf += 4 + if integrator.opts.adaptive + utilde = utilde - u + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK432Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK432Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, utilde, atmp, stage_limiter!, step_limiter!, thread = cache + dt_2 = dt / 2 + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + dt_2 * fsalfirst + stage_limiter!(u, integrator, p, t + dt_2) + f(k, u, p, t + dt_2) + # u2 + @.. broadcast=false thread=thread u=u + dt_2 * k + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + # + @.. broadcast=false thread=thread u=u + dt_2 * k + stage_limiter!(u, integrator, p, t + dt + dt_2) + if integrator.opts.adaptive + @.. broadcast=false utilde=(uprev + 2 * u) / 3 + end + # u3 + @.. broadcast=false thread=thread u=(2 * uprev + u) / 3 + f(k, u, p, t + dt_2) + # + @.. broadcast=false thread=thread u=u + dt_2 * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=utilde - u + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.stats.nf += 4 +end + +function initialize!(integrator, cache::SSPRKMSVS32ConstantCache) + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRKMSVS32ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack u_1, u_2, dts, dtf, μ, v_n = cache + + if integrator.iter == 1 + cache.dts[1] = dt + cache.dts[2] = dt + cache.dtf[1] = dt + end + accpt = true + dt = dts[1] + + if cache.step < 3 #starting Procedure + k = f(u, p, t + dt) + u = uprev + dt * k + k = f(u, p, t + dt) + integrator.stats.nf += 2 + u = (uprev + u + dt * k) / 2 + if cache.step == 1 + u_2 = uprev + else + u_1 = uprev + end + if integrator.opts.adaptive + v_n = dt / dts[2] * 0.5 + cache.dtf[2] = dtf[1] + cache.dtf[1] = dt / v_n * 0.5 + if v_n > 0.5 + cache.step -= 1 + accpt = false + end + cache.dts[3] = dts[2] + cache.dts[2] = dt + dt = 0.9 * dtf[1] + μ = min(dtf[1], dtf[2]) + end + else + if integrator.opts.adaptive + Ω = (dts[2] + dts[3]) / dt + else + Ω = 2 + end + u = (Ω * Ω - 1) / (Ω * Ω) * (uprev + Ω / (Ω - 1) * dt * integrator.fsalfirst) + + 1 / (Ω * Ω) * u_2 + u_2 = u_1 + u_1 = uprev + if integrator.opts.adaptive + v_n = (dts[2] + dts[3] - dt) / (dts[2] + dts[3]) * 0.5 + dt = (dts[2] + dts[3]) / (dts[2] + dts[3] + μ) * μ + cache.dtf[2] = dtf[1] + dtf[1] = dt / v_n * 0.5 + cache.dts[3] = dts[2] + cache.dts[2] = dt + μ = min(dtf[1], dtf[2]) + end + end + if accpt == true + integrator.fsallast = f(u, p, t + dt) + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + integrator.u = u + else + integrator.fsallast = f(uprev, p, t + dt) + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + integrator.u = uprev + end + cache.dts[1] = dt + cache.step += 1 + cache.u_1 = u_1 + cache.u_2 = u_2 + cache.μ = μ +end + +function initialize!(integrator, cache::SSPRKMSVS32Cache) + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst # done by pointers, no copying + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::SSPRKMSVS32Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, u_1, u_2, stage_limiter!, step_limiter!, thread = cache + + if cache.step < 3 + @.. broadcast=false thread=thread u=uprev + dt * fsalfirst + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread u=(uprev + u + dt * k) / 2 + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + + if cache.step == 1 + cache.u_2 .= uprev + else + cache.u_1 .= uprev + end + else + Ω = 2 + @.. broadcast=false thread=thread u=((Ω * Ω - 1) / (Ω * Ω)) * + (uprev + (Ω / (Ω - 1)) * dt * fsalfirst) + + (1 / (Ω * Ω)) * cache.u_2 + cache.u_2 .= u_1 + cache.u_1 .= uprev + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + end + cache.step += 1 + integrator.stats.nf += 1 + f(k, u, p, t + dt) +end + +function initialize!(integrator, cache::SSPRKMSVS43ConstantCache) + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRKMSVS43ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack u_1, u_2, u_3, k1, k2, k3 = cache + + if cache.step < 4 + u = uprev + dt * integrator.fsalfirst + k = f(u, p, t + dt) + u = (uprev + u + dt * k) / 2 + if cache.step == 1 + u_3 = uprev + cache.k3 = f(u_3, p, t + dt) + integrator.stats.nf += 1 + end + if cache.step == 2 + u_2 = uprev + cache.k2 = f(u_2, p, t + dt) + integrator.stats.nf += 1 + end + if cache.step == 3 + u_1 = uprev + cache.k1 = f(u_1, p, t + dt) + integrator.stats.nf += 1 + end + # u + else + u = (16 / 27) * (uprev + 3 * dt * integrator.fsalfirst) + + (11 / 27) * (u_3 + (12 / 11) * dt * k3) + cache.k3 = k2 + cache.k2 = k1 + cache.k1 = integrator.fsalfirst + u_3 = u_2 + u_2 = u_1 + u_1 = uprev + end + integrator.fsallast = f(u, p, t + dt) # For interpolation, then FSAL'd + integrator.stats.nf += 1 + integrator.k[1] = integrator.fsalfirst + integrator.u = u + cache.step += 1 + cache.u_1 = u_1 + cache.u_2 = u_2 + cache.u_3 = u_3 +end + +function initialize!(integrator, cache::SSPRKMSVS43Cache) + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.fsalfirst = cache.fsalfirst # done by pointers, no copying + integrator.fsallast = cache.k + integrator.k[1] = integrator.fsalfirst + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::SSPRKMSVS43Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, u_1, u_2, u_3, stage_limiter!, step_limiter!, thread, k1, k2, k3 = cache + + if cache.step < 4 + @.. broadcast=false thread=thread u=uprev + dt * fsalfirst + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread u=(uprev + u + dt * k) / 2 + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + if cache.step == 1 + cache.u_3 .= uprev + f(k3, u_3, p, t + dt) + integrator.stats.nf += 1 + end + if cache.step == 2 + cache.u_2 .= uprev + f(k2, u_2, p, t + dt) + integrator.stats.nf += 1 + end + if cache.step == 3 + cache.u_1 .= uprev + f(k1, u_1, p, t + dt) + integrator.stats.nf += 1 + end + # u + else + @.. broadcast=false thread=thread u=(16 / 27) * (uprev + 3 * dt * fsalfirst) + + (11 / 27) * (u_3 + (12 / 11) * dt * k3) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + cache.k3 .= k2 + cache.k2 .= k1 + cache.k1 .= fsalfirst + cache.u_3 .= u_2 + cache.u_2 .= u_1 + cache.u_1 .= uprev + end + cache.step += 1 + integrator.stats.nf += 1 + f(k, u, p, t + dt) +end + +function initialize!(integrator, cache::SSPRK932ConstantCache) + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK932ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + dt_6 = dt / 6 + dt_3 = dt / 3 + dt_2 = dt / 2 + + # u1 + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u = uprev + dt_6 * integrator.fsalfirst + k = f(u, p, t + dt_6) + # u2 + u = u + dt_6 * k + k = f(u, p, t + dt_3) + # u3 + u = u + dt_6 * k + k = f(u, p, t + dt_2) + # u4 + u = u + dt_6 * k + k = f(u, p, t + 2 * dt_3) + # u5 + u = u + dt_6 * k + k = f(u, p, t + 5 * dt_6) + integrator.stats.nf += 6 + # u6 + u = u + dt_6 * k + if integrator.opts.adaptive + k = f(u, p, t + dt) + integrator.stats.nf += 1 + utilde = (uprev + 6 * u + 6 * dt * k) / 7 + end + # u6* + u = (3 * uprev + dt_2 * integrator.fsalfirst + 2 * u) / 5 + k = f(u, p, t + dt_2) + # u7* + u = u + dt_6 * k + k = f(u, p, t + 2 * dt_3) + # u8* + u = u + dt_6 * k + k = f(u, p, t + 5 * dt_6) + # u + u = u + dt_6 * k + + integrator.stats.nf += 3 + if integrator.opts.adaptive + utilde = utilde - u + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK932Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK932Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, utilde, atmp, stage_limiter!, step_limiter!, thread = cache + dt_6 = dt / 6 + dt_3 = dt / 3 + dt_2 = dt / 2 + + # u1 + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u=uprev + dt_6 * fsalfirst + stage_limiter!(u, integrator, p, t + dt_6) + f(k, u, p, t + dt_6) + # u2 + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + dt_3) + f(k, u, p, t + dt_3) + # u3 + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + dt_2) + f(k, u, p, t + dt_2) + # u4 + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + 2 * dt_3) + f(k, u, p, t + 2 * dt_3) + # u5 + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + 5 * dt_6) + f(k, u, p, t + 5 * dt_6) + integrator.stats.nf += 6 + # u6 + @.. broadcast=false thread=thread u=u + dt_6 * k + if integrator.opts.adaptive + stage_limiter!(u, integrator, p, t + dt) + f(k, u, p, t + dt) + integrator.stats.nf += 1 + @.. broadcast=false thread=thread utilde=(uprev + 6 * u + 6 * dt * k) / 7 + end + # u6* + @.. broadcast=false thread=thread u=(3 * uprev + dt_2 * integrator.fsalfirst + 2 * u) / + 5 + stage_limiter!(u, integrator, p, t + dt_6) + f(k, u, p, t + dt_2) + # u7* + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + 2 * dt_3) + f(k, u, p, t + 2 * dt_3) + # u8* + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + 5 * dt_6) + f(k, u, p, t + 5 * dt_6) + # u9* + @.. broadcast=false thread=thread u=u + dt_6 * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 3 + + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=utilde - u + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end +end + +function initialize!(integrator, cache::SSPRK54ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK54ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack β10, α20, α21, β21, α30, α32, β32, α40, α43, β43, α52, α53, β53, α54, β54, c1, c2, c3, c4 = cache + + # u₁ + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + u₂ = uprev + β10 * dt * integrator.fsalfirst + k = f(u₂, p, t + c1 * dt) + # u₂ + u₂ = α20 * uprev + α21 * u₂ + β21 * dt * k + k = f(u₂, p, t + c2 * dt) + # u₃ + u₃ = α30 * uprev + α32 * u₂ + β32 * dt * k + k₃ = f(u₃, p, t + c3 * dt) + # u₄ -> stored as tmp + tmp = α40 * uprev + α43 * u₃ + β43 * dt * k₃ + k = f(tmp, p, t + c4 * dt) + # u + u = α52 * u₂ + α53 * u₃ + β53 * dt * k₃ + α54 * tmp + β54 * dt * k + + integrator.stats.nf += 5 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK54Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK54Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, k₃, u₂, u₃, tmp, stage_limiter!, step_limiter!, thread = cache + @unpack β10, α20, α21, β21, α30, α32, β32, α40, α43, β43, α52, α53, β53, α54, β54, c1, c2, c3, c4 = cache.tab + + # u₁ + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread u₂=uprev + β10 * dt * fsalfirst + stage_limiter!(u₂, integrator, p, t + c1 * dt) + f(k, u₂, p, t + c1 * dt) + # u₂ + @.. broadcast=false thread=thread u₂=α20 * uprev + α21 * u₂ + β21 * dt * k + stage_limiter!(u₂, integrator, p, t + c2 * dt) + f(k, u₂, p, t + c2 * dt) + # u₃ + @.. broadcast=false thread=thread u₃=α30 * uprev + α32 * u₂ + β32 * dt * k + stage_limiter!(u₃, integrator, p, t + c3 * dt) + f(k₃, u₃, p, t + c3 * dt) + # u₄ -> stored as tmp + @.. broadcast=false thread=thread tmp=α40 * uprev + α43 * u₃ + β43 * dt * k₃ + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k, tmp, p, t + c4 * dt) + # u + @.. broadcast=false thread=thread u=α52 * u₂ + α53 * u₃ + β53 * dt * k₃ + α54 * tmp + + β54 * dt * k + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 5 +end + +function initialize!(integrator, cache::SSPRK104ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + integrator.kshortsize = 1 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK104ConstantCache, + repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + dt_6 = dt / 6 + dt_3 = dt / 3 + dt_2 = dt / 2 + + integrator.fsalfirst = f(uprev, p, t) + integrator.k[1] = integrator.fsalfirst + tmp = uprev + dt_6 * integrator.fsalfirst # u₁ + k = f(tmp, p, t + dt_6) + tmp = tmp + dt_6 * k # u₂ + k = f(tmp, p, t + dt_3) + tmp = tmp + dt_6 * k # u₃ + k = f(tmp, p, t + dt_2) + u = tmp + dt_6 * k # u₄ + k₄ = f(u, p, t + 2 * dt_3) + tmp = (3 * uprev + 2 * u + 2 * dt_6 * k₄) / 5 # u₅ + k = f(tmp, p, t + dt_3) + tmp = tmp + dt_6 * k # u₆ + k = f(tmp, p, t + dt_2) + tmp = tmp + dt_6 * k # u₇ + k = f(tmp, p, t + 2 * dt_3) + tmp = tmp + dt_6 * k # u₈ + k = f(tmp, p, t + 5 * dt_6) + tmp = tmp + dt_6 * k # u₉ + k = f(tmp, p, t + dt) + u = (uprev + 9 * (u + dt_6 * k₄) + 15 * (tmp + dt_6 * k)) / 25 + + integrator.stats.nf += 10 + integrator.u = u +end + +function initialize!(integrator, cache::SSPRK104Cache) + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + integrator.kshortsize = 1 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst +end + +@muladd function perform_step!(integrator, cache::SSPRK104Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack k, fsalfirst, k₄, tmp, stage_limiter!, step_limiter!, thread = cache + dt_6 = dt / 6 + dt_3 = dt / 3 + dt_2 = dt / 2 + + f(fsalfirst, uprev, p, t) + @.. broadcast=false thread=thread tmp=uprev + dt_6 * fsalfirst + stage_limiter!(tmp, integrator, p, t + dt_6) + f(k, tmp, p, t + dt_6) + @.. broadcast=false tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + dt_3) + f(k, tmp, p, t + dt_3) + @.. broadcast=false thread=thread tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + dt_2) + f(k, tmp, p, t + dt_2) + @.. broadcast=false thread=thread u=tmp + dt_6 * k + stage_limiter!(u, integrator, p, t + 2 * dt_3) + f(k₄, u, p, t + 2 * dt_3) + @.. broadcast=false thread=thread tmp=(3 * uprev + 2 * u + 2 * dt_6 * k₄) / 5 + stage_limiter!(tmp, integrator, p, t + dt_3) + f(k, tmp, p, t + dt_3) + @.. broadcast=false thread=thread tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + dt_2) + f(k, tmp, p, t + dt_2) + @.. broadcast=false thread=thread tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + 2 * dt_3) + f(k, tmp, p, t + 2 * dt_3) + @.. broadcast=false thread=thread tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + 5 * dt_6) + f(k, tmp, p, t + 5 * dt_6) + @.. broadcast=false thread=thread tmp=tmp + dt_6 * k + stage_limiter!(tmp, integrator, p, t + dt) + f(k, tmp, p, t + dt) + @.. broadcast=false thread=thread u=(uprev + 9 * (u + dt_6 * k₄) + + 15 * (tmp + dt_6 * k)) / 25 + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 10 +end diff --git a/src/perform_step/symplectic_perform_step.jl b/src/perform_step/symplectic_perform_step.jl new file mode 100644 index 0000000000..413f1882a2 --- /dev/null +++ b/src/perform_step/symplectic_perform_step.jl @@ -0,0 +1,2025 @@ +# http://www.chimica.unipd.it/antonino.polimeno/pubblica/downloads/JChemPhys_101_4062.pdf + +function initialize!(integrator, cache::SymplecticEulerConstantCache) + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + # Do the calculation pre + # So that way FSAL interpolation + duprev, uprev = integrator.uprev.x + du, u = integrator.u.x + kdu = integrator.f.f1(duprev, uprev, integrator.p, integrator.t) + kuprev = integrator.f.f2(duprev, uprev, integrator.p, integrator.t) + @muladd du = duprev + integrator.dt * kdu + ku = integrator.f.f2(du, uprev, integrator.p, integrator.t) + integrator.stats.nf2 += 1 + integrator.stats.nf += 2 + integrator.fsalfirst = ArrayPartition((kdu, kuprev)) + integrator.fsallast = ArrayPartition((zero(kdu), ku)) +end + +@muladd function perform_step!(integrator, cache::SymplecticEulerConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + kuprev = integrator.fsalfirst.x[2] + u = uprev + dt * kuprev + # Now actually compute the step + # Do it at the end for interpolations! + kdu = f.f1(duprev, u, p, t) + du = duprev + dt * kdu + + ku = f.f2(du, u, p, t) + integrator.stats.nf2 += 1 + integrator.stats.nf += 1 + + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((kdu, ku)) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast +end + +function initialize!(integrator, cache::SymplecticEulerCache) + integrator.kshortsize = 2 + @unpack k, fsalfirst = cache + integrator.fsalfirst = fsalfirst + integrator.fsallast = k + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + # Do the calculation pre + # So that way FSAL interpolation + duprev, uprev = integrator.uprev.x + du, u = integrator.u.x + kuprev = integrator.fsalfirst.x[2] + kdu, ku = integrator.fsallast.x + integrator.f.f1(kdu, duprev, uprev, integrator.p, integrator.t) + integrator.f.f2(kuprev, duprev, uprev, integrator.p, integrator.t) + @muladd @.. broadcast=false du=duprev + integrator.dt * kdu + integrator.f.f2(ku, du, uprev, integrator.p, integrator.t) + integrator.stats.nf += 1 + integrator.stats.nf2 += 2 +end + +@muladd function perform_step!(integrator, cache::SymplecticEulerCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = integrator.uprev.x + du, u = integrator.u.x + kuprev = integrator.fsalfirst.x[2] + kdu, ku = integrator.fsallast.x + @.. broadcast=false u=uprev + dt * kuprev + # Now actually compute the step + # Do it at the end for interpolations! + integrator.stats.nf2 += 1 + integrator.stats.nf += 1 + f.f1(kdu, duprev, u, p, t) + @.. broadcast=false du=duprev + dt * kdu + f.f2(ku, du, u, p, t) +end + +const MutableCachesHamilton = Union{Symplectic2Cache, Symplectic3Cache, + Symplectic4Cache, Symplectic45Cache, Symplectic5Cache, + Symplectic6Cache, Symplectic62Cache, + McAte8Cache, KahanLi8Cache, SofSpa10Cache} +const MutableCachesNewton = Union{VelocityVerletCache} + +const ConstantCachesHamilton = Union{Symplectic2ConstantCache, Symplectic3ConstantCache, + Symplectic4ConstantCache, Symplectic45ConstantCache, + Symplectic5ConstantCache, + Symplectic6ConstantCache, Symplectic62ConstantCache, + McAte8ConstantCache, KahanLi8ConstantCache, + SofSpa10ConstantCache} +const ConstantCachesNewton = Union{VelocityVerletConstantCache} + +# some of the algorithms are designed only for the case +# f.f2(p, q, pa, t) = p which is the Newton/Lagrange equations +# If called with different functions (which are possible in the Hamiltonian case) +# an exception is thrown to avoid silently calculate wrong results. +verify_f2(f, p, q, pa, t, ::Any, ::C) where {C <: ConstantCachesHamilton} = f(p, q, pa, t) +function verify_f2(f, res, p, q, pa, t, ::Any, ::C) where {C <: MutableCachesHamilton} + f(res, p, q, pa, t) +end + +function verify_f2(f, p, q, pa, t, integrator, ::C) where {C <: ConstantCachesNewton} + res = f(p, q, pa, t) + res == p ? p : throwex(integrator) +end +function verify_f2(f, res, p, q, pa, t, integrator, ::C) where {C <: MutableCachesNewton} + f(res, p, q, pa, t) + res == p ? res : throwex(integrator) +end +function throwex(integrator) + algn = typeof(integrator.alg) + throw(ArgumentError("Algorithm $algn is not applicable if f2(p, q, t) != p")) +end + +# provide the mutable uninitialized objects to keep state and derivative in case of mutable caches +# no such objects are required for constant caches +function alloc_symp_state(integrator) + (integrator.u.x..., integrator.cache.tmp.x...) +end + +# load state and derivatives at begin of symplectic iteration steps +function load_symp_state(integrator) + (integrator.uprev.x..., integrator.fsallast.x...) +end + +# store state and derivatives at the end of symplectic iteration steps +function store_symp_state!(integrator, ::OrdinaryDiffEqConstantCache, du, u, kdu, ku) + integrator.u = ArrayPartition((du, u)) + integrator.fsallast = ArrayPartition((kdu, ku)) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + nothing +end + +function store_symp_state!(integrator, ::OrdinaryDiffEqMutableCache, kdu, ku) + copyto!(integrator.k[1].x[1], integrator.k[2].x[1]) + copyto!(integrator.k[1].x[2], integrator.k[2].x[2]) + copyto!(integrator.k[2].x[2], ku) + copyto!(integrator.k[2].x[1], kdu) + nothing +end + +function initialize!(integrator, + cache::C) where {C <: + Union{MutableCachesHamilton, MutableCachesNewton}} + integrator.fsalfirst = cache.fsalfirst + integrator.fsallast = cache.k + + integrator.kshortsize = 2 + resize!(integrator.k, integrator.kshortsize) + integrator.k[1] = integrator.fsalfirst + integrator.k[2] = integrator.fsallast + + duprev, uprev = integrator.uprev.x + integrator.f.f1(integrator.k[2].x[1], duprev, uprev, integrator.p, integrator.t) + verify_f2(integrator.f.f2, integrator.k[2].x[2], duprev, uprev, integrator.p, + integrator.t, integrator, cache) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 +end + +function initialize!(integrator, + cache::C) where { + C <: + Union{ConstantCachesHamilton, ConstantCachesNewton}} + integrator.kshortsize = 2 + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + duprev, uprev = integrator.uprev.x + kdu = integrator.f.f1(duprev, uprev, integrator.p, integrator.t) + ku = verify_f2(integrator.f.f2, duprev, uprev, integrator.p, integrator.t, integrator, + cache) + integrator.stats.nf += 1 + integrator.stats.nf2 += 1 + integrator.fsallast = ArrayPartition((kdu, ku)) + integrator.k[2] = integrator.fsallast + integrator.fsalfirst = integrator.fsallast +end + +@muladd function perform_step!(integrator, cache::VelocityVerletConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = load_symp_state(integrator) + + # x(t+Δt) = x(t) + v(t)*Δt + 1/2*a(t)*Δt^2 + ku = integrator.fsallast.x[1] + dtsq = dt^2 + half = cache.half + u = uprev + dt * duprev + dtsq * (half * ku) + kdu = f.f1(duprev, u, p, t + dt) + # v(t+Δt) = v(t) + 1/2*(a(t)+a(t+Δt))*Δt + du = duprev + dt * (half * ku + half * kdu) + + integrator.stats.nf += 2 + store_symp_state!(integrator, cache, du, u, kdu, du) +end + +@muladd function perform_step!(integrator, cache::VelocityVerletCache, repeat_step = false) + @unpack t, dt, f, p = integrator + duprev, uprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # x(t+Δt) = x(t) + v(t)*Δt + 1/2*a(t)*Δt^2 + ku = integrator.fsallast.x[1] + dtsq = dt^2 + half = cache.half + @.. broadcast=false u=uprev + dt * duprev + dtsq * (half * ku) + f.f1(kdu, duprev, u, p, t + dt) + integrator.stats.nf += 2 + # v(t+Δt) = v(t) + 1/2*(a(t)+a(t+Δt))*Δt + @.. broadcast=false du=duprev + dt * (half * ku + half * kdu) + + store_symp_state!(integrator, cache, kdu, du) +end + +@muladd function perform_step!(integrator, cache::Symplectic2ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, b1, b2 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + kdu = f.f1(du, u, p, tnew) + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 3 + integrator.stats.nf2 += 2 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic2Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, b1, b2 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + f.f1(kdu, du, u, p, tnew) + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 3 + integrator.stats.nf2 += 2 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic3ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, b1, b2, b3 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + kdu = f.f1(du, u, p, tnew) + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 4 + integrator.stats.nf2 += 3 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic3Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, b1, b2, b3 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + f.f1(kdu, du, u, p, tnew) + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 4 + integrator.stats.nf2 += 3 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic4ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, b1, b2, b3, b4 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + kdu = f.f1(du, u, p, tnew) + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 5 + integrator.stats.nf2 += 4 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic4Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, b1, b2, b3, b4 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + f.f1(kdu, du, u, p, tnew) + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 5 + integrator.stats.nf2 += 4 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic45ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack a1, a2, a3, a4, a5, b1, b2, b3, b4, b5 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + if alg isa McAte42 + du = du + dt * a5 * kdu + kdu = f.f1(du, u, p, tnew) + integrator.stats.nf += 1 + end + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 5 + integrator.stats.nf2 += 5 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic45Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + alg = unwrap_alg(integrator, false) + @unpack a1, a2, a3, a4, a5, b1, b2, b3, b4, b5 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + if alg isa McAte42 + @.. broadcast=false du=du + dt * a5 * kdu + f.f1(kdu, du, u, p, tnew) + integrator.stats.nf += 1 + end + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 5 + integrator.stats.nf2 += 5 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic5ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + kdu = f.f1(du, u, p, tnew) + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 7 + integrator.stats.nf2 += 6 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic5Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + f.f1(kdu, du, u, p, tnew) + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 7 + integrator.stats.nf2 += 6 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic6ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4, b5, b6, b7, b8 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + + tnew = tnew + a6 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b7 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a7 * kdu + + tnew = tnew + a7 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b8 * ku + + kdu = f.f1(du, u, p, tnew) + # @.. broadcast=false du = du + dt*a8*kdu + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 8 + integrator.stats.nf2 += 8 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic6Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4, b5, b6, b7, b8 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + + tnew = tnew + a6 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b7 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a7 * kdu + + tnew = tnew + a7 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b8 * ku + + f.f1(kdu, du, u, p, tnew) + # @.. broadcast=false du = du + dt*a8*kdu + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 8 + integrator.stats.nf2 += 8 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic62ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + + tnew = tnew + a6 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b7 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a7 * kdu + + tnew = tnew + a7 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b8 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a8 * kdu + + tnew = tnew + a8 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b9 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a9 * kdu + + tnew = tnew + a9 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b10 * ku + + kdu = f.f1(du, u, p, tnew) + # @.. broadcast=false du = du + dt*a10*kdu + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 10 + integrator.stats.nf2 += 10 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::Symplectic62Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + + tnew = tnew + a6 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b7 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a7 * kdu + + tnew = tnew + a7 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b8 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a8 * kdu + + tnew = tnew + a8 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b9 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a9 * kdu + + tnew = tnew + a9 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b10 * ku + + f.f1(kdu, du, u, p, tnew) + # @.. broadcast=false du = du + dt*a10*kdu + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 10 + integrator.stats.nf2 += 10 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::McAte8ConstantCache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + + tnew = tnew + a6 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b7 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a7 * kdu + + tnew = tnew + a7 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b8 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a8 * kdu + + tnew = tnew + a8 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b9 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a9 * kdu + + tnew = tnew + a9 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b10 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a10 * kdu + + tnew = tnew + a10 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b11 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a11 * kdu + + tnew = tnew + a11 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b12 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a12 * kdu + + tnew = tnew + a12 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b13 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a13 * kdu + + tnew = tnew + a13 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b14 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a14 * kdu + + tnew = tnew + a14 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b15 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a15 * kdu + + tnew = tnew + a15 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b16 * ku + + kdu = f.f1(du, u, p, tnew) + # @.. broadcast=false du = du + dt*a16*kdu + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 16 + integrator.stats.nf2 += 16 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::McAte8Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + + tnew = tnew + a6 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b7 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a7 * kdu + + tnew = tnew + a7 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b8 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a8 * kdu + + tnew = tnew + a8 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b9 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a9 * kdu + + tnew = tnew + a9 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b10 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a10 * kdu + + tnew = tnew + a10 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b11 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a11 * kdu + + tnew = tnew + a11 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b12 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a12 * kdu + + tnew = tnew + a12 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b13 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a13 * kdu + + tnew = tnew + a13 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b14 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a14 * kdu + + tnew = tnew + a14 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b15 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a15 * kdu + + tnew = tnew + a15 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b16 * ku + + f.f1(kdu, du, u, p, tnew) + # @.. broadcast=false du = du + dt*a16*kdu + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 16 + integrator.stats.nf2 += 16 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::KahanLi8ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + + tnew = tnew + a6 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b7 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a7 * kdu + + tnew = tnew + a7 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b8 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a8 * kdu + + tnew = tnew + a8 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b9 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a9 * kdu + + tnew = tnew + a9 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b10 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a10 * kdu + + tnew = tnew + a10 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b11 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a11 * kdu + + tnew = tnew + a11 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b12 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a12 * kdu + + tnew = tnew + a12 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b13 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a13 * kdu + + tnew = tnew + a13 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b14 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a14 * kdu + + tnew = tnew + a14 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b15 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a15 * kdu + + tnew = tnew + a15 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b16 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a16 * kdu + + tnew = tnew + a16 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b17 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a17 * kdu + + tnew = tnew + a17 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b18 * ku + + kdu = f.f1(du, u, p, tnew) + # @.. broadcast=false du = du + dt*a18*kdu + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 18 + integrator.stats.nf2 += 18 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::KahanLi8Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + + tnew = tnew + a6 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b7 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a7 * kdu + + tnew = tnew + a7 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b8 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a8 * kdu + + tnew = tnew + a8 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b9 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a9 * kdu + + tnew = tnew + a9 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b10 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a10 * kdu + + tnew = tnew + a10 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b11 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a11 * kdu + + tnew = tnew + a11 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b12 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a12 * kdu + + tnew = tnew + a12 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b13 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a13 * kdu + + tnew = tnew + a13 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b14 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a14 * kdu + + tnew = tnew + a14 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b15 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a15 * kdu + + tnew = tnew + a15 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b16 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a16 * kdu + + tnew = tnew + a16 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b17 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a17 * kdu + + tnew = tnew + a17 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b18 * ku + + f.f1(kdu, du, u, p, tnew) + # @.. broadcast=false du = du + dt*a18*kdu + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 18 + integrator.stats.nf2 += 18 + store_symp_state!(integrator, cache, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::SofSpa10ConstantCache, + repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, + a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, + a35, a36, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, + b35, b36 = cache + duprev, uprev, _, kuprev = load_symp_state(integrator) + + # update position + u = uprev + dt * b1 * kuprev + # update velocity + kdu = f.f1(duprev, u, p, integrator.t) + du = duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b2 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b3 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b4 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b5 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a5 * kdu + + tnew = tnew + a5 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b6 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a6 * kdu + + tnew = tnew + a6 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b7 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a7 * kdu + + tnew = tnew + a7 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b8 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a8 * kdu + + tnew = tnew + a8 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b9 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a9 * kdu + + tnew = tnew + a9 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b10 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a10 * kdu + + tnew = tnew + a10 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b11 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a11 * kdu + + tnew = tnew + a11 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b12 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a12 * kdu + + tnew = tnew + a12 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b13 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a13 * kdu + + tnew = tnew + a13 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b14 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a14 * kdu + + tnew = tnew + a14 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b15 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a15 * kdu + + tnew = tnew + a15 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b16 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a16 * kdu + + tnew = tnew + a16 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b17 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a17 * kdu + + tnew = tnew + a17 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b18 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a18 * kdu + + tnew = tnew + a18 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b19 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a19 * kdu + + tnew = tnew + a19 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b20 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a20 * kdu + + tnew = tnew + a20 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b21 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a21 * kdu + + tnew = tnew + a21 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b22 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a22 * kdu + + tnew = tnew + a22 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b23 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a23 * kdu + + tnew = tnew + a23 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b24 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a24 * kdu + + tnew = tnew + a24 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b25 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a25 * kdu + + tnew = tnew + a25 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b26 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a26 * kdu + + tnew = tnew + a26 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b27 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a27 * kdu + + tnew = tnew + a27 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b28 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a28 * kdu + + tnew = tnew + a28 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b29 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a29 * kdu + + tnew = tnew + a29 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b30 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a30 * kdu + + tnew = tnew + a30 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b31 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a31 * kdu + + tnew = tnew + a31 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b32 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a32 * kdu + + tnew = tnew + a32 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b33 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a33 * kdu + + tnew = tnew + a33 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b34 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a34 * kdu + + tnew = tnew + a34 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b35 * ku + + kdu = f.f1(du, u, p, tnew) + du = du + dt * a35 * kdu + + tnew = tnew + a35 * dt + ku = f.f2(du, u, p, tnew) + u = u + dt * b36 * ku + + kdu = f.f1(du, u, p, tnew) + # @.. broadcast=false du = du + dt*a30*kdu + ku = f.f2(du, u, p, tnew) + + integrator.stats.nf += 36 + integrator.stats.nf2 += 36 + store_symp_state!(integrator, cache, du, u, kdu, ku) +end + +@muladd function perform_step!(integrator, cache::SofSpa10Cache, repeat_step = false) + @unpack t, dt, f, p = integrator + @unpack a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, + a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, + a35, a36, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, + b35, b36 = cache.tab + duprev, uprev, _, kuprev = load_symp_state(integrator) + du, u, kdu, ku = alloc_symp_state(integrator) + + # update position + @.. broadcast=false u=uprev + dt * b1 * kuprev + # update velocity + f.f1(kdu, duprev, u, p, integrator.t) + @.. broadcast=false du=duprev + dt * a1 * kdu + # update position & velocity + tnew = t + a1 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b2 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a2 * kdu + + # update position & velocity + tnew = tnew + a2 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b3 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a3 * kdu + + # update position & velocity + tnew = tnew + a3 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b4 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a4 * kdu + + # update position & velocity + tnew = tnew + a4 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b5 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a5 * kdu + + tnew = tnew + a5 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b6 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a6 * kdu + + tnew = tnew + a6 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b7 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a7 * kdu + + tnew = tnew + a7 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b8 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a8 * kdu + + tnew = tnew + a8 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b9 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a9 * kdu + + tnew = tnew + a9 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b10 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a10 * kdu + + tnew = tnew + a10 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b11 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a11 * kdu + + tnew = tnew + a11 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b12 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a12 * kdu + + tnew = tnew + a12 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b13 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a13 * kdu + + tnew = tnew + a13 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b14 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a14 * kdu + + tnew = tnew + a14 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b15 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a15 * kdu + + tnew = tnew + a15 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b16 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a16 * kdu + + tnew = tnew + a16 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b17 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a17 * kdu + + tnew = tnew + a17 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b18 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a18 * kdu + + tnew = tnew + a18 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b19 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a19 * kdu + + tnew = tnew + a19 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b20 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a20 * kdu + + tnew = tnew + a20 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b21 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a21 * kdu + + tnew = tnew + a21 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b22 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a22 * kdu + + tnew = tnew + a22 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b23 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a23 * kdu + + tnew = tnew + a23 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b24 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a24 * kdu + + tnew = tnew + a24 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b25 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a25 * kdu + + tnew = tnew + a25 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b26 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a26 * kdu + + tnew = tnew + a26 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b27 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a27 * kdu + + tnew = tnew + a27 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b28 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a28 * kdu + + tnew = tnew + a28 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b29 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a29 * kdu + + tnew = tnew + a29 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b30 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a30 * kdu + + tnew = tnew + a30 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b31 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a31 * kdu + + tnew = tnew + a31 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b32 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a32 * kdu + + tnew = tnew + a32 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b33 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a33 * kdu + + tnew = tnew + a33 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b34 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a34 * kdu + + tnew = tnew + a34 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b35 * ku + + f.f1(kdu, du, u, p, tnew) + @.. broadcast=false du=du + dt * a35 * kdu + + tnew = tnew + a35 * dt + f.f2(ku, du, u, p, tnew) + @.. broadcast=false u=u + dt * b36 * ku + + f.f1(kdu, du, u, p, tnew) + # @.. broadcast=false du = du + dt*a30*kdu + f.f2(ku, du, u, p, tnew) + + integrator.stats.nf += 36 + integrator.stats.nf2 += 36 + store_symp_state!(integrator, cache, kdu, ku) +end diff --git a/src/perform_step/verner_rk_perform_step.jl b/src/perform_step/verner_rk_perform_step.jl new file mode 100644 index 0000000000..0a44e217da --- /dev/null +++ b/src/perform_step/verner_rk_perform_step.jl @@ -0,0 +1,1284 @@ +function initialize!(integrator, cache::Vern6ConstantCache) + integrator.fsalfirst = integrator.f(integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 9) : (integrator.kshortsize = 12) + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + integrator.fsallast = zero(integrator.fsalfirst) + integrator.k[1] = integrator.fsalfirst + @inbounds for i in 2:8 + integrator.k[i] = zero(integrator.fsalfirst) + end + integrator.k[integrator.kshortsize] = integrator.fsallast + + if !alg.lazy + @inbounds for i in 10:12 + integrator.k[i] = zero(integrator.fsalfirst) + end + end +end + +@muladd function perform_step!(integrator, cache::Vern6ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, a95, a96, a97, a98, btilde1, btilde4, btilde5, btilde6, btilde7, btilde8, btilde9 = cache.tab + k1 = integrator.fsalfirst + a = dt * a21 + k2 = f(uprev + a * k1, p, t + c1 * dt) + k3 = f(uprev + dt * (a31 * k1 + a32 * k2), p, t + c2 * dt) + k4 = f(uprev + dt * (a41 * k1 + a43 * k3), p, t + c3 * dt) + k5 = f(uprev + dt * (a51 * k1 + a53 * k3 + a54 * k4), p, t + c4 * dt) + k6 = f(uprev + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5), p, t + c5 * dt) + k7 = f(uprev + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + a76 * k6), p, + t + c6 * dt) + g8 = uprev + dt * (a81 * k1 + a83 * k3 + a84 * k4 + a85 * k5 + a86 * k6 + a87 * k7) + k8 = f(g8, p, t + dt) + u = uprev + dt * (a91 * k1 + a94 * k4 + a95 * k5 + a96 * k6 + a97 * k7 + a98 * k8) + integrator.fsallast = f(u, p, t + dt) + k9 = integrator.fsallast + integrator.stats.nf += 8 + if integrator.alg isa CompositeAlgorithm + g9 = u + ϱu = integrator.opts.internalnorm(k9 - k8, t) + ϱd = integrator.opts.internalnorm(g9 - g8, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + utilde = dt * + (btilde1 * k1 + btilde4 * k4 + btilde5 * k5 + btilde6 * k6 + btilde7 * k7 + + btilde8 * k8 + btilde9 * k9) + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = k1 + integrator.k[2] = k2 + integrator.k[3] = k3 + integrator.k[4] = k4 + integrator.k[5] = k5 + integrator.k[6] = k6 + integrator.k[7] = k7 + integrator.k[8] = k8 + integrator.k[9] = k9 + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211 = cache.tab.extra + k[10] = f( + uprev + + dt * (a1001 * k[1] + a1004 * k[4] + a1005 * k[5] + a1006 * k[6] + + a1007 * k[7] + a1008 * k[8] + a1009 * k[9]), + p, + t + c10 * dt) + k[11] = f( + uprev + + dt * (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9] + a1110 * k[10]), + p, + t + c11 * dt) + k[12] = f( + uprev + + dt * (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1210 * k[10] + + a1211 * k[11]), + p, + t + c12 * dt) + integrator.stats.nf += 3 + end + + integrator.u = u +end + +function initialize!(integrator, cache::Vern6Cache) + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 9) : (integrator.kshortsize = 12) + integrator.fsalfirst = cache.k1 + integrator.fsallast = cache.k9 + @unpack k = integrator + resize!(k, integrator.kshortsize) + k[1] = cache.k1 + k[2] = cache.k2 + k[3] = cache.k3 + k[4] = cache.k4 + k[5] = cache.k5 + k[6] = cache.k6 + k[7] = cache.k7 + k[8] = cache.k8 + k[9] = cache.k9 # Set the pointers + + if !alg.lazy + k[10] = similar(cache.k1) + k[11] = similar(cache.k1) + k[12] = similar(cache.k1) + end + + integrator.f(integrator.fsalfirst, integrator.uprev, integrator.p, integrator.t) # Pre-start fsal + integrator.stats.nf += 1 +end + +@muladd function perform_step!(integrator, cache::Vern6Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + @unpack c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, a95, a96, a97, a98, btilde1, btilde4, btilde5, btilde6, btilde7, btilde8, btilde9 = cache.tab + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, utilde, tmp, rtmp, atmp, stage_limiter!, step_limiter!, thread = cache + a = dt * a21 + @.. broadcast=false thread=thread tmp=uprev + a * k1 + stage_limiter!(tmp, integrator, p, t + c1 * dt) + f(k2, tmp, p, t + c1 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a31 * k1 + a32 * k2) + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k3, tmp, p, t + c2 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a41 * k1 + a43 * k3) + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k4, tmp, p, t + c3 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a51 * k1 + a53 * k3 + a54 * k4) + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k5, tmp, p, t + c4 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a61 * k1 + a63 * k3 + a64 * k4 + a65 * k5) + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k6, tmp, p, t + c5 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a71 * k1 + a73 * k3 + a74 * k4 + a75 * k5 + + a76 * k6) + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k7, tmp, p, t + c6 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a81 * k1 + a83 * k3 + a84 * k4 + a85 * k5 + + a86 * k6 + + a87 * k7) + stage_limiter!(tmp, integrator, p, t + dt) + f(k8, tmp, p, t + dt) + @.. broadcast=false thread=thread u=uprev + + dt * + (a91 * k1 + a94 * k4 + a95 * k5 + a96 * k6 + + a97 * k7 + a98 * k8) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + f(k9, u, p, t + dt) + integrator.stats.nf += 8 + if integrator.alg isa CompositeAlgorithm + g9 = u + g8 = tmp + @.. broadcast=false thread=thread rtmp=k9 - k8 + ϱu = integrator.opts.internalnorm(rtmp, t) + @.. broadcast=false thread=thread utilde=g9 - g8 + ϱd = integrator.opts.internalnorm(utilde, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=dt * (btilde1 * k1 + btilde4 * k4 + + btilde5 * k5 + + btilde6 * k6 + btilde7 * k7 + + btilde8 * k8 + + btilde9 * k9) + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211 = cache.tab.extra + @unpack tmp = cache + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1001 * k[1] + a1004 * k[4] + a1005 * k[5] + + a1006 * k[6] + + a1007 * k[7] + a1008 * k[8] + a1009 * k[9]) + f(k[10], tmp, p, t + c10 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9] + + a1110 * k[10]) + f(k[11], tmp, p, t + c11 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + + a1210 * k[10] + a1211 * k[11]) + integrator.stats.nf += 3 + f(k[12], tmp, p, t + c12 * dt) + end + return nothing +end + +function initialize!(integrator, cache::Vern7ConstantCache) + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 10) : (integrator.kshortsize = 16) + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + @inbounds for i in eachindex(integrator.k) + integrator.k[i] = zero(integrator.uprev) ./ oneunit(integrator.t) + end +end + +@muladd function perform_step!(integrator, cache::Vern7ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, k, f, p = integrator + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + @OnDemandTableauExtract Vern7Tableau T T2 + k1 = f(uprev, p, t) + a = dt * a021 + k2 = f(uprev + a * k1, p, t + c2 * dt) + k3 = f(uprev + dt * (a031 * k1 + a032 * k2), p, t + c3 * dt) + k4 = f(uprev + dt * (a041 * k1 + a043 * k3), p, t + c4 * dt) + k5 = f(uprev + dt * (a051 * k1 + a053 * k3 + a054 * k4), p, t + c5 * dt) + k6 = f(uprev + dt * (a061 * k1 + a063 * k3 + a064 * k4 + a065 * k5), p, t + c6 * dt) + k7 = f(uprev + dt * (a071 * k1 + a073 * k3 + a074 * k4 + a075 * k5 + a076 * k6), p, + t + c7 * dt) + k8 = f( + uprev + + dt * (a081 * k1 + a083 * k3 + a084 * k4 + a085 * k5 + a086 * k6 + a087 * k7), + p, + t + c8 * dt) + g9 = uprev + + dt * + (a091 * k1 + a093 * k3 + a094 * k4 + a095 * k5 + a096 * k6 + a097 * k7 + a098 * k8) + g10 = uprev + + dt * (a101 * k1 + a103 * k3 + a104 * k4 + a105 * k5 + a106 * k6 + a107 * k7) + k9 = f(g9, p, t + dt) + k10 = f(g10, p, t + dt) + integrator.stats.nf += 10 + u = uprev + dt * (b1 * k1 + b4 * k4 + b5 * k5 + b6 * k6 + b7 * k7 + b8 * k8 + b9 * k9) + if integrator.alg isa CompositeAlgorithm + ϱu = integrator.opts.internalnorm(k10 - k9, t) + ϱd = integrator.opts.internalnorm(g10 - g9, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + utilde = dt * + (btilde1 * k1 + btilde4 * k4 + btilde5 * k5 + btilde6 * k6 + btilde7 * k7 + + btilde8 * k8 + btilde9 * k9 + btilde10 * k10) + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = k1 + integrator.k[2] = k2 + integrator.k[3] = k3 + integrator.k[4] = k4 + integrator.k[5] = k5 + integrator.k[6] = k6 + integrator.k[7] = k7 + integrator.k[8] = k8 + integrator.k[9] = k9 + integrator.k[10] = k10 + integrator.u = u + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @OnDemandTableauExtract Vern7ExtraStages T T2 + k[11] = f( + uprev + + dt * (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9]), + p, + t + c11 * dt) + k[12] = f( + uprev + + dt * (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + a1211 * k[11]), + p, + t + c12 * dt) + k[13] = f( + uprev + + dt * (a1301 * k[1] + a1304 * k[4] + a1305 * k[5] + a1306 * k[6] + + a1307 * k[7] + a1308 * k[8] + a1309 * k[9] + a1311 * k[11] + + a1312 * k[12]), + p, + t + c13 * dt) + k[14] = f( + uprev + + dt * (a1401 * k[1] + a1404 * k[4] + a1405 * k[5] + a1406 * k[6] + + a1407 * k[7] + a1408 * k[8] + a1409 * k[9] + a1411 * k[11] + + a1412 * k[12] + a1413 * k[13]), + p, + t + c14 * dt) + k[15] = f( + uprev + + dt * (a1501 * k[1] + a1504 * k[4] + a1505 * k[5] + a1506 * k[6] + + a1507 * k[7] + a1508 * k[8] + a1509 * k[9] + a1511 * k[11] + + a1512 * k[12] + a1513 * k[13]), + p, + t + c15 * dt) + k[16] = f( + uprev + + dt * (a1601 * k[1] + a1604 * k[4] + a1605 * k[5] + a1606 * k[6] + + a1607 * k[7] + a1608 * k[8] + a1609 * k[9] + a1611 * k[11] + + a1612 * k[12] + a1613 * k[13]), + p, + t + c16 * dt) + integrator.stats.nf += 6 + end +end + +function initialize!(integrator, cache::Vern7Cache) + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10 = cache + @unpack k = integrator + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 10) : (integrator.kshortsize = 16) + resize!(k, integrator.kshortsize) + k[1] = k1 + k[2] = k2 + k[3] = k3 + k[4] = k4 + k[5] = k5 + k[6] = k6 + k[7] = k7 + k[8] = k8 + k[9] = k9 + k[10] = k10 # Setup pointers + + if !alg.lazy + k[11] = similar(cache.k1) + k[12] = similar(cache.k1) + k[13] = similar(cache.k1) + k[14] = similar(cache.k1) + k[15] = similar(cache.k1) + k[16] = similar(cache.k1) + end +end + +@muladd function perform_step!(integrator, cache::Vern7Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + @OnDemandTableauExtract Vern7Tableau T T2 + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, utilde, tmp, rtmp, atmp, stage_limiter!, step_limiter!, thread = cache + f(k1, uprev, p, t) + a = dt * a021 + @.. broadcast=false thread=thread tmp=uprev + a * k1 + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k2, tmp, p, t + c2 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a031 * k1 + a032 * k2) + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k3, tmp, p, t + c3 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a041 * k1 + a043 * k3) + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k4, tmp, p, t + c4 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a051 * k1 + a053 * k3 + a054 * k4) + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k5, tmp, p, t + c5 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a061 * k1 + a063 * k3 + a064 * k4 + a065 * k5) + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k6, tmp, p, t + c6 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a071 * k1 + a073 * k3 + a074 * k4 + a075 * k5 + + a076 * k6) + stage_limiter!(tmp, integrator, p, t + c7 * dt) + f(k7, tmp, p, t + c7 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a081 * k1 + a083 * k3 + a084 * k4 + a085 * k5 + + a086 * k6 + + a087 * k7) + stage_limiter!(tmp, integrator, p, t + c8 * dt) + f(k8, tmp, p, t + c8 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a091 * k1 + a093 * k3 + a094 * k4 + a095 * k5 + + a096 * k6 + + a097 * k7 + a098 * k8) + stage_limiter!(tmp, integrator, p, t + dt) + f(k9, tmp, p, t + dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a101 * k1 + a103 * k3 + a104 * k4 + a105 * k5 + + a106 * k6 + + a107 * k7) + stage_limiter!(tmp, integrator, p, t + dt) + f(k10, tmp, p, t + dt) + @.. broadcast=false thread=thread u=uprev + + dt * + (b1 * k1 + b4 * k4 + b5 * k5 + b6 * k6 + b7 * k7 + + b8 * k8 + + b9 * k9) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + integrator.stats.nf += 10 + if integrator.alg isa CompositeAlgorithm + g10 = u + g9 = tmp + @.. broadcast=false thread=thread rtmp=k10 - k9 + ϱu = integrator.opts.internalnorm(rtmp, t) + @.. broadcast=false thread=thread utilde=g10 - g9 + ϱd = integrator.opts.internalnorm(utilde, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=dt * (btilde1 * k1 + btilde4 * k4 + + btilde5 * k5 + + btilde6 * k6 + btilde7 * k7 + + btilde8 * k8 + + btilde9 * k9 + btilde10 * k10) + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack tmp = cache + @OnDemandTableauExtract Vern7ExtraStages T T2 + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1101 * k[1] + a1104 * k[4] + a1105 * k[5] + + a1106 * k[6] + + a1107 * k[7] + a1108 * k[8] + a1109 * k[9]) + f(k[11], tmp, p, t + c11 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1201 * k[1] + a1204 * k[4] + a1205 * k[5] + + a1206 * k[6] + + a1207 * k[7] + a1208 * k[8] + a1209 * k[9] + + a1211 * k[11]) + f(k[12], tmp, p, t + c12 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1301 * k[1] + a1304 * k[4] + a1305 * k[5] + + a1306 * k[6] + + a1307 * k[7] + a1308 * k[8] + a1309 * k[9] + + a1311 * k[11] + a1312 * k[12]) + f(k[13], tmp, p, t + c13 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1401 * k[1] + a1404 * k[4] + a1405 * k[5] + + a1406 * k[6] + + a1407 * k[7] + a1408 * k[8] + a1409 * k[9] + + a1411 * k[11] + a1412 * k[12] + + a1413 * k[13]) + f(k[14], tmp, p, t + c14 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1501 * k[1] + a1504 * k[4] + a1505 * k[5] + + a1506 * k[6] + + a1507 * k[7] + a1508 * k[8] + a1509 * k[9] + + a1511 * k[11] + a1512 * k[12] + + a1513 * k[13]) + f(k[15], tmp, p, t + c15 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1601 * k[1] + a1604 * k[4] + a1605 * k[5] + + a1606 * k[6] + + a1607 * k[7] + a1608 * k[8] + a1609 * k[9] + + a1611 * k[11] + a1612 * k[12] + + a1613 * k[13]) + f(k[16], tmp, p, t + c16 * dt) + integrator.stats.nf += 6 + end + return nothing +end + +function initialize!(integrator, cache::Vern8ConstantCache) + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 13) : (integrator.kshortsize = 21) + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + @inbounds for i in eachindex(integrator.k) + integrator.k[i] = zero(integrator.uprev) ./ oneunit(integrator.t) + end +end + +@muladd function perform_step!(integrator, cache::Vern8ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + @unpack c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, a1307, a1308, a1309, a1310, b1, b6, b7, b8, b9, b10, b11, b12, btilde1, btilde6, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13 = cache.tab + k1 = f(uprev, p, t) + a = dt * a0201 + k2 = f(uprev + a * k1, p, t + c2 * dt) + k3 = f(uprev + dt * (a0301 * k1 + a0302 * k2), p, t + c3 * dt) + k4 = f(uprev + dt * (a0401 * k1 + a0403 * k3), p, t + c4 * dt) + k5 = f(uprev + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4), p, t + c5 * dt) + k6 = f(uprev + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5), p, t + c6 * dt) + k7 = f(uprev + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + a0706 * k6), p, t + c7 * dt) + k8 = f( + uprev + dt * (a0801 * k1 + a0804 * k4 + a0805 * k5 + a0806 * k6 + a0807 * k7), p, + t + c8 * dt) + k9 = f( + uprev + + dt * + (a0901 * k1 + a0904 * k4 + a0905 * k5 + a0906 * k6 + a0907 * k7 + a0908 * k8), + p, + t + c9 * dt) + k10 = f( + uprev + + dt * + (a1001 * k1 + a1004 * k4 + a1005 * k5 + a1006 * k6 + a1007 * k7 + a1008 * k8 + + a1009 * k9), + p, + t + c10 * dt) + k11 = f( + uprev + + dt * + (a1101 * k1 + a1104 * k4 + a1105 * k5 + a1106 * k6 + a1107 * k7 + a1108 * k8 + + a1109 * k9 + a1110 * k10), + p, + t + c11 * dt) + g12 = uprev + + dt * + (a1201 * k1 + a1204 * k4 + a1205 * k5 + a1206 * k6 + a1207 * k7 + a1208 * k8 + + a1209 * k9 + a1210 * k10 + a1211 * k11) + g13 = uprev + + dt * + (a1301 * k1 + a1304 * k4 + a1305 * k5 + a1306 * k6 + a1307 * k7 + a1308 * k8 + + a1309 * k9 + a1310 * k10) + k12 = f(g12, p, t + dt) + k13 = f(g13, p, t + dt) + integrator.stats.nf += 13 + u = uprev + + dt * (b1 * k1 + b6 * k6 + b7 * k7 + b8 * k8 + b9 * k9 + b10 * k10 + b11 * k11 + + b12 * k12) + if integrator.alg isa CompositeAlgorithm + ϱu = integrator.opts.internalnorm(k13 - k12, t) + ϱd = integrator.opts.internalnorm(g13 - g12, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + utilde = dt * + (btilde1 * k1 + btilde6 * k6 + btilde7 * k7 + btilde8 * k8 + btilde9 * k9 + + btilde10 * k10 + btilde11 * k11 + btilde12 * k12 + btilde13 * k13) + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + integrator.k[1] = k1 + integrator.k[2] = k2 + integrator.k[3] = k3 + integrator.k[4] = k4 + integrator.k[5] = k5 + integrator.k[6] = k6 + integrator.k[7] = k7 + integrator.k[8] = k8 + integrator.k[9] = k9 + integrator.k[10] = k10 + integrator.k[11] = k11 + integrator.k[12] = k12 + integrator.k[13] = k13 + integrator.u = u + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, a2114, a2115, a2116, a2117 = cache.tab.extra + k[14] = f( + uprev + + dt * (a1401 * k[1] + a1406 * k[6] + a1407 * k[7] + a1408 * k[8] + + a1409 * k[9] + a1410 * k[10] + a1411 * k[11] + a1412 * k[12]), + p, + t + c14 * dt) + k[15] = f( + uprev + + dt * (a1501 * k[1] + a1506 * k[6] + a1507 * k[7] + a1508 * k[8] + + a1509 * k[9] + a1510 * k[10] + a1511 * k[11] + a1512 * k[12] + + a1514 * k[14]), + p, + t + c15 * dt) + k[16] = f( + uprev + + dt * (a1601 * k[1] + a1606 * k[6] + a1607 * k[7] + a1608 * k[8] + + a1609 * k[9] + a1610 * k[10] + a1611 * k[11] + a1612 * k[12] + + a1614 * k[14] + a1615 * k[15]), + p, + t + c16 * dt) + k[17] = f( + uprev + + dt * (a1701 * k[1] + a1706 * k[6] + a1707 * k[7] + a1708 * k[8] + + a1709 * k[9] + a1710 * k[10] + a1711 * k[11] + a1712 * k[12] + + a1714 * k[14] + a1715 * k[15] + a1716 * k[16]), + p, + t + c17 * dt) + k[18] = f( + uprev + + dt * (a1801 * k[1] + a1806 * k[6] + a1807 * k[7] + a1808 * k[8] + + a1809 * k[9] + a1810 * k[10] + a1811 * k[11] + a1812 * k[12] + + a1814 * k[14] + a1815 * k[15] + a1816 * k[16] + a1817 * k[17]), + p, + t + c18 * dt) + k[19] = f( + uprev + + dt * (a1901 * k[1] + a1906 * k[6] + a1907 * k[7] + a1908 * k[8] + + a1909 * k[9] + a1910 * k[10] + a1911 * k[11] + a1912 * k[12] + + a1914 * k[14] + a1915 * k[15] + a1916 * k[16] + a1917 * k[17]), + p, + t + c19 * dt) + k[20] = f( + uprev + + dt * (a2001 * k[1] + a2006 * k[6] + a2007 * k[7] + a2008 * k[8] + + a2009 * k[9] + a2010 * k[10] + a2011 * k[11] + a2012 * k[12] + + a2014 * k[14] + a2015 * k[15] + a2016 * k[16] + a2017 * k[17]), + p, + t + c20 * dt) + k[21] = f( + uprev + + dt * (a2101 * k[1] + a2106 * k[6] + a2107 * k[7] + a2108 * k[8] + + a2109 * k[9] + a2110 * k[10] + a2111 * k[11] + a2112 * k[12] + + a2114 * k[14] + a2115 * k[15] + a2116 * k[16] + a2117 * k[17]), + p, + t + c21 * dt) + integrator.stats.nf += 8 + end +end + +function initialize!(integrator, cache::Vern8Cache) + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13 = cache + @unpack k = integrator + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 13) : (integrator.kshortsize = 21) + resize!(k, integrator.kshortsize) + k[1] = k1 + k[2] = k2 + k[3] = k3 + k[4] = k4 + k[5] = k5 + k[6] = k6 + k[7] = k7 + k[8] = k8 + k[9] = k9 + k[10] = k10 + k[11] = k11 + k[12] = k12 + k[13] = k13 # Setup pointers + + if !alg.lazy + for i in 14:21 + k[i] = similar(cache.k1) + end + end +end + +@muladd function perform_step!(integrator, cache::Vern8Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + @unpack c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, a1307, a1308, a1309, a1310, b1, b6, b7, b8, b9, b10, b11, b12, btilde1, btilde6, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13 = cache.tab + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, utilde, tmp, rtmp, atmp, stage_limiter!, step_limiter!, thread = cache + f(k1, uprev, p, t) + a = dt * a0201 + @.. broadcast=false thread=thread tmp=uprev + a * k1 + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k2, tmp, p, t + c2 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a0301 * k1 + a0302 * k2) + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k3, tmp, p, t + c3 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a0401 * k1 + a0403 * k3) + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k4, tmp, p, t + c4 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4) + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k5, tmp, p, t + c5 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5) + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k6, tmp, p, t + c6 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + + a0706 * k6) + stage_limiter!(tmp, integrator, p, t + c7 * dt) + f(k7, tmp, p, t + c7 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a0801 * k1 + a0804 * k4 + a0805 * k5 + + a0806 * k6 + a0807 * k7) + stage_limiter!(tmp, integrator, p, t + c8 * dt) + f(k8, tmp, p, t + c8 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0901 * k1 + a0904 * k4 + a0905 * k5 + + a0906 * k6 + + a0907 * k7 + a0908 * k8) + stage_limiter!(tmp, integrator, p, t + c9 * dt) + f(k9, tmp, p, t + c9 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1001 * k1 + a1004 * k4 + a1005 * k5 + + a1006 * k6 + + a1007 * k7 + a1008 * k8 + a1009 * k9) + stage_limiter!(tmp, integrator, p, t + c10 * dt) + f(k10, tmp, p, t + c10 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1101 * k1 + a1104 * k4 + a1105 * k5 + + a1106 * k6 + + a1107 * k7 + a1108 * k8 + a1109 * k9 + + a1110 * k10) + stage_limiter!(tmp, integrator, p, t + c11 * dt) + f(k11, tmp, p, t + c11 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1201 * k1 + a1204 * k4 + a1205 * k5 + + a1206 * k6 + + a1207 * k7 + a1208 * k8 + a1209 * k9 + + a1210 * k10 + + a1211 * k11) + stage_limiter!(tmp, integrator, p, t + dt) + f(k12, tmp, p, t + dt) + @.. broadcast=false thread=thread u=uprev + + dt * + (a1301 * k1 + a1304 * k4 + a1305 * k5 + a1306 * k6 + + a1307 * k7 + + a1308 * k8 + a1309 * k9 + a1310 * k10) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + f(k13, u, p, t + dt) + integrator.stats.nf += 13 + if integrator.alg isa CompositeAlgorithm + g13 = u + g12 = tmp + @.. broadcast=false thread=thread rtmp=k13 - k12 + ϱu = integrator.opts.internalnorm(rtmp, t) + @.. broadcast=false thread=thread utilde=g13 - g12 + ϱd = integrator.opts.internalnorm(utilde, t) + integrator.eigen_est = ϱu / ϱd + end + @.. broadcast=false thread=thread u=uprev + + dt * + (b1 * k1 + b6 * k6 + b7 * k7 + b8 * k8 + b9 * k9 + + b10 * k10 + + b11 * k11 + b12 * k12) + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=dt * (btilde1 * k1 + btilde6 * k6 + + btilde7 * k7 + + btilde8 * k8 + btilde9 * k9 + + btilde10 * k10 + + btilde11 * k11 + btilde12 * k12 + + btilde13 * k13) + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, a2114, a2115, a2116, a2117 = cache.tab.extra + @unpack tmp = cache + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1401 * k[1] + a1406 * k[6] + a1407 * k[7] + + a1408 * k[8] + + a1409 * k[9] + a1410 * k[10] + + a1411 * k[11] + + a1412 * k[12]) + f(k[14], tmp, p, t + c14 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1501 * k[1] + a1506 * k[6] + a1507 * k[7] + + a1508 * k[8] + + a1509 * k[9] + a1510 * k[10] + + a1511 * k[11] + + a1512 * k[12] + a1514 * k[14]) + f(k[15], tmp, p, t + c15 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1601 * k[1] + a1606 * k[6] + a1607 * k[7] + + a1608 * k[8] + + a1609 * k[9] + a1610 * k[10] + + a1611 * k[11] + + a1612 * k[12] + a1614 * k[14] + + a1615 * k[15]) + f(k[16], tmp, p, t + c16 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1701 * k[1] + a1706 * k[6] + a1707 * k[7] + + a1708 * k[8] + + a1709 * k[9] + a1710 * k[10] + + a1711 * k[11] + + a1712 * k[12] + a1714 * k[14] + + a1715 * k[15] + + a1716 * k[16]) + f(k[17], tmp, p, t + c17 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1801 * k[1] + a1806 * k[6] + a1807 * k[7] + + a1808 * k[8] + + a1809 * k[9] + a1810 * k[10] + + a1811 * k[11] + + a1812 * k[12] + a1814 * k[14] + + a1815 * k[15] + + a1816 * k[16] + a1817 * k[17]) + f(k[18], tmp, p, t + c18 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1901 * k[1] + a1906 * k[6] + a1907 * k[7] + + a1908 * k[8] + + a1909 * k[9] + a1910 * k[10] + + a1911 * k[11] + + a1912 * k[12] + a1914 * k[14] + + a1915 * k[15] + + a1916 * k[16] + a1917 * k[17]) + f(k[19], tmp, p, t + c19 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2001 * k[1] + a2006 * k[6] + a2007 * k[7] + + a2008 * k[8] + + a2009 * k[9] + a2010 * k[10] + + a2011 * k[11] + + a2012 * k[12] + a2014 * k[14] + + a2015 * k[15] + + a2016 * k[16] + a2017 * k[17]) + f(k[20], tmp, p, t + c20 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2101 * k[1] + a2106 * k[6] + a2107 * k[7] + + a2108 * k[8] + + a2109 * k[9] + a2110 * k[10] + + a2111 * k[11] + + a2112 * k[12] + a2114 * k[14] + + a2115 * k[15] + + a2116 * k[16] + a2117 * k[17]) + integrator.stats.nf += 8 + f(k[21], tmp, p, t + c21 * dt) + end + return nothing +end + +function initialize!(integrator, cache::Vern9ConstantCache) + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 10) : (integrator.kshortsize = 20) + integrator.k = typeof(integrator.k)(undef, integrator.kshortsize) + + # Avoid undefined entries if k is an array of arrays + @inbounds for i in eachindex(integrator.k) + integrator.k[i] = zero(integrator.uprev) ./ oneunit(integrator.t) + end +end + +@muladd function perform_step!(integrator, cache::Vern9ConstantCache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + @OnDemandTableauExtract Vern9Tableau T T2 + k1 = f(uprev, p, t) + a = dt * a0201 + k2 = f(uprev + a * k1, p, t + c1 * dt) + k3 = f(uprev + dt * (a0301 * k1 + a0302 * k2), p, t + c2 * dt) + k4 = f(uprev + dt * (a0401 * k1 + a0403 * k3), p, t + c3 * dt) + k5 = f(uprev + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4), p, t + c4 * dt) + k6 = f(uprev + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5), p, t + c5 * dt) + k7 = f(uprev + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + a0706 * k6), p, t + c6 * dt) + k8 = f(uprev + dt * (a0801 * k1 + a0806 * k6 + a0807 * k7), p, t + c7 * dt) + k9 = f(uprev + dt * (a0901 * k1 + a0906 * k6 + a0907 * k7 + a0908 * k8), p, t + c8 * dt) + k10 = f(uprev + dt * (a1001 * k1 + a1006 * k6 + a1007 * k7 + a1008 * k8 + a1009 * k9), + p, t + c9 * dt) + k11 = f( + uprev + + dt * + (a1101 * k1 + a1106 * k6 + a1107 * k7 + a1108 * k8 + a1109 * k9 + a1110 * k10), + p, t + c10 * dt) + k12 = f( + uprev + + dt * + (a1201 * k1 + a1206 * k6 + a1207 * k7 + a1208 * k8 + a1209 * k9 + a1210 * k10 + + a1211 * k11), + p, + t + c11 * dt) + k13 = f( + uprev + + dt * + (a1301 * k1 + a1306 * k6 + a1307 * k7 + a1308 * k8 + a1309 * k9 + a1310 * k10 + + a1311 * k11 + a1312 * k12), + p, + t + c12 * dt) + k14 = f( + uprev + + dt * + (a1401 * k1 + a1406 * k6 + a1407 * k7 + a1408 * k8 + a1409 * k9 + a1410 * k10 + + a1411 * k11 + a1412 * k12 + a1413 * k13), + p, + t + c13 * dt) + g15 = uprev + + dt * + (a1501 * k1 + a1506 * k6 + a1507 * k7 + a1508 * k8 + a1509 * k9 + a1510 * k10 + + a1511 * k11 + a1512 * k12 + a1513 * k13 + a1514 * k14) + g16 = uprev + + dt * + (a1601 * k1 + a1606 * k6 + a1607 * k7 + a1608 * k8 + a1609 * k9 + a1610 * k10 + + a1611 * k11 + a1612 * k12 + a1613 * k13) + k15 = f(g15, p, t + dt) + k16 = f(g16, p, t + dt) + integrator.stats.nf += 16 + u = uprev + + dt * (b1 * k1 + b8 * k8 + b9 * k9 + b10 * k10 + b11 * k11 + b12 * k12 + b13 * k13 + + b14 * k14 + b15 * k15) + if integrator.alg isa CompositeAlgorithm + ϱu = integrator.opts.internalnorm(k16 - k15, t) + ϱd = integrator.opts.internalnorm(g16 - g15, t) + integrator.eigen_est = ϱu / ϱd + end + if integrator.opts.adaptive + utilde = dt * (btilde1 * k1 + btilde8 * k8 + btilde9 * k9 + btilde10 * k10 + + btilde11 * k11 + btilde12 * k12 + btilde13 * k13 + btilde14 * k14 + + btilde15 * k15 + btilde16 * k16) + atmp = calculate_residuals(utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + # k2, k3,k4,k5,k6,k7 are not used in the code (not even in interpolations), we dont need their pointers. + # So we mapped k[2] (from integrator) with k8 (from cache), k[3] with k9 and so on. + integrator.k[1] = k1 + integrator.k[2] = k8 + integrator.k[3] = k9 + integrator.k[4] = k10 + integrator.k[5] = k11 + integrator.k[6] = k12 + integrator.k[7] = k13 + integrator.k[8] = k14 + integrator.k[9] = k15 + integrator.k[10] = k16 + integrator.u = u + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @OnDemandTableauExtract Vern9ExtraStages T T2 + k[11] = f( + uprev + + dt * (a1701 * k[1] + a1708 * k[2] + a1709 * k[3] + a1710 * k[4] + + a1711 * k[5] + a1712 * k[6] + a1713 * k[7] + a1714 * k[8] + + a1715 * k[9]), + p, t + c17 * dt) + k[12] = f( + uprev + + dt * (a1801 * k[1] + a1808 * k[2] + a1809 * k[3] + a1810 * k[4] + + a1811 * k[5] + a1812 * k[6] + a1813 * k[7] + a1814 * k[8] + + a1815 * k[9] + a1817 * k[11]), + p, + t + c18 * dt) + k[13] = f( + uprev + + dt * (a1901 * k[1] + a1908 * k[2] + a1909 * k[3] + a1910 * k[4] + + a1911 * k[5] + a1912 * k[6] + a1913 * k[7] + a1914 * k[8] + + a1915 * k[9] + a1917 * k[11] + a1918 * k[12]), + p, + t + c19 * dt) + k[14] = f( + uprev + + dt * (a2001 * k[1] + a2008 * k[2] + a2009 * k[3] + a2010 * k[4] + + a2011 * k[5] + a2012 * k[6] + a2013 * k[7] + a2014 * k[8] + + a2015 * k[9] + a2017 * k[11] + a2018 * k[12] + a2019 * k[13]), + p, + t + c20 * dt) + k[15] = f( + uprev + + dt * (a2101 * k[1] + a2108 * k[2] + a2109 * k[3] + a2110 * k[4] + + a2111 * k[5] + a2112 * k[6] + a2113 * k[7] + a2114 * k[8] + + a2115 * k[9] + a2117 * k[11] + a2118 * k[12] + a2119 * k[13] + + a2120 * k[14]), + p, + t + c21 * dt) + k[16] = f( + uprev + + dt * (a2201 * k[1] + a2208 * k[2] + a2209 * k[3] + a2210 * k[4] + + a2211 * k[5] + a2212 * k[6] + a2213 * k[7] + a2214 * k[8] + + a2215 * k[9] + a2217 * k[11] + a2218 * k[12] + a2219 * k[13] + + a2220 * k[14] + a2221 * k[15]), + p, + t + c22 * dt) + k[17] = f( + uprev + + dt * (a2301 * k[1] + a2308 * k[2] + a2309 * k[3] + a2310 * k[4] + + a2311 * k[5] + a2312 * k[6] + a2313 * k[7] + a2314 * k[8] + + a2315 * k[9] + a2317 * k[11] + a2318 * k[12] + a2319 * k[13] + + a2320 * k[14] + a2321 * k[15]), + p, + t + c23 * dt) + k[18] = f( + uprev + + dt * (a2401 * k[1] + a2408 * k[2] + a2409 * k[3] + a2410 * k[4] + + a2411 * k[5] + a2412 * k[6] + a2413 * k[7] + a2414 * k[8] + + a2415 * k[9] + a2417 * k[11] + a2418 * k[12] + a2419 * k[13] + + a2420 * k[14] + a2421 * k[15]), + p, + t + c24 * dt) + k[19] = f( + uprev + + dt * (a2501 * k[1] + a2508 * k[2] + a2509 * k[3] + a2510 * k[4] + + a2511 * k[5] + a2512 * k[6] + a2513 * k[7] + a2514 * k[8] + + a2515 * k[9] + a2517 * k[11] + a2518 * k[12] + a2519 * k[13] + + a2520 * k[14] + a2521 * k[15]), + p, + t + c25 * dt) + k[20] = f( + uprev + + dt * (a2601 * k[1] + a2608 * k[2] + a2609 * k[3] + a2610 * k[4] + + a2611 * k[5] + a2612 * k[6] + a2613 * k[7] + a2614 * k[8] + + a2615 * k[9] + a2617 * k[11] + a2618 * k[12] + a2619 * k[13] + + a2620 * k[14] + a2621 * k[15]), + p, + t + c26 * dt) + integrator.stats.nf += 10 + end +end + +function initialize!(integrator, cache::Vern9Cache) + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16 = cache + @unpack k = integrator + alg = unwrap_alg(integrator, false) + alg.lazy ? (integrator.kshortsize = 10) : (integrator.kshortsize = 20) + resize!(k, integrator.kshortsize) + # k2, k3,k4,k5,k6,k7 are not used in the code (not even in interpolations), we dont need their pointers. + # So we mapped k[2] (from integrator) with k8 (from cache), k[3] with k9 and so on. + k[1] = k1 + k[2] = k8 + k[3] = k9 + k[4] = k10 + k[5] = k11 + k[6] = k12 + k[7] = k13 + k[8] = k14 + k[9] = k15 + k[10] = k16 # Setup pointers + + if !alg.lazy + for i in 11:20 + k[i] = similar(cache.k1) + end + end +end + +@muladd function perform_step!(integrator, cache::Vern9Cache, repeat_step = false) + @unpack t, dt, uprev, u, f, p = integrator + uidx = eachindex(integrator.uprev) + T = constvalue(recursive_unitless_bottom_eltype(u)) + T2 = constvalue(typeof(one(t))) + @OnDemandTableauExtract Vern9Tableau T T2 + @unpack k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, utilde, tmp, rtmp, atmp, stage_limiter!, step_limiter!, thread = cache + f(k1, uprev, p, t) + a = dt * a0201 + @.. broadcast=false thread=thread tmp=uprev + a * k1 + stage_limiter!(tmp, integrator, p, t + c1 * dt) + f(k2, tmp, p, t + c1 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a0301 * k1 + a0302 * k2) + stage_limiter!(tmp, integrator, p, t + c2 * dt) + f(k3, tmp, p, t + c2 * dt) + @.. broadcast=false thread=thread tmp=uprev + dt * (a0401 * k1 + a0403 * k3) + stage_limiter!(tmp, integrator, p, t + c3 * dt) + f(k4, tmp, p, t + c3 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0501 * k1 + a0503 * k3 + a0504 * k4) + stage_limiter!(tmp, integrator, p, t + c4 * dt) + f(k5, tmp, p, t + c4 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0601 * k1 + a0604 * k4 + a0605 * k5) + stage_limiter!(tmp, integrator, p, t + c5 * dt) + f(k6, tmp, p, t + c5 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0701 * k1 + a0704 * k4 + a0705 * k5 + + a0706 * k6) + stage_limiter!(tmp, integrator, p, t + c6 * dt) + f(k7, tmp, p, t + c6 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0801 * k1 + a0806 * k6 + a0807 * k7) + stage_limiter!(tmp, integrator, p, t + c7 * dt) + f(k8, tmp, p, t + c7 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a0901 * k1 + a0906 * k6 + a0907 * k7 + + a0908 * k8) + stage_limiter!(tmp, integrator, p, t + c8 * dt) + f(k9, tmp, p, t + c8 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1001 * k1 + a1006 * k6 + a1007 * k7 + + a1008 * k8 + a1009 * k9) + stage_limiter!(tmp, integrator, p, t + c9 * dt) + f(k10, tmp, p, t + c9 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1101 * k1 + a1106 * k6 + a1107 * k7 + + a1108 * k8 + + a1109 * k9 + a1110 * k10) + stage_limiter!(tmp, integrator, p, t + c10 * dt) + f(k11, tmp, p, t + c10 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1201 * k1 + a1206 * k6 + a1207 * k7 + + a1208 * k8 + + a1209 * k9 + a1210 * k10 + a1211 * k11) + stage_limiter!(tmp, integrator, p, t + c11 * dt) + f(k12, tmp, p, t + c11 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1301 * k1 + a1306 * k6 + a1307 * k7 + + a1308 * k8 + + a1309 * k9 + a1310 * k10 + a1311 * k11 + + a1312 * k12) + stage_limiter!(tmp, integrator, p, t + c12 * dt) + f(k13, tmp, p, t + c12 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1401 * k1 + a1406 * k6 + a1407 * k7 + + a1408 * k8 + + a1409 * k9 + a1410 * k10 + a1411 * k11 + + a1412 * k12 + + a1413 * k13) + stage_limiter!(tmp, integrator, p, t + c13 * dt) + f(k14, tmp, p, t + c13 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * (a1501 * k1 + a1506 * k6 + a1507 * k7 + + a1508 * k8 + + a1509 * k9 + a1510 * k10 + a1511 * k11 + + a1512 * k12 + + a1513 * k13 + a1514 * k14) + stage_limiter!(tmp, integrator, p, t + dt) + f(k15, tmp, p, t + dt) + @.. broadcast=false thread=thread u=uprev + + dt * + (a1601 * k1 + a1606 * k6 + a1607 * k7 + a1608 * k8 + + a1609 * k9 + + a1610 * k10 + a1611 * k11 + a1612 * k12 + + a1613 * k13) + stage_limiter!(u, integrator, p, t + dt) + step_limiter!(u, integrator, p, t + dt) + f(k16, u, p, t + dt) + integrator.stats.nf += 16 + if integrator.alg isa CompositeAlgorithm + g16 = u + g15 = tmp + @.. broadcast=false thread=thread rtmp=k16 - k15 + ϱu = integrator.opts.internalnorm(rtmp, t) + @.. broadcast=false thread=thread utilde=g16 - g15 + ϱd = integrator.opts.internalnorm(utilde, t) + integrator.eigen_est = ϱu / ϱd + end + @.. broadcast=false thread=thread u=uprev + + dt * + (b1 * k1 + b8 * k8 + b9 * k9 + b10 * k10 + + b11 * k11 + b12 * k12 + + b13 * k13 + b14 * k14 + b15 * k15) + if integrator.opts.adaptive + @.. broadcast=false thread=thread utilde=dt * (btilde1 * k1 + btilde8 * k8 + + btilde9 * k9 + + btilde10 * k10 + btilde11 * k11 + + btilde12 * k12 + + btilde13 * k13 + btilde14 * k14 + + btilde15 * k15 + + btilde16 * k16) + calculate_residuals!(atmp, utilde, uprev, u, integrator.opts.abstol, + integrator.opts.reltol, integrator.opts.internalnorm, t, + thread) + integrator.EEst = integrator.opts.internalnorm(atmp, t) + end + + alg = unwrap_alg(integrator, false) + if !alg.lazy && (integrator.opts.adaptive == false || + accept_step_controller(integrator, integrator.opts.controller)) + k = integrator.k + @unpack tmp = cache + @OnDemandTableauExtract Vern9ExtraStages T T2 + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1701 * k[1] + a1708 * k[2] + a1709 * k[3] + + a1710 * k[4] + + a1711 * k[5] + a1712 * k[6] + a1713 * k[7] + + a1714 * k[8] + + a1715 * k[9]) + f(k[11], tmp, p, t + c17 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1801 * k[1] + a1808 * k[2] + a1809 * k[3] + + a1810 * k[4] + + a1811 * k[5] + a1812 * k[6] + a1813 * k[7] + + a1814 * k[8] + + a1815 * k[9] + a1817 * k[11]) + f(k[12], tmp, p, t + c18 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a1901 * k[1] + a1908 * k[2] + a1909 * k[3] + + a1910 * k[4] + + a1911 * k[5] + a1912 * k[6] + a1913 * k[7] + + a1914 * k[8] + + a1915 * k[9] + a1917 * k[11] + a1918 * k[12]) + f(k[13], tmp, p, t + c19 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2001 * k[1] + a2008 * k[2] + a2009 * k[3] + + a2010 * k[4] + + a2011 * k[5] + a2012 * k[6] + a2013 * k[7] + + a2014 * k[8] + + a2015 * k[9] + a2017 * k[11] + + a2018 * k[12] + + a2019 * k[13]) + f(k[14], tmp, p, t + c20 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2101 * k[1] + a2108 * k[2] + a2109 * k[3] + + a2110 * k[4] + + a2111 * k[5] + a2112 * k[6] + a2113 * k[7] + + a2114 * k[8] + + a2115 * k[9] + a2117 * k[11] + + a2118 * k[12] + + a2119 * k[13] + a2120 * k[14]) + f(k[15], tmp, p, t + c21 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2201 * k[1] + a2208 * k[2] + a2209 * k[3] + + a2210 * k[4] + + a2211 * k[5] + a2212 * k[6] + a2213 * k[7] + + a2214 * k[8] + + a2215 * k[9] + a2217 * k[11] + + a2218 * k[12] + + a2219 * k[13] + a2220 * k[14] + + a2221 * k[15]) + f(k[16], tmp, p, t + c22 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2301 * k[1] + a2308 * k[2] + a2309 * k[3] + + a2310 * k[4] + + a2311 * k[5] + a2312 * k[6] + a2313 * k[7] + + a2314 * k[8] + + a2315 * k[9] + a2317 * k[11] + + a2318 * k[12] + + a2319 * k[13] + a2320 * k[14] + + a2321 * k[15]) + f(k[17], tmp, p, t + c23 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2401 * k[1] + a2408 * k[2] + a2409 * k[3] + + a2410 * k[4] + + a2411 * k[5] + a2412 * k[6] + a2413 * k[7] + + a2414 * k[8] + + a2415 * k[9] + a2417 * k[11] + + a2418 * k[12] + + a2419 * k[13] + a2420 * k[14] + + a2421 * k[15]) + f(k[18], tmp, p, t + c24 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2501 * k[1] + a2508 * k[2] + a2509 * k[3] + + a2510 * k[4] + + a2511 * k[5] + a2512 * k[6] + a2513 * k[7] + + a2514 * k[8] + + a2515 * k[9] + a2517 * k[11] + + a2518 * k[12] + + a2519 * k[13] + a2520 * k[14] + + a2521 * k[15]) + f(k[19], tmp, p, t + c25 * dt) + @.. broadcast=false thread=thread tmp=uprev + + dt * + (a2601 * k[1] + a2608 * k[2] + a2609 * k[3] + + a2610 * k[4] + + a2611 * k[5] + a2612 * k[6] + a2613 * k[7] + + a2614 * k[8] + + a2615 * k[9] + a2617 * k[11] + + a2618 * k[12] + + a2619 * k[13] + a2620 * k[14] + + a2621 * k[15]) + integrator.stats.nf += 10 + f(k[20], tmp, p, t + c26 * dt) + end + return nothing +end diff --git a/src/rkc_utils.jl b/src/rkc_utils.jl new file mode 100644 index 0000000000..661197f5a7 --- /dev/null +++ b/src/rkc_utils.jl @@ -0,0 +1,276 @@ +# This function calculates the largest eigenvalue +# (absolute value wise) by power iteration. +const RKCAlgs = Union{RKC, IRKC, ESERK4, ESERK5, SERK2} +function maxeig!(integrator, cache::OrdinaryDiffEqConstantCache) + isfirst = integrator.iter == 1 || integrator.u_modified + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + maxiter = (integrator.alg isa Union{ESERK4, ESERK5, SERK2}) ? 100 : 50 + + safe = (integrator.alg isa RKCAlgs) ? 1.0 : 1.2 + # Initial guess for eigenvector `z` + if isfirst + if integrator.alg isa RKCAlgs + if integrator.alg isa IRKC + z = cache.du₂ + else + z = fsalfirst + end + else + fz = fsalfirst + z = f(fz, p, t) + integrator.stats.nf += 1 + end + else + z = cache.zprev + end + # Perturbation + u_norm = integrator.opts.internalnorm(uprev, t) + z_norm = integrator.opts.internalnorm(z, t) + pert = eps(u_norm) + sqrt_pert = sqrt(pert) + is_u_zero = u_norm == zero(u_norm) + is_z_zero = z_norm == zero(z_norm) + # Normalize `z` such that z-u lie in a circle + if (!is_u_zero && !is_z_zero) + dz_u = u_norm * sqrt_pert + quot = dz_u / z_norm + z = uprev + quot * z + elseif !is_u_zero + dz_u = u_norm * sqrt_pert + z = uprev + uprev * dz_u + elseif !is_z_zero + dz_u = pert + quot = dz_u / z_norm + z *= quot + else + dz_u = pert + z = dz_u * ones(z) + end # endif + # Start power iteration + integrator.eigen_est = 0 + for iter in 1:maxiter + if integrator.alg isa IRKC + fz = f.f2(z, p, t) + integrator.stats.nf2 += 1 + tmp = fz - cache.du₂ + else + fz = f(z, p, t) + integrator.stats.nf += 1 + tmp = fz - fsalfirst + end + Δ = integrator.opts.internalnorm(tmp, t) + eig_prev = integrator.eigen_est + integrator.eigen_est = Δ / dz_u * safe + # Convergence + if integrator.alg isa RKCAlgs # To match the constants given in the paper + if iter >= 2 && + abs(eig_prev - integrator.eigen_est) < + max(integrator.eigen_est, 1.0 / integrator.opts.dtmax) * 0.01 + integrator.eigen_est *= 1.2 + # Store the eigenvector + cache.zprev = z - uprev + return true + end + else + if iter >= 2 && + abs(eig_prev - integrator.eigen_est) < integrator.eigen_est * 0.05 + # Store the eigenvector + cache.zprev = z - uprev + return true + end + end + + # Next `z` + if Δ != zero(Δ) + quot = dz_u / Δ + z = uprev + quot * tmp + else + # An arbitrary change on `z` + nind = length(z) + if (nind != 1) + ind = 1 + iter % nind + # val = (uprev[ind] - (z[ind] - uprev[ind]))*one(eltype(z))*2 + _vec(z) .= _vec(z) .* (1 .- 2 .* ((1:length(z)) .== ind)) + else + z = -z + end + end + end + return false +end + +function maxeig!(integrator, cache::OrdinaryDiffEqMutableCache) + isfirst = integrator.iter == 1 || integrator.u_modified + @unpack t, dt, uprev, u, f, p, fsalfirst = integrator + if cache isa IRKCCache + fz, z, atmp = integrator.fsallast, cache.nlsolver.tmp, cache.atmp + else + fz, z, atmp = cache.k, cache.tmp, cache.atmp + end + ccache = cache.constantcache + maxiter = (integrator.alg isa Union{ESERK4, ESERK5, SERK2}) ? 100 : 50 + safe = (integrator.alg isa RKCAlgs) ? 1.0 : 1.2 + # Initial guess for eigenvector `z` + if isfirst + if integrator.alg isa RKCAlgs + if integrator.alg isa IRKC + @.. broadcast=false z=cache.du₂ + else + @.. broadcast=false z=fsalfirst + end + else + @.. broadcast=false fz=fsalfirst + f(z, fz, p, t) + integrator.stats.nf += 1 + end + else + @.. broadcast=false z=ccache.zprev + end + # Perturbation + u_norm = integrator.opts.internalnorm(uprev, t) + z_norm = integrator.opts.internalnorm(z, t) + pert = eps(u_norm) + sqrt_pert = sqrt(pert) + is_u_zero = u_norm == zero(u_norm) + is_z_zero = z_norm == zero(z_norm) + # Normalize `z` such that z-u lie in a circle + if (!is_u_zero && !is_z_zero) + dz_u = u_norm * sqrt_pert + quot = dz_u / z_norm + @.. broadcast=false z=uprev + quot * z + elseif !is_u_zero + dz_u = u_norm * sqrt_pert + @.. broadcast=false z=uprev + uprev * dz_u + elseif !is_z_zero + dz_u = pert + quot = dz_u / z_norm + @.. broadcast=false z*=quot + else + dz_u = pert + @.. broadcast=false z=dz_u * one(eltype(z)) + end # endif + # Start power iteration + integrator.eigen_est = 0 + for iter in 1:maxiter + if integrator.alg isa IRKC + f.f2(fz, z, p, t) + integrator.stats.nf2 += 1 + @.. broadcast=false atmp=fz - cache.du₂ + else + f(fz, z, p, t) + integrator.stats.nf += 1 + @.. broadcast=false atmp=fz - fsalfirst + end + Δ = integrator.opts.internalnorm(atmp, t) + eig_prev = integrator.eigen_est + integrator.eigen_est = Δ / dz_u * safe + # Convergence + if integrator.alg isa RKCAlgs # To match the constants given in the paper + if iter >= 2 && + abs(eig_prev - integrator.eigen_est) < + max(integrator.eigen_est, 1.0 / integrator.opts.dtmax) * 0.01 + integrator.eigen_est *= 1.2 + # Store the eigenvector + @.. broadcast=false ccache.zprev=z - uprev + return true + end + else + if iter >= 2 && + abs(eig_prev - integrator.eigen_est) < integrator.eigen_est * 0.05 + # Store the eigenvector + @.. broadcast=false ccache.zprev=z - uprev + return true + end + end + # Next `z` + if Δ != zero(Δ) + quot = dz_u / Δ + @.. broadcast=false z=uprev + quot * atmp + else + # An arbitrary change on `z` + nind = length(uprev) + if (nind != 1) + ind = 1 + iter % nind + # val = (uprev[ind] - (z[ind] - uprev[ind]))*one(eltype(z)) + _vec(z) .= _vec(z) .* (1 .- 2 .* ((1:length(z)) .== ind)) + else + z = -z + end + end + end + return false +end +""" + choosedeg!(cache) -> nothing + +Calculate `mdeg = ms[deg_index]` (the degree of the Chebyshev polynomial) +and `cache.start` (the start index of recurrence parameters for that +degree), where `recf` are the `μ,κ` pairs +for the `mdeg` degree method. The `κ` for `stage-1` for every degree +is 0 therefore it's not included in `recf` +""" +function choosedeg!(cache::T) where {T} + isconst = T <: OrdinaryDiffEqConstantCache + isconst || (cache = cache.constantcache) + start = 1 + @inbounds for i in 1:size(cache.ms, 1) + if cache.ms[i] >= cache.mdeg + cache.deg_index = i + cache.mdeg = cache.ms[i] + cache.start = start + break + end + start += cache.ms[i] * 2 - 1 + end + return nothing +end + +function choosedeg_SERK!(integrator, cache::T) where {T} + isconst = T <: OrdinaryDiffEqConstantCache + isconst || (cache = cache.constantcache) + @unpack ms = cache + start = 1 + @inbounds for i in 1:size(ms, 1) + if ms[i] < cache.mdeg + start += ms[i] + 1 + else + cache.start = start + cache.mdeg = ms[i] + break + end + end + if integrator.alg isa ESERK5 + if cache.mdeg <= 20 + cache.internal_deg = 2 + elseif cache.mdeg <= 50 + cache.internal_deg = 5 + elseif cache.mdeg <= 100 + cache.internal_deg = 10 + elseif cache.mdeg <= 500 + cache.internal_deg = 50 + elseif cache.mdeg <= 1000 + cache.internal_deg = 100 + elseif cache.mdeg <= 2000 + cache.internal_deg = 200 + end + end + + if integrator.alg isa ESERK4 + if cache.mdeg <= 20 + cache.internal_deg = 2 + elseif cache.mdeg <= 100 + cache.internal_deg = 10 + elseif cache.mdeg <= 500 + cache.internal_deg = 25 + elseif cache.mdeg <= 1000 + cache.internal_deg = 100 + elseif cache.mdeg <= 4000 + cache.internal_deg = 200 + end + end + + if integrator.alg isa SERK2 + cache.internal_deg = cache.mdeg / 10 + end + return nothing +end diff --git a/src/tableaus/feagin_tableaus.jl b/src/tableaus/feagin_tableaus.jl new file mode 100644 index 0000000000..64a056e0c9 --- /dev/null +++ b/src/tableaus/feagin_tableaus.jl @@ -0,0 +1,2650 @@ +struct Feagin10ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + adaptiveConst::T + a0100::T + a0200::T + a0201::T + a0300::T + a0302::T + a0400::T + a0402::T + a0403::T + a0500::T + a0503::T + a0504::T + a0600::T + a0603::T + a0604::T + a0605::T + a0700::T + a0704::T + a0705::T + a0706::T + a0800::T + a0805::T + a0806::T + a0807::T + a0900::T + a0905::T + a0906::T + a0907::T + a0908::T + a1000::T + a1005::T + a1006::T + a1007::T + a1008::T + a1009::T + a1100::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + a1200::T + a1203::T + a1204::T + a1205::T + a1206::T + a1207::T + a1208::T + a1209::T + a1210::T + a1211::T + a1300::T + a1302::T + a1303::T + a1305::T + a1306::T + a1307::T + a1308::T + a1309::T + a1310::T + a1311::T + a1312::T + a1400::T + a1401::T + a1404::T + a1406::T + a1412::T + a1413::T + a1500::T + a1502::T + a1514::T + a1600::T + a1601::T + a1602::T + a1604::T + a1605::T + a1606::T + a1607::T + a1608::T + a1609::T + a1610::T + a1611::T + a1612::T + a1613::T + a1614::T + a1615::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T + b17::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + c12::T2 + c13::T2 + c14::T2 + c15::T2 + c16::T2 +end + +""" +constructFeagin10 +""" +function Feagin10ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + adaptiveConst = convert(T, 0.002777777777777778) + a0100 = convert(T, 0.1) + + a0200 = convert(T, -0.9151765613752915) + a0201 = convert(T, 1.4545344021782731) + + a0300 = convert(T, 0.20225919030111816) + a0302 = convert(T, 0.6067775709033545) + + a0400 = convert(T, 0.18402471470864357) + a0402 = convert(T, 0.19796683122719236) + a0403 = convert(T, -0.07295478473136326) + + a0500 = convert(T, 0.08790073402066813) + a0503 = convert(T, 0.41045970252026065) + a0504 = convert(T, 0.4827137536788665) + + a0600 = convert(T, 0.08597005049024603) + a0603 = convert(T, 0.3308859630407222) + a0604 = convert(T, 0.4896629573094502) + a0605 = convert(T, -0.07318563750708508) + + a0700 = convert(T, 0.12093044912533372) + a0704 = convert(T, 0.2601246757582956) + a0705 = convert(T, 0.032540262154909134) + a0706 = convert(T, -0.0595780211817361) + + a0800 = convert(T, 0.11085437958039149) + a0805 = convert(T, -0.06057614882550056) + a0806 = convert(T, 0.3217637056017784) + a0807 = convert(T, 0.510485725608063) + + a0900 = convert(T, 0.112054414752879) + a0905 = convert(T, -0.14494277590286592) + a0906 = convert(T, -0.3332697190962567) + a0907 = convert(T, 0.4992692295568801) + a0908 = convert(T, 0.5095046089296861) + + a1000 = convert(T, 0.11397678396418598) + a1005 = convert(T, -0.07688133642033569) + a1006 = convert(T, 0.23952736032439065) + a1007 = convert(T, 0.3977746623680946) + a1008 = convert(T, 0.010755895687360746) + a1009 = convert(T, -0.3277691241640189) + + a1100 = convert(T, 0.07983145282801961) + a1105 = convert(T, -0.052032968680060306) + a1106 = convert(T, -0.05769541461685489) + a1107 = convert(T, 0.19478191571210415) + a1108 = convert(T, 0.14538492318832508) + a1109 = convert(T, -0.07829427103516708) + a1110 = convert(T, -0.11450329936109892) + + a1200 = convert(T, 0.9851156101648573) + a1203 = convert(T, 0.3308859630407222) + a1204 = convert(T, 0.4896629573094502) + a1205 = convert(T, -1.3789648657484357) + a1206 = convert(T, -0.8611641950276356) + a1207 = convert(T, 5.784288136375372) + a1208 = convert(T, 3.2880776198510357) + a1209 = convert(T, -2.386339050931364) + a1210 = convert(T, -3.254793424836439) + a1211 = convert(T, -2.16343541686423) + + a1300 = convert(T, 0.8950802957716328) + a1302 = convert(T, 0.19796683122719236) + a1303 = convert(T, -0.07295478473136326) + a1305 = convert(T, -0.8512362396620076) + a1306 = convert(T, 0.3983201123185333) + a1307 = convert(T, 3.639372631810356) + a1308 = convert(T, 1.5482287703983033) + a1309 = convert(T, -2.122217147040537) + a1310 = convert(T, -1.5835039854532618) + a1311 = convert(T, -1.7156160828593627) + a1312 = convert(T, -0.024403640575012746) + + a1400 = convert(T, -0.9151765613752915) + a1401 = convert(T, 1.4545344021782731) + a1404 = convert(T, -0.7773336436449683) + a1406 = convert(T, -0.0910895662155176) + a1412 = convert(T, 0.0910895662155176) + a1413 = convert(T, 0.7773336436449683) + + a1500 = convert(T, 0.1) + a1502 = convert(T, -0.15717866579977116) + a1514 = convert(T, 0.15717866579977116) + + a1600 = convert(T, 0.1817813007000953) + a1601 = convert(T, 0.675) + a1602 = convert(T, 0.3427581598471898) + a1604 = convert(T, 0.25911121454832275) + a1605 = convert(T, -0.35827896671795206) + a1606 = convert(T, -1.0459489594088331) + a1607 = convert(T, 0.930327845415627) + a1608 = convert(T, 1.7795095943170811) + a1609 = convert(T, 0.1) + a1610 = convert(T, -0.2825475695390441) + a1611 = convert(T, -0.15932735011997254) + a1612 = convert(T, -0.14551589464700151) + a1613 = convert(T, -0.25911121454832275) + a1614 = convert(T, -0.3427581598471898) + a1615 = convert(T, -0.675) + + b1 = convert(T, 0.03333333333333333) + b2 = convert(T, 0.025) + b3 = convert(T, 0.03333333333333333) + b4 = convert(T, 0) + b5 = convert(T, 0.05) + b6 = convert(T, 0) + b7 = convert(T, 0.04) + b8 = convert(T, 0) + b9 = convert(T, 0.1892374781489235) + b10 = convert(T, 0.2774291885177432) + b11 = convert(T, 0.2774291885177432) + b12 = convert(T, 0.1892374781489235) + b13 = convert(T, -0.04) + b14 = convert(T, -0.05) + b15 = convert(T, -0.03333333333333333) + b16 = convert(T, -0.025) + b17 = convert(T, 0.03333333333333333) + + c1 = convert(T2, 0.1) + c2 = convert(T2, 0.5393578408029818) + c3 = convert(T2, 0.8090367612044727) + c4 = convert(T2, 0.30903676120447265) + c5 = convert(T2, 0.9810741902197953) + c6 = convert(T2, 0.8333333333333334) + c7 = convert(T2, 0.3540173658568024) + c8 = convert(T2, 0.8825276619647323) + c9 = convert(T2, 0.6426157582403226) + c10 = convert(T2, 0.3573842417596775) + c11 = convert(T2, 0.11747233803526766) + c12 = convert(T2, 0.8333333333333334) + c13 = convert(T2, 0.30903676120447265) + c14 = convert(T2, 0.5393578408029818) + c15 = convert(T2, 0.1) + c16 = convert(T2, 1) + Feagin10ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1203, + a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1300, + a1302, a1303, a1305, a1306, a1307, a1308, a1309, a1310, a1311, + a1312, a1400, a1401, a1404, a1406, a1412, a1413, a1500, a1502, + a1514, a1600, a1601, a1602, a1604, a1605, a1606, a1607, a1608, + a1609, a1610, a1611, a1612, a1613, a1614, a1615, b1, b2, b3, b4, + b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, c1, + c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16) +end + +""" +constructFeagin10 +""" +function Feagin10ConstantCache(T::Type, T2::Type) + adaptiveConst = convert(T, 1 // 360) + a0100 = convert(T, 1 // 10) + + a0200 = convert(T, big"-0.915176561375291440520015019275342154318951387664369720564660") + a0201 = convert(T, big"1.45453440217827322805250021715664459117622483736537873607016") + + a0300 = convert(T, big"0.202259190301118170324681949205488413821477543637878380814562") + a0302 = convert(T, big"0.606777570903354510974045847616465241464432630913635142443687") + + a0400 = convert(T, big"0.184024714708643575149100693471120664216774047979591417844635") + a0402 = convert(T, big"0.197966831227192369068141770510388793370637287463360401555746") + a0403 = convert(T, + big"-0.0729547847313632629185146671595558023015011608914382961421311") + + a0500 = convert(T, big"0.0879007340206681337319777094132125475918886824944548534041378") + a0503 = convert(T, big"0.410459702520260645318174895920453426088035325902848695210406") + a0504 = convert(T, big"0.482713753678866489204726942976896106809132737721421333413261") + + a0600 = convert(T, big"0.0859700504902460302188480225945808401411132615636600222593880") + a0603 = convert(T, big"0.330885963040722183948884057658753173648240154838402033448632") + a0604 = convert(T, big"0.489662957309450192844507011135898201178015478433790097210790") + a0605 = convert(T, + big"-0.0731856375070850736789057580558988816340355615025188195854775") + + a0700 = convert(T, big"0.120930449125333720660378854927668953958938996999703678812621") + a0704 = convert(T, big"0.260124675758295622809007617838335174368108756484693361887839") + a0705 = convert(T, big"0.0325402621549091330158899334391231259332716675992700000776101") + a0706 = convert(T, + big"-0.0595780211817361001560122202563305121444953672762930724538856") + + a0800 = convert(T, big"0.110854379580391483508936171010218441909425780168656559807038") + a0805 = convert(T, + big"-0.0605761488255005587620924953655516875526344415354339234619466") + a0806 = convert(T, big"0.321763705601778390100898799049878904081404368603077129251110") + a0807 = convert(T, big"0.510485725608063031577759012285123416744672137031752354067590") + + a0900 = convert(T, big"0.112054414752879004829715002761802363003717611158172229329393") + a0905 = convert(T, big"-0.144942775902865915672349828340980777181668499748506838876185") + a0906 = convert(T, big"-0.333269719096256706589705211415746871709467423992115497968724") + a0907 = convert(T, big"0.499269229556880061353316843969978567860276816592673201240332") + a0908 = convert(T, big"0.509504608929686104236098690045386253986643232352989602185060") + + a1000 = convert(T, big"0.113976783964185986138004186736901163890724752541486831640341") + a1005 = convert(T, + big"-0.0768813364203356938586214289120895270821349023390922987406384") + a1006 = convert(T, big"0.239527360324390649107711455271882373019741311201004119339563") + a1007 = convert(T, big"0.397774662368094639047830462488952104564716416343454639902613") + a1008 = convert(T, big"0.0107558956873607455550609147441477450257136782823280838547024") + a1009 = convert(T, big"-0.327769124164018874147061087350233395378262992392394071906457") + + a1100 = convert(T, big"0.0798314528280196046351426864486400322758737630423413945356284") + a1105 = convert(T, + big"-0.0520329686800603076514949887612959068721311443881683526937298") + a1106 = convert(T, + big"-0.0576954146168548881732784355283433509066159287152968723021864") + a1107 = convert(T, big"0.194781915712104164976306262147382871156142921354409364738090") + a1108 = convert(T, big"0.145384923188325069727524825977071194859203467568236523866582") + a1109 = convert(T, + big"-0.0782942710351670777553986729725692447252077047239160551335016") + a1110 = convert(T, big"-0.114503299361098912184303164290554670970133218405658122674674") + + a1200 = convert(T, big"0.985115610164857280120041500306517278413646677314195559520529") + a1203 = convert(T, big"0.330885963040722183948884057658753173648240154838402033448632") + a1204 = convert(T, big"0.489662957309450192844507011135898201178015478433790097210790") + a1205 = convert(T, big"-1.37896486574843567582112720930751902353904327148559471526397") + a1206 = convert(T, big"-0.861164195027635666673916999665534573351026060987427093314412") + a1207 = convert(T, big"5.78428813637537220022999785486578436006872789689499172601856") + a1208 = convert(T, big"3.28807761985103566890460615937314805477268252903342356581925") + a1209 = convert(T, big"-2.38633905093136384013422325215527866148401465975954104585807") + a1210 = convert(T, big"-3.25479342483643918654589367587788726747711504674780680269911") + a1211 = convert(T, big"-2.16343541686422982353954211300054820889678036420109999154887") + + a1300 = convert(T, big"0.895080295771632891049613132336585138148156279241561345991710") + a1302 = convert(T, big"0.197966831227192369068141770510388793370637287463360401555746") + a1303 = convert(T, + big"-0.0729547847313632629185146671595558023015011608914382961421311") + a1305 = convert(T, big"-0.851236239662007619739049371445966793289359722875702227166105") + a1306 = convert(T, big"0.398320112318533301719718614174373643336480918103773904231856") + a1307 = convert(T, big"3.63937263181035606029412920047090044132027387893977804176229") + a1308 = convert(T, big"1.54822877039830322365301663075174564919981736348973496313065") + a1309 = convert(T, big"-2.12221714704053716026062427460427261025318461146260124401561") + a1310 = convert(T, big"-1.58350398545326172713384349625753212757269188934434237975291") + a1311 = convert(T, big"-1.71561608285936264922031819751349098912615880827551992973034") + a1312 = convert(T, + big"-0.0244036405750127452135415444412216875465593598370910566069132") + + a1400 = convert(T, big"-0.915176561375291440520015019275342154318951387664369720564660") + a1401 = convert(T, big"1.45453440217827322805250021715664459117622483736537873607016") + a1404 = convert(T, big"-0.777333643644968233538931228575302137803351053629547286334469") + a1406 = convert(T, + big"-0.0910895662155176069593203555807484200111889091770101799647985") + a1412 = convert(T, big"0.0910895662155176069593203555807484200111889091770101799647985") + a1413 = convert(T, big"0.777333643644968233538931228575302137803351053629547286334469") + + a1500 = convert(T, 1 // 10) + a1502 = convert(T, big"-0.157178665799771163367058998273128921867183754126709419409654") + a1514 = convert(T, big"0.157178665799771163367058998273128921867183754126709419409654") + + a1600 = convert(T, big"0.181781300700095283888472062582262379650443831463199521664945") + a1601 = convert(T, 27 // 40) + a1602 = convert(T, big"0.342758159847189839942220553413850871742338734703958919937260") + a1604 = convert(T, big"0.259111214548322744512977076191767379267783684543182428778156") + a1605 = convert(T, big"-0.358278966717952089048961276721979397739750634673268802484271") + a1606 = convert(T, big"-1.04594895940883306095050068756409905131588123172378489286080") + a1607 = convert(T, big"0.930327845415626983292300564432428777137601651182965794680397") + a1608 = convert(T, big"1.77950959431708102446142106794824453926275743243327790536000") + a1609 = convert(T, 1 // 10) + a1610 = convert(T, big"-0.282547569539044081612477785222287276408489375976211189952877") + a1611 = convert(T, big"-0.159327350119972549169261984373485859278031542127551931461821") + a1612 = convert(T, big"-0.145515894647001510860991961081084111308650130578626404945571") + a1613 = convert(T, big"-0.259111214548322744512977076191767379267783684543182428778156") + a1614 = convert(T, big"-0.342758159847189839942220553413850871742338734703958919937260") + a1615 = convert(T, -27 // 40) + + b1 = convert(T, 1 // 30) + b2 = convert(T, 1 // 40) + b3 = convert(T, 1 // 30) + b4 = convert(T, 0) + b5 = convert(T, 1 // 20) + b6 = convert(T, 0) + b7 = convert(T, 1 // 25) + b8 = convert(T, 0) + b9 = convert(T, big"0.189237478148923490158306404106012326238162346948625830327194") + b10 = convert(T, big"0.277429188517743176508360262560654340428504319718040836339472") + b11 = convert(T, big"0.277429188517743176508360262560654340428504319718040836339472") + b12 = convert(T, big"0.189237478148923490158306404106012326238162346948625830327194") + b13 = convert(T, -1 // 25) + b14 = convert(T, -1 // 20) + b15 = convert(T, -1 // 30) + b16 = convert(T, -1 // 40) + b17 = convert(T, 1 // 30) + + c1 = convert(T2, 1 // 10) + c2 = convert(T2, big"0.539357840802981787532485197881302436857273449701009015505500") + c3 = convert(T2, big"0.809036761204472681298727796821953655285910174551513523258250") + c4 = convert(T2, big"0.309036761204472681298727796821953655285910174551513523258250") + c5 = convert(T2, big"0.981074190219795268254879548310562080489056746118724882027805") + c6 = convert(T2, 5 // 6) + c7 = convert(T2, big"0.354017365856802376329264185948796742115824053807373968324184") + c8 = convert(T2, big"0.882527661964732346425501486979669075182867844268052119663791") + c9 = convert(T2, big"0.642615758240322548157075497020439535959501736363212695909875") + c10 = convert(T2, big"0.357384241759677451842924502979560464040498263636787304090125") + c11 = convert(T2, big"0.117472338035267653574498513020330924817132155731947880336209") + c12 = convert(T2, 5 // 6) + c13 = convert(T2, big"0.309036761204472681298727796821953655285910174551513523258250") + c14 = convert(T2, big"0.539357840802981787532485197881302436857273449701009015505500") + c15 = convert(T2, 1 // 10) + c16 = convert(T2, 1) + Feagin10ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1203, + a1204, a1205, a1206, a1207, a1208, a1209, a1210, a1211, a1300, + a1302, a1303, a1305, a1306, a1307, a1308, a1309, a1310, a1311, + a1312, a1400, a1401, a1404, a1406, a1412, a1413, a1500, a1502, + a1514, a1600, a1601, a1602, a1604, a1605, a1606, a1607, a1608, + a1609, a1610, a1611, a1612, a1613, a1614, a1615, b1, b2, b3, b4, + b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, c1, + c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16) +end + +struct Feagin12ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + adaptiveConst::T + a0100::T + a0200::T + a0201::T + a0300::T + a0302::T + a0400::T + a0402::T + a0403::T + a0500::T + a0503::T + a0504::T + a0600::T + a0603::T + a0604::T + a0605::T + a0700::T + a0704::T + a0705::T + a0706::T + a0800::T + a0805::T + a0806::T + a0807::T + a0900::T + a0905::T + a0906::T + a0907::T + a0908::T + a1000::T + a1005::T + a1006::T + a1007::T + a1008::T + a1009::T + a1100::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + a1200::T + a1208::T + a1209::T + a1210::T + a1211::T + a1300::T + a1308::T + a1309::T + a1310::T + a1311::T + a1312::T + a1400::T + a1408::T + a1409::T + a1410::T + a1411::T + a1412::T + a1413::T + a1500::T + a1508::T + a1509::T + a1510::T + a1511::T + a1512::T + a1513::T + a1514::T + a1600::T + a1608::T + a1609::T + a1610::T + a1611::T + a1612::T + a1613::T + a1614::T + a1615::T + a1700::T + a1705::T + a1706::T + a1707::T + a1708::T + a1709::T + a1710::T + a1711::T + a1712::T + a1713::T + a1714::T + a1715::T + a1716::T + a1800::T + a1805::T + a1806::T + a1807::T + a1808::T + a1809::T + a1810::T + a1811::T + a1812::T + a1813::T + a1814::T + a1815::T + a1816::T + a1817::T + a1900::T + a1904::T + a1905::T + a1906::T + a1908::T + a1909::T + a1910::T + a1911::T + a1912::T + a1913::T + a1914::T + a1915::T + a1916::T + a1917::T + a1918::T + a2000::T + a2003::T + a2004::T + a2005::T + a2007::T + a2009::T + a2010::T + a2017::T + a2018::T + a2019::T + a2100::T + a2102::T + a2103::T + a2106::T + a2107::T + a2109::T + a2110::T + a2117::T + a2118::T + a2119::T + a2120::T + a2200::T + a2201::T + a2204::T + a2206::T + a2220::T + a2221::T + a2300::T + a2302::T + a2322::T + a2400::T + a2401::T + a2402::T + a2404::T + a2406::T + a2407::T + a2408::T + a2409::T + a2410::T + a2411::T + a2412::T + a2413::T + a2414::T + a2415::T + a2416::T + a2417::T + a2418::T + a2419::T + a2420::T + a2421::T + a2422::T + a2423::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + c12::T2 + c13::T2 + c14::T2 + c15::T2 + c16::T2 + c17::T2 + c18::T2 + c19::T2 + c20::T2 + c21::T2 + c22::T2 + c23::T2 + c24::T2 + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T + b17::T + b18::T + b19::T + b20::T + b21::T + b22::T + b23::T + b24::T + b25::T +end + +""" +constructFeagin12 +""" +function Feagin12ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + adaptiveConst = convert(T, 49 // 640) + c1 = convert(T2, 1 // 5) + c2 = convert(T2, 5 // 9) + c3 = convert(T2, 5 // 6) + c4 = convert(T2, 1 // 3) + c5 = convert(T2, 1) + c6 = convert(T2, 0.671835709170513812712245661002797570438953420568682550710222) + c7 = convert(T2, 0.288724941110620201935458488967024976908118598341806976469674) + c8 = convert(T2, 9 // 16) + c9 = convert(T2, 5 // 6) + c10 = convert(T2, 0.947695431179199287562380162101836721649589325892740646458322) + c11 = convert(T2, 0.0548112876863802643887753674810754475842153612931128785028369) + c12 = convert(T2, 0.0848880518607165350639838930162674302064148175640019542045934) + c13 = convert(T2, 0.265575603264642893098114059045616835297201264164077621448665) + c14 = convert(T2, 1 // 2) + c15 = convert(T2, 0.734424396735357106901885940954383164702798735835922378551335) + c16 = convert(T2, 0.915111948139283464936016106983732569793585182435998045795407) + c17 = convert(T2, 0.947695431179199287562380162101836721649589325892740646458322) + c18 = convert(T2, 5 // 6) + c19 = convert(T2, 0.288724941110620201935458488967024976908118598341806976469674) + c20 = convert(T2, 0.671835709170513812712245661002797570438953420568682550710222) + c21 = convert(T2, 1 // 3) + c22 = convert(T2, 5 // 9) + c23 = convert(T2, 1 // 5) + c24 = convert(T2, 1) + + b1 = convert(T, 1 // 42) + b2 = convert(T, 234375 // 10000000) + b3 = convert(T, 3125 // 100000) + b4 = convert(T, 0) + b5 = convert(T, 1 // 24) + b6 = convert(T, 0) + b7 = convert(T, 1 // 20) + b8 = convert(T, 1 // 20) + b9 = convert(T, 0) + b10 = convert(T, 1 // 10) + b11 = convert(T, 1 // 14) + b12 = convert(T, 0) + b13 = convert(T, 0.138413023680782974005350203145033146748813640089941234591267) + b14 = convert(T, 0.215872690604931311708935511140681138965472074195773051123019) + b15 = convert(T, 0.243809523809523809523809523809523809523809523809523809523810) + b16 = convert(T, 0.215872690604931311708935511140681138965472074195773051123019) + b17 = convert(T, 0.138413023680782974005350203145033146748813640089941234591267) + b18 = convert(T, -0.0714285714285714285714285714285714285714285714285714285714286) + b19 = convert(T, -1 // 10) + b20 = convert(T, -1 // 20) + b21 = convert(T, -1 // 20) + b22 = convert(T, -1 // 24) + b23 = convert(T, -3125 // 100000) + b24 = convert(T, -234375 // 10000000) + b25 = convert(T, 1 // 42) + + a0100 = convert(T, 1 // 5) + + a0200 = convert(T, -0.216049382716049382716049382716049382716049382716049382716049) + a0201 = convert(T, 0.771604938271604938271604938271604938271604938271604938271605) + + a0300 = convert(T, 5 // 24) + a0302 = convert(T, 5 // 8) + + a0400 = convert(T, 29 // 150) + a0402 = convert(T, 11 // 50) + a0403 = convert(T, -2 // 25) + + a0500 = convert(T, 1 // 10) + a0503 = convert(T, 2 // 5) + a0504 = convert(T, 1 // 2) + + a0600 = convert(T, 0.103364471650010477570395435690481791543342708330349879244197) + a0603 = convert(T, 0.124053094528946761061581889237115328211074784955180298044074) + a0604 = convert(T, 0.483171167561032899288836480451962508724109257517289177302380) + a0605 = convert(T, -0.0387530245694763252085681443767620580395733302341368038804290) + + a0700 = convert(T, 0.124038261431833324081904585980175168140024670698633612292480) + a0704 = convert(T, 0.217050632197958486317846256953159942875916353757734167684657) + a0705 = convert(T, 0.0137455792075966759812907801835048190594443990939408530842918) + a0706 = convert(T, -0.0661095317267682844455831341498149531672668252085016565917546) + + a0800 = convert(T, 0.0914774894856882983144991846980432197088832099976660100090486) + a0805 = convert(T, -0.00544348523717469689965754944144838611346156873847009178068318) + a0806 = convert(T, 0.0680716801688453518578515120895103863112751730758794372203952) + a0807 = convert(T, 0.408394315582641046727306852653894780093303185664924644551239) + + a0900 = convert(T, 0.0890013652502551018954509355423841780143232697403434118692699) + a0905 = convert(T, 0.00499528226645532360197793408420692800405891149406814091955810) + a0906 = convert(T, 0.397918238819828997341739603001347156083435060931424970826304) + a0907 = convert(T, 0.427930210752576611068192608300897981558240730580396406312359) + a0908 = convert(T, -0.0865117637557827005740277475955029103267246394128995965941585) + + a1000 = convert(T, 0.0695087624134907543112693906409809822706021061685544615255758) + a1005 = convert(T, 0.129146941900176461970759579482746551122871751501482634045487) + a1006 = convert(T, 1.53073638102311295076342566143214939031177504112433874313011) + a1007 = convert(T, 0.577874761129140052546751349454576715334892100418571882718036) + a1008 = convert(T, -0.951294772321088980532340837388859453930924498799228648050949) + a1009 = convert(T, -0.408276642965631951497484981519757463459627174520978426909934) + + a1100 = convert(T, 0.0444861403295135866269453507092463581620165501018684152933313) + a1105 = convert(T, -0.00380476867056961731984232686574547203016331563626856065717964) + a1106 = convert(T, 0.0106955064029624200721262602809059154469206077644957399593972) + a1107 = convert(T, 0.0209616244499904333296674205928919920806734650660039898074652) + a1108 = convert(T, -0.0233146023259321786648561431551978077665337818756053603898847) + a1109 = convert(T, 0.00263265981064536974369934736325334761174975280887405725010964) + a1110 = convert(T, 0.00315472768977025060103545855572111407955208306374459723959783) + + a1200 = convert(T, 0.0194588815119755475588801096525317761242073762016273186231215) + a1208 = convert(T, 0.0000678512949171812509306121653452367476194364781259165332321534) + a1209 = convert(T, -0.0000429795859049273623271005330230162343568863387724883603675550) + a1210 = convert(T, 0.0000176358982260285155407485928953302139937553442829975734148981) + a1211 = convert(T, 0.0653866627415027051009595231385181033549511358787382098351924) + + a1300 = convert(T, 0.206836835664277105916828174798272361078909196043446411598231) + a1308 = convert(T, 0.0166796067104156472828045866664696450306326505094792505215514) + a1309 = convert(T, -0.00879501563200710214457024178249986591130234990219959208704979) + a1310 = convert(T, 0.00346675455362463910824462315246379209427513654098596403637231) + a1311 = convert(T, -0.861264460105717678161432562258351242030270498966891201799225) + a1312 = convert(T, 0.908651882074050281096239478469262145034957129939256789178785) + + a1400 = convert(T, 0.0203926084654484010091511314676925686038504449562413004562382) + a1408 = convert(T, 0.0869469392016685948675400555583947505833954460930940959577347) + a1409 = convert(T, -0.0191649630410149842286436611791405053287170076602337673587681) + a1410 = convert(T, 0.00655629159493663287364871573244244516034828755253746024098838) + a1411 = convert(T, 0.0987476128127434780903798528674033899738924968006632201445462) + a1412 = convert(T, 0.00535364695524996055083260173615567408717110247274021056118319) + a1413 = convert(T, 0.301167864010967916837091303817051676920059229784957479998077) + + a1500 = convert(T, 0.228410433917778099547115412893004398779136994596948545722283) + a1508 = convert(T, -0.498707400793025250635016567442511512138603770959682292383042) + a1509 = convert(T, 0.134841168335724478552596703792570104791700727205981058201689) + a1510 = convert(T, -0.0387458244055834158439904226924029230935161059142806805674360) + a1511 = convert(T, -1.27473257473474844240388430824908952380979292713250350199641) + a1512 = convert(T, 1.43916364462877165201184452437038081875299303577911839630524) + a1513 = convert(T, -0.214007467967990254219503540827349569639028092344812795499026) + a1514 = convert(T, 0.958202417754430239892724139109781371059908874605153648768037) + + a1600 = convert(T, 2.00222477655974203614249646012506747121440306225711721209798) + a1608 = convert(T, 2.06701809961524912091954656438138595825411859673341600679555) + a1609 = convert(T, 0.623978136086139541957471279831494466155292316167021080663140) + a1610 = convert(T, -0.0462283685500311430283203554129062069391947101880112723185773) + a1611 = convert(T, -8.84973288362649614860075246727118949286604835457092701094630) + a1612 = convert(T, 7.74257707850855976227437225791835589560188590785037197433615) + a1613 = convert(T, -0.588358519250869210993353314127711745644125882130941202896436) + a1614 = convert(T, -1.10683733362380649395704708016953056176195769617014899442903) + a1615 = convert(T, -0.929529037579203999778397238291233214220788057511899747507074) + + a1700 = convert(T, 3.13789533412073442934451608989888796808161259330322100268310) + a1705 = convert(T, 0.129146941900176461970759579482746551122871751501482634045487) + a1706 = convert(T, 1.53073638102311295076342566143214939031177504112433874313011) + a1707 = convert(T, 0.577874761129140052546751349454576715334892100418571882718036) + a1708 = convert(T, 5.42088263055126683050056840891857421941300558851862156403363) + a1709 = convert(T, 0.231546926034829304872663800877643660904880180835945693836936) + a1710 = convert(T, 0.0759292995578913560162301311785251873561801342333194895292058) + a1711 = convert(T, -12.3729973380186513287414553402595806591349822617535905976253) + a1712 = convert(T, 9.85455883464769543935957209317369202080367765721777101906955) + a1713 = convert(T, 0.0859111431370436529579357709052367772889980495122329601159540) + a1714 = convert(T, -5.65242752862643921117182090081762761180392602644189218673969) + a1715 = convert(T, -1.94300935242819610883833776782364287728724899124166920477873) + a1716 = convert(T, -0.128352601849404542018428714319344620742146491335612353559923) + + a1800 = convert(T, 1.38360054432196014878538118298167716825163268489922519995564) + a1805 = convert(T, 0.00499528226645532360197793408420692800405891149406814091955810) + a1806 = convert(T, 0.397918238819828997341739603001347156083435060931424970826304) + a1807 = convert(T, 0.427930210752576611068192608300897981558240730580396406312359) + a1808 = convert(T, -1.30299107424475770916551439123047573342071475998399645982146) + a1809 = convert(T, 0.661292278669377029097112528107513072734573412294008071500699) + a1810 = convert(T, -0.144559774306954349765969393688703463900585822441545655530145) + a1811 = convert(T, -6.96576034731798203467853867461083919356792248105919255460819) + a1812 = convert(T, 6.65808543235991748353408295542210450632193197576935120716437) + a1813 = convert(T, -1.66997375108841486404695805725510845049807969199236227575796) + a1814 = convert(T, 2.06413702318035263832289040301832647130604651223986452170089) + a1815 = convert(T, -0.674743962644306471862958129570837723192079875998405058648892) + a1816 = convert(T, -0.00115618834794939500490703608435907610059605754935305582045729) + a1817 = convert(T, -0.00544057908677007389319819914241631024660726585015012485938593) + + a1900 = convert(T, 0.951236297048287669474637975894973552166903378983475425758226) + a1904 = convert(T, 0.217050632197958486317846256953159942875916353757734167684657) + a1905 = convert(T, 0.0137455792075966759812907801835048190594443990939408530842918) + a1906 = convert(T, -0.0661095317267682844455831341498149531672668252085016565917546) + a1908 = convert(T, 0.152281696736414447136604697040747131921486432699422112099617) + a1909 = convert(T, -0.337741018357599840802300793133998004354643424457539667670080) + a1910 = convert(T, -0.0192825981633995781534949199286824400469353110630787982121133) + a1911 = convert(T, -3.68259269696866809932409015535499603576312120746888880201882) + a1912 = convert(T, 3.16197870406982063541533528419683854018352080342887002331312) + a1913 = convert(T, -0.370462522106885290716991856022051125477943482284080569177386) + a1914 = convert(T, -0.0514974200365440434996434456698127984941168616474316871020314) + a1915 = convert(T, -0.000829625532120152946787043541792848416659382675202720677536554) + a1916 = convert(T, 0.00000279801041419278598986586589070027583961355402640879503213503) + a1917 = convert(T, 0.0418603916412360287969841020776788461794119440689356178942252) + a1918 = convert(T, 0.279084255090877355915660874555379649966282167560126269290222) + + a2000 = convert(T, 0.103364471650010477570395435690481791543342708330349879244197) + a2003 = convert(T, 0.124053094528946761061581889237115328211074784955180298044074) + a2004 = convert(T, 0.483171167561032899288836480451962508724109257517289177302380) + a2005 = convert(T, -0.0387530245694763252085681443767620580395733302341368038804290) + a2007 = convert(T, -0.438313820361122420391059788940960176420682836652600698580091) + a2009 = convert(T, -0.218636633721676647685111485017151199362509373698288330593486) + a2010 = convert(T, -0.0312334764394719229981634995206440349766174759626578122323015) + a2017 = convert(T, 0.0312334764394719229981634995206440349766174759626578122323015) + a2018 = convert(T, 0.218636633721676647685111485017151199362509373698288330593486) + a2019 = convert(T, 0.438313820361122420391059788940960176420682836652600698580091) + + a2100 = convert(T, 29 // 150) + a2102 = convert(T, 11 // 50) + a2103 = convert(T, -2 // 25) + a2106 = convert(T, 0.0984256130499315928152900286856048243348202521491288575952143) + a2107 = convert(T, -0.196410889223054653446526504390100417677539095340135532418849) + a2109 = convert(T, 0.436457930493068729391826122587949137609670676712525034763317) + a2110 = convert(T, 0.0652613721675721098560370939805555698350543810708414716730270) + a2117 = convert(T, -0.0652613721675721098560370939805555698350543810708414716730270) + a2118 = convert(T, -0.436457930493068729391826122587949137609670676712525034763317) + a2119 = convert(T, 0.196410889223054653446526504390100417677539095340135532418849) + a2120 = convert(T, -0.0984256130499315928152900286856048243348202521491288575952143) + + a2200 = convert(T, -0.216049382716049382716049382716049382716049382716049382716049) + a2201 = convert(T, 0.771604938271604938271604938271604938271604938271604938271605) + a2204 = convert(T, -2 // 3) + a2206 = convert(T, -0.390696469295978451446999802258495981249099665294395945559163) + a2220 = convert(T, 0.390696469295978451446999802258495981249099665294395945559163) + a2221 = convert(T, 2 // 3) + + a2300 = convert(T, 1 // 5) + a2302 = convert(T, -0.164609053497942386831275720164609053497942386831275720164609) + a2322 = convert(T, 0.164609053497942386831275720164609053497942386831275720164609) + + a2400 = convert(T, 1.47178724881110408452949550989023611293535315518571691939396) + a2401 = convert(T, 63 // 80) + a2402 = convert(T, 91 // 216) + a2404 = convert(T, 7 // 24) + a2406 = convert(T, 0.348600717628329563206854421629657569274689947367847465753757) + a2407 = convert(T, 0.229499544768994849582890233710555447073823569666506700662510) + a2408 = convert(T, 5.79046485790481979159831978177003471098279506036722411333192) + a2409 = convert(T, 0.418587511856506868874073759426596207226461447604248151080016) + a2410 = convert(T, 0.307039880222474002649653817490106690389251482313213999386651) + a2411 = convert(T, -4.68700905350603332214256344683853248065574415794742040470287) + a2412 = convert(T, 3.13571665593802262152038152399873856554395436199962915429076) + a2413 = convert(T, 1.40134829710965720817510506275620441055845017313930508348898) + a2414 = convert(T, -5.52931101439499023629010306005764336421276055777658156400910) + a2415 = convert(T, -0.853138235508063349309546894974784906188927508039552519557498) + a2416 = convert(T, 0.103575780373610140411804607167772795518293914458500175573749) + a2417 = convert(T, -0.140474416950600941142546901202132534870665923700034957196546) + a2418 = convert(T, -0.418587511856506868874073759426596207226461447604248151080016) + a2419 = convert(T, -0.229499544768994849582890233710555447073823569666506700662510) + a2420 = convert(T, -0.348600717628329563206854421629657569274689947367847465753757) + a2421 = convert(T, -7 // 24) + a2422 = convert(T, -91 // 216) + a2423 = convert(T, -63 // 80) + Feagin12ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, + a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, + a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, + a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, + a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1705, a1706, + a1707, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, + a1716, a1800, a1805, a1806, a1807, a1808, a1809, a1810, a1811, + a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1904, a1905, + a1906, a1908, a1909, a1910, a1911, a1912, a1913, a1914, a1915, + a1916, a1917, a1918, a2000, a2003, a2004, a2005, a2007, a2009, + a2010, a2017, a2018, a2019, a2100, a2102, a2103, a2106, a2107, + a2109, a2110, a2117, a2118, a2119, a2120, a2200, a2201, a2204, + a2206, a2220, a2221, a2300, a2302, a2322, a2400, a2401, a2402, + a2404, a2406, a2407, a2408, a2409, a2410, a2411, a2412, a2413, + a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, + a2423, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, + c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, b1, b2, b3, + b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, + b18, b19, b20, b21, b22, b23, b24, b25) +end + +""" +constructFeagin12 +""" +function Feagin12ConstantCache(T::Type, T2::Type) + adaptiveConst = convert(T, 49 // 640) + c1 = convert(T2, 1 // 5) + c2 = convert(T2, 5 // 9) + c3 = convert(T2, 5 // 6) + c4 = convert(T2, 1 // 3) + c5 = convert(T2, 1) + c6 = convert(T2, big"0.671835709170513812712245661002797570438953420568682550710222") + c7 = convert(T2, big"0.288724941110620201935458488967024976908118598341806976469674") + c8 = convert(T2, 9 // 16) + c9 = convert(T2, 5 // 6) + c10 = convert(T2, big"0.947695431179199287562380162101836721649589325892740646458322") + c11 = convert(T2, big"0.0548112876863802643887753674810754475842153612931128785028369") + c12 = convert(T2, big"0.0848880518607165350639838930162674302064148175640019542045934") + c13 = convert(T2, big"0.265575603264642893098114059045616835297201264164077621448665") + c14 = convert(T2, 1 // 2) + c15 = convert(T2, big"0.734424396735357106901885940954383164702798735835922378551335") + c16 = convert(T2, big"0.915111948139283464936016106983732569793585182435998045795407") + c17 = convert(T2, big"0.947695431179199287562380162101836721649589325892740646458322") + c18 = convert(T2, 5 // 6) + c19 = convert(T2, big"0.288724941110620201935458488967024976908118598341806976469674") + c20 = convert(T2, big"0.671835709170513812712245661002797570438953420568682550710222") + c21 = convert(T2, 1 // 3) + c22 = convert(T2, 5 // 9) + c23 = convert(T2, 1 // 5) + c24 = convert(T2, 1) + + b1 = convert(T, 1 // 42) + b2 = convert(T, 234375 // 10000000) + b3 = convert(T, 3125 // 100000) + b4 = convert(T, 0) + b5 = convert(T, 1 // 24) + b6 = convert(T, 0) + b7 = convert(T, 1 // 20) + b8 = convert(T, 1 // 20) + b9 = convert(T, 0) + b10 = convert(T, 1 // 10) + b11 = convert(T, 1 // 14) + b12 = convert(T, 0) + b13 = convert(T, big"0.138413023680782974005350203145033146748813640089941234591267") + b14 = convert(T, big"0.215872690604931311708935511140681138965472074195773051123019") + b15 = convert(T, big"0.243809523809523809523809523809523809523809523809523809523810") + b16 = convert(T, big"0.215872690604931311708935511140681138965472074195773051123019") + b17 = convert(T, big"0.138413023680782974005350203145033146748813640089941234591267") + b18 = convert(T, big"-0.0714285714285714285714285714285714285714285714285714285714286") + b19 = convert(T, -1 // 10) + b20 = convert(T, -1 // 20) + b21 = convert(T, -1 // 20) + b22 = convert(T, -1 // 24) + b23 = convert(T, -3125 // 100000) + b24 = convert(T, -234375 // 10000000) + b25 = convert(T, 1 // 42) + + a0100 = convert(T, 1 // 5) + + a0200 = convert(T, big"-0.216049382716049382716049382716049382716049382716049382716049") + a0201 = convert(T, big"0.771604938271604938271604938271604938271604938271604938271605") + + a0300 = convert(T, 5 // 24) + a0302 = convert(T, 5 // 8) + + a0400 = convert(T, 29 // 150) + a0402 = convert(T, 11 // 50) + a0403 = convert(T, -2 // 25) + + a0500 = convert(T, 1 // 10) + a0503 = convert(T, 2 // 5) + a0504 = convert(T, 1 // 2) + + a0600 = convert(T, big"0.103364471650010477570395435690481791543342708330349879244197") + a0603 = convert(T, big"0.124053094528946761061581889237115328211074784955180298044074") + a0604 = convert(T, big"0.483171167561032899288836480451962508724109257517289177302380") + a0605 = convert(T, + big"-0.0387530245694763252085681443767620580395733302341368038804290") + + a0700 = convert(T, big"0.124038261431833324081904585980175168140024670698633612292480") + a0704 = convert(T, big"0.217050632197958486317846256953159942875916353757734167684657") + a0705 = convert(T, big"0.0137455792075966759812907801835048190594443990939408530842918") + a0706 = convert(T, + big"-0.0661095317267682844455831341498149531672668252085016565917546") + + a0800 = convert(T, big"0.0914774894856882983144991846980432197088832099976660100090486") + a0805 = convert(T, + big"-0.00544348523717469689965754944144838611346156873847009178068318") + a0806 = convert(T, big"0.0680716801688453518578515120895103863112751730758794372203952") + a0807 = convert(T, big"0.408394315582641046727306852653894780093303185664924644551239") + + a0900 = convert(T, big"0.0890013652502551018954509355423841780143232697403434118692699") + a0905 = convert(T, + big"0.00499528226645532360197793408420692800405891149406814091955810") + a0906 = convert(T, big"0.397918238819828997341739603001347156083435060931424970826304") + a0907 = convert(T, big"0.427930210752576611068192608300897981558240730580396406312359") + a0908 = convert(T, + big"-0.0865117637557827005740277475955029103267246394128995965941585") + + a1000 = convert(T, big"0.0695087624134907543112693906409809822706021061685544615255758") + a1005 = convert(T, big"0.129146941900176461970759579482746551122871751501482634045487") + a1006 = convert(T, big"1.53073638102311295076342566143214939031177504112433874313011") + a1007 = convert(T, big"0.577874761129140052546751349454576715334892100418571882718036") + a1008 = convert(T, big"-0.951294772321088980532340837388859453930924498799228648050949") + a1009 = convert(T, big"-0.408276642965631951497484981519757463459627174520978426909934") + + a1100 = convert(T, big"0.0444861403295135866269453507092463581620165501018684152933313") + a1105 = convert(T, + big"-0.00380476867056961731984232686574547203016331563626856065717964") + a1106 = convert(T, big"0.0106955064029624200721262602809059154469206077644957399593972") + a1107 = convert(T, big"0.0209616244499904333296674205928919920806734650660039898074652") + a1108 = convert(T, + big"-0.0233146023259321786648561431551978077665337818756053603898847") + a1109 = convert(T, + big"0.00263265981064536974369934736325334761174975280887405725010964") + a1110 = convert(T, + big"0.00315472768977025060103545855572111407955208306374459723959783") + + a1200 = convert(T, big"0.0194588815119755475588801096525317761242073762016273186231215") + a1208 = convert(T, + big"0.0000678512949171812509306121653452367476194364781259165332321534") + a1209 = convert(T, + big"-0.0000429795859049273623271005330230162343568863387724883603675550") + a1210 = convert(T, + big"0.0000176358982260285155407485928953302139937553442829975734148981") + a1211 = convert(T, big"0.0653866627415027051009595231385181033549511358787382098351924") + + a1300 = convert(T, big"0.206836835664277105916828174798272361078909196043446411598231") + a1308 = convert(T, big"0.0166796067104156472828045866664696450306326505094792505215514") + a1309 = convert(T, + big"-0.00879501563200710214457024178249986591130234990219959208704979") + a1310 = convert(T, + big"0.00346675455362463910824462315246379209427513654098596403637231") + a1311 = convert(T, big"-0.861264460105717678161432562258351242030270498966891201799225") + a1312 = convert(T, big"0.908651882074050281096239478469262145034957129939256789178785") + + a1400 = convert(T, big"0.0203926084654484010091511314676925686038504449562413004562382") + a1408 = convert(T, big"0.0869469392016685948675400555583947505833954460930940959577347") + a1409 = convert(T, + big"-0.0191649630410149842286436611791405053287170076602337673587681") + a1410 = convert(T, + big"0.00655629159493663287364871573244244516034828755253746024098838") + a1411 = convert(T, big"0.0987476128127434780903798528674033899738924968006632201445462") + a1412 = convert(T, + big"0.00535364695524996055083260173615567408717110247274021056118319") + a1413 = convert(T, big"0.301167864010967916837091303817051676920059229784957479998077") + + a1500 = convert(T, big"0.228410433917778099547115412893004398779136994596948545722283") + a1508 = convert(T, big"-0.498707400793025250635016567442511512138603770959682292383042") + a1509 = convert(T, big"0.134841168335724478552596703792570104791700727205981058201689") + a1510 = convert(T, + big"-0.0387458244055834158439904226924029230935161059142806805674360") + a1511 = convert(T, big"-1.27473257473474844240388430824908952380979292713250350199641") + a1512 = convert(T, big"1.43916364462877165201184452437038081875299303577911839630524") + a1513 = convert(T, big"-0.214007467967990254219503540827349569639028092344812795499026") + a1514 = convert(T, big"0.958202417754430239892724139109781371059908874605153648768037") + + a1600 = convert(T, big"2.00222477655974203614249646012506747121440306225711721209798") + a1608 = convert(T, big"2.06701809961524912091954656438138595825411859673341600679555") + a1609 = convert(T, big"0.623978136086139541957471279831494466155292316167021080663140") + a1610 = convert(T, + big"-0.0462283685500311430283203554129062069391947101880112723185773") + a1611 = convert(T, big"-8.84973288362649614860075246727118949286604835457092701094630") + a1612 = convert(T, big"7.74257707850855976227437225791835589560188590785037197433615") + a1613 = convert(T, big"-0.588358519250869210993353314127711745644125882130941202896436") + a1614 = convert(T, big"-1.10683733362380649395704708016953056176195769617014899442903") + a1615 = convert(T, big"-0.929529037579203999778397238291233214220788057511899747507074") + + a1700 = convert(T, big"3.13789533412073442934451608989888796808161259330322100268310") + a1705 = convert(T, big"0.129146941900176461970759579482746551122871751501482634045487") + a1706 = convert(T, big"1.53073638102311295076342566143214939031177504112433874313011") + a1707 = convert(T, big"0.577874761129140052546751349454576715334892100418571882718036") + a1708 = convert(T, big"5.42088263055126683050056840891857421941300558851862156403363") + a1709 = convert(T, big"0.231546926034829304872663800877643660904880180835945693836936") + a1710 = convert(T, big"0.0759292995578913560162301311785251873561801342333194895292058") + a1711 = convert(T, big"-12.3729973380186513287414553402595806591349822617535905976253") + a1712 = convert(T, big"9.85455883464769543935957209317369202080367765721777101906955") + a1713 = convert(T, big"0.0859111431370436529579357709052367772889980495122329601159540") + a1714 = convert(T, big"-5.65242752862643921117182090081762761180392602644189218673969") + a1715 = convert(T, big"-1.94300935242819610883833776782364287728724899124166920477873") + a1716 = convert(T, big"-0.128352601849404542018428714319344620742146491335612353559923") + + a1800 = convert(T, big"1.38360054432196014878538118298167716825163268489922519995564") + a1805 = convert(T, + big"0.00499528226645532360197793408420692800405891149406814091955810") + a1806 = convert(T, big"0.397918238819828997341739603001347156083435060931424970826304") + a1807 = convert(T, big"0.427930210752576611068192608300897981558240730580396406312359") + a1808 = convert(T, big"-1.30299107424475770916551439123047573342071475998399645982146") + a1809 = convert(T, big"0.661292278669377029097112528107513072734573412294008071500699") + a1810 = convert(T, big"-0.144559774306954349765969393688703463900585822441545655530145") + a1811 = convert(T, big"-6.96576034731798203467853867461083919356792248105919255460819") + a1812 = convert(T, big"6.65808543235991748353408295542210450632193197576935120716437") + a1813 = convert(T, big"-1.66997375108841486404695805725510845049807969199236227575796") + a1814 = convert(T, big"2.06413702318035263832289040301832647130604651223986452170089") + a1815 = convert(T, big"-0.674743962644306471862958129570837723192079875998405058648892") + a1816 = convert(T, + big"-0.00115618834794939500490703608435907610059605754935305582045729") + a1817 = convert(T, + big"-0.00544057908677007389319819914241631024660726585015012485938593") + + a1900 = convert(T, big"0.951236297048287669474637975894973552166903378983475425758226") + a1904 = convert(T, big"0.217050632197958486317846256953159942875916353757734167684657") + a1905 = convert(T, big"0.0137455792075966759812907801835048190594443990939408530842918") + a1906 = convert(T, + big"-0.0661095317267682844455831341498149531672668252085016565917546") + a1908 = convert(T, big"0.152281696736414447136604697040747131921486432699422112099617") + a1909 = convert(T, big"-0.337741018357599840802300793133998004354643424457539667670080") + a1910 = convert(T, + big"-0.0192825981633995781534949199286824400469353110630787982121133") + a1911 = convert(T, big"-3.68259269696866809932409015535499603576312120746888880201882") + a1912 = convert(T, big"3.16197870406982063541533528419683854018352080342887002331312") + a1913 = convert(T, big"-0.370462522106885290716991856022051125477943482284080569177386") + a1914 = convert(T, + big"-0.0514974200365440434996434456698127984941168616474316871020314") + a1915 = convert(T, + big"-0.000829625532120152946787043541792848416659382675202720677536554") + a1916 = convert(T, + big"0.00000279801041419278598986586589070027583961355402640879503213503") + a1917 = convert(T, big"0.0418603916412360287969841020776788461794119440689356178942252") + a1918 = convert(T, big"0.279084255090877355915660874555379649966282167560126269290222") + + a2000 = convert(T, big"0.103364471650010477570395435690481791543342708330349879244197") + a2003 = convert(T, big"0.124053094528946761061581889237115328211074784955180298044074") + a2004 = convert(T, big"0.483171167561032899288836480451962508724109257517289177302380") + a2005 = convert(T, + big"-0.0387530245694763252085681443767620580395733302341368038804290") + a2007 = convert(T, big"-0.438313820361122420391059788940960176420682836652600698580091") + a2009 = convert(T, big"-0.218636633721676647685111485017151199362509373698288330593486") + a2010 = convert(T, + big"-0.0312334764394719229981634995206440349766174759626578122323015") + a2017 = convert(T, big"0.0312334764394719229981634995206440349766174759626578122323015") + a2018 = convert(T, big"0.218636633721676647685111485017151199362509373698288330593486") + a2019 = convert(T, big"0.438313820361122420391059788940960176420682836652600698580091") + + a2100 = convert(T, 29 // 150) + a2102 = convert(T, 11 // 50) + a2103 = convert(T, -2 // 25) + a2106 = convert(T, big"0.0984256130499315928152900286856048243348202521491288575952143") + a2107 = convert(T, big"-0.196410889223054653446526504390100417677539095340135532418849") + a2109 = convert(T, big"0.436457930493068729391826122587949137609670676712525034763317") + a2110 = convert(T, big"0.0652613721675721098560370939805555698350543810708414716730270") + a2117 = convert(T, + big"-0.0652613721675721098560370939805555698350543810708414716730270") + a2118 = convert(T, big"-0.436457930493068729391826122587949137609670676712525034763317") + a2119 = convert(T, big"0.196410889223054653446526504390100417677539095340135532418849") + a2120 = convert(T, + big"-0.0984256130499315928152900286856048243348202521491288575952143") + + a2200 = convert(T, big"-0.216049382716049382716049382716049382716049382716049382716049") + a2201 = convert(T, big"0.771604938271604938271604938271604938271604938271604938271605") + a2204 = convert(T, -2 // 3) + a2206 = convert(T, big"-0.390696469295978451446999802258495981249099665294395945559163") + a2220 = convert(T, big"0.390696469295978451446999802258495981249099665294395945559163") + a2221 = convert(T, 2 // 3) + + a2300 = convert(T, 1 // 5) + a2302 = convert(T, big"-0.164609053497942386831275720164609053497942386831275720164609") + a2322 = convert(T, big"0.164609053497942386831275720164609053497942386831275720164609") + + a2400 = convert(T, big"1.47178724881110408452949550989023611293535315518571691939396") + a2401 = convert(T, 63 // 80) + a2402 = convert(T, 91 // 216) + a2404 = convert(T, 7 // 24) + a2406 = convert(T, big"0.348600717628329563206854421629657569274689947367847465753757") + a2407 = convert(T, big"0.229499544768994849582890233710555447073823569666506700662510") + a2408 = convert(T, big"5.79046485790481979159831978177003471098279506036722411333192") + a2409 = convert(T, big"0.418587511856506868874073759426596207226461447604248151080016") + a2410 = convert(T, big"0.307039880222474002649653817490106690389251482313213999386651") + a2411 = convert(T, big"-4.68700905350603332214256344683853248065574415794742040470287") + a2412 = convert(T, big"3.13571665593802262152038152399873856554395436199962915429076") + a2413 = convert(T, big"1.40134829710965720817510506275620441055845017313930508348898") + a2414 = convert(T, big"-5.52931101439499023629010306005764336421276055777658156400910") + a2415 = convert(T, big"-0.853138235508063349309546894974784906188927508039552519557498") + a2416 = convert(T, big"0.103575780373610140411804607167772795518293914458500175573749") + a2417 = convert(T, big"-0.140474416950600941142546901202132534870665923700034957196546") + a2418 = convert(T, big"-0.418587511856506868874073759426596207226461447604248151080016") + a2419 = convert(T, big"-0.229499544768994849582890233710555447073823569666506700662510") + a2420 = convert(T, big"-0.348600717628329563206854421629657569274689947367847465753757") + a2421 = convert(T, -7 // 24) + a2422 = convert(T, -91 // 216) + a2423 = convert(T, -63 // 80) + Feagin12ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, + a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, + a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, + a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, + a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1705, a1706, + a1707, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, + a1716, a1800, a1805, a1806, a1807, a1808, a1809, a1810, a1811, + a1812, a1813, a1814, a1815, a1816, a1817, a1900, a1904, a1905, + a1906, a1908, a1909, a1910, a1911, a1912, a1913, a1914, a1915, + a1916, a1917, a1918, a2000, a2003, a2004, a2005, a2007, a2009, + a2010, a2017, a2018, a2019, a2100, a2102, a2103, a2106, a2107, + a2109, a2110, a2117, a2118, a2119, a2120, a2200, a2201, a2204, + a2206, a2220, a2221, a2300, a2302, a2322, a2400, a2401, a2402, + a2404, a2406, a2407, a2408, a2409, a2410, a2411, a2412, a2413, + a2414, a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, + a2423, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, + c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, b1, b2, b3, + b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, + b18, b19, b20, b21, b22, b23, b24, b25) +end + +struct Feagin14ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + adaptiveConst::T + a0100::T + a0200::T + a0201::T + a0300::T + a0302::T + a0400::T + a0402::T + a0403::T + a0500::T + a0503::T + a0504::T + a0600::T + a0603::T + a0604::T + a0605::T + a0700::T + a0704::T + a0705::T + a0706::T + a0800::T + a0805::T + a0806::T + a0807::T + a0900::T + a0905::T + a0906::T + a0907::T + a0908::T + a1000::T + a1005::T + a1006::T + a1007::T + a1008::T + a1009::T + a1100::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + a1200::T + a1208::T + a1209::T + a1210::T + a1211::T + a1300::T + a1308::T + a1309::T + a1310::T + a1311::T + a1312::T + a1400::T + a1408::T + a1409::T + a1410::T + a1411::T + a1412::T + a1413::T + a1500::T + a1508::T + a1509::T + a1510::T + a1511::T + a1512::T + a1513::T + a1514::T + a1600::T + a1608::T + a1609::T + a1610::T + a1611::T + a1612::T + a1613::T + a1614::T + a1615::T + a1700::T + a1712::T + a1713::T + a1714::T + a1715::T + a1716::T + a1800::T + a1812::T + a1813::T + a1814::T + a1815::T + a1816::T + a1817::T + a1900::T + a1912::T + a1913::T + a1914::T + a1915::T + a1916::T + a1917::T + a1918::T + a2000::T + a2012::T + a2013::T + a2014::T + a2015::T + a2016::T + a2017::T + a2018::T + a2019::T + a2100::T + a2112::T + a2113::T + a2114::T + a2115::T + a2116::T + a2117::T + a2118::T + a2119::T + a2120::T + a2200::T + a2212::T + a2213::T + a2214::T + a2215::T + a2216::T + a2217::T + a2218::T + a2219::T + a2220::T + a2221::T + a2300::T + a2308::T + a2309::T + a2310::T + a2311::T + a2312::T + a2313::T + a2314::T + a2315::T + a2316::T + a2317::T + a2318::T + a2319::T + a2320::T + a2321::T + a2322::T + a2400::T + a2408::T + a2409::T + a2410::T + a2411::T + a2412::T + a2413::T + a2414::T + a2415::T + a2416::T + a2417::T + a2418::T + a2419::T + a2420::T + a2421::T + a2422::T + a2423::T + a2500::T + a2508::T + a2509::T + a2510::T + a2511::T + a2512::T + a2513::T + a2514::T + a2515::T + a2516::T + a2517::T + a2518::T + a2519::T + a2520::T + a2521::T + a2522::T + a2523::T + a2524::T + a2600::T + a2605::T + a2606::T + a2607::T + a2608::T + a2609::T + a2610::T + a2612::T + a2613::T + a2614::T + a2615::T + a2616::T + a2617::T + a2618::T + a2619::T + a2620::T + a2621::T + a2622::T + a2623::T + a2624::T + a2625::T + a2700::T + a2705::T + a2706::T + a2707::T + a2708::T + a2709::T + a2711::T + a2712::T + a2713::T + a2714::T + a2715::T + a2716::T + a2717::T + a2718::T + a2719::T + a2720::T + a2721::T + a2722::T + a2723::T + a2724::T + a2725::T + a2726::T + a2800::T + a2805::T + a2806::T + a2807::T + a2808::T + a2810::T + a2811::T + a2813::T + a2814::T + a2815::T + a2823::T + a2824::T + a2825::T + a2826::T + a2827::T + a2900::T + a2904::T + a2905::T + a2906::T + a2909::T + a2910::T + a2911::T + a2913::T + a2914::T + a2915::T + a2923::T + a2924::T + a2925::T + a2926::T + a2927::T + a2928::T + a3000::T + a3003::T + a3004::T + a3005::T + a3007::T + a3009::T + a3010::T + a3013::T + a3014::T + a3015::T + a3023::T + a3024::T + a3025::T + a3027::T + a3028::T + a3029::T + a3100::T + a3102::T + a3103::T + a3106::T + a3107::T + a3109::T + a3110::T + a3113::T + a3114::T + a3115::T + a3123::T + a3124::T + a3125::T + a3127::T + a3128::T + a3129::T + a3130::T + a3200::T + a3201::T + a3204::T + a3206::T + a3230::T + a3231::T + a3300::T + a3302::T + a3332::T + a3400::T + a3401::T + a3402::T + a3404::T + a3406::T + a3407::T + a3409::T + a3410::T + a3411::T + a3412::T + a3413::T + a3414::T + a3415::T + a3416::T + a3417::T + a3418::T + a3419::T + a3420::T + a3421::T + a3422::T + a3423::T + a3424::T + a3425::T + a3426::T + a3427::T + a3428::T + a3429::T + a3430::T + a3431::T + a3432::T + a3433::T + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + c12::T2 + c13::T2 + c14::T2 + c15::T2 + c16::T2 + c17::T2 + c18::T2 + c19::T2 + c20::T2 + c21::T2 + c22::T2 + c23::T2 + c24::T2 + c25::T2 + c26::T2 + c27::T2 + c28::T2 + c29::T2 + c30::T2 + c31::T2 + c32::T2 + c33::T2 + c34::T2 + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T + b17::T + b18::T + b19::T + b20::T + b21::T + b22::T + b23::T + b24::T + b25::T + b26::T + b27::T + b28::T + b29::T + b30::T + b31::T + b32::T + b33::T + b34::T + b35::T +end + +""" +constructFeagin14 +""" +function Feagin14ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + adaptiveConst = convert(T, 1 // 1000) + c1 = convert(T2, 1 // 9) + c2 = convert(T2, 5 // 9) + c3 = convert(T2, 5 // 6) + c4 = convert(T2, 1 // 3) + c5 = convert(T2, 1) + c6 = convert(T2, 0.669986979272772921764683785505998513938845229638460353285142) + c7 = convert(T2, 0.297068384213818357389584716808219413223332094698915687379168) + c8 = convert(T2, 8 // 11) + c9 = convert(T2, 0.140152799042188765276187487966946717629806463082532936287323) + c10 = convert(T2, 0.700701039770150737151099854830749337941407049265546408969222) + c11 = convert(T2, 4 // 11) + c12 = convert(T2, 0.263157894736842105263157894736842105263157894736842105263158) + c13 = convert(T2, 0.0392172246650270859125196642501208648863714315266128052078483) + c14 = convert(T2, 0.812917502928376762983393159278036506189612372617238550774312) + c15 = convert(T2, 1 // 6) + c16 = convert(T2, 9 // 10) + c17 = convert(T2, 0.0641299257451966923312771193896682809481096651615083225402924) + c18 = convert(T2, 0.204149909283428848927744634301023405027149505241333751628870) + c19 = convert(T2, 0.395350391048760565615671369827324372352227297456659450554577) + c20 = convert(T2, 0.604649608951239434384328630172675627647772702543340549445423) + c21 = convert(T2, 0.795850090716571151072255365698976594972850494758666248371130) + c22 = convert(T2, 0.935870074254803307668722880610331719051890334838491677459708) + c23 = convert(T2, 1 // 6) + c24 = convert(T2, 0.812917502928376762983393159278036506189612372617238550774312) + c25 = convert(T2, 0.0392172246650270859125196642501208648863714315266128052078483) + c26 = convert(T2, 4 // 11) + c27 = convert(T2, 0.700701039770150737151099854830749337941407049265546408969222) + c28 = convert(T2, 0.140152799042188765276187487966946717629806463082532936287323) + c29 = convert(T2, 0.297068384213818357389584716808219413223332094698915687379168) + c30 = convert(T2, 0.669986979272772921764683785505998513938845229638460353285142) + c31 = convert(T2, 1 // 3) + c32 = convert(T2, 5 // 9) + c33 = convert(T2, 1 // 9) + c34 = convert(T2, 1) + + b1 = convert(T, 1 // 56) + b2 = convert(T, 3 // 512) + b3 = convert(T, 3 // 256) + b4 = convert(T, 0) + b5 = convert(T, 9 // 512) + b6 = convert(T, 0) + b7 = convert(T, 3 // 128) + b8 = convert(T, 15 // 512) + b9 = convert(T, 0) + b10 = convert(T, 9 // 256) + b11 = convert(T, 21 // 512) + b12 = convert(T, 3 // 64) + b13 = convert(T, 0) + b14 = convert(T, 27 // 512) + b15 = convert(T, 15 // 256) + b16 = convert(T, 33 // 512) + b17 = convert(T, 0) + b18 = convert(T, 0.105352113571753019691496032887878162227673083080523884041670) + b19 = convert(T, 0.170561346241752182382120338553874085887555487802790804737501) + b20 = convert(T, 0.206229397329351940783526485701104894741914286259542454077972) + b21 = convert(T, 0.206229397329351940783526485701104894741914286259542454077972) + b22 = convert(T, 0.170561346241752182382120338553874085887555487802790804737501) + b23 = convert(T, 0.105352113571753019691496032887878162227673083080523884041670) + b24 = convert(T, -33 // 512) + b25 = convert(T, -15 // 256) + b26 = convert(T, -27 // 512) + b27 = convert(T, -3 // 64) + b28 = convert(T, -21 // 512) + b29 = convert(T, -9 // 256) + b30 = convert(T, -15 // 512) + b31 = convert(T, -3 // 128) + b32 = convert(T, -9 // 512) + b33 = convert(T, -3 // 256) + b34 = convert(T, -3 // 512) + b35 = convert(T, 1 // 56) + + a0100 = convert(T, 1 // 9) + + a0200 = convert(T, -5 // 6) + a0201 = convert(T, 25 // 18) + + a0300 = convert(T, 5 // 24) + a0302 = convert(T, 5 // 8) + + a0400 = convert(T, 29 // 150) + a0402 = convert(T, 11 // 50) + a0403 = convert(T, -2 // 25) + + a0500 = convert(T, 1 // 10) + a0503 = convert(T, 2 // 5) + a0504 = convert(T, 1 // 2) + + a0600 = convert(T, 0.103484561636679776672993546511910344499744798201971316606663) + a0603 = convert(T, 0.122068887306407222589644082868962077139592714834162134741275) + a0604 = convert(T, 0.482574490331246622475134780125688112865919023850168049679402) + a0605 = convert(T, -0.0381409600015606999730886240005620205664113072478411477421970) + + a0700 = convert(T, 0.124380526654094412881516420868799316268491466359671423163289) + a0704 = convert(T, 0.226120282197584301422238662979202901196752320742633143965145) + a0705 = convert(T, 0.0137885887618080880607695837016477814530969417491493385363543) + a0706 = convert(T, -0.0672210133996684449749399507414305856950086341525382182856200) + a0800 = convert(T, 0.0936919065659673815530885456083005933866349695217750085655603) + a0805 = convert(T, -0.00613406843450510987229498995641664735620914507128858871007099) + a0806 = convert(T, 0.216019825625503063708860097659866573490979433278117320188668) + a0807 = convert(T, 0.423695063515761937337619073960976753205867469544123532683116) + + a0900 = convert(T, 0.0838479812409052664616968791372814085980533139224911131069335) + a0905 = convert(T, -0.0117949367100973814319755056031295775367961960590736150777613) + a0906 = convert(T, -0.247299020568812652339473838743194598325992840353340132697498) + a0907 = convert(T, 0.0978080858367729012259313014081291665503740655476733940756599) + a0908 = convert(T, 0.217590689243420631360008651767860318344168120024782176879989) + + a1000 = convert(T, 0.0615255359769428227954562389614314714333423969064821107453940) + a1005 = convert(T, 0.00592232780324503308042990005798046524738389560444257136834990) + a1006 = convert(T, 0.470326159963841112217224303205894113455362530746108825010848) + a1007 = convert(T, 0.299688863848679000853981837096192399136831121671781279184194) + a1008 = convert(T, -0.247656877593994914689992276329810825853958069263947095548189) + a1009 = convert(T, 0.110895029771437682893999851839061714522445173600678718208625) + + a1100 = convert(T, 0.0419700073362782579861792864787277787213483656543104611245994) + a1105 = convert(T, -0.00317987696266205093901912847692712407988609169703103952205634) + a1106 = convert(T, 0.806397714906192077260821711520379506393543111567419750119748) + a1107 = convert(T, 0.0975983126412388979093522850684288851314672048003054550357187) + a1108 = convert(T, 0.778575578158398909027512446452927238999763460594181964958853) + a1109 = convert(T, 0.204890423831599428189499202098105603312029235081420653574829) + a1110 = convert(T, -1.56261579627468188307070943950527825211462892236424360892806) + + a1200 = convert(T, 0.0437726782233730163574465242495339811688214967071614123256973) + a1208 = convert(T, 0.00624365027520195208794358628580933625281631216903095917201250) + a1209 = convert(T, 0.200043097109577314994435165469647856829066232218264969608768) + a1210 = convert(T, -0.00805328367804983036823857162048902911923392887337029314844206) + a1211 = convert(T, 0.0211517528067396521915711903523399601316877825157550573051221) + + a1300 = convert(T, 0.0283499250363514563095023591920717312247137654896477097768495) + a1308 = convert(T, 0.00249163204855817407538949148805995149459884653585417680098222) + a1309 = convert(T, 0.0230138787854593149638399846373742768772087122638142234223658) + a1310 = convert(T, -0.00322155956692977098724476092467120878189463604760620461043308) + a1311 = convert(T, 0.00988442549447664668946335414487885256040819982786014648129297) + a1312 = convert(T, -0.0213010771328887351384307642875927384886634565429572466632092) + + a1400 = convert(T, 0.343511894290243001049432234735147943083353174980701426268122) + a1408 = convert(T, 0.210451912023627385609097011999010655788807405225626700040882) + a1409 = convert(T, 1.03427452057230411936482926828825709938667999698324740166559) + a1410 = convert(T, 0.00600303645864422487051240448206640574939078092406156945568306) + a1411 = convert(T, 0.855938125099619537578012106002407728915062652616416005816477) + a1412 = convert(T, -0.977235005036766810872264852372525633013107656892839677696022) + a1413 = convert(T, -0.660026980479294694616225013856327693720573981219974874776419) + + a1500 = convert(T, -0.0143574001672168069538206399935076366657755954378399880691949) + a1508 = convert(T, -0.0366253270049039970293685796848974791733119081733552207318285) + a1509 = convert(T, 0.0350254975636213681976849406979846524346789082471103574920148) + a1510 = convert(T, 0.0360946016362113508931786658758335239823689929864237671348749) + a1511 = convert(T, -0.0265219967553681106351595946834601923649627012457464284442911) + a1512 = convert(T, 0.0445699011305698119638911537508839908104336323082226770910408) + a1513 = convert(T, 0.124343093331358243286225595741786448038973408895106741855721) + a1514 = convert(T, 0.00413829693239480694403512496204335960426192908674476033832967) + + a1600 = convert(T, 0.356032404425120290975609116398089176264106222379748802654822) + a1608 = convert(T, -0.450192758947562595966821779075956175110645100214763601190349) + a1609 = convert(T, 0.430527907083710898626656292808782917793030154094709462877146) + a1610 = convert(T, 0.511973029011022237668556960394071692077125787030651386389972) + a1611 = convert(T, 0.908303638886404260390159124638110213997496214819904630546596) + a1612 = convert(T, -1.23921093371933931757372469151534028854413889248605726186520) + a1613 = convert(T, -0.649048661671761465141672348879062553905402831967191097656668) + a1614 = convert(T, 0.251708904586819292210480529948970541404887852931447491219418) + a1615 = convert(T, 0.779906470345586398810756795282334476023540593411550187024263) + + a1700 = convert(T, 0.0130935687406513066406881206418834980127470438213192487844956) + a1712 = convert(T, -0.0000932053067985113945908461962767108237858631509684667142124826) + a1713 = convert(T, 0.0505374334262299359640090443138590726770942344716122381702746) + a1714 = convert(T, 8.04470341944487979109579109610197797641311868930865361048975e-7) + a1715 = convert(T, 0.000591726029494171190528755742777717259844340971924321528178248) + a1716 = convert(T, -4.01614722154557337064691684906375587732264247950093804676867e-7) + + a1800 = convert(T, 0.0207926484466053012541944544000765652167255206144373407979758) + a1812 = convert(T, 0.000582695918800085915101902697837284108951406103029871570103075) + a1813 = convert(T, -0.00801700732358815939083342186525852746640558465919633524655451) + a1814 = convert(T, 4.03847643847136940375170821743560570484117290330895506618968e-6) + a1815 = convert(T, 0.0854609998055506144225056114567535602510114622033622491802597) + a1816 = convert(T, -2.04486480935804242706707569691004307904442837552677456232848e-6) + a1817 = convert(T, 0.105328578824431893399799402979093997354240904235172843146582) + + a1900 = convert(T, 1.40153449795736021415446247355771306718486452917597731683689) + a1912 = convert(T, -0.230252000984221261616272410367415621261130298274455611733277) + a1913 = convert(T, -7.21106840466912905659582237106874247165856493509961561958267) + a1914 = convert(T, 0.00372901560694836335236995327852132340217759566678662385552634) + a1915 = convert(T, -4.71415495727125020678778179392224757011323373221820091641216) + a1916 = convert(T, -0.00176367657545349242053841995032797673574903886695600132759652) + a1917 = convert(T, 7.64130548038698765563029310880237651185173367813936997648198) + a1918 = convert(T, 3.50602043659751834989896082949744710968212949893375368243588) + + a2000 = convert(T, 11.9514650694120686799372385830716401674473610826553517297976) + a2012 = convert(T, 7.79480932108175968783516700231764388220284279598980948538579) + a2013 = convert(T, -56.4501393867325792523560991120904281440468100061340556540132) + a2014 = convert(T, 0.0912376306930644901344530449290276645709607450403673704844997) + a2015 = convert(T, -12.7336279925434886201945524309199275038162717529918963305155) + a2016 = convert(T, -0.0396895921904719712313542810939736674712383070433147873009352) + a2017 = convert(T, 54.4392141883570886996225765155307791861438378423305337073797) + a2018 = convert(T, -3.64411637921569236846406990361350645806721478409266709351203) + a2019 = convert(T, -0.804503249910509910899030787958579499315694913210787878260459) + + a2100 = convert(T, -148.809426507100488427838868268647625561930612082148597076690) + a2112 = convert(T, -91.7295278291256484357935662402321623495228729036354276506427) + a2113 = convert(T, 707.656144971598359834575719286335716154821128966649565194286) + a2114 = convert(T, -1.10563611857482440905296961311590930801338308942637769555540) + a2115 = convert(T, 176.134591883811372587859898076055660406999516762301689616841) + a2116 = convert(T, 0.491384824214880662268898345164454557416884631402764792538746) + a2117 = convert(T, -684.278000449814944358237535610895081956077167893600278300805) + a2118 = convert(T, 27.9910604998398258984224332124380407446002518400668657974589) + a2119 = convert(T, 13.1939710030282333443670964371153238435064159623744975073252) + a2120 = convert(T, 1.25128781283980445450114974148056006317268830077396406361417) + + a2200 = convert(T, -9.67307946948196763644126118433219395839951408571877262880482) + a2212 = convert(T, -4.46990150858505531443846227701960360497830681408751431146712) + a2213 = convert(T, 45.5127128690952681968241950400052751178905907817398483534845) + a2214 = convert(T, -0.0713085086183826912791492024438246129930559805352394367050813) + a2215 = convert(T, 11.2273614068412741582590624479939384207826800776794485051540) + a2216 = convert(T, 0.126244376717622724516237912909138809361786889819105426371393) + a2217 = convert(T, -43.5439339549483313605810624907242107623814304467621407753424) + a2218 = convert(T, 0.787174307543058978398792994996550902064546091443233850464377) + a2219 = convert(T, 0.532264696744684215669300708603886690785395776821503851830821) + a2220 = convert(T, 0.422422733996325326010225127471388772575086538809603346825334) + a2221 = convert(T, 0.0859131249503067107308438031499859443441115056294154956487671) + + a2300 = convert(T, -10.0664032447054702403396606900426891472202824757968765569183) + a2308 = convert(T, -0.0366253270049039970293685796848974791733119081733552207318285) + a2309 = convert(T, 0.0350254975636213681976849406979846524346789082471103574920148) + a2310 = convert(T, 0.0360946016362113508931786658758335239823689929864237671348749) + a2311 = convert(T, -0.0265219967553681106351595946834601923649627012457464284442911) + a2312 = convert(T, -6.27088972181464143590553149478871603839356122957396018530209) + a2313 = convert(T, 48.2079237442562989090702103008195063923492593141636117832993) + a2314 = convert(T, -0.0694471689136165640882395180583732834557754169149088630301342) + a2315 = convert(T, 12.6810690204850295698341370913609807066108483811412127009785) + a2316 = convert(T, 0.0119671168968323754838161435501011294100927813964199613229864) + a2317 = convert(T, -46.7249764992482408003358268242662695593201321659795608950429) + a2318 = convert(T, 1.33029613326626711314710039298216591399033511191227101321435) + a2319 = convert(T, 1.00766787503398298353438903619926657771162717793661719708370) + a2320 = convert(T, 0.0209512051933665091664122388475480702892770753864487241177616) + a2321 = convert(T, 0.0210134706331264177317735424331396407424412188443757490871603) + a2322 = convert(T, 0.00952196014417121794175101542454575907376360233658356240547761) + + a2400 = convert(T, -409.478081677743708772589097409370357624424341606752069725341) + a2408 = convert(T, 0.210451912023627385609097011999010655788807405225626700040882) + a2409 = convert(T, 1.03427452057230411936482926828825709938667999698324740166559) + a2410 = convert(T, 0.00600303645864422487051240448206640574939078092406156945568306) + a2411 = convert(T, 0.855938125099619537578012106002407728915062652616416005816477) + a2412 = convert(T, -250.516998547447860492777657729316130386584050420782075966990) + a2413 = convert(T, 1946.42466652388427766053750328264758595829850895761428240231) + a2414 = convert(T, -3.04503882102310365506105809086860882786950544097602101685174) + a2415 = convert(T, 490.626379528281713521208265299168083841598542274061671576230) + a2416 = convert(T, 1.56647589531270907115484067013597445739595615245966775329993) + a2417 = convert(T, -1881.97428994011173362217267377035870619215906638453056643641) + a2418 = convert(T, 75.2592224724847175278837713643303149821620618914245864351135) + a2419 = convert(T, 34.5734356980331067622434344736554689696728644793551014989002) + a2420 = convert(T, 3.21147679440968961435417361847073755169022966748891627882572) + a2421 = convert(T, -0.460408041738414391307201404237058848867245095265382820823055) + a2422 = convert(T, -0.0870718339841810522431884137957986245724252047388936572215438) + a2423 = convert(T, -7.39351814158303067567016952195521063999185773249132944724553) + + a2500 = convert(T, 3.43347475853550878921093496257596781120623891072008459930197) + a2508 = convert(T, 0.00249163204855817407538949148805995149459884653585417680098222) + a2509 = convert(T, 0.0230138787854593149638399846373742768772087122638142234223658) + a2510 = convert(T, -0.00322155956692977098724476092467120878189463604760620461043308) + a2511 = convert(T, 0.00988442549447664668946335414487885256040819982786014648129297) + a2512 = convert(T, 2.16252799377922507788307841904757354045759225335732707916530) + a2513 = convert(T, -16.2699864546457421328065640660139489006987552040228852402716) + a2514 = convert(T, -0.128534502120524552843583417470935010538029037542654506231743) + a2515 = convert(T, -8.98915042666504253089307820833379330486511746063552853023189) + a2516 = convert(T, -0.00348595363232025333387080201851013650192401767250513765000963) + a2517 = convert(T, 15.7936194113339807536235187388695574135853387025139738341334) + a2518 = convert(T, -0.574403330914095065628165482017335820148383663195675408024658) + a2519 = convert(T, -0.345602039021393296692722496608124982535237228827655306030152) + a2520 = convert(T, -0.00662241490206585091731619991383757781133067992707418687587487) + a2521 = convert(T, -0.00777788129242204164032546458607364309759347209626759111946150) + a2522 = convert(T, -0.00356084192402274913338827232697437364675240818791706587952939) + a2523 = convert(T, 4.79282506449930799649797749629840189457296934139359048988332) + a2524 = convert(T, 0.153725464873068577844576387402512082757034273069877432944621) + + a2600 = convert(T, 32.3038520871985442326994734440031535091364975047784630088983) + a2605 = convert(T, -0.00317987696266205093901912847692712407988609169703103952205634) + a2606 = convert(T, 0.806397714906192077260821711520379506393543111567419750119748) + a2607 = convert(T, 0.0975983126412388979093522850684288851314672048003054550357187) + a2608 = convert(T, 0.778575578158398909027512446452927238999763460594181964958853) + a2609 = convert(T, 0.204890423831599428189499202098105603312029235081420653574829) + a2610 = convert(T, -1.56261579627468188307070943950527825211462892236424360892806) + a2612 = convert(T, 16.3429891882310570648504243973927174708753353504154550405647) + a2613 = convert(T, -154.544555293543621230730189631471036399316683669609116705323) + a2614 = convert(T, 1.56971088703334872692034283417621761466263593582497085955201) + a2615 = convert(T, 3.27685545087248131321429817269900731165522404974733504794135) + a2616 = convert(T, -0.0503489245193653176348040727199783626534081095691632396802451) + a2617 = convert(T, 153.321151858041665070593767885914694011224363102594556731397) + a2618 = convert(T, 7.17568186327720495846766484814784143567826308034865369443637) + a2619 = convert(T, -2.94036748675300481945917659896930989215320594380777597403592) + a2620 = convert(T, -0.0665845946076803144470749676022628870281920493197256887985612) + a2621 = convert(T, -0.0462346054990843661229248668562217261176966514016859284197145) + a2622 = convert(T, -0.0204198733585679401539388228617269778848579774821581777675337) + a2623 = convert(T, -53.3523106438735850515953441165998107974045090495791591218714) + a2624 = convert(T, -1.35548714715078654978732186705996404017554501614191325114947) + a2625 = convert(T, -1.57196275801232751882901735171459249177687219114442583461866) + + a2700 = convert(T, -16.6451467486341512872031294403931758764560371130818978459405) + a2705 = convert(T, 0.00592232780324503308042990005798046524738389560444257136834990) + a2706 = convert(T, 0.470326159963841112217224303205894113455362530746108825010848) + a2707 = convert(T, 0.299688863848679000853981837096192399136831121671781279184194) + a2708 = convert(T, -0.247656877593994914689992276329810825853958069263947095548189) + a2709 = convert(T, 0.110895029771437682893999851839061714522445173600678718208625) + a2711 = convert(T, -0.491719043846229147070666628704194097678081907210673044988866) + a2712 = convert(T, -11.4743154427289496968389492564352536350842454130853175250727) + a2713 = convert(T, 80.2593166576230272541702485886484400152793366623589989106256) + a2714 = convert(T, -0.384132303980042847625312526759029103746926841342088219165648) + a2715 = convert(T, 7.28147667468107583471326950926136115767612581862877764249646) + a2716 = convert(T, -0.132699384612248379510571708176035274836827341616751884314074) + a2717 = convert(T, -81.0799832525730726674679289752255240006070716633632990308935) + a2718 = convert(T, -1.25037492835620639521768185656179119962253747492403205797494) + a2719 = convert(T, 2.59263594969543681023776379504377324994226447359296887778718) + a2720 = convert(T, -0.301440298346404539830163997260526875264431537275641495291993) + a2721 = convert(T, 0.221384460789832337451706451572773791695246839057318414301020) + a2722 = convert(T, 0.0827577274771892931955989870974693152996276435429809890551210) + a2723 = convert(T, 18.9960662040611520464672450037243263998175161412237156872211) + a2724 = convert(T, 0.269231946409639685623468015128334167460051910348912845121977) + a2725 = convert(T, 1.62674827447066537462989364929628933988125029284183680279020) + a2726 = convert(T, 0.491719043846229147070666628704194097678081907210673044988866) + + a2800 = convert(T, 0.0838479812409052664616968791372814085980533139224911131069335) + a2805 = convert(T, -0.0117949367100973814319755056031295775367961960590736150777613) + a2806 = convert(T, -0.247299020568812652339473838743194598325992840353340132697498) + a2807 = convert(T, 0.0978080858367729012259313014081291665503740655476733940756599) + a2808 = convert(T, 0.217590689243420631360008651767860318344168120024782176879989) + a2810 = convert(T, 0.137585606763325224865659632196787746647447222975084865975440) + a2811 = convert(T, 0.0439870229715046685058790092341545026046103890294261359042581) + a2813 = convert(T, -0.513700813768193341957004456618630303738757363641964030086972) + a2814 = convert(T, 0.826355691151315508644211308399153458701423158616168576922372) + a2815 = convert(T, 25.7018139719811832625873882972519939511136556341960074626615) + a2823 = convert(T, -25.7018139719811832625873882972519939511136556341960074626615) + a2824 = convert(T, -0.826355691151315508644211308399153458701423158616168576922372) + a2825 = convert(T, 0.513700813768193341957004456618630303738757363641964030086972) + a2826 = convert(T, -0.0439870229715046685058790092341545026046103890294261359042581) + a2827 = convert(T, -0.137585606763325224865659632196787746647447222975084865975440) + + a2900 = convert(T, 0.124380526654094412881516420868799316268491466359671423163289) + a2904 = convert(T, 0.226120282197584301422238662979202901196752320742633143965145) + a2905 = convert(T, 0.0137885887618080880607695837016477814530969417491493385363543) + a2906 = convert(T, -0.0672210133996684449749399507414305856950086341525382182856200) + a2909 = convert(T, -0.856238975085428354755349769879501772112121597411563802855067) + a2910 = convert(T, -1.96337522866858908928262850028093813988180440518267404553576) + a2911 = convert(T, -0.232332822724119401237246257308921847250108199230419994978218) + a2913 = convert(T, 4.30660719086453349461668936876562947772432562053478092626764) + a2914 = convert(T, -2.92722963249465482659787911202390446687687394950633612630592) + a2915 = convert(T, -82.3131666397858944454492334105458707735761966428138676971041) + a2923 = convert(T, 82.3131666397858944454492334105458707735761966428138676971041) + a2924 = convert(T, 2.92722963249465482659787911202390446687687394950633612630592) + a2925 = convert(T, -4.30660719086453349461668936876562947772432562053478092626764) + a2926 = convert(T, 0.232332822724119401237246257308921847250108199230419994978218) + a2927 = convert(T, 1.96337522866858908928262850028093813988180440518267404553576) + a2928 = convert(T, 0.856238975085428354755349769879501772112121597411563802855067) + + a3000 = convert(T, 0.103484561636679776672993546511910344499744798201971316606663) + a3003 = convert(T, 0.122068887306407222589644082868962077139592714834162134741275) + a3004 = convert(T, 0.482574490331246622475134780125688112865919023850168049679402) + a3005 = convert(T, -0.0381409600015606999730886240005620205664113072478411477421970) + a3007 = convert(T, -0.550499525310802324138388507020508177411414311000037561712836) + a3009 = convert(T, -0.711915811585189227887648262043794387578291882406745570495765) + a3010 = convert(T, -0.584129605671551340432988730158480872095335329645227595707052) + a3013 = convert(T, 2.11046308125864932128717300046622750300375054278936987850718) + a3014 = convert(T, -0.0837494736739572135525742023001037992695260175335123517729291) + a3015 = convert(T, 5.10021499072320914075295969043344113107545060862804249161191) + a3023 = convert(T, -5.10021499072320914075295969043344113107545060862804249161191) + a3024 = convert(T, 0.0837494736739572135525742023001037992695260175335123517729291) + a3025 = convert(T, -2.11046308125864932128717300046622750300375054278936987850718) + a3027 = convert(T, 0.584129605671551340432988730158480872095335329645227595707052) + a3028 = convert(T, 0.711915811585189227887648262043794387578291882406745570495765) + a3029 = convert(T, 0.550499525310802324138388507020508177411414311000037561712836) + + a3100 = convert(T, 29 // 150) + a3102 = convert(T, 11 // 50) + a3103 = convert(T, -2 // 25) + a3106 = convert(T, 0.109993425580724703919462404865068340845119058295846426463652) + a3107 = convert(T, -0.254297048076270161384068506997153122141835626976703920846242) + a3109 = convert(T, 0.865570777116694254343770343821098281832847401233011859346737) + a3110 = convert(T, 3.32416449114093083106799552786572018336860092936986407160200) + a3113 = convert(T, -12.0102223315977933882352385148661841260301942633996815127277) + a3114 = convert(T, 0.476601466242493239430442776862061899602963782003580209476163) + a3115 = convert(T, -29.0243011221036390525802623213654099596251221332470910692353) + a3123 = convert(T, 29.0243011221036390525802623213654099596251221332470910692353) + a3124 = convert(T, -0.476601466242493239430442776862061899602963782003580209476163) + a3125 = convert(T, 12.0102223315977933882352385148661841260301942633996815127277) + a3127 = convert(T, -3.32416449114093083106799552786572018336860092936986407160200) + a3128 = convert(T, -0.865570777116694254343770343821098281832847401233011859346737) + a3129 = convert(T, 0.254297048076270161384068506997153122141835626976703920846242) + a3130 = convert(T, -0.109993425580724703919462404865068340845119058295846426463652) + + a3200 = convert(T, -5 // 6) + a3201 = convert(T, 25 // 18) + a3204 = convert(T, -3 // 4) + a3206 = convert(T, -0.492529543718026304422682049114021320200214681580657784719074) + a3230 = convert(T, 0.492529543718026304422682049114021320200214681580657784719074) + a3231 = convert(T, 3 // 4) + + a3300 = convert(T, 1 // 9) + a3302 = convert(T, -2 // 9) + a3332 = convert(T, 2 // 9) + + a3400 = convert(T, 0.285835140388971558796088842163836414852927537894596466840753) + a3401 = convert(T, 7 // 24) + a3402 = convert(T, 7 // 32) + a3404 = convert(T, 21 // 128) + a3406 = convert(T, 0.218194354945556658327188241581352107093288824322187941141516) + a3407 = convert(T, 0.180392898478697766863635221946775437719620053641849228562435) + a3409 = convert(T, 0.205713839404845018859120755122929542277570094982808905393991) + a3410 = convert(T, 0.242715791581770239970282927959446515762745971386670541948576) + a3411 = convert(T, 0.246465780813629305833609291181891407799228103869305705137021) + a3412 = convert(T, -3.44991940790890824979834154601622662060370460614931644223924) + a3413 = convert(T, 0.228875562160036081760729060738458584294220372552740218459295) + a3414 = convert(T, 0.283290599702151415321527419056733335978436595493855789831434) + a3415 = convert(T, 3.21085125837766640960131490544236787005557320332238705967955) + a3416 = convert(T, -0.223538777364845699920233756214162507964125230083674032084065) + a3417 = convert(T, -0.707121157204419073518727286207487212130091231955206160635271) + a3418 = convert(T, 3.21123345150287080408174729202856500893260034443022374267639) + a3419 = convert(T, 1.40954348309669766030414474301123175769045945573548986335553) + a3420 = convert(T, -0.151362053443742613121602276742518111090963026203676055891793) + a3421 = convert(T, 0.372350574527014276454724080214619984397121028202148298716575) + a3422 = convert(T, 0.252978746406361336722199907762141285915775728129414319261111) + a3423 = convert(T, -3.21085125837766640960131490544236787005557320332238705967955) + a3424 = convert(T, -0.283290599702151415321527419056733335978436595493855789831434) + a3425 = convert(T, -0.228875562160036081760729060738458584294220372552740218459295) + a3426 = convert(T, -0.246465780813629305833609291181891407799228103869305705137021) + a3427 = convert(T, -0.242715791581770239970282927959446515762745971386670541948576) + a3428 = convert(T, -0.205713839404845018859120755122929542277570094982808905393991) + a3429 = convert(T, -0.180392898478697766863635221946775437719620053641849228562435) + a3430 = convert(T, -0.218194354945556658327188241581352107093288824322187941141516) + a3431 = convert(T, -21 // 128) + a3432 = convert(T, -7 // 32) + a3433 = convert(T, -7 // 24) + Feagin14ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, + a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, + a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, + a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, + a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1712, a1713, + a1714, a1715, a1716, a1800, a1812, a1813, a1814, a1815, a1816, + a1817, a1900, a1912, a1913, a1914, a1915, a1916, a1917, a1918, + a2000, a2012, a2013, a2014, a2015, a2016, a2017, a2018, a2019, + a2100, a2112, a2113, a2114, a2115, a2116, a2117, a2118, a2119, + a2120, a2200, a2212, a2213, a2214, a2215, a2216, a2217, a2218, + a2219, a2220, a2221, a2300, a2308, a2309, a2310, a2311, a2312, + a2313, a2314, a2315, a2316, a2317, a2318, a2319, a2320, a2321, + a2322, a2400, a2408, a2409, a2410, a2411, a2412, a2413, a2414, + a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, + a2500, a2508, a2509, a2510, a2511, a2512, a2513, a2514, a2515, + a2516, a2517, a2518, a2519, a2520, a2521, a2522, a2523, a2524, + a2600, a2605, a2606, a2607, a2608, a2609, a2610, a2612, a2613, + a2614, a2615, a2616, a2617, a2618, a2619, a2620, a2621, a2622, + a2623, a2624, a2625, a2700, a2705, a2706, a2707, a2708, a2709, + a2711, a2712, a2713, a2714, a2715, a2716, a2717, a2718, a2719, + a2720, a2721, a2722, a2723, a2724, a2725, a2726, a2800, a2805, + a2806, a2807, a2808, a2810, a2811, a2813, a2814, a2815, a2823, + a2824, a2825, a2826, a2827, a2900, a2904, a2905, a2906, a2909, + a2910, a2911, a2913, a2914, a2915, a2923, a2924, a2925, a2926, + a2927, a2928, a3000, a3003, a3004, a3005, a3007, a3009, a3010, + a3013, a3014, a3015, a3023, a3024, a3025, a3027, a3028, a3029, + a3100, a3102, a3103, a3106, a3107, a3109, a3110, a3113, a3114, + a3115, a3123, a3124, a3125, a3127, a3128, a3129, a3130, a3200, + a3201, a3204, a3206, a3230, a3231, a3300, a3302, a3332, a3400, + a3401, a3402, a3404, a3406, a3407, a3409, a3410, a3411, a3412, + a3413, a3414, a3415, a3416, a3417, a3418, a3419, a3420, a3421, + a3422, a3423, a3424, a3425, a3426, a3427, a3428, a3429, a3430, + a3431, a3432, a3433, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, + c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, + c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, b1, b2, b3, b4, + b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, + b32, b33, b34, b35) +end + +""" +constructFeagin14 +""" +function Feagin14ConstantCache(T::Type, T2::Type) + adaptiveConst = convert(T, 1 // 1000) + c1 = convert(T2, 1 // 9) + c2 = convert(T2, 5 // 9) + c3 = convert(T2, 5 // 6) + c4 = convert(T2, 1 // 3) + c5 = convert(T2, 1) + c6 = convert(T2, big"0.669986979272772921764683785505998513938845229638460353285142") + c7 = convert(T2, big"0.297068384213818357389584716808219413223332094698915687379168") + c8 = convert(T2, 8 // 11) + c9 = convert(T2, big"0.140152799042188765276187487966946717629806463082532936287323") + c10 = convert(T2, big"0.700701039770150737151099854830749337941407049265546408969222") + c11 = convert(T2, 4 // 11) + c12 = convert(T2, big"0.263157894736842105263157894736842105263157894736842105263158") + c13 = convert(T2, big"0.0392172246650270859125196642501208648863714315266128052078483") + c14 = convert(T2, big"0.812917502928376762983393159278036506189612372617238550774312") + c15 = convert(T2, 1 // 6) + c16 = convert(T2, 9 // 10) + c17 = convert(T2, big"0.0641299257451966923312771193896682809481096651615083225402924") + c18 = convert(T2, big"0.204149909283428848927744634301023405027149505241333751628870") + c19 = convert(T2, big"0.395350391048760565615671369827324372352227297456659450554577") + c20 = convert(T2, big"0.604649608951239434384328630172675627647772702543340549445423") + c21 = convert(T2, big"0.795850090716571151072255365698976594972850494758666248371130") + c22 = convert(T2, big"0.935870074254803307668722880610331719051890334838491677459708") + c23 = convert(T2, 1 // 6) + c24 = convert(T2, big"0.812917502928376762983393159278036506189612372617238550774312") + c25 = convert(T2, big"0.0392172246650270859125196642501208648863714315266128052078483") + c26 = convert(T2, 4 // 11) + c27 = convert(T2, big"0.700701039770150737151099854830749337941407049265546408969222") + c28 = convert(T2, big"0.140152799042188765276187487966946717629806463082532936287323") + c29 = convert(T2, big"0.297068384213818357389584716808219413223332094698915687379168") + c30 = convert(T2, big"0.669986979272772921764683785505998513938845229638460353285142") + c31 = convert(T2, 1 // 3) + c32 = convert(T2, 5 // 9) + c33 = convert(T2, 1 // 9) + c34 = convert(T2, 1) + + b1 = convert(T, 1 // 56) + b2 = convert(T, 3 // 512) + b3 = convert(T, 3 // 256) + b4 = convert(T, 0) + b5 = convert(T, 9 // 512) + b6 = convert(T, 0) + b7 = convert(T, 3 // 128) + b8 = convert(T, 15 // 512) + b9 = convert(T, 0) + b10 = convert(T, 9 // 256) + b11 = convert(T, 21 // 512) + b12 = convert(T, 3 // 64) + b13 = convert(T, 0) + b14 = convert(T, 27 // 512) + b15 = convert(T, 15 // 256) + b16 = convert(T, 33 // 512) + b17 = convert(T, 0) + b18 = convert(T, big"0.105352113571753019691496032887878162227673083080523884041670") + b19 = convert(T, big"0.170561346241752182382120338553874085887555487802790804737501") + b20 = convert(T, big"0.206229397329351940783526485701104894741914286259542454077972") + b21 = convert(T, big"0.206229397329351940783526485701104894741914286259542454077972") + b22 = convert(T, big"0.170561346241752182382120338553874085887555487802790804737501") + b23 = convert(T, big"0.105352113571753019691496032887878162227673083080523884041670") + b24 = convert(T, -33 // 512) + b25 = convert(T, -15 // 256) + b26 = convert(T, -27 // 512) + b27 = convert(T, -3 // 64) + b28 = convert(T, -21 // 512) + b29 = convert(T, -9 // 256) + b30 = convert(T, -15 // 512) + b31 = convert(T, -3 // 128) + b32 = convert(T, -9 // 512) + b33 = convert(T, -3 // 256) + b34 = convert(T, -3 // 512) + b35 = convert(T, 1 // 56) + + a0100 = convert(T, 1 // 9) + + a0200 = convert(T, -5 // 6) + a0201 = convert(T, 25 // 18) + + a0300 = convert(T, 5 // 24) + a0302 = convert(T, 5 // 8) + + a0400 = convert(T, 29 // 150) + a0402 = convert(T, 11 // 50) + a0403 = convert(T, -2 // 25) + + a0500 = convert(T, 1 // 10) + a0503 = convert(T, 2 // 5) + a0504 = convert(T, 1 // 2) + + a0600 = convert(T, big"0.103484561636679776672993546511910344499744798201971316606663") + a0603 = convert(T, big"0.122068887306407222589644082868962077139592714834162134741275") + a0604 = convert(T, big"0.482574490331246622475134780125688112865919023850168049679402") + a0605 = convert(T, + big"-0.0381409600015606999730886240005620205664113072478411477421970") + + a0700 = convert(T, big"0.124380526654094412881516420868799316268491466359671423163289") + a0704 = convert(T, big"0.226120282197584301422238662979202901196752320742633143965145") + a0705 = convert(T, big"0.0137885887618080880607695837016477814530969417491493385363543") + a0706 = convert(T, + big"-0.0672210133996684449749399507414305856950086341525382182856200") + a0800 = convert(T, big"0.0936919065659673815530885456083005933866349695217750085655603") + a0805 = convert(T, + big"-0.00613406843450510987229498995641664735620914507128858871007099") + a0806 = convert(T, big"0.216019825625503063708860097659866573490979433278117320188668") + a0807 = convert(T, big"0.423695063515761937337619073960976753205867469544123532683116") + + a0900 = convert(T, big"0.0838479812409052664616968791372814085980533139224911131069335") + a0905 = convert(T, + big"-0.0117949367100973814319755056031295775367961960590736150777613") + a0906 = convert(T, big"-0.247299020568812652339473838743194598325992840353340132697498") + a0907 = convert(T, big"0.0978080858367729012259313014081291665503740655476733940756599") + a0908 = convert(T, big"0.217590689243420631360008651767860318344168120024782176879989") + + a1000 = convert(T, big"0.0615255359769428227954562389614314714333423969064821107453940") + a1005 = convert(T, + big"0.00592232780324503308042990005798046524738389560444257136834990") + a1006 = convert(T, big"0.470326159963841112217224303205894113455362530746108825010848") + a1007 = convert(T, big"0.299688863848679000853981837096192399136831121671781279184194") + a1008 = convert(T, big"-0.247656877593994914689992276329810825853958069263947095548189") + a1009 = convert(T, big"0.110895029771437682893999851839061714522445173600678718208625") + + a1100 = convert(T, big"0.0419700073362782579861792864787277787213483656543104611245994") + a1105 = convert(T, + big"-0.00317987696266205093901912847692712407988609169703103952205634") + a1106 = convert(T, big"0.806397714906192077260821711520379506393543111567419750119748") + a1107 = convert(T, big"0.0975983126412388979093522850684288851314672048003054550357187") + a1108 = convert(T, big"0.778575578158398909027512446452927238999763460594181964958853") + a1109 = convert(T, big"0.204890423831599428189499202098105603312029235081420653574829") + a1110 = convert(T, big"-1.56261579627468188307070943950527825211462892236424360892806") + + a1200 = convert(T, big"0.0437726782233730163574465242495339811688214967071614123256973") + a1208 = convert(T, + big"0.00624365027520195208794358628580933625281631216903095917201250") + a1209 = convert(T, big"0.200043097109577314994435165469647856829066232218264969608768") + a1210 = convert(T, + big"-0.00805328367804983036823857162048902911923392887337029314844206") + a1211 = convert(T, big"0.0211517528067396521915711903523399601316877825157550573051221") + + a1300 = convert(T, big"0.0283499250363514563095023591920717312247137654896477097768495") + a1308 = convert(T, + big"0.00249163204855817407538949148805995149459884653585417680098222") + a1309 = convert(T, big"0.0230138787854593149638399846373742768772087122638142234223658") + a1310 = convert(T, + big"-0.00322155956692977098724476092467120878189463604760620461043308") + a1311 = convert(T, + big"0.00988442549447664668946335414487885256040819982786014648129297") + a1312 = convert(T, + big"-0.0213010771328887351384307642875927384886634565429572466632092") + + a1400 = convert(T, big"0.343511894290243001049432234735147943083353174980701426268122") + a1408 = convert(T, big"0.210451912023627385609097011999010655788807405225626700040882") + a1409 = convert(T, big"1.03427452057230411936482926828825709938667999698324740166559") + a1410 = convert(T, + big"0.00600303645864422487051240448206640574939078092406156945568306") + a1411 = convert(T, big"0.855938125099619537578012106002407728915062652616416005816477") + a1412 = convert(T, big"-0.977235005036766810872264852372525633013107656892839677696022") + a1413 = convert(T, big"-0.660026980479294694616225013856327693720573981219974874776419") + + a1500 = convert(T, + big"-0.0143574001672168069538206399935076366657755954378399880691949") + a1508 = convert(T, + big"-0.0366253270049039970293685796848974791733119081733552207318285") + a1509 = convert(T, big"0.0350254975636213681976849406979846524346789082471103574920148") + a1510 = convert(T, big"0.0360946016362113508931786658758335239823689929864237671348749") + a1511 = convert(T, + big"-0.0265219967553681106351595946834601923649627012457464284442911") + a1512 = convert(T, big"0.0445699011305698119638911537508839908104336323082226770910408") + a1513 = convert(T, big"0.124343093331358243286225595741786448038973408895106741855721") + a1514 = convert(T, + big"0.00413829693239480694403512496204335960426192908674476033832967") + + a1600 = convert(T, big"0.356032404425120290975609116398089176264106222379748802654822") + a1608 = convert(T, big"-0.450192758947562595966821779075956175110645100214763601190349") + a1609 = convert(T, big"0.430527907083710898626656292808782917793030154094709462877146") + a1610 = convert(T, big"0.511973029011022237668556960394071692077125787030651386389972") + a1611 = convert(T, big"0.908303638886404260390159124638110213997496214819904630546596") + a1612 = convert(T, big"-1.23921093371933931757372469151534028854413889248605726186520") + a1613 = convert(T, big"-0.649048661671761465141672348879062553905402831967191097656668") + a1614 = convert(T, big"0.251708904586819292210480529948970541404887852931447491219418") + a1615 = convert(T, big"0.779906470345586398810756795282334476023540593411550187024263") + + a1700 = convert(T, big"0.0130935687406513066406881206418834980127470438213192487844956") + a1712 = convert(T, + big"-0.0000932053067985113945908461962767108237858631509684667142124826") + a1713 = convert(T, big"0.0505374334262299359640090443138590726770942344716122381702746") + a1714 = convert(T, + big"8.04470341944487979109579109610197797641311868930865361048975e-7") + a1715 = convert(T, + big"0.000591726029494171190528755742777717259844340971924321528178248") + a1716 = convert(T, + big"-4.01614722154557337064691684906375587732264247950093804676867e-7") + + a1800 = convert(T, big"0.0207926484466053012541944544000765652167255206144373407979758") + a1812 = convert(T, + big"0.000582695918800085915101902697837284108951406103029871570103075") + a1813 = convert(T, + big"-0.00801700732358815939083342186525852746640558465919633524655451") + a1814 = convert(T, + big"4.03847643847136940375170821743560570484117290330895506618968e-6") + a1815 = convert(T, big"0.0854609998055506144225056114567535602510114622033622491802597") + a1816 = convert(T, + big"-2.04486480935804242706707569691004307904442837552677456232848e-6") + a1817 = convert(T, big"0.105328578824431893399799402979093997354240904235172843146582") + + a1900 = convert(T, big"1.40153449795736021415446247355771306718486452917597731683689") + a1912 = convert(T, big"-0.230252000984221261616272410367415621261130298274455611733277") + a1913 = convert(T, big"-7.21106840466912905659582237106874247165856493509961561958267") + a1914 = convert(T, + big"0.00372901560694836335236995327852132340217759566678662385552634") + a1915 = convert(T, big"-4.71415495727125020678778179392224757011323373221820091641216") + a1916 = convert(T, + big"-0.00176367657545349242053841995032797673574903886695600132759652") + a1917 = convert(T, big"7.64130548038698765563029310880237651185173367813936997648198") + a1918 = convert(T, big"3.50602043659751834989896082949744710968212949893375368243588") + + a2000 = convert(T, big"11.9514650694120686799372385830716401674473610826553517297976") + a2012 = convert(T, big"7.79480932108175968783516700231764388220284279598980948538579") + a2013 = convert(T, big"-56.4501393867325792523560991120904281440468100061340556540132") + a2014 = convert(T, big"0.0912376306930644901344530449290276645709607450403673704844997") + a2015 = convert(T, big"-12.7336279925434886201945524309199275038162717529918963305155") + a2016 = convert(T, + big"-0.0396895921904719712313542810939736674712383070433147873009352") + a2017 = convert(T, big"54.4392141883570886996225765155307791861438378423305337073797") + a2018 = convert(T, big"-3.64411637921569236846406990361350645806721478409266709351203") + a2019 = convert(T, big"-0.804503249910509910899030787958579499315694913210787878260459") + + a2100 = convert(T, big"-148.809426507100488427838868268647625561930612082148597076690") + a2112 = convert(T, big"-91.7295278291256484357935662402321623495228729036354276506427") + a2113 = convert(T, big"707.656144971598359834575719286335716154821128966649565194286") + a2114 = convert(T, big"-1.10563611857482440905296961311590930801338308942637769555540") + a2115 = convert(T, big"176.134591883811372587859898076055660406999516762301689616841") + a2116 = convert(T, big"0.491384824214880662268898345164454557416884631402764792538746") + a2117 = convert(T, big"-684.278000449814944358237535610895081956077167893600278300805") + a2118 = convert(T, big"27.9910604998398258984224332124380407446002518400668657974589") + a2119 = convert(T, big"13.1939710030282333443670964371153238435064159623744975073252") + a2120 = convert(T, big"1.25128781283980445450114974148056006317268830077396406361417") + + a2200 = convert(T, big"-9.67307946948196763644126118433219395839951408571877262880482") + a2212 = convert(T, big"-4.46990150858505531443846227701960360497830681408751431146712") + a2213 = convert(T, big"45.5127128690952681968241950400052751178905907817398483534845") + a2214 = convert(T, + big"-0.0713085086183826912791492024438246129930559805352394367050813") + a2215 = convert(T, big"11.2273614068412741582590624479939384207826800776794485051540") + a2216 = convert(T, big"0.126244376717622724516237912909138809361786889819105426371393") + a2217 = convert(T, big"-43.5439339549483313605810624907242107623814304467621407753424") + a2218 = convert(T, big"0.787174307543058978398792994996550902064546091443233850464377") + a2219 = convert(T, big"0.532264696744684215669300708603886690785395776821503851830821") + a2220 = convert(T, big"0.422422733996325326010225127471388772575086538809603346825334") + a2221 = convert(T, big"0.0859131249503067107308438031499859443441115056294154956487671") + + a2300 = convert(T, big"-10.0664032447054702403396606900426891472202824757968765569183") + a2308 = convert(T, + big"-0.0366253270049039970293685796848974791733119081733552207318285") + a2309 = convert(T, big"0.0350254975636213681976849406979846524346789082471103574920148") + a2310 = convert(T, big"0.0360946016362113508931786658758335239823689929864237671348749") + a2311 = convert(T, + big"-0.0265219967553681106351595946834601923649627012457464284442911") + a2312 = convert(T, big"-6.27088972181464143590553149478871603839356122957396018530209") + a2313 = convert(T, big"48.2079237442562989090702103008195063923492593141636117832993") + a2314 = convert(T, + big"-0.0694471689136165640882395180583732834557754169149088630301342") + a2315 = convert(T, big"12.6810690204850295698341370913609807066108483811412127009785") + a2316 = convert(T, big"0.0119671168968323754838161435501011294100927813964199613229864") + a2317 = convert(T, big"-46.7249764992482408003358268242662695593201321659795608950429") + a2318 = convert(T, big"1.33029613326626711314710039298216591399033511191227101321435") + a2319 = convert(T, big"1.00766787503398298353438903619926657771162717793661719708370") + a2320 = convert(T, big"0.0209512051933665091664122388475480702892770753864487241177616") + a2321 = convert(T, big"0.0210134706331264177317735424331396407424412188443757490871603") + a2322 = convert(T, + big"0.00952196014417121794175101542454575907376360233658356240547761") + + a2400 = convert(T, big"-409.478081677743708772589097409370357624424341606752069725341") + a2408 = convert(T, big"0.210451912023627385609097011999010655788807405225626700040882") + a2409 = convert(T, big"1.03427452057230411936482926828825709938667999698324740166559") + a2410 = convert(T, + big"0.00600303645864422487051240448206640574939078092406156945568306") + a2411 = convert(T, big"0.855938125099619537578012106002407728915062652616416005816477") + a2412 = convert(T, big"-250.516998547447860492777657729316130386584050420782075966990") + a2413 = convert(T, big"1946.42466652388427766053750328264758595829850895761428240231") + a2414 = convert(T, big"-3.04503882102310365506105809086860882786950544097602101685174") + a2415 = convert(T, big"490.626379528281713521208265299168083841598542274061671576230") + a2416 = convert(T, big"1.56647589531270907115484067013597445739595615245966775329993") + a2417 = convert(T, big"-1881.97428994011173362217267377035870619215906638453056643641") + a2418 = convert(T, big"75.2592224724847175278837713643303149821620618914245864351135") + a2419 = convert(T, big"34.5734356980331067622434344736554689696728644793551014989002") + a2420 = convert(T, big"3.21147679440968961435417361847073755169022966748891627882572") + a2421 = convert(T, big"-0.460408041738414391307201404237058848867245095265382820823055") + a2422 = convert(T, + big"-0.0870718339841810522431884137957986245724252047388936572215438") + a2423 = convert(T, big"-7.39351814158303067567016952195521063999185773249132944724553") + + a2500 = convert(T, big"3.43347475853550878921093496257596781120623891072008459930197") + a2508 = convert(T, + big"0.00249163204855817407538949148805995149459884653585417680098222") + a2509 = convert(T, big"0.0230138787854593149638399846373742768772087122638142234223658") + a2510 = convert(T, + big"-0.00322155956692977098724476092467120878189463604760620461043308") + a2511 = convert(T, + big"0.00988442549447664668946335414487885256040819982786014648129297") + a2512 = convert(T, big"2.16252799377922507788307841904757354045759225335732707916530") + a2513 = convert(T, big"-16.2699864546457421328065640660139489006987552040228852402716") + a2514 = convert(T, big"-0.128534502120524552843583417470935010538029037542654506231743") + a2515 = convert(T, big"-8.98915042666504253089307820833379330486511746063552853023189") + a2516 = convert(T, + big"-0.00348595363232025333387080201851013650192401767250513765000963") + a2517 = convert(T, big"15.7936194113339807536235187388695574135853387025139738341334") + a2518 = convert(T, big"-0.574403330914095065628165482017335820148383663195675408024658") + a2519 = convert(T, big"-0.345602039021393296692722496608124982535237228827655306030152") + a2520 = convert(T, + big"-0.00662241490206585091731619991383757781133067992707418687587487") + a2521 = convert(T, + big"-0.00777788129242204164032546458607364309759347209626759111946150") + a2522 = convert(T, + big"-0.00356084192402274913338827232697437364675240818791706587952939") + a2523 = convert(T, big"4.79282506449930799649797749629840189457296934139359048988332") + a2524 = convert(T, big"0.153725464873068577844576387402512082757034273069877432944621") + + a2600 = convert(T, big"32.3038520871985442326994734440031535091364975047784630088983") + a2605 = convert(T, + big"-0.00317987696266205093901912847692712407988609169703103952205634") + a2606 = convert(T, big"0.806397714906192077260821711520379506393543111567419750119748") + a2607 = convert(T, big"0.0975983126412388979093522850684288851314672048003054550357187") + a2608 = convert(T, big"0.778575578158398909027512446452927238999763460594181964958853") + a2609 = convert(T, big"0.204890423831599428189499202098105603312029235081420653574829") + a2610 = convert(T, big"-1.56261579627468188307070943950527825211462892236424360892806") + a2612 = convert(T, big"16.3429891882310570648504243973927174708753353504154550405647") + a2613 = convert(T, big"-154.544555293543621230730189631471036399316683669609116705323") + a2614 = convert(T, big"1.56971088703334872692034283417621761466263593582497085955201") + a2615 = convert(T, big"3.27685545087248131321429817269900731165522404974733504794135") + a2616 = convert(T, + big"-0.0503489245193653176348040727199783626534081095691632396802451") + a2617 = convert(T, big"153.321151858041665070593767885914694011224363102594556731397") + a2618 = convert(T, big"7.17568186327720495846766484814784143567826308034865369443637") + a2619 = convert(T, big"-2.94036748675300481945917659896930989215320594380777597403592") + a2620 = convert(T, + big"-0.0665845946076803144470749676022628870281920493197256887985612") + a2621 = convert(T, + big"-0.0462346054990843661229248668562217261176966514016859284197145") + a2622 = convert(T, + big"-0.0204198733585679401539388228617269778848579774821581777675337") + a2623 = convert(T, big"-53.3523106438735850515953441165998107974045090495791591218714") + a2624 = convert(T, big"-1.35548714715078654978732186705996404017554501614191325114947") + a2625 = convert(T, big"-1.57196275801232751882901735171459249177687219114442583461866") + + a2700 = convert(T, big"-16.6451467486341512872031294403931758764560371130818978459405") + a2705 = convert(T, + big"0.00592232780324503308042990005798046524738389560444257136834990") + a2706 = convert(T, big"0.470326159963841112217224303205894113455362530746108825010848") + a2707 = convert(T, big"0.299688863848679000853981837096192399136831121671781279184194") + a2708 = convert(T, big"-0.247656877593994914689992276329810825853958069263947095548189") + a2709 = convert(T, big"0.110895029771437682893999851839061714522445173600678718208625") + a2711 = convert(T, big"-0.491719043846229147070666628704194097678081907210673044988866") + a2712 = convert(T, big"-11.4743154427289496968389492564352536350842454130853175250727") + a2713 = convert(T, big"80.2593166576230272541702485886484400152793366623589989106256") + a2714 = convert(T, big"-0.384132303980042847625312526759029103746926841342088219165648") + a2715 = convert(T, big"7.28147667468107583471326950926136115767612581862877764249646") + a2716 = convert(T, big"-0.132699384612248379510571708176035274836827341616751884314074") + a2717 = convert(T, big"-81.0799832525730726674679289752255240006070716633632990308935") + a2718 = convert(T, big"-1.25037492835620639521768185656179119962253747492403205797494") + a2719 = convert(T, big"2.59263594969543681023776379504377324994226447359296887778718") + a2720 = convert(T, big"-0.301440298346404539830163997260526875264431537275641495291993") + a2721 = convert(T, big"0.221384460789832337451706451572773791695246839057318414301020") + a2722 = convert(T, big"0.0827577274771892931955989870974693152996276435429809890551210") + a2723 = convert(T, big"18.9960662040611520464672450037243263998175161412237156872211") + a2724 = convert(T, big"0.269231946409639685623468015128334167460051910348912845121977") + a2725 = convert(T, big"1.62674827447066537462989364929628933988125029284183680279020") + a2726 = convert(T, big"0.491719043846229147070666628704194097678081907210673044988866") + + a2800 = convert(T, big"0.0838479812409052664616968791372814085980533139224911131069335") + a2805 = convert(T, + big"-0.0117949367100973814319755056031295775367961960590736150777613") + a2806 = convert(T, big"-0.247299020568812652339473838743194598325992840353340132697498") + a2807 = convert(T, big"0.0978080858367729012259313014081291665503740655476733940756599") + a2808 = convert(T, big"0.217590689243420631360008651767860318344168120024782176879989") + a2810 = convert(T, big"0.137585606763325224865659632196787746647447222975084865975440") + a2811 = convert(T, big"0.0439870229715046685058790092341545026046103890294261359042581") + a2813 = convert(T, big"-0.513700813768193341957004456618630303738757363641964030086972") + a2814 = convert(T, big"0.826355691151315508644211308399153458701423158616168576922372") + a2815 = convert(T, big"25.7018139719811832625873882972519939511136556341960074626615") + a2823 = convert(T, big"-25.7018139719811832625873882972519939511136556341960074626615") + a2824 = convert(T, big"-0.826355691151315508644211308399153458701423158616168576922372") + a2825 = convert(T, big"0.513700813768193341957004456618630303738757363641964030086972") + a2826 = convert(T, + big"-0.0439870229715046685058790092341545026046103890294261359042581") + a2827 = convert(T, big"-0.137585606763325224865659632196787746647447222975084865975440") + + a2900 = convert(T, big"0.124380526654094412881516420868799316268491466359671423163289") + a2904 = convert(T, big"0.226120282197584301422238662979202901196752320742633143965145") + a2905 = convert(T, big"0.0137885887618080880607695837016477814530969417491493385363543") + a2906 = convert(T, + big"-0.0672210133996684449749399507414305856950086341525382182856200") + a2909 = convert(T, big"-0.856238975085428354755349769879501772112121597411563802855067") + a2910 = convert(T, big"-1.96337522866858908928262850028093813988180440518267404553576") + a2911 = convert(T, big"-0.232332822724119401237246257308921847250108199230419994978218") + a2913 = convert(T, big"4.30660719086453349461668936876562947772432562053478092626764") + a2914 = convert(T, big"-2.92722963249465482659787911202390446687687394950633612630592") + a2915 = convert(T, big"-82.3131666397858944454492334105458707735761966428138676971041") + a2923 = convert(T, big"82.3131666397858944454492334105458707735761966428138676971041") + a2924 = convert(T, big"2.92722963249465482659787911202390446687687394950633612630592") + a2925 = convert(T, big"-4.30660719086453349461668936876562947772432562053478092626764") + a2926 = convert(T, big"0.232332822724119401237246257308921847250108199230419994978218") + a2927 = convert(T, big"1.96337522866858908928262850028093813988180440518267404553576") + a2928 = convert(T, big"0.856238975085428354755349769879501772112121597411563802855067") + + a3000 = convert(T, big"0.103484561636679776672993546511910344499744798201971316606663") + a3003 = convert(T, big"0.122068887306407222589644082868962077139592714834162134741275") + a3004 = convert(T, big"0.482574490331246622475134780125688112865919023850168049679402") + a3005 = convert(T, + big"-0.0381409600015606999730886240005620205664113072478411477421970") + a3007 = convert(T, big"-0.550499525310802324138388507020508177411414311000037561712836") + a3009 = convert(T, big"-0.711915811585189227887648262043794387578291882406745570495765") + a3010 = convert(T, big"-0.584129605671551340432988730158480872095335329645227595707052") + a3013 = convert(T, big"2.11046308125864932128717300046622750300375054278936987850718") + a3014 = convert(T, + big"-0.0837494736739572135525742023001037992695260175335123517729291") + a3015 = convert(T, big"5.10021499072320914075295969043344113107545060862804249161191") + a3023 = convert(T, big"-5.10021499072320914075295969043344113107545060862804249161191") + a3024 = convert(T, big"0.0837494736739572135525742023001037992695260175335123517729291") + a3025 = convert(T, big"-2.11046308125864932128717300046622750300375054278936987850718") + a3027 = convert(T, big"0.584129605671551340432988730158480872095335329645227595707052") + a3028 = convert(T, big"0.711915811585189227887648262043794387578291882406745570495765") + a3029 = convert(T, big"0.550499525310802324138388507020508177411414311000037561712836") + + a3100 = convert(T, 29 // 150) + a3102 = convert(T, 11 // 50) + a3103 = convert(T, -2 // 25) + a3106 = convert(T, big"0.109993425580724703919462404865068340845119058295846426463652") + a3107 = convert(T, big"-0.254297048076270161384068506997153122141835626976703920846242") + a3109 = convert(T, big"0.865570777116694254343770343821098281832847401233011859346737") + a3110 = convert(T, big"3.32416449114093083106799552786572018336860092936986407160200") + a3113 = convert(T, big"-12.0102223315977933882352385148661841260301942633996815127277") + a3114 = convert(T, big"0.476601466242493239430442776862061899602963782003580209476163") + a3115 = convert(T, big"-29.0243011221036390525802623213654099596251221332470910692353") + a3123 = convert(T, big"29.0243011221036390525802623213654099596251221332470910692353") + a3124 = convert(T, big"-0.476601466242493239430442776862061899602963782003580209476163") + a3125 = convert(T, big"12.0102223315977933882352385148661841260301942633996815127277") + a3127 = convert(T, big"-3.32416449114093083106799552786572018336860092936986407160200") + a3128 = convert(T, big"-0.865570777116694254343770343821098281832847401233011859346737") + a3129 = convert(T, big"0.254297048076270161384068506997153122141835626976703920846242") + a3130 = convert(T, big"-0.109993425580724703919462404865068340845119058295846426463652") + + a3200 = convert(T, -5 // 6) + a3201 = convert(T, 25 // 18) + a3204 = convert(T, -3 // 4) + a3206 = convert(T, big"-0.492529543718026304422682049114021320200214681580657784719074") + a3230 = convert(T, big"0.492529543718026304422682049114021320200214681580657784719074") + a3231 = convert(T, 3 // 4) + + a3300 = convert(T, 1 // 9) + a3302 = convert(T, -2 // 9) + a3332 = convert(T, 2 // 9) + + a3400 = convert(T, big"0.285835140388971558796088842163836414852927537894596466840753") + a3401 = convert(T, 7 // 24) + a3402 = convert(T, 7 // 32) + a3404 = convert(T, 21 // 128) + a3406 = convert(T, big"0.218194354945556658327188241581352107093288824322187941141516") + a3407 = convert(T, big"0.180392898478697766863635221946775437719620053641849228562435") + a3409 = convert(T, big"0.205713839404845018859120755122929542277570094982808905393991") + a3410 = convert(T, big"0.242715791581770239970282927959446515762745971386670541948576") + a3411 = convert(T, big"0.246465780813629305833609291181891407799228103869305705137021") + a3412 = convert(T, big"-3.44991940790890824979834154601622662060370460614931644223924") + a3413 = convert(T, big"0.228875562160036081760729060738458584294220372552740218459295") + a3414 = convert(T, big"0.283290599702151415321527419056733335978436595493855789831434") + a3415 = convert(T, big"3.21085125837766640960131490544236787005557320332238705967955") + a3416 = convert(T, big"-0.223538777364845699920233756214162507964125230083674032084065") + a3417 = convert(T, big"-0.707121157204419073518727286207487212130091231955206160635271") + a3418 = convert(T, big"3.21123345150287080408174729202856500893260034443022374267639") + a3419 = convert(T, big"1.40954348309669766030414474301123175769045945573548986335553") + a3420 = convert(T, big"-0.151362053443742613121602276742518111090963026203676055891793") + a3421 = convert(T, big"0.372350574527014276454724080214619984397121028202148298716575") + a3422 = convert(T, big"0.252978746406361336722199907762141285915775728129414319261111") + a3423 = convert(T, big"-3.21085125837766640960131490544236787005557320332238705967955") + a3424 = convert(T, big"-0.283290599702151415321527419056733335978436595493855789831434") + a3425 = convert(T, big"-0.228875562160036081760729060738458584294220372552740218459295") + a3426 = convert(T, big"-0.246465780813629305833609291181891407799228103869305705137021") + a3427 = convert(T, big"-0.242715791581770239970282927959446515762745971386670541948576") + a3428 = convert(T, big"-0.205713839404845018859120755122929542277570094982808905393991") + a3429 = convert(T, big"-0.180392898478697766863635221946775437719620053641849228562435") + a3430 = convert(T, big"-0.218194354945556658327188241581352107093288824322187941141516") + a3431 = convert(T, -21 // 128) + a3432 = convert(T, -7 // 32) + a3433 = convert(T, -7 // 24) + Feagin14ConstantCache(adaptiveConst, a0100, a0200, a0201, a0300, a0302, a0400, a0402, + a0403, a0500, a0503, a0504, a0600, a0603, a0604, a0605, a0700, + a0704, a0705, a0706, a0800, a0805, a0806, a0807, a0900, a0905, + a0906, a0907, a0908, a1000, a1005, a1006, a1007, a1008, a1009, + a1100, a1105, a1106, a1107, a1108, a1109, a1110, a1200, a1208, + a1209, a1210, a1211, a1300, a1308, a1309, a1310, a1311, a1312, + a1400, a1408, a1409, a1410, a1411, a1412, a1413, a1500, a1508, + a1509, a1510, a1511, a1512, a1513, a1514, a1600, a1608, a1609, + a1610, a1611, a1612, a1613, a1614, a1615, a1700, a1712, a1713, + a1714, a1715, a1716, a1800, a1812, a1813, a1814, a1815, a1816, + a1817, a1900, a1912, a1913, a1914, a1915, a1916, a1917, a1918, + a2000, a2012, a2013, a2014, a2015, a2016, a2017, a2018, a2019, + a2100, a2112, a2113, a2114, a2115, a2116, a2117, a2118, a2119, + a2120, a2200, a2212, a2213, a2214, a2215, a2216, a2217, a2218, + a2219, a2220, a2221, a2300, a2308, a2309, a2310, a2311, a2312, + a2313, a2314, a2315, a2316, a2317, a2318, a2319, a2320, a2321, + a2322, a2400, a2408, a2409, a2410, a2411, a2412, a2413, a2414, + a2415, a2416, a2417, a2418, a2419, a2420, a2421, a2422, a2423, + a2500, a2508, a2509, a2510, a2511, a2512, a2513, a2514, a2515, + a2516, a2517, a2518, a2519, a2520, a2521, a2522, a2523, a2524, + a2600, a2605, a2606, a2607, a2608, a2609, a2610, a2612, a2613, + a2614, a2615, a2616, a2617, a2618, a2619, a2620, a2621, a2622, + a2623, a2624, a2625, a2700, a2705, a2706, a2707, a2708, a2709, + a2711, a2712, a2713, a2714, a2715, a2716, a2717, a2718, a2719, + a2720, a2721, a2722, a2723, a2724, a2725, a2726, a2800, a2805, + a2806, a2807, a2808, a2810, a2811, a2813, a2814, a2815, a2823, + a2824, a2825, a2826, a2827, a2900, a2904, a2905, a2906, a2909, + a2910, a2911, a2913, a2914, a2915, a2923, a2924, a2925, a2926, + a2927, a2928, a3000, a3003, a3004, a3005, a3007, a3009, a3010, + a3013, a3014, a3015, a3023, a3024, a3025, a3027, a3028, a3029, + a3100, a3102, a3103, a3106, a3107, a3109, a3110, a3113, a3114, + a3115, a3123, a3124, a3125, a3127, a3128, a3129, a3130, a3200, + a3201, a3204, a3206, a3230, a3231, a3300, a3302, a3332, a3400, + a3401, a3402, a3404, a3406, a3407, a3409, a3410, a3411, a3412, + a3413, a3414, a3415, a3416, a3417, a3418, a3419, a3420, a3421, + a3422, a3423, a3424, a3425, a3426, a3427, a3428, a3429, a3430, + a3431, a3432, a3433, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, + c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, + c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, b1, b2, b3, b4, + b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, + b32, b33, b34, b35) +end diff --git a/src/tableaus/firk_tableaus.jl b/src/tableaus/firk_tableaus.jl index 0577811478..5427d3cef2 100644 --- a/src/tableaus/firk_tableaus.jl +++ b/src/tableaus/firk_tableaus.jl @@ -111,7 +111,7 @@ function RadauIIA5Tableau(T, T2) e1, e2, e3) end -struct RadauIIA7Tableau{T, T2} +struct RadauIIA9Tableau{T, T2} T11::T T12::T T13::T @@ -178,7 +178,7 @@ struct RadauIIA7Tableau{T, T2} e5::T end -function RadauIIA7Tableau(T, T2) +function RadauIIA9Tableau(T, T2) T11 = convert(T, -1.251758622050104589014e-2) T12 = convert(T, -1.024204781790882707009e-2) T13 = convert(T, 4.767387729029572386318e-2) @@ -248,7 +248,7 @@ function RadauIIA7Tableau(T, T2) e4 = convert(T, 5.920031671845428725662e-1) e5 = convert(T, -2.000000000000000000000e-1) - RadauIIA7Tableau{T, T2}(T11, T12, T13, T14, T15, + RadauIIA9Tableau{T, T2}(T11, T12, T13, T14, T15, T21, T22, T23, T24, T25, T31, T32, T33, T34, T35, T41, T42, T43, T44, T45, T51, #=T52, T53, T54, T55=# TI11, TI12, TI13, TI14, TI15, TI21, TI22, TI23, TI24, TI25, @@ -258,3 +258,5 @@ function RadauIIA7Tableau(T, T2) γ, α1, β1, α2, β2, e1, e2, e3, e4, e5) end + + diff --git a/src/tableaus/rkc_tableaus.jl b/src/tableaus/rkc_tableaus.jl new file mode 100644 index 0000000000..5142663360 --- /dev/null +++ b/src/tableaus/rkc_tableaus.jl @@ -0,0 +1,37731 @@ +function ROCK2ConstantCache(T, T2, zprev) + ms = SVector{46, Int}( + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, + 22, 24, 26, 28, 30, 33, 36, 39, 43, 47, 51, 56, 61, 66, 72, 78, + 85, 93, + 102, 112, 123, 135, 148, 163, 180, 198) + fp1 = SVector{46, T}(0.4102693550421609e+00, 0.3889624104727243e+00, + 0.3804692420283886e+00, + 0.3760815680865637e+00, 0.3735177579729938e+00, + 0.3719340231904236e+00, + 0.3708571145968057e+00, 0.3700947006022557e+00, + 0.3695328931459086e+00, + 0.3691085831661758e+00, 0.3687813249652330e+00, + 0.3685244707068931e+00, + 0.3683185599507446e+00, 0.3681542178682514e+00, + 0.3680181997765286e+00, + 0.3679084456991284e+00, 0.3678181571053212e+00, + 0.3678314333608541e+00, + 0.3677897070402892e+00, 0.3681800192470787e+00, + 0.3681272993461229e+00, + 0.3680840569645587e+00, 0.3680522380648169e+00, + 0.3680263578626069e+00, + 0.3680061275157194e+00, 0.3679837719607466e+00, + 0.3679668653311732e+00, + 0.3679542340323301e+00, 0.3679429332584250e+00, + 0.3679349432021754e+00, + 0.3679290943359695e+00, 0.3679242023884676e+00, + 0.3679207541681089e+00, + 0.3679185472223537e+00, 0.3679168690130640e+00, + 0.3679158588043139e+00, + 0.3679154592969145e+00, 0.3679154025286917e+00, + 0.3679157536198652e+00, + 0.3679163676763697e+00, 0.3679171904021983e+00, + 0.3679181786833088e+00, + 0.3679192462983425e+00, 0.3679204323079710e+00, + 0.3679216942157868e+00, + 0.3679229127010114e+00) + fp2 = SVector{46, T}(0.4495196112243335e+00, 0.4219428123056774e+00, + 0.4084335547255627e+00, + 0.4009301129475925e+00, 0.3963598727888637e+00, + 0.3934034185789226e+00, + 0.3913676516238603e+00, 0.3899091428928617e+00, + 0.3888276962996660e+00, + 0.3880048656683555e+00, 0.3873650613539532e+00, + 0.3868583585730354e+00, + 0.3864499054795832e+00, 0.3861178821587815e+00, + 0.3858426294881124e+00, + 0.3856144554520791e+00, 0.3854228843194507e+00, + 0.3853156085078759e+00, + 0.3851902798680153e+00, 0.3853705093720269e+00, + 0.3851957294861824e+00, + 0.3850587241670235e+00, 0.3849515900397918e+00, + 0.3848648995575697e+00, + 0.3847945082231300e+00, 0.3847117224407400e+00, + 0.3846478726309070e+00, + 0.3845979020112835e+00, 0.3845472492329918e+00, + 0.3845088319509754e+00, + 0.3844789634065264e+00, 0.3844504092359686e+00, + 0.3844285235163634e+00, + 0.3844115660464609e+00, 0.3843957877945634e+00, + 0.3843835767106759e+00, + 0.3843727001444428e+00, 0.3843632394180673e+00, + 0.3843553120908175e+00, + 0.3843487746818896e+00, 0.3843434800804404e+00, + 0.3843392605995229e+00, + 0.3843359163858929e+00, 0.3843331309176606e+00, + 0.3843309056586355e+00, + 0.3843292556220249e+00) + recf = [ + 0.1794612899156781, 0.09326607661089206, + 0.1268473641290642, 0.02103378190528467, + 0.0578662712551911, 0.07776456841673993, + 0.02157791817707098, 0.09528922876588625, + 0.08723622960881584, 0.03957407527591189, + 0.05338681630900877, 0.02247986572029358, + 0.06393794866013652, 0.0861675960246663, + 0.07433164225960258, 0.1608966052260327, + 0.02881884349012583, 0.03903194468364506, + 0.02315538732440072, 0.04666180548151659, + 0.08821448969005685, 0.05288869100008489, + 0.1558852247558841, 0.05955157767537859, + 0.2309801425356076, 0.02193602641069006, + 0.02980001095383432, 0.02364036352805737, + 0.03566742298660092, 0.0901769635289683, + 0.04023410528284037, 0.1575736612169138, + 0.0442110049482293, 0.221743062150858, + 0.04869809870617736, 0.2940499060453847, + 0.01726461340854506, 0.02350655101084081, + 0.0239919520224083, 0.02817607209777294, + 0.09173675182820953, 0.03176838133583184, + 0.1600219376374877, 0.03469194451695863, + 0.2221486436776174, 0.0373876350116119, + 0.2814712676591709, 0.04053195010515956, + 0.349859771934868, 0.01394572558988917, + 0.01901965402711647, 0.02425291169233543, + 0.02282720812165174, 0.09294575674653435, + 0.02575013323611407, 0.1622227426315588, + 0.0280770541578923, 0.2243919049772138, + 0.03005377306193452, 0.2802435651401261, + 0.03196472247412495, 0.3348331353768858, + 0.03423680369928859, 0.398901664156519, + 0.01150212461258425, 0.01570710434739234, + 0.02445103607680476, 0.01887147450684578, + 0.093887110326411, 0.02130209293934879, + 0.1640457400037581, 0.02322314183593871, + 0.2267657098371261, 0.02480419563989607, + 0.2818605427391582, 0.02620108024481186, + 0.3319747646481704, 0.02760343567567814, + 0.3822711818317003, 0.02928725018247521, + 0.4419889482818066, 0.009650189035331108, + 0.01319127118048348, 0.02460463437251803, + 0.01586242507387037, 0.0946291469184127, + 0.01791697874611395, 0.1655306545097223, + 0.01953741662819831, 0.2288845437800309, + 0.0208544873661066, 0.2840687821706643, + 0.02197276738303543, 0.332762163420867, + 0.02299581340430604, 0.3779528907207973, + 0.02405334751606276, 0.4244163000944219, + 0.02532773055505536, 0.4799238174596328, + 0.008212831461177801, 0.01123533801931148, + 0.0247259253919068, 0.01351988263110243, + 0.09522208667469109, 0.01527968649293853, + 0.1667413647253854, 0.01666740304836073, + 0.2306916351605186, 0.01778972104750926, + 0.2862271893660237, 0.01872598244401872, + 0.3345934460509904, 0.01954407472805166, + 0.3778520013827246, 0.02031544030249, + 0.4188775043096391, 0.02113066217102199, + 0.4619185110779211, 0.02211266742157054, + 0.5134449754977242, 0.007074719613815112, + 0.009684509591053977, 0.02482326781574381, + 0.01166040318768419, 0.09570219065303219, + 0.0131845989014643, 0.1677351729038757, + 0.01438717215812115, 0.2322139970245483, + 0.01535795943897448, 0.2881631572191675, + 0.01616136143489047, 0.3366119552764601, + 0.01684787625840699, 0.3791920530521655, + 0.01746359793359561, 0.4179163657739238, + 0.01805925334195525, 0.4554086296687285, + 0.01869919690078058, 0.495380320313383, + 0.01946782991114719, 0.5431953913817005, + 0.006158116280205625, 0.008434133870779752, + 0.02490250308471492, 0.01015973796908432, + 0.09609568511780181, 0.01149255448537381, + 0.1685578212579456, 0.01254496388900155, + 0.2334953976202505, 0.0133941202672405, + 0.2898496927042313, 0.01409430683259744, + 0.3385311597112782, 0.01468607650095395, + 0.380955385363272, 0.01520306181269769, + 0.4187183922578105, 0.01567773486210682, + 0.4536627812581018, 0.01614693417033556, + 0.4881324072137513, 0.01665708022899876, + 0.5253402953586265, 0.0172671276878042, + 0.569731047549543, 0.005408899288459016, + 0.007411165652735432, 0.02496784203339785, + 0.008931010375660927, 0.09642194989632852, + 0.01010622203571924, 0.1692450860120974, + 0.01103497280658699, 0.2345784420179126, + 0.01178444954979593, 0.2913056300783272, + 0.01240145878830343, 0.3402656182942943, + 0.01292005530031986, 0.382756777938251, + 0.0133668781100104, 0.4201602339064523, + 0.01376523513966666, 0.4539235794662016, + 0.01413868046925951, 0.4856954694207845, + 0.01451444200099929, 0.5175484724211766, + 0.01492644572980292, 0.5522503690808819, + 0.01541651122328756, 0.5934874290489524, + 0.004788707289765767, 0.006563722805402352, + 0.0250223058569931, 0.00791241650301333, + 0.09669512238638367, 0.008956313102014822, + 0.1698239427218661, 0.009781969024648538, + 0.2354985079518828, 0.01044851744036037, + 0.2925601105800896, 0.01099693219507985, + 0.3418012690877302, 0.0114565920869984, + 0.3844521174650939, 0.01184970544276362, + 0.4217763245489749, 0.01219446847463953, + 0.4550117593290032, 0.01250758855429112, + 0.4854408050495134, 0.01280655793511545, + 0.514526804170333, 0.01311180392585363, + 0.54409412649029, 0.01344843304771755, + 0.5765229845165943, 0.01384655622092475, + 0.6148795064211108, 0.004269409473142479, + 0.005853691221954542, 0.02506818803768801, + 0.007058488452666192, 0.09692609816181726, + 0.007991811416685026, 0.170315738084356, + 0.008730579305889177, 0.2362853743226745, + 0.009327287399213484, 0.2936438651173445, + 0.009818197983040462, 0.3431514772416978, + 0.01022909697576184, 0.3859958359229893, + 0.01057909230023007, 0.4233725763238417, + 0.01088320687501712, 0.4564025740290915, + 0.0111543058671517, 0.4861671131891395, + 0.01140470198717317, 0.5137949407970326, + 0.01164762828827466, 0.5405812657784165, + 0.01189859698528282, 0.568127910648508, + 0.0121763907812416, 0.5984802463148428, + 0.0125029779529791, 0.6341959825388761, + 0.003830262680422776, 0.00525292423946998, + 0.02510718258012232, 0.006335607341496969, + 0.0971230041110362, 0.007174964200736387, + 0.1707366515477548, 0.007839821469171155, + 0.2369623770049865, 0.008377122084280812, + 0.2945833847967025, 0.00881923346650051, + 0.3443363340392364, 0.009189060633588098, + 0.3873807210303031, 0.00950337880056659, + 0.4248706039873364, 0.00977504705184527, + 0.4578585641947919, 0.01001457306569686, + 0.4873111192988822, 0.01023132837651919, + 0.5141675256404127, 0.01043459649534057, + 0.5394214279393358, 0.01063454146082206, + 0.5642188354052674, 0.01084307018096031, + 0.5899649430016252, 0.01107438039614643, + 0.6184184090843611, 0.01134470195438803, + 0.6517206797990772, 0.003454097785831183, + 0.004738087690909603, 0.02514098616718916, + 0.005715864568881495, 0.09729414530950285, + 0.006474399737140852, 0.1711037123670141, + 0.007075625560198937, 0.2375553213635903, + 0.007561765789488958, 0.2954111541648083, + 0.007961900378019847, 0.3453896252983967, + 0.008296546652001753, 0.388630302094808, + 0.008580623356383654, 0.4262600339398994, + 0.008825386359541219, 0.459288916256125, + 0.009039751450513937, 0.4886139630455138, + 0.009231266796183848, 0.5150610315193943, + 0.009406897826583457, 0.5394434170928742, + 0.00957372005944463, 0.5626311157802961, + 0.009739556257960885, 0.5856281920506604, + 0.009913518363761172, 0.6096518917386764, + 0.01010629643624125, 0.6361953557375821, + 0.01032986385558493, 0.6670333276830246, + 0.003131660281084644, 0.004296601495430642, + 0.02516987418923732, 0.005184210888756367, + 0.09744072529384443, 0.005873198129887241, + 0.1714189769006723, 0.006419613566950146, + 0.2380664100570842, 0.006861660893085171, + 0.2961280333876439, 0.007225632384805198, + 0.346308042021841, 0.007530044942257158, + 0.3897316580976775, 0.007788304877568383, + 0.4275077537500284, 0.00801043093415683, + 0.4606200718057599, 0.008204207591967733, + 0.4899241115804965, 0.008376002129523446, + 0.5161793704075401, 0.008531389917004646, + 0.5400945718660145, 0.008675676859844068, + 0.5623795630774431, 0.008814368379677447, + 0.5838024839647016, 0.0089535958165003, + 0.6052506199023558, 0.009100459154569437, + 0.6277890216584121, 0.00926316620573667, + 0.6527013571399886, 0.00945074055537075, + 0.6814810379908328, 0.002843902743022214, + 0.003902467368190393, 0.02519598783827689, + 0.004709429895823432, 0.09757348323445655, + 0.005336152661315786, 0.1717052034351406, + 0.005833455676281756, 0.2385318286257855, + 0.006235971415149352, 0.2967834040784211, + 0.006567522559559145, 0.3471521575495951, + 0.006844866528765064, 0.3907519751170857, + 0.007080101687099548, 0.4286785748173565, + 0.007282213357366904, 0.461897608939992, + 0.007458094741776693, 0.4912372216070018, + 0.007613251892383208, 0.5174141871126332, + 0.007752321382046524, 0.5410706897885087, + 0.007879480568321315, 0.5628149979263304, + 0.007998799282231232, 0.5832647350414633, + 0.008114557939046675, 0.6030926481771959, + 0.008231531848213921, 0.623073488760433, + 0.008355206753895566, 0.6441267697250795, + 0.008491839744291131, 0.6673428282976036, + 0.008648214015485161, 0.6939680907913989, + 0.002388386682754135, 0.003278278227000989, + 0.02523707236937346, 0.003957198838737114, + 0.09778285117940604, 0.004484932501394734, + 0.1721579526332683, 0.004904057483051761, + 0.2392707453970052, 0.005243583901636578, + 0.2978287368553751, 0.00552345600742706, + 0.348506768678122, 0.005757685183723855, + 0.3924033610212076, 0.005956358204781419, + 0.4305980352749587, 0.006126919713095007, + 0.4640361265644109, 0.006275007901630985, + 0.4935170207127558, 0.006405016526854853, + 0.519714357285112, 0.00652048877918682, + 0.5432046533152863, 0.006624408123666273, + 0.5644970257796814, 0.006719427053538581, + 0.5840623664365776, 0.006808059512718916, + 0.6023621974962409, 0.006892851836922015, + 0.6198777517486085, 0.006976537015760206, + 0.6371392310474401, 0.007062164945929763, + 0.6547536993606798, 0.007153184521396811, + 0.6734273362784953, 0.007253430606435754, + 0.6939734212185117, 0.007366943161281851, + 0.7172914790760468, 0.002034217998243191, + 0.002792734020582961, 0.02526908982706098, + 0.003371787305020115, 0.097946430626842, + 0.00382220106251195, 0.1725128108619325, + 0.004180174912236582, 0.2398521447789659, + 0.004470370456915701, 0.2986551495007976, + 0.00470973753959748, 0.3495841277608567, + 0.004910176531706057, 0.393727215546069, + 0.005080243210917943, 0.4321540636611387, + 0.005226234784652425, 0.4657990145921906, + 0.005352893648837146, 0.4954473934553277, + 0.005463875356202293, 0.521753178861748, + 0.005562069670587001, 0.5452642338468077, + 0.005649829175907964, 0.5664474938420431, + 0.005729139522573558, 0.5857122023051498, + 0.005801753106324432, 0.6034312542567039, + 0.005869300229750696, 0.6199612865321288, + 0.005933386406539511, 0.6356621535317655, + 0.005995679940966749, 0.650916092177813, + 0.006057989063542723, 0.6661462081376089, + 0.006122321685397079, 0.681832779782845, + 0.00619091247673213, 0.6985240974244095, + 0.006266191569573649, 0.7168360261395987, + 0.006350658968555684, 0.7374314365934664, + 0.001753390300533029, 0.002407592405123618, + 0.025294539852267, 0.002907262330175829, + 0.09807671703676038, 0.00329614305335325, + 0.172796146245125, 0.003605393786629613, + 0.240317752902561, 0.003856241133152162, + 0.2993193629853389, 0.004063271707574896, + 0.3504538499243808, 0.004236723270781009, + 0.3948018542411614, 0.004383951358482999, + 0.433426391661283, 0.004510362519918408, + 0.4672550951343391, 0.00462001758635921, + 0.4970655128750277, 0.004716030788908096, + 0.5235015776135139, 0.004800840911719355, + 0.5470972903869747, 0.004876401000932111, + 0.5682998788764699, 0.004944315587632199, + 0.5874903820382004, 0.005005943872710219, + 0.6050015924522462, 0.005062480886612362, + 0.6211339094140743, 0.005115024538196171, + 0.6361697673414449, 0.005164633649628788, + 0.6503872077614197, 0.005212379842880342, + 0.664072947534986, 0.005259393975018879, + 0.6775349550821846, 0.005306905271212799, + 0.6911140242391297, 0.005356268008877997, + 0.7051930501274516, 0.005408966392479879, + 0.7202015894622125, 0.005466583459521371, + 0.73661183744624, 0.005530715851949468, + 0.7549206082556241, 0.001526985597447617, + 0.00209699647376184, 0.02531509673360445, + 0.002532539440756325, 0.09818212210216928, + 0.002871665019548934, 0.1730258242612469, + 0.00314147957617889, 0.2406960805778798, + 0.003360448272795954, 0.2998605891705305, + 0.003541258850863859, 0.351164920618253, + 0.003692814597959592, 0.3956840637564039, + 0.00382150991829634, 0.4344762665775814, + 0.003932041593754749, 0.4684646795111045, + 0.004027932600409154, 0.4984220865031195, + 0.00411187783441815, 0.5249867454711314, + 0.004185977901331621, 0.5486853051737176, + 0.004251901290680174, 0.5699549871771356, + 0.004310999960360177, 0.5891629130044663, + 0.004364394207792517, 0.6066224358437886, + 0.004413037135908646, 0.6226069634301489, + 0.004457765549253931, 0.6373618910220726, + 0.004499341872619412, 0.6511152177198366, + 0.004538490146036315, 0.6640873078294923, + 0.004575927973865173, 0.6765001110571239, + 0.004612395244609121, 0.6885859633887566, + 0.004648679290544145, 0.7005958269983906, + 0.004685634750981115, 0.7128064532627977, + 0.004724194620734037, 0.725525427370265, + 0.004765366815800576, 0.7390923556807402, + 0.004810208361466176, 0.7538736313498631, + 0.00485976779803573, 0.7702474410767316, + 0.001341778429126211, 0.001842856050972565, + 0.02533193854590164, 0.002225855496752996, + 0.09826859006407132, 0.002524180832845478, + 0.173214539260328, 0.002761629971248482, + 0.2410075282122661, 0.002954414092304398, + 0.3003071440620802, 0.003113671483601745, + 0.3517531700231469, 0.003247217194092525, + 0.3964161974860505, 0.00336066282214273, + 0.4353508843394245, 0.003458128531982532, + 0.4694771791546352, 0.003542702530515273, + 0.4995646943102908, 0.003616743969933074, + 0.5262481851213445, 0.003682087306007793, + 0.5500500545141821, 0.003740183451080423, + 0.5714020312900167, 0.003792199619292558, + 0.5906638632386166, 0.003839091722399387, + 0.6081388453953844, 0.003881658284331042, + 0.6240866310409383, 0.003920581807177477, + 0.6387339085746301, 0.003956461592009382, + 0.6522834922619609, 0.003989840752967416, + 0.6649222876852415, 0.004021229291927125, + 0.6768284931080795, 0.004051124448454234, + 0.6881782931898645, 0.0040800289816473, + 0.6991521843388895, 0.004108467479283411, + 0.7099409264259735, 0.004137000143073717, + 0.720750923666178, 0.004166232701476242, + 0.7318085765567045, 0.004196820124371787, + 0.7433628001322098, 0.004229460707743591, + 0.7556844737332599, 0.004264876064174216, + 0.7690611204503529, 0.004303772042593957, + 0.7837847386079905, 0.001121314683543782, + 0.001540263996358294, 0.02535201582246297, + 0.001860616782749459, 0.09837180081070002, + 0.002110257847461394, 0.1734401492675452, + 0.00230905472549513, 0.2413805649139678, + 0.002470541128098822, 0.3008431837086572, + 0.002604015187479208, 0.3524611103987945, + 0.002716000109093522, 0.3972999402435936, + 0.00281117899964196, 0.4364103598053284, + 0.002892989192294541, 0.4707089285552096, + 0.002964005631609554, 0.5009621096861159, + 0.003026193412069002, 0.5278014394899639, + 0.003081077890619739, 0.5517457095527168, + 0.003129861843706196, 0.5732222749918362, + 0.003173507910562157, 0.5925852995229407, + 0.003212797846468413, 0.6101307283827272, + 0.00324837602242407, 0.6261084073494506, + 0.003280782072682338, 0.6407319017471913, + 0.003310475987498136, 0.6541865362303725, + 0.00333785791196733, 0.6666360953708608, + 0.003363284226199348, 0.6782285398626227, + 0.003387081014309363, 0.6891010163282705, + 0.003409555695216232, 0.6993843710724037, + 0.003431007330102873, 0.7092073156356478, + 0.003451735898380667, 0.7187003283870178, + 0.003472050613465582, 0.7279993040305766, + 0.003492277104239913, 0.7372488732478574, + 0.003512762995683089, 0.7466051990304045, + 0.003533881070388274, 0.7562379075535515, + 0.003556028788751684, 0.7663306282943305, + 0.003579622533335547, 0.7770794116956159, + 0.003605084625764653, 0.7886880974410957, + 0.003632821128406038, 0.8013595930224617, + 0.0009510596127542824, 0.001306530384822369, + 0.02536754145655561, 0.001578428318009605, + 0.09845171104183326, 0.001790384464545768, + 0.1736150904003335, 0.001959236797520781, + 0.2416703438788951, 0.002096455322227467, + 0.3012604613663233, 0.002209920074417597, + 0.3530135437139923, 0.002305159021830049, + 0.3979914926982783, 0.002386140355447109, + 0.4372421218440167, 0.002455776174573485, + 0.4716796241323911, 0.002516247355295036, + 0.5020683797660233, 0.002569217475366734, + 0.5290379452961959, 0.002615976824974766, + 0.5531050686294569, 0.00265754147041669, + 0.5746948225947125, 0.002694722818617351, + 0.594158651817051, 0.002728177434091533, + 0.6117891098846177, 0.002758443393525188, + 0.6278316916720729, 0.002785967312803683, + 0.6424943013679313, 0.002811124820961013, + 0.6559548636293389, 0.002834236378150614, + 0.6683675049794192, 0.002855579757979202, + 0.6798676490616872, 0.002875400127857228, + 0.6905762965442401, 0.002893918395849096, + 0.7006037006910071, 0.002911338305155523, + 0.7100526010841707, 0.002927852618951001, + 0.7190211375279999, 0.002943648628770056, + 0.7276055302511653, 0.002958913124102285, + 0.7359025774945679, 0.00297383686744952, + 0.7440119836573593, 0.002988618517881438, + 0.7520384865047949, 0.003003467829003067, + 0.7600936967329708, 0.003018607809042993, + 0.7682974943112553, 0.003034275371809675, + 0.7767787422315526, 0.003050719837809893, + 0.785674982357174, 0.003068198491381527, + 0.795130680077695, 0.003086968312155531, + 0.8052935061547398, 0.00310727305576029, + 0.8163081231039382, 0.0008168405299925574, + 0.001122235164426433, 0.02537979319269659, + 0.001355887567479481, 0.09851483086228864, + 0.001538080541563495, 0.1737534362414166, + 0.001683267147792567, 0.2418998259562802, + 0.001801292850812278, 0.3015914511597799, + 0.001898921476480742, 0.3534525616677698, + 0.001980897763334222, 0.3985422441814719, + 0.00205062745022216, 0.4379061538920372, + 0.002110609627253456, 0.4724567457971343, + 0.002162715579344156, 0.5029569229728563, + 0.00220837237888526, 0.5300349067999921, + 0.002248686443403842, 0.5542061521610998, + 0.002284528486070424, 0.5758943864439198, + 0.002316593115008434, 0.5954495572468081, + 0.002345441446771229, 0.6131624579583983, + 0.002371532122833287, 0.6292764292152166, + 0.002395244271202193, 0.6439966702794445, + 0.002416894786788224, 0.6574976613071741, + 0.002436751550587987, 0.6699291171394233, + 0.002455043712749272, 0.6814208098492534, + 0.002471969833678045, 0.6920865249452547, + 0.002487704452255031, 0.7020273575786585, + 0.002502403494283208, 0.7113345090150194, + 0.002516208823898241, 0.7200917075437527, + 0.002529252160257252, 0.728377349334492, + 0.002541658520726186, 0.736266431138189, + 0.002553549302394987, 0.7438323260356781, + 0.002565045070295341, 0.7511484336838515, + 0.002576268078538789, 0.7582897158118264, + 0.002587344505847411, 0.7653341042347025, + 0.00259840633642072, 0.772363740630846, + 0.002609592758562768, 0.7794659733020046, + 0.002621050886496552, 0.7867339953288847, + 0.002632935537833889, 0.7942669615898086, + 0.002645407727623461, 0.8021693721981406, + 0.002658631484279102, 0.8105494642340256, + 0.002672768576741324, 0.8195163250963701, + 0.00268797079956683, 0.8291754492311013, + 0.0006779619032019482, 0.0009315109162316307, + 0.02539248163813982, 0.001125546650705646, + 0.0985802566139559, 0.001276892135791717, + 0.1738969874989156, 0.001397535825902466, + 0.2421382412064102, 0.001495644371531161, + 0.3019358267641449, 0.001576828175558173, + 0.3539100964089328, 0.001645022736116236, + 0.3991173116956755, 0.001703052777188943, + 0.4386009869035954, 0.001752990885928625, + 0.4732718824089663, 0.001796388809395077, + 0.5038914977622926, 0.001834429731186084, + 0.5310868327976426, 0.001868030737964622, + 0.5553722186397624, 0.001897913248880432, + 0.5771702844407484, 0.001924652401977583, + 0.596829836122438, 0.001948712334483372, + 0.6146404100545767, 0.001970471824369135, + 0.6308438946964408, 0.001990243228225435, + 0.6456437499005518, 0.002008286680798674, + 0.659212320773459, 0.002024820896049421, + 0.6716966627198852, 0.002040031498715453, + 0.6832232108862492, 0.00205407754078053, + 0.6939015548982262, 0.002067096670752565, + 0.703827521382314, 0.00207920929501315, + 0.7130857211033993, 0.002090521980414542, + 0.7217516823653617, 0.002101130283221459, + 0.7298936653027928, 0.002111121143106236, + 0.7375742308368269, 0.002120574946574002, + 0.744851621733151, 0.002129567338002603, + 0.7517810000528958, 0.002138170835613056, + 0.7584155742314791, 0.002146456292026427, + 0.764807639124848, 0.002154494222946041, + 0.7710095427995872, 0.002162356011555635, + 0.7770745838488886, 0.002170114979286494, + 0.7830578318730199, 0.002177847294739602, + 0.7890168508176265, 0.002185632671118797, + 0.7950122895929717, 0.002193554778405604, + 0.801108286542413, 0.002201701270375675, + 0.8073726141153927, 0.002210163300386258, + 0.8138764685711868, 0.002219034377453016, + 0.8206937889887616, 0.002228408401671311, + 0.8278999743285053, 0.002238376724427438, + 0.8355698630075664, 0.002249024115421597, + 0.8437748549346639, 0.0005717171765067005, + 0.0007855819755678591, 0.02540219552841172, + 0.0009492803029534314, 0.09863038311884588, + 0.001076991591417719, 0.1740070746137774, + 0.001178820912278011, 0.2423212835361945, + 0.001261652009696089, 0.3022005646620261, + 0.001330213911048136, 0.3542623490383656, + 0.001387823796651901, 0.3995607968545022, + 0.001436862514566579, 0.4391378457027524, + 0.001479076886266864, 0.4739030248719332, + 0.0015157746727935, 0.5046168340722528, + 0.001547952929687645, 0.5319054272436042, + 0.001576384371750672, 0.5562823875920914, + 0.001601676728454795, 0.5781696502895681, + 0.001624314356699193, 0.5979153431712045, + 0.001644687957566232, 0.6158083043507766, + 0.001663116161966728, 0.6320896668598296, + 0.001679861458243818, 0.6469620376959935, + 0.001695142117261203, 0.6605967661879515, + 0.001709141243106296, 0.6731397164733577, + 0.001722013731055875, 0.6847158755342792, + 0.001733891682879084, 0.695433055919974, + 0.001744888672268816, 0.7053848938737558, + 0.001755103144742999, 0.7146532979347533, + 0.001764621160512043, 0.7233104679728801, + 0.001773518635044922, 0.7314205777797613, + 0.001781863193450182, 0.7390411938444027, + 0.001789715726676655, 0.7462244872361469, + 0.001797131716770826, 0.7530182833863068, + 0.001804162382812431, 0.7594669850655551, + 0.001810855687135456, 0.7656123962667175, + 0.001817257231900906, 0.7714944684438817, + 0.001823411068174413, 0.777151985157084, + 0.001829360432715894, 0.7826231962275617, + 0.001835148421173907, 0.7879464076688663, + 0.001840818599844342, 0.7931605286026111, + 0.001846415551221751, 0.7983055707993119, + 0.001851985340937259, 0.8034230901440029, + 0.001857575885138658, 0.8085565520117598, + 0.001863237187886467, 0.8137515941551513, + 0.001869021407926604, 0.8190561513413812, + 0.001874982703844713, 0.8245203960095123, + 0.001881176797227895, 0.8301964394574721, + 0.001887660186864975, 0.8361377299185951, + 0.001894488945824785, 0.8423980794999191, + 0.001901717040890795, 0.8490302543125972, + 0.001909394134299323, 0.8560840749607826, + 0.0004886273679748824, 0.000671443795464978, + 0.02540979640585205, 0.0008113983041306847, + 0.09866962915608751, 0.0009206047809355559, + 0.1740933291741878, 0.001007696615844565, + 0.2424648238198073, 0.001078555077304152, + 0.302408378783803, 0.001137220495111209, + 0.3545391775646764, 0.001186526928471642, + 0.3999097732746233, 0.001228508433020824, + 0.4395609067610286, 0.001264657346363223, + 0.4744011819765317, 0.00129609086494968, + 0.5051903569581037, 0.001323660708324793, + 0.5325539695623672, 0.00134802690605591, + 0.557005071975368, 0.001369708506508536, + 0.5789651232823037, 0.001389119124621932, + 0.5987818060211025, 0.001406592323781286, + 0.6167435227777786, 0.001422400048200691, + 0.6330909609625438, 0.001436766218460017, + 0.6480262517065541, 0.001449876904280157, + 0.6617202166442876, 0.001461888037961801, + 0.6743181164063009, 0.001472931335824075, + 0.6859442313853145, 0.001483118897071317, + 0.6967055330639804, 0.001492546815085222, + 0.7066946457906411, 0.001501298043441827, + 0.7159922532405723, 0.001509444694127518, + 0.7246690686840157, 0.001517049899494373, + 0.7327874613555573, 0.00152416933654122, + 0.7404028107621932, 0.001530852488184009, + 0.7475646451451914, 0.001537143698611175, + 0.7543176083360913, 0.001543083066767105, + 0.7607022900146448, 0.001548707212186899, + 0.7667559471993193, 0.001554049939909855, + 0.7725131391565733, 0.00155914282537307, + 0.7780062934020588, 0.001564015735548671, + 0.7832662167717693, 0.001568697298775154, + 0.7883225624132202, 0.001573215332462839, + 0.7932042607791593, 0.001577597234898074, + 0.7979399201221365, 0.001581870344542036, + 0.8025581994310867, 0.001586062267357487, + 0.8070881540792818, 0.001590201169665478, + 0.8115595515386727, 0.00159431603072655, + 0.8160031512482756, 0.001598436845587962, + 0.820450939020954, 0.001602594764727253, + 0.8249363021965112, 0.001606822152724702, + 0.829494127135844, 0.001611152543807615, + 0.8341607957498925, 0.001615620467991531, + 0.8389740528796195, 0.001620261118280227, + 0.8439727120207893, 0.001625109827821845, + 0.849196163928842, 0.001630201327174513, + 0.8546836521716283, 0.001635568757273152, + 0.8604732831634605, 0.001641242424784281, + 0.8666007472872529, 0.0004079721290191449, + 0.0005606390646000299, 0.02541717774246925, + 0.0006775302011759069, 0.09870776119617666, + 0.0007687559860220674, 0.1741771883435951, + 0.0008415222726271052, 0.2426044825025154, + 0.0009007379123407699, 0.3026107489587744, + 0.00094977519824073, 0.3548090209828054, + 0.0009909995793709382, 0.4002503224647114, + 0.001026108754684635, 0.4399742629913482, + 0.001056348256439421, 0.474888578965461, + 0.001082650488031221, 0.5057523403210779, + 0.001105726258156915, 0.5331905211809378, + 0.001126126368448291, 0.5577156967903346, + 0.001144283937532252, 0.5797489091761477, + 0.001160544069671673, 0.5996374632935472, + 0.001175185037186027, 0.6176694070801912, + 0.001188433661215005, 0.6340850818085325, + 0.001200476654074482, 0.6490862674574625, + 0.001211469103358439, 0.6628434159685319, + 0.001221540901759423, 0.6755013855037041, + 0.001230801679415364, 0.6871840056733981, + 0.001239344630375328, 0.6979977314932807, + 0.001247249512545108, 0.7080345854591737, + 0.001254585023077141, 0.717374541493969, + 0.001261410697040181, 0.7260874694062653, + 0.001267778438847666, 0.7342347316708526, + 0.001273733768408534, 0.7418705038821782, + 0.001279316843997812, 0.7490428746151535, + 0.001284563309197927, 0.7557947684726961, + 0.001289505000406732, 0.7621647269098429, + 0.001294170543282941, 0.7681875743244604, + 0.001298585860357731, 0.7738949913863433, + 0.001302774607351322, 0.7793160132569095, + 0.001306758552112867, 0.7844774669407445, + 0.001310557907271291, 0.7894043592864977, + 0.001314191625436819, 0.7941202249469652, + 0.001317677663971441, 0.7986474417822638, + 0.001321033224831176, 0.8030075196380616, + 0.001324274973678666, 0.8072213670641986, + 0.001327419241294216, 0.8113095392825265, + 0.001330482209212664, 0.8152924695008139, + 0.001333480080427699, 0.819190684443498, + 0.001336429234887632, 0.8230250036771799, + 0.001339346368318267, 0.8268167209024656, + 0.001342248611619848, 0.8305877638256554, + 0.001345153626679458, 0.8343608274878259, + 0.001348079672919514, 0.8381594740079386, + 0.001351045637295423, 0.8420081896122813, + 0.00135407101882596, 0.8459323876377299, + 0.001357175857202399, 0.8499583440311814, + 0.001360380593752449, 0.8541130499173916, + 0.001363705852281417, 0.8584239643605064, + 0.001367172127403134, 0.8629186498951948, + 0.001370799369307807, 0.8676242742545544, + 0.001374606456942832, 0.8725669645681554, + 0.001378610556753209, 0.8777710057814074, + 0.0003457584334322357, 0.0004751621453940012, + 0.02542287327621289, 0.0005742529802903852, + 0.09873719754448176, 0.0006515970827455522, + 0.1742419598034706, 0.0007132998513406398, + 0.2427124231693788, 0.0007635205129753468, + 0.3027672771691929, 0.0008051163841037499, + 0.3550179179580828, 0.0008400916805185935, + 0.4005142108161735, 0.000869884827666364, + 0.4402949133244795, 0.0008955511242402197, + 0.4752671131865228, 0.0009178805496049455, + 0.5061893703422927, 0.0009374753213346, + 0.5336862457066851, 0.0009548020787478288, + 0.5582699698916923, 0.0009702277440292999, + 0.5803612891309488, 0.0009840446600062943, + 0.6003072470093884, 0.0009964885371329649, + 0.618395653440728, 0.001007751484296832, + 0.6348666260010463, 0.001017991617422186, + 0.6499217274752063, 0.001027340245776507, + 0.6637311918729225, 0.001035907317136567, + 0.6764396515818053, 0.00104378559353748, + 0.688170695275452, 0.001051053889330778, + 0.6990305140455065, 0.001057779608173888, + 0.709110834894387, 0.001064020749985821, + 0.7184912951109098, 0.001069827513031319, + 0.7272413759474827, 0.001075243583787733, + 0.7354219871919199, 0.001080307183927825, + 0.7430867737680106, 0.001085051926828077, + 0.7502831998805611, 0.001089507523598374, + 0.7570534542643864, 0.001093700369430917, + 0.7634352109083323, 0.001097654034185638, + 0.7694622725315966, 0.001101389675935647, + 0.77516511858508, 0.001104926392241615, + 0.7805713752558724, 0.001108281520887288, + 0.7857062215827314, 0.00111147089945648, + 0.7905927431287384, 0.001114509091294428, + 0.7952522425401743, 0.001117409583946746, + 0.7997045146224264, 0.001120184965012693, + 0.8039680921873577, 0.001122847079414237, + 0.8080604677961332, 0.001125407171312882, + 0.811998295576812, 0.001127876013259072, + 0.8157975764884198, 0.001130264024599364, + 0.8194738296925913, 0.001132581380665879, + 0.8230422520462021, 0.001134838113807109, + 0.8265178671142719, 0.001137044206868379, + 0.8299156644956935, 0.00113920967927677, + 0.8332507296316362, 0.001141344665414018, + 0.8365383636069283, 0.001143459484459602, + 0.8397941917404019, 0.001145564700346352, + 0.8430342589770379, 0.001147671169888255, + 0.846275109234415, 0.001149790076517388, + 0.8495338449183082, 0.001151932946415512, + 0.8528281618190179, 0.001154111643169411, + 0.8561763535592529, 0.001156338336456831, + 0.8595972787361906, 0.001158625439740416, + 0.8631102829627566, 0.001160985511591647, + 0.8667350672783336, 0.001163431115191409, + 0.870491494017944, 0.001165974630888303, + 0.874399321392876, 0.001168628017588916, + 0.8784778589727296, 0.001171402520361833, + 0.8827455382208639, 0.001174308324102304, + 0.8872193954732928, 0.0002967633115387107, + 0.0004078420646640203, 0.025427359800461, + 0.0004929083178239419, 0.09876039342539503, + 0.00055931267512858, 0.1742930216852869, + 0.0006122943067439731, 0.2427975603509948, + 0.0006554223612098552, 0.3028908101007459, + 0.0006911487848386307, 0.3551828911240184, + 0.000721193448713687, 0.4007227692617545, + 0.0007467906965300383, 0.4405485438561624, + 0.0007688460941907184, 0.47556680431992, + 0.0007880375248105768, 0.5065357215285611, + 0.0008048817439819273, 0.5340795437694515, + 0.0008197791606092136, 0.5587102435529917, + 0.0008330446107364092, 0.5808483484024387, + 0.0008449289291109884, 0.6008407117558368, + 0.000855634349890516, 0.6189749738875788, + 0.0008653256884173914, 0.6354910969728228, + 0.0008741385860890041, 0.6505904974988862, + 0.0008821856763681789, 0.6644432678330568, + 0.0008895612564439208, 0.6771938992957999, + 0.000896344869325779, 0.6889658361211737, + 0.0009026040810144197, 0.6998651175897177, + 0.0009083966557751288, 0.7099833073204581, + 0.0009137722762541778, 0.7193998631153847, + 0.0009187739158093501, 0.7281840656590849, + 0.0009234389425261854, 0.7363965975579181, + 0.0009278000143753827, 0.7440908437477775, + 0.0009318858104408874, 0.7513139686822109, + 0.0009357216324926972, 0.7581078137561323, + 0.0009393299032829178, 0.7645096492310164, + 0.0009427305820375386, 0.7705528078328676, + 0.0009459415131589371, 0.7762672216898303, + 0.0009489787207614479, 0.781679879983595, + 0.0009518566590593747, 0.7868152213232364, + 0.0009545884266143449, 0.791695472197249, + 0.000957185950881378, 0.7963409407568194, + 0.0009596601482630737, 0.8007702735070883, + 0.0009620210639090244, 0.8050006811385999, + 0.0009642779947228965, 0.8090481386453148, + 0.0009664395984170944, 0.8129275639917815, + 0.0009685139909496511, 0.8166529788658923, + 0.0009705088342629528, 0.8202376544499068, + 0.0009724314158979084, 0.8236942446328719, + 0.0009742887217632853, 0.8270349086491756, + 0.0009760875030844708, 0.8302714247416513, + 0.000977834338327547, 0.8334152960971942, + 0.000979535690683748, 0.8364778499742661, + 0.0009811979614979323, 0.8394703306225847, + 0.0009828275398255845, 0.842403986274681, + 0.0009844308480999042, 0.8452901501569875, + 0.0009860143836786285, 0.8481403151159906, + 0.0009875847558152445, 0.8509662010755018, + 0.0009891487173585096, 0.8537798141289356, + 0.0009907131902268241, 0.8565934956229708, + 0.0009922852834316175, 0.8594199591072303, + 0.0009938723021413953, 0.8622723125149068, + 0.0009954817459946895, 0.8651640624148244, + 0.0009971212946004986, 0.8681090966584658, + 0.0009987987779301983, 0.8711216412695179, + 0.001000522129134342, 0.8742161870354788, + 0.00100229931724864, 0.8774073810231204, + 0.001004138257331534, 0.8807098782305657, + 0.001006046695854091, 0.8841381489021722, + 0.001008032069698879, 0.8877062377737649, + 0.001010101337974326, 0.8914274727949142, + 0.001012260787062656, 0.8953141227940432, + 0.0002505764977838404, 0.0003443770249124342, + 0.02543158995016821, 0.0004162174537078318, + 0.09878227034153308, 0.0004723030362070807, + 0.1743411977575627, 0.0005170566942884504, + 0.2428779209209343, 0.0005534915375556028, + 0.3030074710503266, 0.000583677526883907, + 0.355338776377064, 0.000609066594502194, + 0.4009199654813231, 0.0006307007808156645, + 0.4407885275977928, 0.0006493445644344517, + 0.4758505926393938, 0.0006655702083843857, + 0.5068639748553351, 0.0006798139474548506, + 0.5344526379872747, 0.0006924137931820147, + 0.5591283215877272, 0.0007036355137975163, + 0.5813113577588189, 0.000713690845372949, + 0.6013484321270596, 0.0007227504933228287, + 0.619527037525631, 0.0007309535721159746, + 0.6360870035914407, 0.0007384145655048229, + 0.6512296248800408, 0.0007452285316469441, + 0.6651248789020748, 0.0007514750465678791, + 0.6779171461479578, 0.0007572212276838003, + 0.6897297612797826, 0.0007625240776755495, + 0.700668652624647, 0.0007674323201021287, + 0.7108252688389807, 0.0007719878506216157, + 0.7202789460425201, 0.0007762268944500497, + 0.7290988336445309, 0.0007801809371337034, + 0.7373454702759427, 0.0007838774788105678, + 0.7450720807914899, 0.0007873406498722635, + 0.7523256496919639, 0.0007905917169405165, + 0.7591478143617146, 0.0007936495014053848, + 0.7655756123276436, 0.0007965307277851307, + 0.7716421096510724, 0.0007992503154034614, + 0.7773769320588682, 0.0008018216240149106, + 0.7828067161269425, 0.0008042566618112444, + 0.7879554944635353, 0.000806566262542953, + 0.7928450261873953, 0.0008087602371674192, + 0.7974950818949961, 0.0008108475043988473, + 0.8019236906381128, 0.0008128362037173276, + 0.806147355094338, 0.0008147337937451987, + 0.8101812400362133, 0.0008165471383802039, + 0.8140393383338362, 0.0008182825826579203, + 0.8177346180177749, 0.0008199460199784433, + 0.8212791533500792, 0.0008215429520572276, + 0.8246842423744934, 0.0008230785427339746, + 0.8279605130215852, 0.0008245576665860399, + 0.8311180195135344, 0.0008259849531356726, + 0.8341663305331678, 0.0008273648273067869, + 0.8371146103813345, 0.000828701546671456, + 0.8399716941366764, 0.0008299992359243829, + 0.8427461576444749, 0.0008312619189314546, + 0.8454463829899002, 0.0008324935486128937, + 0.8480806199498299, 0.000833698034839669, + 0.8506570437613244, 0.0008348792704412902, + 0.8531838093892227, 0.0008360411553417403, + 0.8556691023160556, 0.0008371876187562825, + 0.8581211857109087, 0.0008383226392937222, + 0.8605484436569011, 0.0008394502627153142, + 0.8629594199271572, 0.0008405746170023279, + 0.8653628515950123, 0.000841699924279396, + 0.8677676965453935, 0.0008428305090311761, + 0.8701831537222023, 0.0008439708019376514, + 0.8726186747045624, 0.0008451253385421383, + 0.8750839649592925, 0.0008462987518610647, + 0.8775889728776909, 0.0008474957579532225, + 0.8801438644857288, 0.000848721133398272, + 0.8827589815370717, 0.0008499796836021254, + 0.8854447805825755, 0.0008512762008654021, + 0.8882117505884698, 0.0008526154112376473, + 0.8910703067843766, 0.000854001909353256, + 0.8940306587022231, 0.0008554400807241641, + 0.8971026508610441, 0.0008569340113668948, + 0.9002955753026496, 0.0008584873851806726, + 0.9036179562250074, 0.0002143902298924797, + 0.0002946512237154931, 0.02543490463324859, + 0.0003561260688438285, 0.0987994171951437, + 0.0004041230092741482, 0.1743789695511629, + 0.0004424256774627034, 0.2429409502831179, + 0.0004736116853150793, 0.3030990118950347, + 0.0004994518169910726, 0.3554611561972349, + 0.0005211881524129952, 0.401074863083999, + 0.0005397121201514141, 0.4409771509224894, + 0.0005556777014490634, 0.4760737966263269, + 0.0005695744414699151, 0.5071223419498457, + 0.0005817755161210044, 0.534746534570652, + 0.0005925700732976313, 0.5594579384248554, + 0.0006021854581155787, 0.5816767395342153, + 0.0006108027921070821, 0.601749499329333, + 0.0006185680956696988, 0.6199636028202163, + 0.0006256003634582641, 0.6365587841093024, + 0.0006319975186065948, 0.6517362513852718, + 0.0006378408654613904, 0.665665902490225, + 0.0006431984629598351, 0.6784920429133774, + 0.0006481277109801403, 0.6903379352397969, + 0.0006526773552254315, 0.7013094370793644, + 0.0006568890572555564, 0.7114979262641195, + 0.0006607986356285067, 0.720982666549765, + 0.0006644370556787454, 0.7298327319935689, + 0.0006678312253083076, 0.7381085813804109, + 0.0006710046397087699, 0.7458633536247841, + 0.0006739779074395309, 0.7531439394662658, + 0.0006767691825904827, 0.7599918728233108, + 0.0006793945220531763, 0.7664440759826728, + 0.0006818681826575195, 0.7725334857075471, + 0.000684202869710358, 0.7782895818427216, + 0.0006864099460208997, 0.783738835701626, + 0.0006884996086172708, 0.7889050921541919, + 0.0006904810389048264, 0.7938098966818099, + 0.000692362530885266, 0.7984727765644702, + 0.0006941516011688034, 0.8029114836923505, + 0.0006958550838122305, 0.807142205155724, + 0.000697479212460725, 0.8111797466910577, + 0.0006990296918282764, 0.8150376931919887, + 0.0007005117601960531, 0.8187285497884573, + 0.0007019302443210675, 0.8222638664221132, + 0.0007032896079146326, 0.8256543483749293, + 0.000704593994660122, 0.8289099548200989, + 0.0007058472665836456, 0.8320399871433695, + 0.0007070530384625938, 0.8350531685159762, + 0.0007082147088500877, 0.8379577159767848, + 0.0007093354882038982, 0.8407614060927453, + 0.0007104184245328271, 0.8434716351063775, + 0.0007114664269090819, 0.846095474341138, + 0.00071248228713946, 0.8486397215154378, + 0.0007134686998392874, 0.8511109485098599, + 0.000714428281109386, 0.8535155460363737, + 0.0007153635859765056, 0.8558597655701624, + 0.0007162771247204472, 0.8581497588214944, + 0.0007171713781754927, 0.860391614944607, + 0.0007180488120588147, 0.8625913956007935, + 0.0007189118903434776, 0.8647551679119477, + 0.000719763087657754, 0.8668890352571068, + 0.0007206049006551845, 0.8689991657766132, + 0.0007214398582606628, 0.8710918183552704, + 0.0007222705306565306, 0.8731733657564531, + 0.0007230995368291464, 0.8752503144732032, + 0.000723929550450816, 0.8773293207500719, + 0.0007247633038248635, 0.8794172021118196, + 0.0007256035895739056, 0.8815209436139331, + 0.0007264532597045065, 0.8836476979083573, + 0.0007273152216374242, 0.8858047781004107, + 0.0007281924307543494, 0.8879996422658111, + 0.0007290878789830281, 0.8902398684083558, + 0.0007300045789273423, 0.8925331185794968, + 0.0007309455430526645, 0.8948870908635684, + 0.0007319137574656844, 0.8973094579716888, + 0.0007329121498886438, 0.8998077913001904, + 0.0007339435515274697, 0.9023894695138696, + 0.0007350106526783481, 0.9050615710285062, + 0.0007361159521134971, 0.9078307502075817, + 0.000737261700537983, 0.910703097667765, + 0.0001812712131805553, 0.0002491384321187703, + 0.0254379386800392, 0.0003011236389389571, + 0.09881511572468257, 0.0003417143692905089, + 0.1744135601545568, 0.0003741093236630491, + 0.242998689534953, 0.0004004876411801612, + 0.3031829004247381, 0.0004223463640195241, + 0.3555733525259414, 0.0004407355613198239, + 0.4012169377011952, 0.000456408855964047, + 0.4411502489205138, 0.0004699191284978094, + 0.476278745476339, 0.000481680241910951, + 0.5073597250977332, 0.0004920076781544193, + 0.5350167430251173, 0.0005011458800384139, + 0.5597612077529058, 0.0005092870408844213, + 0.5820131769183957, 0.00051658427549107, + 0.6021191036853046, 0.0005231610232704372, + 0.620366279950506, 0.0005291178753295886, + 0.6369943582199482, 0.0005345376082578074, + 0.65220447386969, 0.0005394889485099423, + 0.6661664586032026, 0.0005440294242631437, + 0.6790245567662841, 0.0005482075518868509, + 0.6909019734144254, 0.0005520645308096385, + 0.7019045110624699, 0.0005556355707323485, + 0.7121234938350971, 0.0005589509407679369, + 0.7216381322017054, 0.0005620368060492128, + 0.730517446427696, 0.0005649159003089793, + 0.7388218400819079, 0.000567608070713959, + 0.7466043945017325, 0.0005701307223629278, + 0.7539119395110627, 0.000572499183351742, + 0.7607859437362658, 0.0005747270064854298, + 0.7672632586796091, 0.0005768262201098143, + 0.7733767436165075, 0.000578807537812054, + 0.7791557928788411, 0.0005806805346667902, + 0.7846267827935451, 0.000582453796114398, + 0.789813452179805, 0.0005841350443286614, + 0.7947372276555162, 0.0005857312459743303, + 0.7994175029023208, 0.000587248704505127, + 0.8038718793655162, 0.0005886931395613307, + 0.8081163745265718, 0.0005900697555567861, + 0.8121656028098705, 0.000591383301170653, + 0.816032933316133, 0.0005926381211586964, + 0.8197306278697833, 0.0005938382016564763, + 0.8232699622928324, 0.0005949872099502598, + 0.8266613333475188, 0.0005960885295313444, + 0.8299143534033866, 0.0005971452911184121, + 0.8330379345654622, 0.00059816040022474, + 0.8360403637358284, 0.0005991365617580406, + 0.8389293698608987, 0.0006000763020667812, + 0.8417121844328502, 0.00060098198878518, + 0.8443955961593316, 0.0006018558487773787, + 0.8469860005853584, 0.0006026999844377125, + 0.849489445340874, 0.0006035163885670166, + 0.8519116715931933, 0.0006043069580133006, + 0.8542581522025076, 0.0006050735062378763, + 0.8565341270083502, 0.0006058177749442889, + 0.8587446356133339, 0.0006065414448864817, + 0.860894547975822, 0.0006072461459539104, + 0.862988593073986, 0.0006079334666143073, + 0.865031385858623, 0.0006086049627790323, + 0.8670274526700236, 0.0006092621661410419, + 0.8689812552540616, 0.0006099065920211252, + 0.8708972134736309, 0.0006105397467438793, + 0.8727797267727406, 0.0006111631345506713, + 0.8746331944112725, 0.0006117782640423093, + 0.8764620344479443, 0.000612386654129138, + 0.8782707014068333, 0.0006129898394506246, + 0.880063702518437, 0.000613589375210095, + 0.8818456123793366, 0.0006141868413530917, + 0.8836210858249036, 0.0006147838459998774, + 0.8853948687571734, 0.0006153820280240385, + 0.8871718066152805, 0.0006159830586501987, + 0.8889568501193102, 0.0006165886419249452, + 0.8907550578610847, 0.0006172005138967517, + 0.8925715952587397, 0.0006178204403237505, + 0.8944117293380552, 0.0006184502127136527, + 0.8962808187550784, 0.0006190916424892084, + 0.8981842984351409, 0.0006197465530668733, + 0.9001276581771762, 0.0006204167696375895, + 0.9021164145644402, 0.0006211041064488501, + 0.9041560755392406, 0.000621810351408719, + 0.906252097046702, 0.0006225372478675618, + 0.9084098312380428, 0.0006232864734841831, + 0.9106344658545082, 0.0006240596161519326, + 0.91293095459586, 0.000624858147048696, + 0.9153039385179171, 0.0006256833909833134, + 0.9177576588059725, 0.00015202142377128, + 0.0002089413039628107, 0.02544061844919076, + 0.0002525434029450244, 0.09882898388671699, + 0.0002865906408583821, 0.1744441250170073, + 0.0003137652564915279, 0.2430497235076716, + 0.0003358945562695622, 0.3032570714471141, + 0.0003542338804453592, 0.3556725894600452, + 0.0003696637616173895, 0.4013426546343276, + 0.0003828161474542172, 0.4413034887132714, + 0.0003941546527609132, 0.4764602748670496, + 0.0004040263187063507, 0.5075700996286872, + 0.0004126956886076392, 0.5352563525449359, + 0.0004203677355440847, 0.5600303090493647, + 0.0004272036184847955, 0.5823119175989039, + 0.0004333317268557089, 0.6024475399611718, + 0.0004388555655790971, 0.6207243900791432, + 0.0004438594799484181, 0.637382052787274, + 0.0004484128767232627, 0.652621603723488, + 0.0004525733807537433, 0.6666128210012832, + 0.0004563892263945745, 0.6794999001357331, + 0.0004599010909485004, 0.6914060010021446, + 0.0004631435158655601, 0.7024368836752101, + 0.0004661460196359733, 0.7126838318080794, + 0.0004689339774940904, 0.7222260166914516, + 0.0004715293228925426, 0.7311324200920039, + 0.0004739511114194688, 0.739463407184761, + 0.0004762159775818406, 0.7472720204610868, + 0.0004783385074390325, 0.7546050498913561, + 0.0004803315446135938, 0.7615039226740586, + 0.0004822064431621426, 0.768005446719198, + 0.0004839732777639475, 0.7741424349221077, + 0.0004856410194012131, 0.7799442317805824, + 0.0004872176829669196, 0.78543715961578, + 0.0004887104519025023, 0.7906448982918555, + 0.0004901257839368306, 0.7955888096768238, + 0.0004914695011954675, 0.8002882159858926, + 0.0004927468673202736, 0.8047606394754871, + 0.0004939626537433801, 0.8090220096175752, + 0.0004951211968659503, 0.8130868428076891, + 0.0004962264475780244, 0.8169683987907728, + 0.0004972820143036731, 0.8206788172836932, + 0.0004982912005523596, 0.8242292376985011, + 0.0004992570377925784, 0.8276299044001774, + 0.0005001823143295754, 0.8308902595461131, + 0.0005010696007591025, 0.834019025235724, + 0.000501921272478859, 0.8370242764345617, + 0.0005027395296647642, 0.8399135059177911, + 0.0005035264150574445, 0.8426936822947919, + 0.0005042838298529326, 0.8453713020233193, + 0.0005050135479486603, 0.8479524361928227, + 0.0005057172287598274, 0.8504427727478738, + 0.0005063964287909282, 0.8528476547306911, + 0.0005070526121216016, 0.8551721150436168, + 0.0005076871599442239, 0.8574209081657413, + 0.0005083013792721207, 0.8595985392007632, + 0.0005088965109213797, 0.8617092905839876, + 0.0005094737368555486, 0.863757246733787, + 0.0005100341869706155, 0.8657463168957334, + 0.0005105789453872895, 0.8676802563950228, + 0.0005111090563084296, 0.8695626864839279, + 0.000511625529491321, 0.8713971129451628, + 0.000512129345377131, 0.8731869435885925, + 0.0005126214599131586, 0.8749355047571672, + 0.000513102809097241, 0.8766460569378332, + 0.0005135743132677963, 0.8783218095540483, + 0.0005140368811573158, 0.8799659349980495, + 0.0005144914137215976, 0.8815815819428285, + 0.0005149388077515203, 0.883171887955587, + 0.000515379959268618, 0.884739991415962, + 0.0005158157667000665, 0.8862890427233201, + 0.0005162471338228604, 0.8878222147576811, + 0.0005166749724609052, 0.8893427125382002, + 0.000517100204912442, 0.890853782001469, + 0.000517523766078647, 0.892358717799149, + 0.0005179466052574159, 0.8938608699906166, + 0.0005183696875592966, 0.8953636494814934, + 0.0005187939948953462, 0.8968705320333606, + 0.0005192205264794681, 0.8983850606439769, + 0.0005196502987807066, 0.8999108460714149, + 0.0005200843448542496, 0.9014515652504507, + 0.0005205237129738048, 0.9030109573261521, + 0.0005209694644829235, 0.9045928170091283, + 0.0005214226707791797, 0.9062009849407291, + 0.0005218844093433793, 0.9078393347463627, + 0.0005223557587267653, 0.9095117564530361, + 0.0005228377924131475, 0.9112221359554993, + 0.0005233315714807396, 0.9129743302365174, + 0.0005238381360009637, 0.9147721380834732, + 0.0005243584951293212, 0.9166192660984713, + 0.0005248936158673047, 0.918519289874983, + 0.0005254444105047963, 0.920475610313189, + 0.0005260117227898333, 0.922491405170291, + 0.0005265963129170898, 0.9245695760920818, + 0.0001268446182127322, 0.0001743404286829759, + 0.02544292517172434, 0.0002107251564740404, + 0.09884092351738187, 0.0002391381657362996, + 0.1744704449940017, 0.0002618172499590152, + 0.2430936807628649, 0.0002802869400172751, + 0.3033209758285258, 0.0002955945748575447, + 0.355758118174555, 0.0003084747892467032, + 0.4014510452519073, 0.0003194548214120799, + 0.4414356626653468, 0.0003289214677172303, + 0.4766169192502833, 0.0003371642657758759, + 0.5077517230370061, 0.0003444039242024864, + 0.5354633241883532, 0.0003508114513703712, + 0.5602628868037312, 0.0003565213009364801, + 0.5825702685336475, 0.0003616405864628345, + 0.6027317556351184, 0.0003662556600075083, + 0.6210344981187766, 0.0003704368884625953, + 0.6377180257702407, 0.0003742421752675708, + 0.652983366071077, 0.0003777195940186037, + 0.667000254371894, 0.0003809093836500495, + 0.6799128476679434, 0.0003838454780905802, + 0.6918442706570039, 0.0003865566919752524, + 0.7029002508578049, 0.000389067649129971, + 0.7131720413986303, 0.0003913995164996082, + 0.7227387845799725, 0.0003935705893726759, + 0.7316694342837096, 0.0003955967618362022, + 0.7400243285231667, 0.0003974919078428414, + 0.747856483000171, 0.0003992681920658595, + 0.755212660935947, 0.0004009363251645967, + 0.7621342624977909, 0.0004025057747089784, + 0.7686580679613385, 0.000403984940487517, + 0.7748168616577529, 0.0004053813010180153, + 0.7806399582528606, 0.00040670153662997, + 0.786153648613477, 0.0004079516333750262, + 0.7913815791511374, 0.0004091369711617666, + 0.7963450758813084, 0.00041026239884156, + 0.8010634223351132, 0.0004113322984474455, + 0.8055540987877207, 0.0004123506403741368, + 0.8098329889290022, 0.000413321030958808, + 0.813914559025874, 0.0004142467536602034, + 0.8178120137564664, 0.0004151308048232806, + 0.821537432190936, 0.0004159759248469224, + 0.825101886818934, 0.0004167846254347061, + 0.8285155480533462, 0.0004175592134966781, + 0.8317877762533697, 0.0004183018121784048, + 0.8349272029911109, 0.0004190143794182329, + 0.8379418030218164, 0.0004196987243715124, + 0.8408389581983645, 0.0004203565219890266, + 0.843625514387569, 0.0004209893259940189, + 0.8463078322926154, 0.0004215985804664407, + 0.848891832957265, 0.0004221856302130706, + 0.8513830386190436, 0.0004227517300769591, + 0.8537866094869954, 0.0004232980533183947, + 0.8561073769418921, 0.0004238256991815968, + 0.8583498735907137, 0.000424335699746057, + 0.8605183605508547, 0.0004248290261484384, + 0.8626168522912827, 0.0004253065942498067, + 0.8646491393164755, 0.0004257692698134273, + 0.8666188089433132, 0.000426217873250141, + 0.8685292643902939, 0.0004266531839812305, + 0.8703837423717155, 0.0004270759444625287, + 0.8721853293661955, 0.0004274868639081453, + 0.8739369767085355, 0.0004278866217474832, + 0.8756415146360238, 0.0004282758708450621, + 0.8773016654044247, 0.0004286552405089854, + 0.8789200555747797, 0.0004290253393105878, + 0.8804992275594572, 0.0004293867577348235, + 0.8820416505043871, 0.0004297400706782409, + 0.8835497305738722, 0.0004300858398088763, + 0.8850258206945885, 0.0004304246158000579, + 0.8864722298061936, 0.0004307569404478835, + 0.887891231657202, 0.0004310833486799939, + 0.8892850731763069, 0.0004314043704611773, + 0.8906559824410115, 0.0004317205325992682, + 0.8920061762571498, 0.0004320323604527339, + 0.8933378673545269, 0.000432340379539238, + 0.894653271195398, 0.0004326451170423202, + 0.8959546123837375, 0.0004329471032111149, + 0.8972441306541727, 0.000433246872645738, + 0.8985240864099954, 0.0004335449654585917, + 0.8997967657697997, 0.0004338419282993692, + 0.901064485071994, 0.0004341383152289965, + 0.9023295947757297, 0.0004344346884251275, + 0.9035944826856999, 0.0004347316186991527, + 0.9048615764168997, 0.0004350296858020064, + 0.9061333450039083, 0.0004353294784934289, + 0.9074122995477562, 0.0004356315943468108, + 0.9087009927822184, 0.0004359366392594052, + 0.9100020174307473, 0.0004362452266356344, + 0.9113180032156295, 0.000436557976209574, + 0.9126516123728105, 0.0004368755124715989, + 0.9140055335197583, 0.0004371984626638003, + 0.915382473720423, 0.0004375274543093129, + 0.9167851485915539, 0.0004378631122423307, + 0.9182162702992493, 0.000438206055108562, + 0.9196785333045526, 0.0004385568913104083, + 0.921174597733176, 0.0004389162143774648, + 0.9227070702680383, 0.0004392845977512571, + 0.9242784824952105, 0.0004396625889836182, + 0.9258912666749617, 0.0004400507033609156, + 0.9275477289606028, 0.0004404494169815118, + 0.9292500201491721, 0.000440859159331359, + 0.9310001041198086, 0.0001055644989267907, + 0.0001450940149574984, 0.02544487491553157, + 0.0001753772719352769, 0.09885101688865597, + 0.0001990267012200822, 0.1744926990200333, + 0.0002179045108524649, 0.2431308553318966, + 0.000233279364173155, 0.303375032942641, + 0.0002460228232089687, 0.3558304876736915, + 0.0002567462279756849, 0.4015427879008645, + 0.0002658883294937232, 0.4415475744961243, + 0.0002737710071803561, 0.4767496006654743, + 0.0002806352044648509, 0.5079056259634127, + 0.0002866645871705139, 0.5356387851068741, + 0.0002920014619138971, 0.5604601504270702, + 0.0002967577154420555, 0.5827895051312842, + 0.0003010224827883186, 0.6029730739429139, + 0.0003048676217987417, 0.6212979551152507, + 0.0003083516878734, 0.6380036341864078, + 0.0003115228646427098, 0.653291100231385, + 0.0003144211555866268, 0.6673300547852067, + 0.0003170800443702226, 0.6802646246666912, + 0.0003195277677802438, 0.6922179072993687, + 0.0003217883024392515, 0.7032956052494281, + 0.0003238821374603807, 0.7135889485487379, + 0.0003258268851960003, 0.723177057876695, + 0.0003276377682377606, 0.732128866651248, + 0.0003293280109066263, 0.740504693306939, + 0.000330909156355051, 0.7483575346135667, + 0.0003323913252386479, 0.7557341352926834, + 0.0003337834281257755, 0.7626758772463315, + 0.0003350933410056701, 0.7692195225318236, + 0.0003363280511552274, 0.7753978371270195, + 0.0003374937790390407, 0.7812401170290845, + 0.0003385960807104609, 0.7867726339385476, + 0.0003396399342555158, 0.792019014415911, + 0.0003406298131057851, 0.7970005637462622, + 0.0003415697484891286, 0.8017365436465392, + 0.0003424633828504657, 0.8062444112774049, + 0.0003433140157303645, 0.8105400256832551, + 0.0003441246433158771, 0.8146378267077895, + 0.0003448979926599179, 0.8185509905633486, + 0.0003456365513904324, 0.82229156552692, + 0.0003463425935893944, 0.8258705906609294, + 0.0003470182024071915, 0.8292981999865211, + 0.0003476652898847084, 0.8325837141504723, + 0.0003482856143791181, 0.835735721307981, + 0.000348880795926679, 0.8387621486794669, + 0.0003494523298240878, 0.8416703260200142, + 0.0003500015986670602, 0.8444670420569842, + 0.000350529883049145, 0.8471585947980717, + 0.0003510383710940082, 0.8497508364833812, + 0.0003515281669694799, 0.8522492138466825, + 0.0003520002985106894, 0.8546588042593751, + 0.000352455724061933, 0.8569843482530394, + 0.0003528953386319557, 0.859230278850431, + 0.0003533199794446321, 0.8614007480784993, + 0.0003537304309562248, 0.8634996509889044, + 0.0003541274294011706, 0.8655306474702691, + 0.000354511666920449, 0.8674971821009717, + 0.0003548837953198046, 0.8694025022607405, + 0.0003552444294992589, 0.8712496746929433, + 0.0003555941505903093, 0.8730416006866109, + 0.0003559335088328495, 0.8747810300273897, + 0.0003562630262200606, 0.8764705738493466, + 0.0003565831989362264, 0.8781127165044531, + 0.0003568944996095447, 0.8797098265533606, + 0.0003571973793994888, 0.8812641669694672, + 0.0003574922699360495, 0.8827779046380256, + 0.0003577795851262342, 0.8842531192229806, + 0.0003580597228414603, 0.8856918114661521, + 0.0003583330664979325, 0.8870959109761732, + 0.0003585999865407079, 0.888467283558108, + 0.0003588608418408972, 0.8898077381288096, + 0.0003591159810143158, 0.891119033257723, + 0.0003593657436688535, 0.892402883367923, + 0.0003596104615868662, 0.8936609646275998, + 0.000359850459847991, 0.8948949205579224, + 0.0003600860578969333, 0.8961063673791346, + 0.0003603175705599569, 0.897296899112831, + 0.0003605453090130204, 0.8984680924545586, + 0.0003607695817037281, 0.8996215114271492, + 0.0003609906952284962, 0.900758711821466, + 0.0003612089551655714, 0.9018812454275019, + 0.0003614246668637566, 0.9029906640549621, + 0.0003616381361859153, 0.9040885233385761, + 0.0003618496702055102, 0.9051763863193673, + 0.0003620595778536006, 0.9062558267889668, + 0.0003622681705128622, 0.9073284323797515, + 0.0003624757625543019, 0.9083958073791226, + 0.0003626826718114261, 0.90945957524161, + 0.0003628892199856792, 0.910521380767707, + 0.0003630957329760065, 0.9115828919134202, + 0.0003633025411244249, 0.9126458011895109, + 0.0003635099793685103, 0.9137118266043415, + 0.0003637183872907533, 0.9147827120992092, + 0.0003639281090538103, 0.9158602274201335, + 0.0003641394932098118, 0.9169461673653735, + 0.0003643528923711136, 0.9180423503436506, + 0.0003645686627292243, 0.9191506161742795, + 0.0003647871634081525, 0.9202728230574015, + 0.0003650087556381453, 0.9214108436404823, + 0.0003652338017357785, 0.9225665601064491, + 0.0003654626638766759, 0.9237418582096152, + 0.0003656957026478399, 0.9249386201881679, + 0.0003659332753677379, 0.9261587164868569, + 0.0003661757341639742, 0.9274039962309573, + 0.000366423423800659, 0.9286762764029628, + 0.0003666766792505202, 0.9299773296871511, + 0.0003669358230104597, 0.9313088709644671, + 0.0003672011621636608, 0.9326725424613703, + 0.0003674729851965463, 0.9340698975815723, + 0.000367751558584863, 0.9355023834790327, + 0.0003680371231699034, 0.9369713224641266, + 8.780076664716277e-5, 0.0001206797894237555, + 0.02544650247967021, 0.0001458689907141319, + 0.09885944344034912, 0.0001655410204684315, + 0.1745112808102761, 0.0001812446142239127, + 0.243161901103803, 0.0001940348805295792, + 0.3034201872483507, 0.0002046366722127249, + 0.3558909526523158, 0.0002135584233839305, + 0.4016194593852736, 0.0002211650307991108, + 0.4416411290854953, 0.0002277241922738999, + 0.4768605533838495, 0.0002334362932843276, + 0.5080343695969284, 0.0002384540829843639, + 0.5357856177524436, 0.0002428959131113313, + 0.5606252952358727, 0.0002468548359474569, + 0.5829731247513873, 0.0002504049817295676, + 0.6031752812789858, 0.0002536061116756343, + 0.6215188214764482, 0.0002565069236788439, + 0.63824319554714, 0.0002591474896792285, + 0.653549362104974, 0.0002615610783797454, + 0.6676069960615446, 0.0002637755361065909, + 0.6805602006643017, 0.0002658143454788651, + 0.692532052212964, 0.0002676974460335837, + 0.70362823412551, 0.0002694418768222108, + 0.7139399588872692, 0.0002710622843532818, + 0.723546330931951, 0.0002725713276157303, + 0.732516268486713, 0.0002739800036682437, + 0.740910075645583, 0.0002752979113613955, + 0.7487807355146596, 0.0002765334664638627, + 0.7561749796785543, 0.0002776940783128682, + 0.7631341772964979, 0.0002787862957738123, + 0.7696950779572316, 0.0002798159285470986, + 0.7758904353334187, 0.0002807881485415345, + 0.781749533175564, 0.0002817075750299807, + 0.7872986308948055, 0.0002825783465328497, + 0.7925613426197803, 0.000283404181779784, + 0.7975589609612814, 0.0002841884316364275, + 0.8023107346178519, 0.0002849341235200138, + 0.8068341072829448, 0.0002856439995410211, + 0.8111449239759836, 0.0002863205493808272, + 0.815257609843654, 0.0002869660387338721, + 0.8191853256086143, 0.0002875825339972447, + 0.8229401031375546, 0.0002881719237731651, + 0.8265329640257898, 0.0002887359376546216, + 0.8299740236251799, 0.0002892761626868619, + 0.8332725825556256, 0.000289794057833975, + 0.8364372074214862, 0.0002902909667276428, + 0.8394758021901656, 0.0002907681289320944, + 0.8423956714705967, 0.0002912266899236334, + 0.8452035767462418, 0.0002916677099534407, + 0.847905786463963, 0.0002920921719375913, + 0.8505081207514051, 0.0002925009884974771, + 0.8530159914271018, 0.0002928950082563857, + 0.8554344378758767, 0.0002932750214832763, + 0.8577681592844462, 0.0002936417651623478, + 0.8600215436661002, 0.0002939959275564363, + 0.8621986940470617, 0.0002943381523232877, + 0.8643034521390155, 0.0002946690422360806, + 0.866339419781072, 0.0002949891625530086, + 0.8683099783990099, 0.0002952990440750963, + 0.8702183066991327, 0.0002955991859265754, + 0.8720673967877357, 0.0002958900580879658, + 0.8738600688843806, 0.0002961721037083923, + 0.875598984777406, 0.0002964457412205325, + 0.8772866601529093, 0.0002967113662788715, + 0.8789254759134587, 0.0002969693535395673, + 0.880517688589716, 0.0002972200582981628, + 0.8820654399367039, 0.0002974638179995708, + 0.8835707657964145, 0.0002977009536331723, + 0.8850356042996281, 0.0002979317710244726, + 0.886461803472041, 0.0002981565620335326, + 0.8878511283029286, 0.0002983756056693069, + 0.8892052673284969, 0.0002985891691280583, + 0.8905258387766696, 0.0002987975087631656, + 0.8918143963152597, 0.0002990008709928799, + 0.8930724344411763, 0.0002991994931519033, + 0.8943013935444719, 0.0002993936042920544, + 0.8955026646775683, 0.0002995834259367309, + 0.896677594056873, 0.0002997691727933844, + 0.8978274873211489, 0.0002999510534277608, + 0.8989536135684026, 0.0003001292709032479, + 0.9000572091906636, 0.0003003040233882832, + 0.901139481523815, 0.0003004755047344127, + 0.9022016123275653, 0.0003006439050272616, + 0.9032447611087047, 0.0003008094111123485, + 0.9042700682989381, 0.0003009722070973778, + 0.9052786582968102, 0.0003011324748323426, + 0.9062716423815145, 0.0003012903943684867, + 0.9072501215046918, 0.000301446144396887, + 0.9082151889646557, 0.0003015999026671373, + 0.9091679329658161, 0.0003017518463863298, + 0.9101094390643967, 0.0003019021525982453, + 0.9110407924998413, 0.00030205099854237, + 0.9119630804095697, 0.0003021985619920632, + 0.9128773939229607, 0.0003023450215708908, + 0.9137848301286094, 0.0003024905570458278, + 0.9146864939070101, 0.0003026353495957124, + 0.9155834996188661, 0.0003027795820529983, + 0.9164769726372038, 0.0003029234391165164, + 0.917368050709395, 0.0003030671075326073, + 0.9182578851330556, 0.0003032107762416357, + 0.9191476417276118, 0.0003033546364865421, + 0.9200385015811228, 0.0003034988818797365, + 0.9209316615497335, 0.0003036437084242899, + 0.9218283344849421, 0.0003037893144850508, + 0.9227297491617354, 0.0003039359007049947, + 0.923637149878606, 0.0003040836698618365, + 0.9245517956985898, 0.0003042328266596891, + 0.9254749592987896, 0.000304383577450359, + 0.9264079253944743, 0.0003045361298787459, + 0.9273519887028263, 0.0003046906924467665, + 0.9283084514108677, 0.0003048474739902782, + 0.9292786201121033, 0.0003050066830636484, + 0.9302638021771222, 0.0003051685272269233, + 0.931265301524892, 0.0003053332122310158, + 0.9322844137639074, 0.0003055009410969733, + 0.9333224206758433, 0.0003056719130862303, + 0.9343805840190375, 0.0003058463225598092, + 0.9354601386351341, 0.0003060243577257252, + 0.9365622848496463, 0.0003062061992753964, + 0.9376881801661726, 0.0003063920189116574, + 0.9388389302645763, 0.0003065819777730374, + 0.940015579325664, 0.0003067762247612739, + 0.941219099718771, 0.0003069748947815949, + 0.9424503811041136, 7.309194121921338e-5, + 0.0001004637913909749, 0.02544785012683798, + 0.0001214344266344417, 0.09886642145889683, + 0.0001378124012607418, 0.174526670295946, + 0.0001508869219533374, 0.2431876171096405, + 0.0001615362906618204, 0.3034575961449956, + 0.0001703638961634086, 0.3559410557392941, + 0.0001777929742443069, 0.4016830055695095, + 0.0001841272759437895, 0.4417186869611078, + 0.0001895896409160979, 0.4769525589580654, + 0.0001943468759030283, 0.5081411588464865, + 0.0001985261336437941, 0.5359074494195392, + 0.0002022259333499051, 0.5607623671619424, + 0.0002055237341359384, 0.5831255858225246, + 0.0002084812437801258, 0.6033432403229687, + 0.0002111482088116174, 0.6217023539986306, + 0.0002135651662786688, 0.6384423489057279, + 0.0002157654726972967, 0.6537641595402491, + 0.0002177768213406241, 0.6678374398703552, + 0.0002196223917129092, 0.6808062747278515, + 0.0002213217308213229, 0.692793724028602, + 0.0002228914362913128, 0.7039054564531154, + 0.0002243456912849616, 0.7142326710923299, + 0.0002256966873287446, 0.7238544600868844, + 0.0002269549614676161, 0.7328397302769779, + 0.0002281296672953758, 0.7412487751160227, + 0.0002292287944844476, 0.7491345676832047, + 0.0002302593478625398, 0.7565438300381137, + 0.0002312274944605136, 0.7635179222210341, + 0.0002321386850119108, 0.7700935850242779, + 0.000232997754930363, 0.7763035635723555, + 0.0002338090086934327, 0.7821771332486441, + 0.0002345762907259228, 0.7877405452160454, + 0.0002353030452346481, 0.7930174054153138, + 0.0002359923669511411, 0.7980289982735111, + 0.0002366470443530013, 0.8027945642546851, + 0.0002372695966322588, 0.807331538712508, + 0.000237862305440656, 0.8116557581664309, + 0.0002384272422525216, 0.8157816390470166, + 0.0002389662920348844, 0.8197223330870221, + 0.0002394811737932779, 0.823489862829619, + 0.0002399734584639214, 0.8270952401504242, + 0.0002404445845437014, 0.8305485702196599, + 0.0002408958717848132, 0.8338591429442381, + 0.0002413285332280931, 0.8370355136106796, + 0.0002417436858056495, 0.8400855741856877, + 0.0002421423597075709, 0.8430166165116897, + 0.0002425255066777939, 0.845835388451546, + 0.0002428940073795231, 0.8485481438833696, + 0.0002432486779499734, 0.8511606873176778, + 0.0002435902758469355, 0.8536784138006696, + 0.0002439195050751448, 0.8561063446757747, + 0.0002442370208681859, 0.8584491596979498, + 0.0002445434338913074, 0.8607112259291628, + 0.0002448393140217253, 0.8628966237872217, + 0.0002451251937555122, 0.8650091705719897, + 0.0002454015712837818, 0.8670524417517986, + 0.0002456689132754098, 0.8690297902574413, + 0.0002459276573988435, 0.8709443640006193, + 0.0002461782146115141, 0.8727991218073733, + 0.0002464209712418874, 0.8745968479342314, + 0.0002466562908861773, 0.8763401653150386, + 0.0002468845161391411, 0.87803154766925, + 0.0002471059701761088, 0.8796733305874987, + 0.0002473209582014312, 0.8812677216971869, + 0.0002475297687768076, 0.8828168099994235, + 0.0002477326750414573, 0.884322574458617, + 0.0002479299358347776, 0.8857868919172412, + 0.0002481217967309792, 0.8872115444005592, + 0.0002483084909941748, 0.8885982258692703, + 0.0002484902404615005, 0.8899485484720331, + 0.0002486672563610595, 0.8912640483444852, + 0.0002488397400707827, 0.892546190996671, + 0.0002490078838236775, 0.8937963763265875, + 0.0002491718713643894, 0.8950159432938443, + 0.0002493318785615123, 0.896206174284098, + 0.0002494880739796445, 0.8973682991919631, + 0.0002496406194148037, 0.8985034992474406, + 0.0002497896703964584, 0.8996129106085194, + 0.0002499353766591264, 0.9006976277404708, + 0.0002500778825862051, 0.9017587066004092, + 0.000250217327628446, 0.9027971676439548, + 0.0002503538466992535, 0.9038139986692414, + 0.0002504875705487804, 0.9048101575120641, + 0.0002506186261185988, 0.9057865746046461, + 0.0002507471368785526, 0.90674415540928, + 0.000250873223147232, 0.907683782736985, + 0.000250997002397365, 0.9086063189602724, + 0.0002511185895472782, 0.9095126081281425, + 0.000251238097239448, 0.9104034779905169, + 0.0002513556361070412, 0.9112797419384429, + 0.0002514713150292236, 0.9121422008655768, + 0.0002515852413759041, 0.9129916449556555, + 0.0002516975212424692, 0.9138288553998849, + 0.0002518082596749575, 0.9146546060474243, + 0.0002519175608860183, 0.915469664991386, + 0.0002520255284618921, 0.9162747960920304, + 0.0002521322655605479, 0.917070760438088, + 0.0002522378751010061, 0.9178583177463857, + 0.0002523424599437699, 0.9186382276991902, + 0.000252446123062179, 0.9194112512179023, + 0.0002525489677043914, 0.9201781516709387, + 0.0002526510975455835, 0.9209396960128159, + 0.0002527526168298444, 0.9216966558506134, + 0.0002528536305011233, 0.922449808433123, + 0.0002529542443224635, 0.923199937557104, + 0.0002530545649826379, 0.923947834384147, + 0.0002531547001891691, 0.9246942981607159, + 0.0002532547587465925, 0.9254401368329844, + 0.0002533548506186903, 0.9261861675471152, + 0.0002534550869732947, 0.9269332170246625, + 0.0002535555802081323, 0.9276821218018076, + 0.0002536564439560544, 0.928433728320188, + 0.0002537577930678808, 0.9291888928561548, + 0.0002538597435709706, 0.9299484812744166, + 0.0002539624126015323, 0.93071336859122, + 0.0002540659183085976, 0.9314844383314878, + 0.0002541703797275094, 0.9322625816637383, + 0.0002542759166207297, 0.9330486962961403, + 0.0002543826492837433, 0.9338436851167795, + 0.000254490698313846, 0.9346484545611476, + 0.0002546001843396463, 0.9354639126900528, + 0.0002547112277091971, 0.9362909669616406, + 0.0002548239481348102, 0.9371305216820521, + 0.0002549384642927942, 0.9379834751204702, + 0.0002550548933766077, 0.9388507162759753, + 0.0002551733506022396, 0.9397331212857866, + 0.0002552939486650164, 0.9406315494671578, + 0.0002554167971475084, 0.941546838988458, + 0.0002555420018787558, 0.9424798021688484, + 0.0002556696642456735, 0.9434312204104797, + 0.0002557998804582168, 0.9444018387723074, + 0.0002559327407706962, 0.9453923602004483, + 0.0002560683286625224, 0.9464034394364762, + 0.0002562067199826295, 0.9474356766321346, + 6.097078489116776e-5, 8.380405076108355e-5, + 0.0254489606593285, 0.0001012978969826672, + 0.09887217219781226, 0.0001149608733516808, + 0.1745393544210289, 0.0001258683390053939, + 0.2432088150280462, 0.0001347529092969161, + 0.3034884369920806, 0.0001421178877684437, + 0.3559823686685004, 0.0001483163075228666, + 0.4017354125928528, 0.0001536015360676195, + 0.4417826623358451, 0.0001581594503691672, + 0.4770284685054013, 0.0001621291886747866, + 0.5082292867703224, 0.0001656168126296357, + 0.5360080170824175, 0.0001687044997776278, + 0.5608755465361002, 0.0001714568607858636, + 0.5832515093250096, 0.0001739253676423436, + 0.6034820081391302, 0.0001761515150836057, + 0.6218540396252812, 0.0001781691159294222, + 0.6386070034090316, 0.0001800059934918693, + 0.6539418148701861, 0.0001816852471937282, + 0.6680281114720945, 0.0001832262113807821, + 0.6810099636217561, 0.0001846451904182646, + 0.6930104184833876, 0.0001859560284988198, + 0.7041351333436702, 0.0001871705558346453, + 0.7144752970102477, 0.0001882989413512779, + 0.7241099922548785, 0.0001893499739181992, + 0.733108117306014, 0.0001903312884234792, + 0.7415299576349031, 0.000191249548890067, + 0.7494284788635305, 0.0001921105978487627, + 0.7568503960324043, 0.0001929195789948627, + 0.7638370625278608, 0.0001936810385340217, + 0.7704252127912312, 0.0001943990094098548, + 0.7766475858453091, 0.0001950770816902051, + 0.7825334511739168, 0.000195718461692066, + 0.7881090542005847, 0.0001963260218904405, + 0.7933979952488399, 0.0001969023432430833, + 0.7984215532155936, 0.0001974497512412977, + 0.8031989630889407, 0.0001979703467447663, + 0.8077476547694435, 0.000198466032459483, + 0.8120834593159135, 0.0001989385357600094, + 0.8162207876608769, 0.0001993894284313026, + 0.8201727859718991, 0.0001998201438042677, + 0.823951471129796, 0.0002002319916776369, + 0.8275678492200949, 0.0002006261713526632, + 0.831032019463781, 0.0002010037830532616, + 0.8343532656268658, 0.0002013658379601603, + 0.8375401366294501, 0.000201713267051409, + 0.8406005178108765, 0.0002020469289116992, + 0.8435416940880704, 0.0002023676166481832, + 0.846370406061068, 0.0002026760640298827, + 0.849092899966467, 0.0002029729509505747, + 0.851714972250835, 0.0002032589083006388, + 0.8542420094276686, 0.0002035345223212339, + 0.8566790237898599, 0.0002038003385039595, + 0.859030685471952, 0.0002040568650905127, + 0.8613013512904316, 0.0002043045762195164, + 0.8634950907340174, 0.0002045439147614532, + 0.865615709427792, 0.000204775294877309, + 0.8676667703537839, 0.0002049991043319707, + 0.8696516130751836, 0.0002052157065895086, + 0.8715733711808579, 0.0002054254427141078, + 0.8734349881404843, 0.000205628633097507, + 0.8752392317378276, 0.0002058255790312958, + 0.876988707229908, 0.0002060165641402434, + 0.8786858693626248, 0.0002062018556909442, + 0.8803330333584298, 0.0002063817057884218, + 0.8819323849785773, 0.0002065563524718971, + 0.8834859897510554, 0.0002067260207196752, + 0.8849958014452854, 0.0002068909233720063, + 0.8864636698658906, 0.0002070512619798147, + 0.8878913480301039, 0.0002072072275863421, + 0.8892804987865693, 0.0002073590014480071, + 0.8906327009272852, 0.0002075067557001234, + 0.8919494548391176, 0.0002076506539725411, + 0.8932321877366053, 0.0002077908519597573, + 0.8944822585136047, 0.0002079274979495885, + 0.8957009622476075, 0.0002080607333140918, + 0.8968895343872672, 0.0002081906929660589, + 0.8980491546507244, 0.0002083175057840894, + 0.8991809506596934, 0.00020844129500896, + 0.9002860013319247, 0.0002085621786137507, + 0.9013653400525538, 0.00020868026964996, + 0.9024199576429591, 0.0002087956765716353, + 0.9034508051440568, 0.0002089085035393573, + 0.9044587964294366, 0.0002090188507057549, + 0.9054448106623624, 0.000209126814484072, + 0.906409694609428, 0.000209232487801176, + 0.9073542648225251, 0.0002093359603362731, + 0.9082793096997696, 0.0002094373187464826, + 0.9091855914351026, 0.0002095366468803258, + 0.910073847865441, 0.0002096340259800857, + 0.9109447942234818, 0.0002097295348739169, + 0.9117991248035615, 0.0002098232501585007, + 0.9126375145473211, 0.0002099152463729734, + 0.913460620555334, 0.0002100055961647897, + 0.9142690835302997, 0.000210094370448118, + 0.9150635291568929, 0.0002101816385553131, + 0.9158445694228796, 0.0002102674683819544, + 0.9166128038856619, 0.0002103519265258884, + 0.9173688208879894, 0.0002104350784206675, + 0.9181131987261704, 0.0002105169884637311, + 0.9188465067737359, 0.0002105977201396311, + 0.919569306563135, 0.0002106773361385627, + 0.9202821528276868, 0.0002107558984704203, + 0.9209855945056615, 0.0002108334685745573, + 0.9216801757080246, 0.0002109101074253908, + 0.9223664366510376, 0.0002109858756339512, + 0.9230449145545729, 0.0002110608335454401, + 0.9237161445066656, 0.0002111350413328171, + 0.9243806602944845, 0.0002112085590864012, + 0.9250389952015636, 0.0002112814468994273, + 0.9256916827707871, 0.0002113537649494626, + 0.9263392575322679, 0.0002114255735755424, + 0.9269822556948962, 0.0002114969333508442, + 0.9276212157999659, 0.0002115679051506757, + 0.9282566793349052, 0.0002116385502155082, + 0.9288891913047499, 0.0002117089302087404, + 0.9295193007585985, 0.0002117791072688329, + 0.9301475612678799, 0.0002118491440554076, + 0.9307745313528513, 0.0002119191037888559, + 0.9314007748533154, 0.0002119890502829553, + 0.9320268612391253, 0.0002120590479699442, + 0.9326533658556098, 0.0002121291619174575, + 0.9332808700986251, 0.0002121994578366795, + 0.9339099615135131, 0.0002122700020810254, + 0.9345412338118337, 0.0002123408616346198, + 0.9351752867993358, 0.0002124121040897991, + 0.9358127262082568, 0.0002124837976128301, + 0.9364541634266929, 0.000212556010897005, + 0.9371002151174705, 0.0002126288131022461, + 0.9377515027186955, 0.0002127022737803375, + 0.9384086518179469, 0.0002127764627848895, + 0.9390722913919686, 0.0002128514501651432, + 0.9397430529036528, 0.0002129273060427348, + 0.9404215692481872, 0.0002130041004705666, + 0.9411084735403966, 0.0002130819032729711, + 0.9418043977356299, 0.0002131607838664165, + 0.9425099710769944, 0.0002132408110600791, + 0.9432258183623697, 0.0002133220528357081, + 0.9439525580254419, 0.0002134045761063316, + 0.9446908000260154, 0.0002134884464535012, + 0.9454411435460905, 0.000213573727842945, + 0.9462041744896647, 0.0002136604823187037, + 0.9469804627859271, 0.0002137487696760521, + 0.9477705594974885, 0.0002138386471137701, + 0.9485749937375257, 0.0002139301688666145, + 0.9493942694022146, 0.0002140233858191606, + 0.9502288617275928, 0.0002141183451025241, + 0.9510792136830037, 0.0002142150896758442, + 0.9519457322165201, 5.038843819242724e-5, + 6.925910573206593e-5, 0.02544993017457056, + 8.3717269029937e-5, 0.09887719305509406, + 9.500958703765662e-5, 0.1745504296500425, + 0.0001040247370141086, 0.2432273260547244, + 0.0001113681540690559, 0.3035153719186541, + 0.0001174557699843303, 0.3560184543414467, + 0.0001225793327188225, 0.4017811956457096, + 0.0001269482262440711, 0.4418385610275083, + 0.000130716060065286, 0.477094807039437, + 0.0001339978185876816, 0.5083063187019734, + 0.0001368811515412669, 0.5360959417043054, + 0.0001394339707035654, 0.5609745206153379, + 0.0001417096704842709, 0.5833616556836523, + 0.0001437507874107348, 0.6036034220420834, + 0.0001455916127490372, 0.6219867936141575, + 0.0001472600893816645, 0.6387511510142359, + 0.0001487792104243456, 0.6540973934997754, + 0.0001501680651407632, 0.6681951446873501, + 0.0001514426313109642, 0.6811884629495294, + 0.0001526163827196775, 0.6932003848740875, + 0.0001537007600492208, 0.7043365583549521, + 0.0001547055396155196, 0.7146881637760102, + 0.0001556391248364784, 0.7243342762844464, + 0.0001565087786427017, 0.7333437871476419, + 0.0001573208103069447, 0.7417769754298066, + 0.0001580807267724731, 0.7496868008107239, + 0.0001587933560956882, 0.7571199727801611, + 0.0001594629488101686, 0.7641178395042019, + 0.0001600932616793006, 0.7707171304832252, + 0.0001606876273022243, 0.7769505800349328, + 0.0001612490122811637, 0.782847453136627, + 0.0001617800660822615, 0.788433990871492, + 0.0001622831622801481, 0.7937337893603658, + 0.0001627604335348945, 0.7987681234096885, + 0.0001632138013840797, 0.803556224006277, + 0.000163645001724293, 0.808115517117466, + 0.0001640556066920045, 0.8124618299171829, + 0.0001644470435232973, 0.8166095694827731, + 0.0001648206108678467, 0.8205718781384362, + 0.0001651774929489843, 0.8243607689160389, + 0.0001655187718942932, 0.8279872440294369, + 0.0001658454385065429, 0.8314613987881412, + 0.0001661584017002631, 0.8347925129896938, + 0.0001664584967928401, 0.8379891315112622, + 0.0001667464928090865, 0.8410591355569131, + 0.0001670230989335329, 0.8440098057975293, + 0.000167288970224224, 0.8468478784572497, + 0.000167544712684776, 0.8495795952470572, + 0.0001677908877772391, 0.8522107479174399, + 0.000168028016446403, 0.8547467180936171, + 0.0001682565827161736, 0.857192512965189, + 0.0001684770369102029, 0.8595527973243928, + 0.0001686897985418176, 0.8618319223811186, + 0.000168895258912224, 0.8640339517265517, + 0.0001690937834508111, 0.8661626847691907, + 0.0001692857138269685, 0.8682216779257586, + 0.0001694713698590671, 0.8702142638140924, + 0.0001696510512430158, 0.8721435686645843, + 0.0001698250391200247, 0.8740125281403963, + 0.0001699935975008061, 0.8758239017338748, + 0.0001701569745613678, 0.8775802858868165, + 0.0001703154038237586, 0.8792841259650483, + 0.0001704691052335605, 0.8809377272028146, + 0.000170618286144567, 0.882543264719395, + 0.0001707631422198987, 0.8841027926989548, + 0.0001709038582577726, 0.8856182528146059, + 0.0001710406089492363, 0.8870914819688771, + 0.0001711735595743775, 0.8885242194150492, + 0.0001713028666428259, 0.889918113317008, + 0.000171428678483743, 0.8912747267992474, + 0.0001715511357899551, 0.892595543533345, + 0.0001716703721204033, 0.8938819729025228, + 0.0001717865143646592, 0.8951353547817279, + 0.000171899683172879, 0.8963569639669645, + 0.0001720099933542312, 0.8975480142843038, + 0.0001721175542465397, 0.8987096624060582, + 0.0001722224700596145, 0.8998430113989865, + 0.000172324840194509, 0.9009491140270437, + 0.0001724247595407294, 0.9020289758291009, + 0.0001725223187532327, 0.9030835579901713, + 0.0001726176045108827, 0.9041137800229966, + 0.0001727106997578779, 0.9051205222753304, + 0.0001728016839295312, 0.9061046282768895, + 0.0001728906331636581, 0.9070669069387198, + 0.0001729776204987175, 0.9080081346166083, + 0.0001730627160597527, 0.9089290570491781, + 0.0001731459872330869, 0.9098303911803945, + 0.0001732274988306475, 0.9107128268753881, + 0.0001733073132447196, 0.9115770285377645, + 0.0001733854905938624, 0.9124236366358845, + 0.0001734620888606598, 0.9132532691449957, + 0.0001735371640219225, 0.9140665229115263, + 0.0001736107701719091, 0.9148639749453517, + 0.0001736829596390858, 0.9156461836453693, + 0.0001737537830969034, 0.9164136899633, + 0.0001738232896690321, 0.9171670185102322, + 0.0001738915270294578, 0.9179066786100761, + 0.0001739585414978131, 0.9186331653037572, + 0.0001740243781302842, 0.9193469603076764, + 0.0001740890808064089, 0.9200485329296795, + 0.0001741526923120535, 0.9207383409455177, + 0.0001742152544188343, 0.9214168314385361, + 0.0001742768079602262, 0.9220844416050994, + 0.0001743373929045788, 0.922741599528049, + 0.0001743970484252448, 0.9233887249202853, + 0.0001744558129680012, 0.9240262298403793, + 0.000174513724315931, 0.9246545193819353, + 0.0001745708196519153, 0.9252739923382532, + 0.000174627135618867, 0.9258850418436779, + 0.0001746827083778257, 0.9264880559928549, + 0.0001747375736640159, 0.9270834184389665, + 0.0001747917668409568, 0.9276715089718623, + 0.0001748453229526972, 0.9282527040768545, + 0.0001748982767742368, 0.9288273774748004, + 0.0001749506628601784, 0.92939590064395, + 0.0001750025155916436, 0.9299586433238869, + 0.0001750538692214704, 0.9305159740017549, + 0.0001751047579176975, 0.9310682603808031, + 0.0001751552158053241, 0.9316158698311472, + 0.0001752052770063228, 0.9321591698224861, + 0.0001752549756778664, 0.932698528338364, + 0.0001753043460487161, 0.9332343142714111, + 0.0001753534224537021, 0.9337668977988398, + 0.0001754022393662154, 0.9342966507373076, + 0.0001754508314286094, 0.9348239468760963, + 0.0001754992334803999, 0.9353491622873846, + 0.0001755474805841303, 0.9358726756122197, + 0.0001755956080487566, 0.9363948683206198, + 0.0001756436514503888, 0.9369161249440563, + 0.0001756916466502072, 0.937436833278389, + 0.0001757396298093589, 0.9379573845551401, + 0.0001757876374006189, 0.9384781735788145, + 0.0001758357062165868, 0.9389995988277885, + 0.0001758838733741719, 0.9395220625161108, + 0.0001759321763151046, 0.9400459706133824, + 0.0001759806528021968, 0.9405717328197126, + 0.0001760293409110582, 0.9410997624925852, + 0.0001760782790169647, 0.9416304765223171, + 0.0001761275057765599, 0.942164295152655, + 0.0001761770601040649, 0.9427016417429337, + 0.0001762269811416588, 0.9432429424681213, + 0.0001762773082236904, 0.9437886259529981, + 0.0001763280808343769, 0.944339122836676, + 0.0001763793385586478, 0.9448948652636469, + 0.0001764311210257938, 0.9454562862975816, + 0.0001764834678455926, 0.9460238192541732, + 0.0001765364185365951, 0.9465978969494375, + 0.0001765900124462755, 0.9471789508600694, + 0.000176644288662773, 0.9477674101926942, + 0.0001766992859179855, 0.9483637008591626, + 0.0001767550424818139, 0.9489682443554301, + 0.0001768115960474016, 0.949581456542025, + 0.0001768689836072686, 0.9502037463246646, + 0.0001769272413203024, 0.9508355142342285, + 0.0001769864043696395, 0.951477150906035, + 0.0001770465068115518, 0.9521290354592113, + 0.0001771075814155438, 0.9527915337778898, + 0.0001771696594959625, 0.9534649966970047, + 0.0001772327707355348, 0.9541497580966158, + 0.0001772969430013587, 0.954846132909919, + 0.0001773622021540052, 0.9555544150514501, + 0.0001774285718505145, 0.9562748752734012, + 4.141439367791228e-5, 5.692455280094251e-5, + 0.02545075230958515, 6.880819048293672e-5, + 0.0988814509305572, 7.808989690617372e-5, + 0.174559822567384, 8.55000518587748e-5, + 0.2432430266865816, 9.153624710259941e-5, + 0.3035382198764821, 9.654032678652593e-5, + 0.3560490681596453, 0.000100752071555041, + 0.401820041498867, 0.0001043435691172141, + 0.4418859966836131, 0.0001074410674826558, + 0.4771511109577878, 0.0001101390695970056, + 0.5083717098779069, 0.0001125096126676353, + 0.5361705935601133, 0.0001146085117292486, + 0.5610585709493248, 0.0001164796503201761, + 0.5834552139424402, 0.000118157988128934, + 0.6037065747337148, 0.0001196717082477531, + 0.6220996084034542, 0.0001210437761733641, + 0.6388736798670074, 0.0001222930892987222, + 0.6542296751290908, 0.000123435336526936, + 0.6683372064799513, 0.0001244836495012513, + 0.6813403224997011, 0.000125449101886255, + 0.6933620512173756, 0.0001263410963843689, + 0.7045080329697024, 0.0001271676677918698, + 0.7148694414033631, 0.0001279357225503386, + 0.7245253456049399, 0.000128651229759923, + 0.7335446313434784, 0.00012931937473035, + 0.7419875726551162, 0.0001299446833543593, + 0.7499071245871521, 0.0001305311235624521, + 0.7573499923313203, 0.0001310821886317202, + 0.7643575200396533, 0.0001316009660202284, + 0.7709664334404412, 0.0001320901945745293, + 0.7772094632859758, 0.0001325523123360135, + 0.7831158711649373, 0.0001329894966984371, + 0.7887118949231211, 0.0001334036983057875, + 0.7940211275731494, 0.0001337966697989137, + 0.7990648409231811, 0.0001341699903007926, + 0.8038622630547293, 0.0001345250863590139, + 0.8084308171076828, 0.0001348632499289629, + 0.8127863274927396, 0.0001351856538739728, + 0.8169431985757714, 0.0001354933653731529, + 0.8209145700097322, 0.0001357873575589372, + 0.8247124521846697, 0.000136068519651005, + 0.8283478446917955, 0.0001363376658083228, + 0.8318308402273038, 0.000136595542884475, + 0.8351707159751699, 0.0001368428372415219, + 0.8383760141893339, 0.0001370801807530195, + 0.8414546134316254, 0.0001373081561065382, + 0.8444137917023125, 0.0001375273014991923, + 0.8472602825170737, 0.0001377381148057014, + 0.8500003248309528, 0.0001379410572868236, + 0.8526397075811507, 0.0001381365568962136, + 0.855183809512096, 0.0001383250112355325, + 0.8576376348545903, 0.0001385067902006957, + 0.860005845353164, 0.0001386822383562781, + 0.8622927890697443, 0.0001388516770701086, + 0.8645025263354547, 0.0001390154064358504, + 0.8666388531742509, 0.0001391737070077414, + 0.8687053224808631, 0.0001393268413685703, + 0.8707052632000881, 0.0001394750555493091, + 0.8726417977239584, 0.0001396185803165322, + 0.8745178576969695, 0.0001397576323417808, + 0.8763361983967451, 0.0001398924152653265, + 0.8780994118377522, 0.0001400231206653106, + 0.8798099387284803, 0.0001401499289419495, + 0.8814700793975387, 0.0001402730101253844, + 0.8830820037910464, 0.0001403925246147742, + 0.8846477606322743, 0.0001405086238553824, + 0.8861692858244719, 0.0001406214509596627, + 0.8876484101690278, 0.0001407311412776921, + 0.8890868664633782, 0.0001408378229217274, + 0.890486296036262, 0.0001409416172491532, + 0.8918482547719127, 0.000141042639307643, + 0.8931742186694573, 0.000141140998245961, + 0.8944655889790835, 0.0001412367976934811, + 0.8957236969523653, 0.0001413301361111912, + 0.8969498082404223, 0.0001414211071166758, + 0.8981451269702901, 0.0001415097997853232, + 0.8993107995269396, 0.0001415962989297887, + 0.9004479180657531, 0.0001416806853595467, + 0.9015575237779277, 0.0001417630361221969, + 0.9026406099291728, 0.0001418434247280258, + 0.9036981246901897, 0.0001419219213591954, + 0.9047309737757363, 0.0001419985930647974, + 0.9057400229075616, 0.0001420735039429043, + 0.9067261001151347, 0.0001421467153106468, + 0.9076899978868622, 0.0001422182858632548, + 0.908632475183385, 0.0001422882718229183, + 0.9095542593235423, 0.0001423567270782516, + 0.9104560477526908, 0.0001424237033150753, + 0.911338509702248, 0.0001424892501391719, + 0.9122022877485889, 0.0001425534151916154, + 0.9130479992787559, 0.0001426162442572255, + 0.9138762378698273, 0.0001426777813666525, + 0.9146875745882436, 0.0001427380688925579, + 0.9154825592148789, 0.0001427971476403172, + 0.916261721401193, 0.0001428550569336404, + 0.917025571761375, 0.0001429118346954711, + 0.9177746029050118, 0.0001429675175245004, + 0.9185092904144644, 0.0001430221407676021, + 0.9192300937708135, 0.0001430757385884771, + 0.9199374572319491, 0.000143128344032768, + 0.9206318106661012, 0.000143179989089888, + 0.9213135703438758, 0.0001432307047517914, + 0.9219831396916189, 0.0001432805210688911, + 0.9226409100087367, 0.0001433294672033191, + 0.923287261151399, 0.0001433775714797077, + 0.9239225621848796, 0.000143424861433657, + 0.9245471720066236, 0.0001434713638580431, + 0.9251614399419787, 0.000143517104847309, + 0.9257657063143877, 0.0001435621098398706, + 0.9263603029917071, 0.000143606403658759, + 0.9269455539101992, 0.0001436500105506133, + 0.9275217755776247, 0.000143692954223128, + 0.9280892775567625, 0.0001437352578810521, + 0.9286483629305795, 0.0001437769442608283, + 0.9291993287501823, 0.0001438180356639552, + 0.9297424664665896, 0.0001438585539891476, + 0.9302780623472868, 0.0001438985207633644, + 0.9308063978784351, 0.0001439379571717663, + 0.9313277501535416, 0.0001439768840866617, + 0.9318423922493136, 0.0001440153220954916, + 0.9323505935893585, 0.0001440532915279006, + 0.932852620296316, 0.0001440908124819338, + 0.9333487355329478, 0.0001441279048493981, + 0.933839199832643, 0.0001441645883404158, + 0.934324271419735, 0.0001442008825071996, + 0.9348042065199632, 0.0001442368067670687, + 0.9352792596613518, 0.000144272380424723, + 0.935749683965716, 0.0001443076226937871, + 0.936215731430945, 0.0001443425527176319, + 0.936677653204151, 0.0001443771895894746, + 0.9371356998457099, 0.0001444115523717566, + 0.9375901215841609, 0.0001444456601147895, + 0.9380411685618638, 0.0001444795318746588, + 0.9384890910712563, 0.0001445131867303672, + 0.9389341397814829, 0.0001445466438001951, + 0.9393765659551052, 0.0001445799222572509, + 0.9398166216545342, 0.000144613041344178, + 0.9402545599377586, 0.0001446460203869812, + 0.9406906350428731, 0.000144678878807928, + 0.9411251025608388, 0.0001447116361374763, + 0.9415582195958393, 0.0001447443120251743, + 0.9419902449125173, 0.0001447769262494714, + 0.9424214390693088, 0.000144809498726375, + 0.942852064537012, 0.0001448420495168817, + 0.943282385801656, 0.0001448745988331048, + 0.9437126694506554, 0.0001449071670430162, + 0.9441431842411634, 0.0001449397746737126, + 0.9445742011494633, 0.0001449724424131142, + 0.9450059934001559, 0.0001450051911099938, + 0.9454388364738392, 0.0001450380417722341, + 0.9458730080918976, 0.0001450710155632024, + 0.946308788176958, 0.0001451041337961289, + 0.9467464587875015, 0.0001451374179263711, + 0.9471863040250684, 0.000145170889541443, + 0.9476286099124387, 0.0001452045703486834, + 0.9480736642411287, 0.0001452384821604381, + 0.9485217563865096, 0.0001452726468766264, + 0.94897317708883, 0.0001453070864645653, + 0.9494282181984106, 0.0001453418229359214, + 0.9498871723832844, 0.0001453768783206665, + 0.9503503327975676, 0.0001454122746379124, + 0.9508179927088858, 0.0001454480338635091, + 0.9512904450832298, 0.0001454841778942922, + 0.9517679821256925, 0.0001455207285088794, + 0.9522508947756375, 0.00014555770732492, + 0.9527394721549711, 0.0001455951357527194, + 0.9532340009683443, 0.0001456330349451717, + 0.9537347648542913, 0.0001456714257439507, + 0.9542420436865237, 0.0001457103286219321, + 0.9547561128248467, 0.0001457497636218381, + 0.9552772423154445, 0.0001457897502911246, + 0.955805696040601, 0.0001458303076131549, + 0.9563417308182725, 0.0001458714539347385, + 0.9568855954523308, 0.0001459132068901443, + 0.957437529734715, 0.000145955583321735, + 0.9579977634012095, 0.0001459985991974088, + 0.9585665150430652, 0.0001460422695250747, + 0.9591439909772242, 0.0001460866082644329, + 0.9597303840784822, 0.0001461316282363772, + 0.9603258725775256, 3.429496445563442e-5, + 4.71390180589219e-5, 0.02545140450924156, + 5.698005902228804e-5, 0.09888482887297308, + 6.46665154872123e-5, 0.1745672748051217, + 7.080319239456012e-5, 0.2432554843126429, + 7.580213079430914e-5, 0.3035563500747286, + 7.994640198168628e-5, 0.3560733630370389, + 8.343456150015368e-5, 0.4018508725952348, + 8.640911033247278e-5, 0.4419236498367694, + 8.897459090834537e-5, 0.477195809384324, + 9.120925845958284e-5, 0.5084236299136395, + 9.317276496329196e-5, 0.5362298756774806, + 9.491132926180562e-5, 0.5611253276477577, + 9.646129005158931e-5, 0.5835295355152852, + 9.785159643187924e-5, 0.6037885335602649, + 9.910558598615793e-5, 0.6221892621956204, + 0.000100242275747997, 0.6389710741614671, + 0.0001012773140638229, 0.6543348452257979, + 0.0001022236924158808, 0.668450178968302, + 0.0001030922846881736, 0.6814611164733789, + 0.000103892260607767, 0.6934906792512014, + 0.0001046314062227422, 0.7046445019124451, + 0.0001053163748547551, 0.7150137530267155, + 0.0001059528854651743, 0.7246774971389701, + 0.0001065458808280527, 0.7337046159216464, + 0.0001070996546816144, 0.7421553796866258, + 0.0001076179547185671, 0.7500827400704289, + 0.000108104066598062, 0.7575333991194183, + 0.0001085608829314993, 0.7645486980661065, + 0.0001089909602824242, 0.7711653599123298, + 0.0001093965665385209, 0.7774161128496166, + 0.0001097797204987463, 0.7833302160485504, + 0.0001101422251266719, 0.7889339050599856, + 0.0001104856956203599, 0.7942507707081078, + 0.0001108115832166325, 0.7993020827048136, + 0.0001111211954666116, 0.8041070671151008, + 0.0001114157135775683, 0.8086831451312193, + 0.0001116962073042465, 0.8130461392755103, + 0.0001119636477840458, 0.8172104520762232, + 0.0001122189186395992, 0.8211892213917328, + 0.0001124628256154204, 0.8249944558535597, + 0.0001126961049694284, 0.8286371533240166, + 0.0001129194308029721, 0.8321274047940588, + 0.0001131334214826889, 0.8354744857604804, + 0.0001133386452827434, 0.8386869368027751, + 0.0001135356253556231, 0.8417726348159535, + 0.0001137248441228562, 0.8447388561361401, + 0.0001139067471630854, 0.847592332612694, + 0.0001140817466633488, 0.8503393015273689, + 0.0001142502244897405, 0.8529855501323292, + 0.0001144125349255261, 0.8555364554704203, + 0.000114569007117969, 0.8579970200494635, + 0.0001147199472693837, 0.8603719038646763, + 0.000114865640603067, 0.8626654531972963, + 0.0001150063531306337, 0.8648817265611982, + 0.0001151423332437714, 0.8670245181211877, + 0.0001152738131504335, 0.8690973788654197, + 0.0001154010101729216, 0.8711036357789597, + 0.0001155241279231094, 0.8730464092349987, + 0.0001156433573681646, 0.8749286287938791, + 0.000115758877798493, 0.8767530475772949, + 0.0001158708577082165, 0.8785222553652559, + 0.0001159794555972724, 0.8802386905462134, + 0.0001160848207031594, 0.8819046510357806, + 0.0001161870936694311, 0.8835223042664072, + 0.0001162864071572288, 0.8850936963389427, + 0.0001163828864054445, 0.8866207604170093, + 0.0001164766497444822, 0.8881053244363083, + 0.0001165678090680486, 0.8895491181932601, + 0.0001166564702669258, 0.8909537798705544, + 0.0001167427336282587, 0.892320862051182, + 0.0001168266942035215, 0.893651837267199, + 0.0001169084421479998, 0.8949481031247646, + 0.0001169880630343355, 0.896210987042823, + 0.0001170656381424237, 0.8974417506390828, + 0.0001171412447277278, 0.8986415937936533, + 0.0001172149562698677, 0.8998116584177496, + 0.0001172868427031662, 0.9009530319522595, + 0.0001173569706306669, 0.9020667506186153, + 0.0001174254035230018, 0.9031538024423191, + 0.0001174922019033529, 0.9042151300675857, + 0.0001175574235196376, 0.9052516333798847, + 0.0001176211235049476, 0.9062641719516429, + 0.0001176833545271722, 0.9072535673250101, + 0.0001177441669286597, 0.9082206051443592, + 0.0001178036088566899, 0.9091660371500875, + 0.0001178617263854677, 0.9100905830442862, + 0.0001179185636302828, 0.910994932237941, + 0.0001179741628544263, 0.9118797454885111, + 0.0001180285645694077, 0.9127456564359945, + 0.0001180818076289649, 0.9135932730449129, + 0.0001181339293173255, 0.9144231789590457, + 0.0001181849654321338, 0.9152359347751857, + 0.0001182349503624295, 0.9160320792416857, + 0.0001182839171620296, 0.9168121303871106, + 0.0001183318976186388, 0.9175765865838867, + 0.0001183789223189884, 0.9183259275514641, + 0.000118425020710278, 0.9190606153031572, + 0.0001184702211581763, 0.9197810950405108, + 0.000118514551001616, 0.9204877959987503, + 0.0001185580366045994, 0.9211811322466059, + 0.0001186007034052168, 0.9218615034435585, + 0.0001186425759620638, 0.9225292955573307, + 0.0001186836779982295, 0.9231848815442406, + 0.0001187240324430169, 0.9238286219948466, + 0.0001187636614715423, 0.9244608657471405, + 0.0001188025865423529, 0.9250819504693824, + 0.0001188408284331903, 0.9256922032145273, + 0.0001188784072750181, 0.9262919409480546, + 0.0001189153425844261, 0.9268814710508878, + 0.000118951653294512, 0.9274610917989764, + 0.0001189873577843384, 0.928031092821002, + 0.0001190224739070536, 0.9285917555355758, + 0.0001190570190167592, 0.9291433535691963, + 0.0001190910099942032, 0.9296861531561591, + 0.0001191244632713702, 0.9302204135215227, + 0.0001191573948550362, 0.9307463872481658, + 0.0001191898203493515, 0.9312643206289019, + 0.0001192217549775109, 0.931774454004551, + 0.000119253213602564, 0.9322770220888102, + 0.0001192842107474197, 0.9327722542807086, + 0.0001193147606140906, 0.933260374965378, + 0.0001193448771022213, 0.9337416038038212, + 0.0001193745738269449, 0.9342161560123183, + 0.0001194038641361023, 0.9346842426320593, + 0.0001194327611268635, 0.9351460707895553, + 0.0001194612776617823, 0.9356018439483411, + 0.0001194894263843151, 0.936051762152442, + 0.0001195172197338335, 0.9364960222620436, + 0.0001195446699601559, 0.9369348181817692, + 0.0001195717891376224, 0.9373683410819361, + 0.0001195985891787351, 0.9377967796131313, + 0.0001196250818473841, 0.9382203201144163, + 0.0001196512787716769, 0.9386391468154388, + 0.0001196771914563876, 0.9390534420327067, + 0.0001197028312950406, 0.9394633863602434, + 0.0001197282095816411, 0.9398691588548227, + 0.0001197533375220634, 0.9402709372159495, + 0.0001197782262451063, 0.94066889796073, + 0.0001198028868132232, 0.941063216593744, + 0.0001198273302329317, 0.9414540677720091, + 0.0001198515674649078, 0.9418416254650982, + 0.000119875609433767, 0.942226063110445, + 0.0001198994670375319, 0.9426075537638465, + 0.0001199231511567857, 0.9429862702451438, + 0.0001199466726635097, 0.943362385279036, + 0.0001199700424295984, 0.9437360716309537, + 0.0001199932713350474, 0.9441075022378914, + 0.0001200163702758047, 0.9444768503340695, + 0.0001200393501712764, 0.944844289571268, + 0.0001200622219714742, 0.9452099941336445, + 0.0001200849966637913, 0.9455741388468206, + 0.0001201076852793909, 0.9459368992809881, + 0.0001201302988991895, 0.9462984518477588, + 0.0001201528486594163, 0.9466589738904483, + 0.000120175345756726, 0.9470186437674541, + 0.0001201978014528419, 0.9473776409283557, + 0.0001202202270787045, 0.9477361459823309, + 0.0001202426340380965, 0.9480943407584549, + 0.0001202650338107162, 0.9484524083574091, + 0.0001202874379546662, 0.9488105331941014, + 0.0001203098581083251, 0.9491689010306606, + 0.0001203323059915656, 0.9495276989992437, + 0.0001203547934062821, 0.9498871156140531, + 0.000120377332236188, 0.9502473407719423, + 0.0001203999344458418, 0.950608565740949, + 0.0001204226120788594, 0.9509709831360716, + 0.0001204453772552672, 0.9513347868815795, + 0.0001204682421679518, 0.951700172159119, + 0.0001204912190781571, 0.9520673353408602, + 0.0001205143203099825, 0.9524364739069084, + 0.0001205375582438321, 0.9528077863461863, + 0.000120560945308766, 0.9531814720399889, + 0.0001205844939737027, 0.9535577311273962, + 0.000120608216737424, 0.9539367643517374, + 0.0001206321261173331, 0.9543187728872938, + 0.0001206562346369151, 0.9547039581454467, + 0.0001206805548118562, 0.9550925215594878, + 0.0001207050991347726, 0.9554846643473366, + 0.0001207298800585086, 0.9558805872514442, + 0.0001207549099779616, 0.9562804902552012, + 0.0001207802012103997, 0.9566845722752253, + 0.0001208057659742362, 0.9570930308289628, + 0.0001208316163662374, 0.9575060616771147, + 0.0001208577643371385, 0.9579238584404856, + 0.0001208842216656548, 0.9583466121909501, + 0.0001209109999308791, 0.958774511016349, + 0.0001209381104830662, 0.9592077395592462, + 0.0001209655644128141, 0.9596464785296278, + 0.0001209933725186615, 0.9600909041917725, + 0.000121021545273132, 0.9605411878256951, + 0.0001210500927872672, 0.9609974951637525, + 0.0001210790247737047, 0.9614599858031972, + 0.0001211083505083695, 0.9619288125956789, + 0.0001211380787908609, 0.9624041210149245, + 0.0001211682179036361, 0.9628860485040655, + 0.0001211987755701019, 0.9633747238043349, + 0.0001212297589117476, 0.9638702662671197 + ] + + ROCK2ConstantCache{T, T2, typeof(zprev)}(ms, fp1, fp2, recf, zprev, 1, 1, 1, 0, 200) +end + +function ROCK4ConstantCache(T, T2, zprev) + ms = SVector{50, Int}( + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, + 22, 24, 26, 28, 30, 32, 34, 36, 38, 41, 44, 47, 50, 53, 56, 59, + 63, 67, 71, 76, 81, 86, + 92, 98, 105, 112, 120, 129, 138, 148) + fpa = [(-0.149352078672699, 0.629768962985252, + -0.355201061573650, 0.0146745996307541, + -0.0558517281602565, 0.590312931352706) + (-0.179313593132677, 0.522354978881996, + -0.268020263243268, 0.0410644459848542, + -0.0673692676033641, 0.534974252895965) + (-0.182428104178289, 0.488581974232839, + -0.243999027372673, 0.0403844469216897, + -0.0621100542563179, 0.510891501054959) + (-0.177747282156689, 0.475598890858970, + -0.236544145857569, 0.0357873367680739, + -0.0561802405454197, 0.498502393780149) + (-0.171097214294784, 0.471021380996139, + -0.235432301175529, 0.0305165148305403, + -0.0508758913107147, 0.491537536121394) + (-0.164446145110292, 0.470315341552133, + -0.237054736024656, 0.0253636332272387, + -0.0462365759807733, 0.487394153808489) + (-0.158427655171257, 0.471468878620055, + -0.239853802450812, 0.0205746749952032, + -0.0421744356707249, 0.484829913014008) + (-0.153293058075572, 0.473282079177035, + -0.242910850765406, 0.0163722321103915, + -0.0387108095861697, 0.483081034299037) + (-0.148972804305139, 0.475296959544537, + -0.245899260153289, 0.0127203010191100, + -0.0357508839759137, 0.481825981739298) + (-0.145179937599982, 0.477661231491125, + -0.248988404183759, 0.00930730703798092, + -0.0330359105371527, 0.481074258113903) + (-0.141803779162182, 0.480294472251598, + -0.252149638985389, 0.00605980548716020, + -0.0304878190339923, 0.480717680079251) + (-0.139121943562170, 0.482307569354585, + -0.254656989245024, 0.00349723479360248, + -0.0284636204606306, 0.480267545886151) + (-0.136626653539895, 0.484641896383759, + -0.257332057712838, 0.000915869293860006, + -0.0264509129364182, 0.480154720984400) + (-0.134486447576714, 0.486757723660692, + -0.259733624852103, -0.00135988997170157, + -0.0246765061257936, 0.480084593714673) + (-0.132780674018083, 0.488321952587049, + -0.261588769418801, -0.00313701049350723, + -0.0232786280695929, 0.479882004899598) + (-0.131117609799413, 0.490193639754613, + -0.263646432339284, -0.00502134729674226, + -0.0218133033112692, 0.479929065438669) + (-0.129737943206222, 0.491700319201409, + -0.265337954300747, -0.00657602712355092, + -0.0205977998576123, 0.479898556782486) + (-0.128546948141681, 0.493011323225514, + -0.266816177922376, -0.00793004771706004, + -0.0195369613099883, 0.479857299633325) + (-0.127460377104448, 0.494293149884316, + -0.268231271325724, -0.00920717061172173, + -0.0185386009080156, 0.479869528636923) + (-0.126496410155342, 0.495458691659965, + -0.269513232370108, -0.0103575442717928, + -0.0176387115527810, 0.479887174404288) + (-0.124868416118615, 0.497490597051425, + -0.271737391165211, -0.0123394260182449, + -0.0160868868427959, 0.479932724633469) + (-0.123564405510046, 0.499164732520327, + -0.273565616640958, -0.0139585436258901, + -0.0148169722656038, 0.479973747650230) + (-0.122505008329286, 0.500555383947992, + -0.275081797679137, -0.0152951780850662, + -0.0137670777523960, 0.480009428375171) + (-0.121640329449530, 0.501700402349954, + -0.276333007672789, -0.0163961730000813, + -0.0129007107727469, 0.480031673127157) + (-0.120917917691482, 0.502675119491259, + -0.277395466055127, -0.0173277807640047, + -0.0121670308408281, 0.480054118477096) + (-0.120710248396632, 0.502361065588637, + -0.277299180400763, -0.0173459597107178, + -0.0121268146405534, 0.479596544727020) + (-0.120151946726542, 0.503187463625006, + -0.278173489088946, -0.0180998664145073, + -0.0115355117518033, 0.479663327238431) + (-0.119650804512964, 0.503968844736113, + -0.278987558251327, -0.0187954561730573, + -0.0109907774512063, 0.479748806593835) + (-0.119231690274109, 0.504610327555198, + -0.279662019452110, -0.0193736976241804, + -0.0105368584242475, 0.479807172254604) + (-0.118685223311611, 0.505479309944796, + -0.280566027535941, -0.0201436607277488, + -0.00993291024114479, 0.479903135786603) + (-0.118231796286135, 0.506213890671776, + -0.281327499307895, -0.0207902381330527, + -0.00942553811892237, 0.479988558979737) + (-0.117860168810132, 0.506813986559461, + -0.281951733666353, -0.0213206692268858, + -0.00900871675159034, 0.480053891764692) + (-0.117541632407920, 0.507340547092223, + -0.282496164808253, -0.0217814864430309, + -0.00864670120809640, 0.480116952219068) + (-0.117280791290490, 0.507762024730383, + -0.282936101835780, -0.0221553810871189, + -0.00835235476491614, 0.480159581641243) + (-0.117020809344219, 0.508234853606851, + -0.283411245544839, -0.0225511383509412, + -0.00804255449961079, 0.480240908974576) + (-0.116840110106662, 0.508513931927332, + -0.283708061860511, -0.0228054436800931, + -0.00784157438541911, 0.480258758199155) + (-0.116999141776097, 0.507738965363869, + -0.283085550597818, -0.0223557928014705, + -0.00817646181729438, 0.479839084150866) + (-0.116787474223622, 0.508124510062097, + -0.283473179991593, -0.0226786360708563, + -0.00792370493215401, 0.479905001144018) + (-0.116543053242319, 0.508649023059358, + -0.283975543942050, -0.0230858609767789, + -0.00760742817737876, 0.480040247388773) + (-0.116369877848172, 0.508950670881779, + -0.284284071372858, -0.0233448484372084, + -0.00740387836067644, 0.480081925815726) + (-0.115981831952477, 0.509942937789055, + -0.285192892337194, -0.0240615204888854, + -0.00685134671736066, 0.480412958109969) + (-0.115934409239879, 0.509932625794726, + -0.285214065725890, -0.0240929036649298, + -0.00682325905888604, 0.480353282861487) + (-0.114543930853965, 0.514055666969259, + -0.288877128663596, -0.0269187182378037, + -0.00465261555222027, 0.481928410401348) + (-0.114338190892959, 0.514568129329710, + -0.289354467784058, -0.0272970253684862, + -0.00435838305221696, 0.482082731512007) + (-0.113900806706479, 0.515815247278763, + -0.290479621681517, -0.0281706242269155, + -0.00368286974902504, 0.482524745170433) + (-0.114241230745559, 0.514642605930859, + -0.289464730587169, -0.0274037778296787, + -0.00427016797791793, 0.482029696494976) + (-0.113830853818569, 0.515834254672657, + -0.290535565769687, -0.0282330735764243, + -0.00362939602828681, 0.482459847410651) + (-0.113105039346215, 0.518047629039909, + -0.292508542364670, -0.0297505373346793, + -0.00245703714012197, 0.483285747825278) + (-0.113373695071906, 0.517118156325443, + -0.291701320745508, -0.0291406743553601, + -0.00292560575875699, 0.482899951273987) + (-0.112938370080633, 0.518440212713205, + -0.292882869228272, -0.0300502325911247, + -0.00222188377341845, 0.483386803334408)] + fpb = [(0.934502625489809, -0.426556402801135, -0.428612609028723, 0.744370090574855) + (0.727428506710284, -0.281882500610754, -0.366883181811475, 0.684341322628128) + (0.671969568061243, -0.247327027296030, -0.348410422675722, 0.657516722491004) + (0.655616700297981, -0.238808679740035, -0.342918097601918, 0.643274312048176) + (0.653766630051757, -0.239717659625342, -0.342124625373560, 0.634842894408973) + (0.657958401550080, -0.244504571310874, -0.343125007747822, 0.629452994091047) + (0.664644828327504, -0.250836131475691, -0.344767760715637, 0.625804292371554) + (0.671778926897883, -0.257341094888494, -0.346437936729090, 0.623113789954589) + (0.678662206121957, -0.263538563990534, -0.347971227180309, 0.621040683222628) + (0.685711960310753, -0.269724027269246, -0.349535907736682, 0.619566456617273) + (0.692884607363355, -0.275886628173354, -0.351131980732774, 0.618568501341401) + (0.698546656891454, -0.280881006247969, -0.352285102713857, 0.617571192399056) + (0.704573921792281, -0.286045457291729, -0.353563979295968, 0.616965030808178) + (0.709971428905986, -0.290682008221983, -0.354679184547433, 0.616462060289197) + (0.714125178664410, -0.294349691347616, -0.355464510591820, 0.615888572779772) + (0.718736274563484, -0.298288036358834, -0.356401512165052, 0.615594896206387) + (0.722517387767685, -0.301568462204942, -0.357129478686764, 0.615267647826005) + (0.725816343813274, -0.304448113195281, -0.357746756688570, 0.614963961979991) + (0.728974076820863, -0.307182320589777, -0.358345483491417, 0.614739362936109) + (0.731832397913825, -0.309659464712225, -0.358881456195461, 0.614544900863432) + (0.736786729484850, -0.313957288328657, -0.359797924432667, 0.614228100935116) + (0.740854099130286, -0.317495426161459, -0.360535121685962, 0.613973796355241) + (0.744223896195403, -0.320433632193417, -0.361135560093482, 0.613766054898060) + (0.747001832700433, -0.322865419691933, -0.361620350229670, 0.613586121252665) + (0.749359431920161, -0.324930741701897, -0.362028107948934, 0.613438378039065) + (0.749100998320598, -0.324985993239383, -0.361796607662197, 0.612867258144605) + (0.751043873200700, -0.326661586308774, -0.362147816931696, 0.612807453647952) + (0.752854624396087, -0.328210433831008, -0.362482431451812, 0.612782100341090) + (0.754353169889782, -0.329501139703409, -0.362752509396770, 0.612745403519662) + (0.756363017447499, -0.331222786188901, -0.363119850550614, 0.612719466518580) + (0.758055963580132, -0.332671506824595, -0.363429198770158, 0.612703916106263) + (0.759443004727975, -0.333862330033422, -0.363679324780792, 0.612685408765563) + (0.760653160327002, -0.334898139570366, -0.363899175365336, 0.612677301460611) + (0.761629956010211, -0.335739950284413, -0.364072376423153, 0.612660139381166) + (0.762688789887627, -0.336630474589357, -0.364274785126092, 0.612687294013859) + (0.763346400554849, -0.337204680067583, -0.364385896133756, 0.612661785846953) + (0.761923304846226, -0.336206156720779, -0.363978603432088, 0.612221699604794) + (0.762786806785331, -0.336933071907623, -0.364142956905108, 0.612243212238912) + (0.763911644345184, -0.337848624997397, -0.364378249037553, 0.612335667041690) + (0.764597562248984, -0.338433363367646, -0.364503441229143, 0.612339040874567) + (0.766642781170500, -0.340044276021276, -0.364967251951014, 0.612618883157375) + (0.766682555493412, -0.340118220148353, -0.364946973037536, 0.612538317898983) + (0.774955438746513, -0.346489297090328, -0.366916081411072, 0.613985554671875) + (0.776027351639685, -0.347348043660042, -0.367147411126057, 0.614109087783370) + (0.778563137974742, -0.349330512988104, -0.367727843519890, 0.614502095324990) + (0.776264664166250, -0.347594735539935, -0.367159451116240, 0.614023148520995) + (0.778679038214519, -0.349476481579656, -0.367715953710640, 0.614409463784688) + (0.783131247138323, -0.352927933064792, -0.368752741091226, 0.615166687043411) + (0.781304104495501, -0.351541585232233, -0.368306700790280, 0.614794688266817) + (0.783969323650751, -0.353613571196170, -0.368922535023076, 0.615238813023293)] + fpbe = [(1.13509972110540, -0.584333360989720, -0.319172911177732, 0.482853558185876, + 0.109256697110981) + (1.00479199674788, -0.436644602461537, -0.423443966877378, 0.538770645909717, + 0.0795300735974956) + (0.984907410167693, -0.403297625005343, + -0.485090625106059, 0.576309835350610, + 0.0609198451735942) + (0.980171201303714, -0.394437889689979, + -0.517381582925487, 0.601142288908999, + 0.0476702174069568) + (0.974834695776200, -0.392308952799017, + -0.530263724070033, 0.616510618632796, + 0.0379946019218839) + (0.966668353329992, -0.391741144639394, + -0.531455776704021, 0.625494551194751, + 0.0308158334011040) + (0.956319747720222, -0.391138376736994, + -0.526142643689543, 0.630404554467362, + 0.0254019467466823) + (0.943587787064690, -0.389377300510789, + -0.516876350192269, 0.632531861517858, + 0.0212476873553974) + (0.929868441621807, -0.386750527439590, + -0.505935645060380, 0.633001592986906, + 0.0180092360649997) + (0.917878947092234, -0.384686528119553, + -0.495511556683115, 0.632891756120139, + 0.0154458635123923) + (0.907921031017813, -0.383354597608536, + -0.486086276370317, 0.632568615019003, + 0.0133857277406643) + (0.896388476009400, -0.380504535913835, + -0.476131894672218, 0.631491892380436, + 0.0117078025249012) + (0.887685870010584, -0.378944197433540, + -0.467828653690999, 0.630692391160778, + 0.0103241059659401) + (0.879470814062224, -0.377245094706344, + -0.460102121012690, 0.629778007382364, + 0.00917069070021292) + (0.870530751362587, -0.374648589005799, + -0.452452352164561, 0.628569291738020, + 0.00820044757449899) + (0.864018892596866, -0.373280954775127, + -0.446202255714937, 0.627730565946685, + 0.00737537419249938) + (0.857357924295629, -0.371485680656218, + -0.440234425775788, 0.626780133051391, + 0.00666914378696866) + (0.851096961215784, -0.369663988413454, + -0.434754090977242, 0.625846657124080, + 0.00605989696024640) + (0.845691163494378, -0.368162878390094, + -0.429905486466339, 0.625032425385260, + 0.00553041165257352) + (0.840754783321373, -0.366754374490097, + -0.425504080282415, 0.624272520855683, + 0.00506752846502820) + (0.832129732678031, -0.364215201885908, + -0.417868687835329, 0.622912972095680, + 0.00430080260616755) + (0.824841358445432, -0.361969316759517, + -0.411506554101034, 0.621735648069777, + 0.00369621198344728) + (0.818660702021942, -0.359997706140366, + -0.406173910081373, 0.620720634622955, + 0.00321103838340649) + (0.813343156361523, -0.358234931076463, + -0.401657773073081, 0.619835953653306, + 0.00281577816620828) + (0.808812551334635, -0.356709737514645, + -0.397829666549206, 0.619076368359449, + 0.00248944467816156) + (0.802058241484851, -0.353305127983149, + -0.393665858753007, 0.617880189866334, + 0.00221821094859412) + (0.799023019885202, -0.352371068280062, + -0.390970958156562, 0.617372975124671, + 0.00198795503493263) + (0.796533707522770, -0.351659214274525, + -0.388680577600314, 0.616958145987822, + 0.00179179781860265) + (0.794254415802991, -0.350955011234794, + -0.386652430547127, 0.616574541234043, + 0.00162340905415174) + (0.791451974069317, -0.350127723737597, + -0.384099751306937, 0.616103218945433, + 0.00141212925634866) + (0.789140296939903, -0.349447391105024, + -0.381986708309451, 0.615713343205178, + 0.00123963336103694) + (0.787155036742462, -0.348839107260454, + -0.380202863720354, 0.615376708082511, + 0.00109698483515876) + (0.785509443687073, -0.348347728366112, + -0.378703894403193, 0.615097681507449, + 0.000977644426693831) + (0.784038223206202, -0.347876842227869, + -0.377407083344177, 0.614846655967241, + 0.000876815082414696) + (0.783010378301710, -0.347648245486129, + -0.376356876713355, 0.614674780335034, + 0.000790787748777402) + (0.781833266343420, -0.347234482878725, + -0.375370253527294, 0.614472179428255, + 0.000716900834807566) + (0.778157258445688, -0.345006104027160, + -0.373629716648469, 0.613804905745683, + 0.000633900782409020) + (0.777300034873279, -0.344806720424309, + -0.372764739426396, 0.613661241678936, + 0.000564173510000384) + (0.776985336763925, -0.344948310351192, + -0.372138199888685, 0.613616309802328, + 0.000505301025547597) + (0.776123576908821, -0.344696744011525, + -0.371340582024658, 0.613469644712914, + 0.000443902941209962) + (0.776949282583553, -0.345654199916775, + -0.371072531043118, 0.613634699306968, + 0.000392885424956897) + (0.775876610212432, -0.345123309087147, + -0.370392356339381, 0.613444359409516, + 0.000350376011087039) + (0.783347589653809, -0.351086251339795, + -0.371860974551612, 0.614828131953302, + 0.000307119201283797) + (0.783496656673086, -0.351443051706240, + -0.371545102252444, 0.614860564019234, + 0.000271917903319380) + (0.785178130625954, -0.352964147655529, + -0.371615967722576, 0.615170969674100, + 0.000237891869788885) + (0.782045229930799, -0.350764936286095, + -0.370561648626977, 0.614604810918108, + 0.000210170095234033) + (0.783792445229447, -0.352285904984906, + -0.370720709266521, 0.614926468923107, + 0.000183766807783551) + (0.787664243592327, -0.355426631067992, + -0.371408773264980, 0.615628921926696, + 0.000159498839664580) + (0.785248632105467, -0.353713152595833, + -0.370620439974436, 0.615195478568662, + 0.000139988635943928) + (0.787452369208138, -0.355534844520464, + -0.370962019539811, 0.615594462312992, + 0.000122062993942758)] + recf = [ + 0.1762962957651941, 0.1067131485543800, + 0.1296319693918818, 0.006097984609869632, + 0.07296375286357569, 0.08749824867149327, + 0.006126949805354446, 0.1026802330400501, + 0.03026744779900850, 0.05345766591735225, + 0.06421114488497465, 0.006297251335072349, + 0.07361067001944596, 0.02954244012876854, + 0.08450213007949955, 0.06370198138618569, + 0.04102541073974864, 0.04936734181284644, + 0.006437548414781547, 0.05655964819916140, + 0.03008674068005620, 0.06301337991392047, + 0.06092514503458917, 0.07122116739390528, + 0.1014508394981259, 0.03256098772501858, + 0.03923994550846150, 0.006548791582739922, + 0.04499511886194148, 0.03061034821432499, + 0.05000269311882022, 0.06157339578289546, + 0.05465516336291797, 0.09570538881974760, + 0.06104333020232396, 0.1406290220864037, + 0.02651417777294218, 0.03199100352247176, + 0.006637416338030012, 0.03671473048471728, + 0.03104646653985547, 0.04080808506561111, + 0.06240780397840483, 0.04441697436286914, + 0.09608256539833336, 0.04790790953491602, + 0.1314940925346221, 0.05299225195731577, + 0.1795490141555294, 0.02203688946407306, + 0.02661454798174795, 0.006708509073973803, + 0.03056730958573840, 0.03140468274131318, + 0.03399153986085689, 0.06314347647488826, + 0.03698314358022203, 0.09706950916624359, + 0.03966494820191785, 0.1312524251550016, + 0.04237605842481057, 0.1670258610104497, + 0.04651311259978263, 0.2174924541420837, + 0.01862250741526137, 0.02250861576538788, + 0.006766202022280821, 0.02586805882924489, + 0.03170042346032810, 0.02877953008086195, + 0.06376714023863055, 0.03131867762450776, + 0.09801783524123061, 0.03355864056201850, + 0.1322218594416999, 0.03560688231225300, + 0.1658724905539629, 0.03777371673577270, + 0.2016177039517425, 0.04119698781191684, + 0.2539572842035754, 0.01595000101933615, + 0.01929098080329146, 0.006813771091892661, + 0.02218226060548395, 0.03194763050768121, + 0.02468951849041972, 0.06429708643843554, + 0.02687566748685502, 0.09885398134767074, + 0.02879687047315825, 0.1332911334324939, + 0.03051024265050759, 0.1666672556601528, + 0.03211180339134084, 0.1993212628717513, + 0.03387840798530223, 0.2348117800966209, + 0.03672204698847085, 0.2881723275817451, + 0.01381614369504127, 0.01671925338932986, + 0.006853396714797705, 0.01923405366588467, + 0.03215586472031486, 0.02141625996563439, + 0.06474907548155117, 0.02331937590115891, + 0.09958008772514044, 0.02499024766114432, + 0.1342748583683893, 0.02647050763871464, + 0.1677665086248348, 0.02780637354179997, + 0.1998070962536277, 0.02908398701850636, + 0.2312827828857880, 0.03054428937166170, + 0.2663434084812225, 0.03290759457513454, + 0.3198421010321994, 0.01209208337462717, + 0.01463956211973881, 0.006886319232429428, + 0.01684821591214353, 0.03233043835607318, + 0.01876598514920064, 0.06513176017688395, + 0.02043905166732186, 0.1002021458157551, + 0.02190770330626050, 0.1351369448238108, + 0.02320633429617816, 0.1688220571485906, + 0.02436655982458731, 0.2008416611727759, + 0.02542750723914090, 0.2313613787046680, + 0.02646792773501215, 0.2616749611549993, + 0.02769967463189309, 0.2964076499426887, + 0.02970440766084731, 0.3502117812643117, + 0.01067034715302655, 0.01292329710584654, + 0.006914320860943588, 0.01487812037525849, + 0.03248006428304434, 0.01657652594868420, + 0.06546254336130322, 0.01805880263820550, + 0.1007449363462607, 0.01936010074490956, + 0.1358990057232774, 0.02051007922030995, + 0.1697855056821405, 0.02153416689781703, + 0.2019295372474008, 0.02245709430196045, + 0.2322718220467692, 0.02331275056513504, + 0.2612402870437151, 0.02417201314765524, + 0.2904095866946978, 0.02521646587374857, + 0.3246308095620147, 0.02690764435467064, + 0.3778240223542354, 0.009487431939295813, + 0.01149440138138981, 0.006938125808908258, + 0.01323700105262745, 0.03260808020167218, + 0.01475188210924817, 0.06574755356940067, + 0.01607452560476730, 0.1012162270929412, + 0.01723591531771676, 0.1365667423922086, + 0.01826211676183441, 0.1706429091716792, + 0.01917496536345655, 0.2029443389633356, + 0.01999362278384748, 0.2333350798953319, + 0.02073811037471499, 0.2619641661449880, + 0.02143841440760416, 0.2894413776906615, + 0.02215820736295387, 0.3175489053704050, + 0.02305270619849904, 0.3512439576972030, + 0.02449014264738941, 0.4036179314586852, + 0.008494564197695063, 0.01029439196351078, + 0.006958406921839354, 0.01185809158880236, + 0.03271773184277712, 0.01321815865055247, + 0.06599313162331371, 0.01440610601409755, + 0.1016249390468336, 0.01544947770682643, + 0.1371499803680846, 0.01637143556780157, + 0.1713990070155131, 0.01719123774995229, + 0.2038574724036485, 0.01792514377153798, + 0.2343593316805466, 0.01858798779956469, + 0.2629560717194659, 0.01919659343371288, + 0.2899296316580346, 0.01977810373828767, + 0.3160315643000932, 0.02039024270914711, + 0.3432192271881122, 0.02116722465269759, + 0.3765294846983478, 0.02240833445471075, + 0.4283514372117345, 0.007648100953017721, + 0.009270847111494889, 0.006976054938079860, + 0.01068147039692487, 0.03281359708712486, + 0.01190898600388846, 0.06620896361366048, + 0.01298157114442065, 0.1019862089328133, + 0.01392387354640439, 0.1376687444923527, + 0.01475662479151471, 0.1720764656800079, + 0.01549702171989481, 0.2046849615229637, + 0.01615937354505817, 0.2353135758405889, + 0.01675598207974404, 0.2639750061864973, + 0.01729863164965770, 0.2908276346191939, + 0.01780176282268598, 0.3162404475076796, + 0.01828983612841132, 0.3410641528662292, + 0.01881415834433531, 0.3673520724841440, + 0.01948852933531380, 0.4000529139809629, + 0.02055287002810484, 0.4505930922691549, + 0.006923848173158734, 0.008394702950361005, + 0.006991325631797234, 0.009673911522111265, + 0.03289687833321025, 0.01078755757084805, + 0.06639729788616958, 0.01176100014874140, + 0.1023029830546846, 0.01261643557454879, + 0.1381259991601194, 0.01337254080889024, + 0.1726770746288135, 0.01404479965650065, + 0.2054241214472704, 0.01464602837670213, + 0.2361779701904081, 0.01518698551280871, + 0.2649344026216049, 0.01567717541900471, + 0.2918033340368942, 0.01612624123496420, + 0.3170079069341164, 0.01654688879900881, + 0.3409811920927984, 0.01696136666824286, + 0.3646547307991162, 0.01741546145080310, + 0.3901537483439419, 0.01800636597179543, + 0.4223218228522266, 0.01892881341268367, + 0.4717326233521751, 0.006298588439596636, + 0.007638030626687965, 0.007004655851265844, + 0.008803453943265294, 0.03296982845467406, + 0.009818444950365933, 0.06656291057106479, + 0.01070595626475817, 0.1025827278785117, + 0.01148608766389635, 0.1385316612194638, + 0.01217575810897931, 0.1732125747484649, + 0.01278899412440368, 0.2060869881923743, + 0.01333738432024735, 0.2369597744170469, + 0.01383056388512692, 0.2658180187652428, + 0.01427674437223498, 0.2927507447256686, + 0.01468343958863289, 0.3179214676099940, + 0.01505875998976432, 0.3415951393087426, + 0.01541407984395701, 0.3642544652079210, + 0.01576969712450036, 0.3868951368176343, + 0.01616644053575092, 0.4116861214445555, + 0.01668748198434585, 0.4433331570075596, + 0.01749188724059570, 0.4916033800451471, + 0.005754360678751824, 0.006979206263458857, + 0.007016389205940601, 0.008045335113843407, + 0.03303423464885706, 0.008974185166510452, + 0.06670962735009836, 0.009786634336394069, + 0.1028314890330009, 0.01050097258572427, + 0.1388938643805943, 0.01113260003649783, + 0.1736928024956524, 0.01169428623074936, + 0.2066843246414360, 0.01219657523409050, + 0.2376686083847098, 0.01264820000840307, + 0.2666274169278879, 0.01305648757877945, + 0.2936397261253015, 0.01342781257742339, + 0.3188429723296673, 0.01376825401666917, + 0.3424305607919373, 0.01408478812041018, + 0.3646959159353649, 0.01438768989133101, + 0.3861600014637602, 0.01469542216481714, + 0.4078642344326945, 0.01504419066763009, + 0.4319869811400004, 0.01550494890247615, + 0.4630491704469774, 0.01620775053166640, + 0.5100139240423402, 0.005278040811520425, + 0.006402421198476983, 0.007026749310824704, + 0.007381444032562888, 0.03309125386700502, + 0.008234685519924101, 0.06683990648107069, + 0.008981222939541469, 0.1030531116670419, + 0.009637773923336657, 0.1392177117208699, + 0.01021841796444464, 0.1741238287384007, + 0.01073483180895483, 0.2072226942408981, + 0.01119665624742548, 0.2383105498941010, + 0.01161186412382382, 0.2673653866792523, + 0.01198709958412187, 0.2944607083863120, + 0.01232800940556657, 0.3197217653056301, + 0.01263963481803662, 0.3433101656487968, + 0.01292700918588335, 0.3654364911202174, + 0.01319625157476125, 0.3864151426812009, + 0.01345671217793918, 0.4067976665874104, + 0.01372517143690529, 0.4276578990766819, + 0.01403368592830970, 0.4511616717492440, + 0.01444284729184994, 0.4816264620225250, + 0.01505946839641039, 0.5272614695163532, + 0.004487666665675140, 0.005444990141910759, + 0.007044130283096086, 0.006279049188091140, + 0.03318723192008640, 0.007006368632847780, + 0.06706002621750721, 0.007643068862200888, + 0.1034291291409337, 0.008203282681027361, + 0.1397696656221023, 0.008698916419500412, + 0.1748620369064401, 0.009139847522019589, + 0.2081495587015637, 0.009534232617493163, + 0.2394220617811718, 0.009888812556097355, + 0.2686520584410767, 0.01020918148777924, + 0.2959071488424056, 0.01050001965367601, + 0.3213027967445414, 0.01076530680194359, + 0.3449782554868110, 0.01100855051222504, + 0.3670882760306343, 0.01123309242673613, + 0.3878099745344409, 0.01144260835071195, + 0.4073711108103572, 0.01164201330179298, + 0.4261157327362403, 0.01183914191832676, + 0.4446387149497601, 0.01204780719832178, + 0.4640454326093743, 0.01229306401377462, + 0.4864269389633110, 0.01261927726417314, + 0.5156669165861498, 0.01309943489239065, + 0.5586255185473764, 0.003862975224403902, + 0.004687945053900655, 0.007058035858061096, + 0.005407041834964283, 0.03326430524210259, + 0.006034411186094848, 0.06723753885455682, + 0.006583863333832890, 0.1037337930420006, + 0.007067509494777436, 0.1402191813726617, + 0.007495554804930935, 0.1754665679972444, + 0.007876466939414612, 0.2089130635289459, + 0.008217239718909702, 0.2403434536707747, + 0.008523653399761676, 0.2697261364777181, + 0.008800501778860810, 0.2971251237465357, + 0.009051782217229110, 0.3226519291781493, + 0.009280855010852164, 0.3464394048134897, + 0.009490584189896422, 0.3686285665457733, + 0.009683478271871005, 0.3893644369335397, + 0.009861860805271805, 0.4088004145802082, + 0.01002812139311295, 0.4271141176574624, + 0.01018513471380169, 0.4445422442202590, + 0.01033699621003472, 0.4614490459910935, + 0.01049031549106710, 0.4784539901229190, + 0.01065642152893932, 0.4966599824214358, + 0.01085488420737215, 0.5180410345089337, + 0.01111843432827249, 0.5460483341177160, + 0.01149782035140485, 0.5864065338958527, + 0.003360562419718235, 0.004078879630499024, + 0.007069329073407106, 0.004705262542208223, + 0.03332708647415080, 0.005251963413756800, + 0.06738262760022461, 0.005730951315737387, + 0.1039837553534775, 0.006152725177551053, + 0.1405895253957461, 0.006526132611753048, + 0.1759668677811218, 0.006858515620324401, + 0.2095479655628776, 0.007155939019582245, + 0.2411135586103733, 0.007423415917481789, + 0.2706287495885053, 0.007665103884932816, + 0.2981548371545775, 0.007884467592308588, + 0.3238009173107087, 0.008084411667986876, + 0.3476971265301733, 0.008267390411961632, + 0.3699801584879876, 0.008435502610509800, + 0.3907862310698117, 0.008590582044778893, + 0.4102493117101150, 0.008734298913651078, + 0.4285042785031379, 0.008868296093454296, + 0.4456965009415761, 0.008994399398069297, + 0.4620016328614911, 0.009114966064926033, + 0.4776628155317611, 0.009233473962579847, + 0.4930576673885005, 0.009355505324217098, + 0.5088149715467647, 0.009490326792694050, + 0.5260104590494338, 0.009653243364999375, + 0.5464780715474396, 0.009868600991484903, + 0.5732601989067468, 0.01017225716053114, + 0.6111363239215825, 0.002950437825487400, + 0.003581555112941687, 0.007078620126622295, + 0.004132082643231012, 0.03337886298886408, + 0.004612740002118506, 0.06750261702445300, + 0.005034004128539568, 0.1041911190752577, + 0.005405066674282486, 0.1408978061674918, + 0.005733674167146439, 0.1763848697593524, + 0.006026255228800488, 0.2100805343046851, + 0.006288120524548417, 0.2417622608971423, + 0.006523660186046708, 0.2713924596018528, + 0.006736515451660314, 0.2990302271326234, + 0.006929720582831246, 0.3247828257866806, + 0.007105817882799941, 0.3487787217481978, + 0.007266950671260499, 0.3711526971215219, + 0.007414939513031372, 0.3920379717842592, + 0.007551347241996011, 0.4115626674210771, + 0.007677539108440712, 0.4298493831220752, + 0.007794746313920410, 0.4470176901244603, + 0.007904145004284749, 0.4631903418970273, + 0.008006969465604538, 0.4785052149162398, + 0.008104689159161024, 0.4931367316839517, + 0.008199295885823026, 0.5073330960096394, + 0.008293770604485683, 0.5214794128662904, + 0.008392826136597125, 0.5362017345344410, + 0.008504035938797334, 0.5525322098044688, + 0.008639408222270374, 0.5721561451757253, + 0.008817216208331321, 0.5977434938944347, + 0.009063189668758037, 0.6332939739614603, + 0.002611205692460249, 0.003170101091465017, + 0.007086356419628467, 0.003657766349841741, + 0.03342206181054271, 0.004083661809252030, + 0.06760295824860309, 0.004457037354538724, + 0.1043649740346678, 0.004786009222605838, + 0.1411570048315963, 0.005077417957619811, + 0.1767374059456163, 0.005336940476209487, + 0.2105311844047106, 0.005569266597573038, + 0.2423131187370251, 0.005778273412183262, + 0.2720433970782992, 0.005967176862421978, + 0.2997792878733318, 0.006138656970674597, + 0.3256265499647623, 0.006294959076405515, + 0.3497123813254361, 0.006437975105563999, + 0.3721703830438909, 0.006569309029799851, + 0.3931323996098995, 0.006690330403814164, + 0.4127244218331418, 0.006802219694622686, + 0.4310650456887266, 0.006906009314473870, + 0.4482657882348953, 0.007002625080460826, + 0.4644331547605672, 0.007092934548851317, + 0.4796729107857300, 0.007177811732959676, + 0.4940976831610963, 0.007258232689273568, + 0.5078399409574430, 0.007335424050171227, + 0.5210737517163408, 0.007411097366633641, + 0.5340506436534539, 0.007487815663348852, + 0.5471575324915496, 0.007569550927915151, + 0.5610077596302204, 0.007662488506257662, + 0.5765785117760304, 0.007776079157718089, + 0.5954049494922431, 0.007924148666854938, + 0.6198219542319461, 0.008125409481841734, + 0.6531839888628567, 0.002329161903934607, + 0.002827942346666575, 0.007092767801324573, + 0.003263256653829519, 0.03345792087848227, + 0.003643524065941897, 0.06768640663901933, + 0.003976979208186409, 0.1045098632090649, + 0.004270848280167040, 0.1413735187729310, + 0.004531221910361700, 0.1770326285691667, + 0.004763154723278143, 0.2109095929304028, + 0.004970822485283018, 0.2427770065864133, + 0.005157677387973698, 0.2725932360325259, + 0.005326583047275474, 0.3004140385861841, + 0.005479926007282439, 0.3263439258620141, + 0.005619705807004115, 0.3505090634425326, + 0.005747607114086801, 0.3730421698484556, + 0.005865057476337201, 0.3940742505245702, + 0.005973273864880296, 0.4137303052977993, + 0.006073300781079440, 0.4321274134643955, + 0.006166042448892977, 0.4493743356584487, + 0.006252291618234036, 0.4655722399143190, + 0.006332757862946729, 0.4808165109947856, + 0.006408099103723341, 0.4951999355274510, + 0.006478961616347051, 0.5088179499753192, + 0.006546036269964925, 0.5217771724376283, + 0.006610142518258857, 0.5342092003559118, + 0.006672357066182766, 0.5462927399000752, + 0.006734211186973384, 0.5582886150793852, + 0.006797988292026415, 0.5705940457094262, + 0.006867157346618580, 0.5838243594874886, + 0.006946966207628190, 0.5989305413025341, + 0.007045163972244657, 0.6173557330297905, + 0.007172668498534273, 0.6412138054673769, + 0.007343669551813224, 0.6734212283950197, + 0.002088962222558656, 0.002536501141538391, + 0.007098312096014856, 0.002927174164471204, + 0.03348897507192802, 0.003268517695916878, + 0.06775879346915350, 0.003567904939390041, + 0.1046357814625728, 0.003831806772332035, + 0.1415620734408565, 0.004065677361393518, + 0.1772903102475344, 0.004274043151934446, + 0.2112406912998520, 0.004460643560808929, + 0.2431839618927255, 0.004628570053481958, + 0.2730769378663360, 0.004780387068478273, + 0.3009740811016449, 0.004918231891978967, + 0.3269788261694700, 0.005043895306797768, + 0.3512164460435231, 0.005158886125836192, + 0.3738189139504120, 0.005264482738771292, + 0.3949165867949340, 0.005361774417899160, + 0.4146338301275897, 0.005451694687903237, + 0.4330869551935628, 0.005535048699155984, + 0.4503835468466499, 0.005612536310885108, + 0.4666226835980815, 0.005684772523136652, + 0.4818958265481784, 0.005752307033652531, + 0.4962883637349025, 0.005815645095778566, + 0.5098819947919942, 0.005875272604331699, + 0.5227583713586083, 0.005931689562795883, + 0.5350047139508995, 0.005985457948104635, + 0.5467225528673463, 0.006037272660724469, + 0.5580413411348073, 0.006088067820748090, + 0.5691395094905580, 0.006139174903693435, + 0.5802765872262356, 0.006192552890264469, + 0.5918411775133858, 0.006251110114702117, + 0.6044203697962170, 0.006319123951993900, + 0.6188952404877303, 0.006402719127039078, + 0.6365612063366765, 0.006510255774185010, + 0.6592545134576846, 0.006652267840556133, + 0.6894261807467007, 0.001884070525273232, + 0.002287865166522269, 0.007103061833161608, + 0.002640414555924009, 0.03351561092037226, + 0.002948504867845529, 0.06782096720073962, + 0.003218776897022670, 0.1047441025101927, + 0.003457059211747976, 0.1417245576749319, + 0.003668264712145178, 0.1775127832127863, + 0.003856470649104565, 0.2115271336150133, + 0.004025045325158119, 0.2435368006995073, + 0.004176773382240289, 0.2734972927884814, + 0.004313964750721690, 0.3014619731636417, + 0.004438544635664399, 0.3275333564649527, + 0.004552126174118954, 0.3518359485899692, + 0.004656068554335920, 0.3745010840861863, + 0.004751523397588311, 0.3956585819539499, + 0.004839471843717534, 0.4154323324012205, + 0.004920754357241174, 0.4339381722015443, + 0.004996094895419632, 0.4512831048238278, + 0.005066120791624743, 0.4675653273310193, + 0.005131379519337958, 0.4828747738428288, + 0.005192353422296487, 0.4972940502928434, + 0.005249473538511721, 0.5108997625078284, + 0.005303133835275671, 0.5237643599692746, + 0.005353707549485549, 0.5359587556465524, + 0.005401567951803124, 0.5475561617516223, + 0.005447116802332092, 0.5586378279840697, + 0.005490825128586838, 0.5693017116602867, + 0.005533292803086976, 0.5796755768842047, + 0.005575335692614607, 0.5899366290511978, + 0.005618111542531525, 0.6003405110877628, + 0.005663297103480300, 0.6112631579002907, + 0.005713326390293707, 0.6232591473997167, + 0.005771686951858539, 0.6371386281547686, + 0.005843235308872718, 0.6540591245646711, + 0.005934415308321717, 0.6756138475691030, + 0.006053127455671619, 0.7038679036965546, + 0.001708003175642380, 0.002074181532622547, + 0.007107154835723396, 0.002393937473496849, + 0.03353858755734360, 0.002673414535955727, + 0.06787466315584890, 0.002918625868457997, + 0.1048377783441727, 0.003134849526067874, + 0.1418652820405583, 0.003326534476511183, + 0.1777057753498972, 0.003497372950002969, + 0.2117760550049606, 0.003650415148383601, + 0.2438439995727389, 0.003788182708532486, + 0.2738640090744446, 0.003912767381261045, + 0.3018885114907114, 0.004025912539016479, + 0.3280192335266340, 0.004129078986309924, + 0.3523800195135267, 0.004223497595500826, + 0.3751016505461964, 0.004310211297602812, + 0.3963134824357808, 0.004390108627214284, + 0.4161390116668366, 0.004463950627129625, + 0.4346937216368967, 0.004532392561972495, + 0.4520842562952224, 0.004596001602217271, + 0.4684083677796514, 0.004655271425546727, + 0.4837553218910148, 0.004710634539896850, + 0.4982065930947042, 0.004762473060977909, + 0.5118367810144925, 0.004811128680431732, + 0.5247147588413267, 0.004856912649796014, + 0.5369051384586530, 0.004900116799220620, + 0.5484702216816450, 0.004941026937249812, + 0.5594727154468603, 0.004979940477837468, + 0.5699796357324364, 0.005017190859382927, + 0.5800680268418966, 0.005053182300865962, + 0.5898333966076153, 0.005088439691236800, + 0.5994021272105722, 0.005123679830879367, + 0.6089495614023648, 0.005159911463507254, + 0.6187259309040364, 0.005198571556852845, + 0.6290926122189227, 0.005241701843449486, + 0.6405709220757223, 0.005292158145073340, + 0.6539038212088008, 0.005353817484714892, + 0.6701255576222123, 0.005431693560278526, + 0.6906222214439113, 0.005531783368314496, + 0.7171434625046844, 0.001486821222610860, + 0.001805710570607849, 0.007112315426865264, + 0.002084226678642758, 0.03356758851849525, + 0.002327708403877407, 0.06794252207314784, + 0.002541382628281658, 0.1049563283476954, + 0.002729837665345000, 0.1420436509870845, + 0.002896941194350830, 0.1779508117794810, + 0.003045903028705765, 0.2120926886975343, + 0.003179374802697815, 0.2442355417695174, + 0.003299548613427395, 0.2743324022628396, + 0.003408242823717034, 0.3024345386679296, + 0.003506972940214846, 0.3286426953033458, + 0.003597008842757047, 0.3530798855126308, + 0.003679420554768286, 0.3758761896368122, + 0.003755114750481509, 0.3971603743636597, + 0.003824863905497256, 0.4170554403005484, + 0.003889329651040080, 0.4356764468047173, + 0.003949081575434511, 0.4531296561693286, + 0.004004612453985609, 0.4695124355979618, + 0.004056350682593341, 0.4849135873526999, + 0.004104670535603563, 0.4994139167345992, + 0.004149900758174290, 0.5130869342770428, + 0.004192331932996859, 0.5259996460201358, + 0.004232223028377952, 0.5382134282701107, + 0.004269807540393116, 0.5497850203277219, + 0.004305299690448572, 0.5607677074343013, + 0.004338901239307418, 0.5712128128876574, + 0.004370809641681970, 0.5811716792241682, + 0.004401228508048884, 0.5906984004679025, + 0.004430381681233268, 0.5998536784140458, + 0.004458532691684085, 0.6087103236556506, + 0.004486011931533010, 0.6173611125584528, + 0.004513254549169507, 0.6259299431307766, + 0.004540852685066905, 0.6345874840856066, + 0.004569625913830092, 0.6435727138959286, + 0.004600712887286172, 0.6532217324580875, + 0.004635683708228730, 0.6640046346388578, + 0.004676663849565939, 0.6765693546213282, + 0.004726442410018883, 0.6917869917669843, + 0.004788505706770704, 0.7107844374668939, + 0.004866891449054713, 0.7349355366345482, + 0.001306017463771605, 0.001586222301823758, + 0.007116548254584538, 0.001830990793066982, + 0.03359140173567671, 0.002045006139498853, + 0.06799831246271334, 0.002232854278235691, + 0.1050539332243899, 0.002398561178839865, + 0.1421907384347976, 0.002545520579058178, + 0.1781532257250431, 0.002676548965485182, + 0.2123547392925449, 0.002793973015829898, + 0.2445602455405584, 0.002899716152387136, + 0.2747216803842120, 0.002995373840546507, + 0.3028893817005614, 0.003082275794427197, + 0.3291633014860622, 0.003161536205810221, + 0.3536657782024154, 0.003234093916059993, + 0.3765263180987164, 0.003300744456546394, + 0.3978732008486888, 0.003362165629048766, + 0.4178290151302299, 0.003418937992980868, + 0.4365084718269216, 0.003471561346521851, + 0.4540175351893392, 0.003520468055585971, + 0.4704533078136206, 0.003566033899133432, + 0.4859043358175601, 0.003608586955892009, + 0.5004511375120722, 0.003648414949109787, + 0.5141668418466542, 0.003685771386301219, + 0.5271178746069831, 0.003720880775408019, + 0.5393646641028532, 0.003753943164375919, + 0.5509623620882760, 0.003785138236518451, + 0.5619615952404358, 0.003814629199517684, + 0.5724092815186362, 0.003842566733485300, + 0.5823495672538734, 0.003869093316887355, + 0.5918249678197956, 0.003894348333795344, + 0.6008778302882713, 0.003918474488962536, + 0.6095522840022940, 0.003941626226723230, + 0.6178969082896937, 0.003963981072925327, + 0.6259684294183701, 0.003985755098069792, + 0.6338368642128979, 0.004007224021775936, + 0.6415926549632834, 0.004028751796394626, + 0.6493564801329609, 0.004050828701392520, + 0.6572925493481835, 0.004074120789204574, + 0.6656262309872097, 0.004099531432075899, + 0.6746666723127143, 0.004128272797582476, + 0.6848343774930394, 0.004161938830162795, + 0.6966920189552035, 0.004202559743668019, + 0.7109733150553114, 0.004252599514137185, + 0.7285986885865631, 0.004314833901724070, + 0.7506571441023483, 0.001156343000755387, + 0.001404504257957441, 0.007120061440091347, + 0.001621310545540372, 0.03361118414788869, + 0.001810903712325119, 0.06804470745318069, + 0.001977340288814310, 0.1051351961493040, + 0.002124181703071103, 0.1423133589772792, + 0.002254430165931555, 0.1783222117476625, + 0.002370577235911165, 0.2125738546054181, + 0.002474681149731246, 0.2448322054772776, + 0.002568443387429520, 0.2750483122588739, + 0.002653275289328116, 0.3032717571879833, + 0.002730353093366796, 0.3296018469202774, + 0.002800662377663822, 0.3541603675689819, + 0.002865033605362301, 0.3770763523850850, + 0.002924170474532069, 0.3984776764701321, + 0.002978672551304409, 0.4184865833334669, + 0.003029053394756756, 0.4372174902153924, + 0.003075755134140899, 0.4547761117084665, + 0.003119160251996799, 0.4712593365381469, + 0.003159601161354295, 0.4867555224942895, + 0.003197368036290039, 0.5013450107382228, + 0.003232715256012342, 0.5151007425806035, + 0.003265866747398978, 0.5280889117936882, + 0.003297020454653708, 0.5403696166527656, + 0.003326352123823280, 0.5519974959907685, + 0.003354018561785408, 0.5630223474016425, + 0.003380160512425799, 0.5734897364461758, + 0.003404905286403203, 0.5834416154573392, + 0.003428369285319778, 0.5929169809805325, + 0.003450660577239604, 0.6019526114875673, + 0.003471881710106394, 0.6105839432336187, + 0.003492132995268978, 0.6188461635645998, + 0.003511516558294448, 0.6267756293962285, + 0.003530141542180836, 0.6344117559126738, + 0.003548130962196775, 0.6417995687010485, + 0.003565630852851213, 0.6489931729721409, + 0.003582822510857449, 0.6560604660107810, + 0.003599938804777734, 0.6630894993854867, + 0.003617285646093928, 0.6701969730666828, + 0.003635269699036237, 0.6775393849143700, + 0.003654433055424882, 0.6853273049469121, + 0.003675494570182433, 0.6938429782822218, + 0.003699395273559710, 0.7034607793792287, + 0.003727340922414418, 0.7146686166221225, + 0.003760827388752240, 0.7280857713064263, + 0.003801623782166765, 0.7444684055765861, + 0.003851675608889073, 0.7646881040691488, + 0.001031010001534118, 0.001252325311246044, + 0.007123010369617354, 0.001445699377070109, + 0.03362780174930066, 0.001614821702453833, + 0.06808371387504373, 0.001763306316297053, + 0.1052035845952689, 0.001894326321527065, + 0.1424166653656900, 0.002010556629704488, + 0.1784647514196653, 0.002114217175592618, + 0.2127589198858749, 0.002207141797804957, + 0.2450622274788554, 0.002290846453223580, + 0.2753249929535957, 0.002366588574329418, + 0.3035961777269406, 0.002435416111636774, + 0.3299745572968218, 0.002498207136828419, + 0.3545814616992661, 0.002555701517785104, + 0.3775455317600242, 0.002608526182258946, + 0.3989943047683779, 0.002657215287010062, + 0.4190497337604562, 0.002702226368977643, + 0.4378259868084232, 0.002743953334055468, + 0.4554285653702798, 0.002782736954335406, + 0.4719541760694932, 0.002818873396984337, + 0.4874910203110806, 0.002852621192436532, + 0.5021193021763500, 0.002884206960364913, + 0.5159118365654818, 0.002913830143454304, + 0.5289346889752990, 0.002941666946802540, + 0.5412478085861132, 0.002967873641281116, + 0.5529056351590590, 0.002992589359741792, + 0.5639576722484762, 0.003015938493650994, + 0.5744490272864715, 0.003038032783280771, + 0.5844209250482745, 0.003058973186216636, + 0.5939112061179864, 0.003078851606347056, + 0.6029548271815797, 0.003097752568780461, + 0.6115843860580712, 0.003115754935792624, + 0.6198307020754208, 0.003132933775825234, + 0.6277234924693847, 0.003149362522988406, + 0.6352921987752219, 0.003165115600029473, + 0.6425670346395947, 0.003180271725033977, + 0.6495803491305275, 0.003194918182718492, + 0.6563684284758635, 0.003209156415539186, + 0.6629738949529550, 0.003223109375845204, + 0.6694489043071365, 0.003236931170179888, + 0.6758593906225592, 0.003250819601641628, + 0.6822906541085610, 0.003265032236292007, + 0.6888546193197504, 0.003279906508904962, + 0.6956990815908923, 0.003295884006098741, + 0.7030191567938097, 0.003313538195666039, + 0.7110708644516797, 0.003333603169205194, + 0.7201861618009667, 0.003356997989054186, + 0.7307875953685270, 0.003384836571738381, + 0.7433987921789071, 0.003418406731492194, + 0.7586440923075351, 0.003459095390889103, + 0.7772269308571649, 0.0009250365544833106, + 0.001123642957047639, 0.007125507954787448, + 0.001297191729022396, 0.03364188485222631, + 0.001448990578148682, 0.06811679517715986, + 0.001582279947362813, 0.1052616326176499, + 0.001699905063056458, 0.1425044323407192, + 0.001804264479385807, 0.1785859728026249, + 0.001897348784865108, 0.2129164803933608, + 0.001980802350907045, 0.2452582966079122, + 0.002055984495008354, 0.2755611351402767, + 0.002124022707017878, 0.3038734422531415, + 0.002185856628127736, 0.3302935522984499, + 0.002242273566275012, 0.3549424157624133, + 0.002293936902368478, 0.3779483458160068, + 0.002341408747104221, 0.3994385963604223, + 0.002385168029019629, 0.4195348752453025, + 0.002425624979060079, 0.4383511386477932, + 0.002463132778750725, 0.4559927053277270, + 0.002497996973377256, 0.4725561248235422, + 0.002530483119020393, 0.4881294636884907, + 0.002560823028544199, 0.5027928098555960, + 0.002589219901343181, 0.5166188766435952, + 0.002615852559843530, 0.5296736371549673, + 0.002640878968300298, 0.5420169498193963, + 0.002664439173073012, 0.5537031542330661, + 0.002686657775798838, 0.5647816278134981, + 0.002707646029843779, 0.5752973009271112, + 0.002727503634730079, 0.5852911327970665, + 0.002746320291944519, 0.5948005537838443, + 0.002764177077984035, 0.6038598823048999, + 0.002781147686318178, 0.6125007272671443, + 0.002797299589001256, 0.6207523898606690, + 0.002812695171020565, 0.6286422822922934, + 0.002827392896389240, 0.6361963859104227, + 0.002841448574941446, 0.6434397776056558, + 0.002854916813399088, 0.6503972618317222, + 0.002867852754331386, 0.6570941566018360, + 0.002880314232961717, 0.6635572959395679, + 0.002892364515113282, 0.6698163290468718, + 0.002904075820167642, 0.6759054182903871, + 0.002915533879795195, 0.6818654639717365, + 0.002926843832981620, 0.6877470127613112, + 0.002938137802322835, 0.6936140357564597, + 0.002949584518825127, 0.6995487849121559, + 0.002961401330692262, 0.7056579402322907, + 0.002973868789530239, 0.7120802208967371, + 0.002987347661611534, 0.7189955103325420, + 0.003002297518260188, 0.7266352712733982, + 0.003019294818352010, 0.7352935018498777, + 0.003039046378540213, 0.7453365750657752, + 0.003062391179964571, 0.7572088751614536, + 0.003090279763155639, 0.7714291475982730, + 0.003123717004293759, 0.7885701646946724, + 0.0008345540180276686, 0.001013764009388037, + 0.007127645881665573, 0.001170376416196646, + 0.03365394644507796, 0.001307373442880687, + 0.06814514556190448, 0.001427676957022642, + 0.1053114143093287, 0.001533852566639599, + 0.1425797600037836, 0.001628063138328361, + 0.1786901034175123, 0.001712103666468225, + 0.2130519545476170, 0.001787456941371129, + 0.2454270534974888, 0.001855348698944282, + 0.2757646057348834, 0.001916795617374952, + 0.3041126250272165, 0.001972644976800254, + 0.3305690752776119, 0.002023606687518786, + 0.3552545878917464, 0.002070278907560604, + 0.3782971999927905, 0.002113168475544262, + 0.3998239259305988, 0.002152707223367783, + 0.4199562653334393, 0.002189265039122685, + 0.4388079933534241, 0.002223160371923681, + 0.4564842715530542, 0.002254668720923272, + 0.4730815132757386, 0.002284029531207622, + 0.4886876674022503, 0.002311451825653930, + 0.5033827203854437, 0.002337118829323729, + 0.5172392978550550, 0.002361191787080918, + 0.5303232962672809, 0.002383813132113577, + 0.5426945049786824, 0.002405109129935129, + 0.5544071973678512, 0.002425192096951206, + 0.5655106807683926, 0.002444162273064263, + 0.5760498017810869, 0.002462109412745146, + 0.5860654077087350, 0.002479114147565534, + 0.5955947674756841, 0.002495249164658244, + 0.6046719571441241, 0.002510580239462893, + 0.6133282164799120, 0.002525167157099261, + 0.6215922842757839, 0.002539064554606323, + 0.6294907215579771, 0.002552322716028421, + 0.6370482335961646, 0.002564988353967443, + 0.6442880040095037, 0.002577105414898926, + 0.6512320574262512, 0.002588715951514404, + 0.6579016713460415, 0.002599861113932935, + 0.6643178633382018, 0.002610582323220381, + 0.6705019867831056, 0.002620922705689986, + 0.6764764773431096, 0.002630928885293276, + 0.6822658035386095, 0.002640653254172355, + 0.6878976884216645, 0.002650156867702621, + 0.6934046853762110, 0.002659513138546438, + 0.6988262090327137, 0.002668812530675645, + 0.7042111407137301, 0.002678168471535181, + 0.7096211435207562, 0.002687724694622147, + 0.7151348288632315, 0.002697664171457851, + 0.7208529025232651, 0.002708219651065415, + 0.7269043646867752, 0.002719685534125355, + 0.7334537129952923, 0.002732430278157871, + 0.7407088522578688, 0.002746907645451310, + 0.7489289818382320, 0.002763663754705104, + 0.7584310317783358, 0.002783335043530471, + 0.7695921849731747, 0.002806630086397274, + 0.7828446706602086, 0.002834286424739216, + 0.7986575762535248, 0.0007568003719318281, + 0.0009193373558789463, 0.007129483255703461, + 0.001061389190056637, 0.03366431715745472, + 0.001185658720812506, 0.06816953450862767, + 0.001294794350315917, 0.1053542656584974, + 0.001391121645368222, 0.1426446444034435, + 0.001476601139740284, 0.1787798638427945, + 0.001552859914551620, 0.2131688271751633, + 0.001621242048290884, 0.2455727658693272, + 0.001682858604168091, 0.2759404560655418, + 0.001738631136850422, 0.3043195464558018, + 0.001789327643414803, 0.3308076883028777, + 0.001835591597189766, 0.3555252435875009, + 0.001877965170693660, 0.3786000160301540, + 0.001916907758736738, 0.4001588169674569, + 0.001952810766576543, 0.4203229689645817, + 0.001986009452068925, 0.4392060925299616, + 0.002016792448794289, 0.4569132141578328, + 0.002045409461693157, 0.4735406293653057, + 0.002072077518345742, 0.4891761844801786, + 0.002096986074148179, 0.5038997769424400, + 0.002120301203878496, 0.5177839552843484, + 0.002142169061433792, 0.5308945491240521, + 0.002162718750455528, 0.5432912893815535, + 0.002182064718440740, 0.5550283971155782, + 0.002200308763672422, 0.5661551304354499, + 0.002217541726297687, 0.5767162856210821, + 0.002233844920932215, 0.5867526525797927, + 0.002249291357368938, 0.5963014271336025, + 0.002263946787643312, 0.6053965840290423, + 0.002277870611359356, 0.6140692154201157, + 0.002291116666449641, 0.6223478401763524, + 0.002303733929177061, 0.6302586899076299, + 0.002315767145022433, 0.6378259782215101, + 0.002327257411049353, 0.6450721605572670, + 0.002338242730369626, 0.6520181930839076, + 0.002348758560479908, 0.6586838007193958, + 0.002358838379587591, 0.6650877664469207, + 0.002368514298725632, 0.6712482569089239, + 0.002377817752650840, 0.6771832029067319, + 0.002386780309439892, 0.6829107580966474, + 0.002395434647564189, 0.6884498650357838, + 0.002403815760225585, 0.6938209649667989, + 0.002411962459936224, 0.6990468964641347, + 0.002419919271518965, 0.7041540382931724, + 0.002427738818137931, 0.7091737632918418, + 0.002435484820891955, 0.7141442820039481, + 0.002443235844427740, 0.7191129655073966, + 0.002451089922557623, 0.7241392431779231, + 0.002459170177943326, 0.7292981672564718, + 0.002467631490367586, 0.7346847122783368, + 0.002476668140634181, 0.7404188178940524, + 0.002486522120258960, 0.7466510642206331, + 0.002497491395393781, 0.7535686551625321, + 0.002509936783254573, 0.7614010329283727, + 0.002524285190189721, 0.7704239097236394, + 0.002541025785320841, 0.7809597539113882, + 0.002560694413103588, 0.7933718506147267, + 0.002583840650378180, 0.8080481691101191, + 0.0006694334606038313, 0.0008132301052210061, + 0.007131535707087396, 0.0009389134630471259, + 0.03367590696807291, 0.001048872877008853, + 0.06819680438492585, 0.001145449798724469, + 0.1054022066039507, 0.001230700342275683, + 0.1427172823544694, 0.001306357911890783, + 0.1788804222099017, 0.001373861096813421, + 0.2132998613259399, 0.001434398265869949, + 0.2457362721216975, 0.001488951760223115, + 0.2761379595225904, 0.001538336359526358, + 0.3045521719476219, 0.001583231069003380, + 0.3310762180672609, 0.001624204791259703, + 0.3558301646036297, 0.001661736860472097, + 0.3789415592809941, 0.001696233421123923, + 0.4005369903859170, 0.001728040504318892, + 0.4207375854097784, 0.001757454499192354, + 0.4396567938240963, 0.001784730573761186, + 0.4573994919708219, 0.001810089479804955, + 0.4740618435452991, 0.001833723080526557, + 0.4897315792782505, 0.001855798864682184, + 0.5044884954562696, 0.001876463652712977, + 0.5184050523373731, 0.001895846655550170, + 0.5315470026926565, 0.001914062012192412, + 0.5439740105721099, 0.001931210905475803, + 0.5557402385626821, 0.001947383334819745, + 0.5668948928266588, 0.001962659608717758, + 0.5774827218315940, 0.001977111607276341, + 0.5875444685962498, 0.001990803855373865, + 0.5971172785245406, 0.002003794439402125, + 0.6062350661340985, 0.002016135794604195, + 0.6149288446198813, 0.002027875385387674, + 0.6232270224896007, 0.002039056297414846, + 0.6311556716380911, 0.002049717757561867, + 0.6387387713071162, 0.002059895595863033, + 0.6459984324868040, 0.002069622662222278, + 0.6529551075171532, 0.002078929209927277, + 0.6596277899957604, 0.002087843257818011, + 0.6660342106414446, 0.002096390943345113, + 0.6721910355553485, 0.002104596879732886, + 0.6781140744196829, 0.002112484532090143, + 0.6838185076461196, 0.002120076629662863, + 0.6893191434072465, 0.002127395634587425, + 0.6946307179415828, 0.002134464291583733, + 0.6997682556089891, 0.002141306288121780, + 0.7047475089834524, 0.002147947060772256, + 0.7095855038862377, 0.002154414790705499, + 0.7143012197281974, 0.002160741639474206, + 0.7189164418059094, 0.002166965284859545, + 0.7234568290808686, 0.002173130824735037, + 0.7279532479715103, 0.002179293122829263, + 0.7324434288116620, 0.002185519670818465, + 0.7369740050569291, 0.002191894031123936, + 0.7416029929155098, 0.002198519895768168, + 0.7464027556828451, 0.002205525735899346, + 0.7514634645503588, 0.002213069905688267, + 0.7568970038541067, 0.002221345878507691, + 0.7628411564127120, 0.002230587003169685, + 0.7694637214568848, 0.002241069745958558, + 0.7769659387231029, 0.002253113820886843, + 0.7855841979737009, 0.002267076946734208, + 0.7955885073370143, 0.002283341347108146, + 0.8072756369544127, 0.002302288836034036, + 0.8209544135936097, 0.0005959608869219697, + 0.0007239930216451945, 0.007133279984105104, + 0.0008359051841424598, 0.03368576099913345, + 0.0009338233700778646, 0.06822000216330427, + 0.001019831142421348, 0.1054430127732599, + 0.001095758216195270, 0.1427791507549994, + 0.001163147152914922, 0.1789661337538298, + 0.001223278163696114, 0.2134116378937676, + 0.001277208785600386, 0.2458758686973440, + 0.001325813205911649, 0.2763067382696023, + 0.001369816492784942, 0.3047511618662466, + 0.001409822883247175, 0.3313061633300986, + 0.001446338629616970, 0.3560915640558304, + 0.001479790274040400, 0.3792346990474591, + 0.001510539225034315, 0.4008619710852165, + 0.001538893395093506, 0.4210943451273732, + 0.001565116520065816, 0.4400451277298846, + 0.001589435653602577, 0.4578190692609130, + 0.001612047223434259, 0.4745122222302962, + 0.001633121950929719, 0.4902122192180130, + 0.001652808868600187, 0.5049987699443599, + 0.001671238618449212, 0.5189442584592429, + 0.001688526174140261, 0.5321143706133679, + 0.001704773099175760, 0.5445687118458739, + 0.001720069429524861, 0.5563613934916154, + 0.001734495250750528, 0.5675415768232118, + 0.001748122025406067, 0.5781539706502275, + 0.001761013715337100, 0.5882392821853880, + 0.001773227734809691, 0.5978346230971775, + 0.001784815763538346, 0.6069738738486110, + 0.001795824443291854, 0.6156880099806808, + 0.001806295977494385, 0.6240053941930317, + 0.001816268649874427, 0.6319520380671680, + 0.001825777275563891, 0.6395518371737207, + 0.001834853595977716, 0.6468267831733791, + 0.001843526627209035, 0.6537971564070679, + 0.001851822970482422, 0.6604817024077319, + 0.001859767092366030, 0.6668977957794100, + 0.001867381581918830, 0.6730615950017611, + 0.001874687391723729, 0.6789881919521959, + 0.001881704069826390, 0.6846917603173716, + 0.001888449989971118, 0.6901857076183885, + 0.001894942588218185, 0.6954828363313554, + 0.001901198615070921, 0.7005955205839351, + 0.001907234413674205, 0.7055359061912127, + 0.001913066236513566, 0.7103161434075709, + 0.001918710615393293, 0.7149486637645913, + 0.001924184802344570, 0.7194465147858177, + 0.001929507302533566, 0.7238237692546146, + 0.001934698524185406, 0.7280960290730413, + 0.001939781574913619, 0.7322810475484290, + 0.001944783238404899, 0.7363994980480986, + 0.001949735169676031, 0.7404759210790995, + 0.001954675350226750, 0.7445398854214426, + 0.001959649844884542, 0.7486274009877383, + 0.001964714897577384, 0.7527826199581922, + 0.001969939389932244, 0.7570598558183508, + 0.001975407658858821, 0.7615259331570643, + 0.001981222619086292, 0.7662628484770114, + 0.001987509053119538, 0.7713706654164001, + 0.001994416800895364, 0.7769704756416124, + 0.002002123390500117, 0.7832071162571111, + 0.002010835389853712, 0.7902511335384258, + 0.002020787431823991, 0.7982992156041412, + 0.002032237508156190, 0.8075719965967809, + 0.002045456833973120, 0.8183078136932541, + 0.002060712530690398, 0.8307507916355182, + 0.0005338928457208802, 0.0006486041055927330, + 0.007134757145335637, 0.0007488783022520046, + 0.03369410911427631, 0.0008366191792139075, + 0.06823966328875076, 0.0009136926200367255, + 0.1054776147161770, 0.0009817372289705743, + 0.1428316413133060, 0.001042134467481678, + 0.1790388973189992, 0.001096030851195136, + 0.2135065916571426, 0.001144373475917349, + 0.2459945403613866, 0.001187945232547193, + 0.2764503284138904, 0.001227395462237520, + 0.3049205940601908, 0.001263265290388587, + 0.3315021246228428, 0.001296008087702652, + 0.3563145379544189, 0.001326005836926910, + 0.3794849926333959, 0.001353582187798311, + 0.4011397375442878, 0.001379012879924876, + 0.4213996026736057, 0.001402534089465843, + 0.4403777756781442, 0.001424349141395722, + 0.4581789018294929, 0.001444633933714447, + 0.4748989405223802, 0.001463541343583908, + 0.4906254417290438, 0.001481204825549461, + 0.5054380418632013, 0.001497741365648968, + 0.5194090599684319, 0.001513253919449596, + 0.5326041243428160, 0.001527833434485045, + 0.5450827895910497, 0.001541560536285142, + 0.5568991222679660, 0.001554506940716115, + 0.5681022442899654, 0.001566736642551277, + 0.5787368298952323, 0.001578306920207553, + 0.5888435558143096, 0.001589269188760702, + 0.5984595065104622, 0.001599669727196656, + 0.6076185375122531, 0.001609550300992578, + 0.6163516003945891, 0.001618948697263611, + 0.6246870331241742, 0.001627899186642147, + 0.6326508194315294, 0.001636432923609736, + 0.6402668207058439, 0.001644578295050302, + 0.6475569836949800, 0.001652361225240263, + 0.6545415270716049, 0.001659805444262448, + 0.6612391097238539, 0.001666932725870720, + 0.6676669834625878, 0.001673763100099416, + 0.6738411327196651, 0.001680315045376260, + 0.6797764037527307, 0.001686605664538830, + 0.6854866258810527, 0.001692650848960719, + 0.6909847273635962, 0.001698465434958682, + 0.6962828487057689, 0.001704063356777271, + 0.7013924564580136, 0.001709457800739110, + 0.7063244609630222, 0.001714661365618782, + 0.7110893420369401, 0.001719686234962450, + 0.7156972872545727, 0.001724544367953908, + 0.7201583483730915, 0.001729247716543003, + 0.7244826224989144, 0.001733808477926433, + 0.7286804659046311, 0.001738239393121469, + 0.7327627499609472, 0.001742554104306060, + 0.7367411704788124, 0.001746767585796486, + 0.7406286238588718, 0.001750896665936375, + 0.7444396657879347, 0.001754960659646605, + 0.7481910707203003, 0.001758982133685755, + 0.7519025128611727, 0.001762987828362212, + 0.7555973915123057, 0.001767009759806471, + 0.7593038249053531, 0.001771086524820975, + 0.7630558361569231, 0.001775264824037991, + 0.7668947513550588, 0.001779601206067178, + 0.7708708209501843, 0.001784164011861242, + 0.7750450585439046, 0.001789035459753730, + 0.7794912616154927, 0.001794313751342973, + 0.7842981311142257, 0.001800114989664162, + 0.7895713343902400, 0.001806574577713146, + 0.7954352514919308, 0.001813847605191753, + 0.8020340030828954, 0.001822107542131273, + 0.8095311799649906, 0.001831542366827648, + 0.8181074940047334, 0.001842347120393410, + 0.8279553875468303, 0.001854711901010908, + 0.8392695503623823, 0.0004691372119147557, + 0.0005699474625461372, 0.007136296792849224, + 0.0006580754336890405, 0.03370281338535284, + 0.0007351932064547252, 0.06826017144205968, + 0.0008029397345236971, 0.1055137237879695, + 0.0008627543786402343, 0.1428864460309730, + 0.0009158506408206921, 0.1791149115084724, + 0.0009632356479495138, 0.2136058483079311, + 0.001005741352235223, 0.2461186723532833, + 0.001044055462224991, 0.2766006332016539, + 0.001078748370226813, 0.3050980855476346, + 0.001110295406319466, 0.3317075749743232, + 0.001139094812215725, 0.3565485115490737, + 0.001165482118715345, 0.3797478738863422, + 0.001189741614017051, 0.4014317539275095, + 0.001212115499934443, 0.4217208439626945, + 0.001232811224277848, 0.4407282102151493, + 0.001252007377470389, 0.4585583904118685, + 0.001269858457651580, 0.4753072483903950, + 0.001286498741428814, 0.4910622490186240, + 0.001302045444889013, 0.5059029528099534, + 0.001316601318761973, 0.5199016110853500, + 0.001330256790211312, 0.5331237917441728, + 0.001343091739511245, 0.5456289955944984, + 0.001355176981171679, 0.5574712413729396, + 0.001366575504600436, 0.5686996086005114, + 0.001377343518145096, 0.5793587340271479, + 0.001387531331581560, 0.5894892612975623, + 0.001397184105238413, 0.5991282456659598, + 0.001406342488530390, 0.6083095167442896, + 0.001415043166390284, 0.6170640027934311, + 0.001423319328684793, 0.6254200202131955, + 0.001431201074983781, 0.6334035318149531, + 0.001438715764876940, 0.6410383772701038, + 0.001445888322283529, 0.6483464788808477, + 0.001452741500792328, 0.6553480255553266, + 0.001459296115932730, 0.6620616376107076, + 0.001465571249361709, 0.6685045147893643, + 0.001471584429214883, 0.6746925696634154, + 0.001477351790282003, 0.6806405484266425, + 0.001482888217204235, 0.6863621409335069, + 0.001488207473534721, 0.6918700817451654, + 0.001493322319242184, 0.6971762438844605, + 0.001498244619060822, 0.7022917269886535, + 0.001502985443992799, 0.7072269415837240, + 0.001507555168249840, 0.7119916912919050, + 0.001511963563977790, 0.7165952549304837, + 0.001516219896245011, 0.7210464706718194, + 0.001520333020996940, 0.7253538247205133, + 0.001524311488991586, 0.7295255473336399, + 0.001528163659142506, 0.7335697194752111, + 0.001531897825216204, 0.7374943939689233, + 0.001535522360469415, 0.7413077357064542, + 0.001539045885576599, 0.7450181862940887, + 0.001542477466093639, 0.7486346594874230, + 0.001545826846727079, 0.7521667748753935, + 0.001549104730812699, 0.7556251385226099, + 0.001552323114613247, 0.7590216806350385, + 0.001555495687246740, 0.7623700617184821, + 0.001558638308120671, 0.7656861600411088, + 0.001561769574454004, 0.7689886543012415, + 0.001564911491470015, 0.7722997159327905, + 0.001568090256606748, 0.7756458249739051, + 0.001571337165828147, 0.7790587211550291, + 0.001574689643692269, 0.7825764967678216, + 0.001578192387667105, 0.7862448284470696, + 0.001581898599185298, 0.7901183291700260, + 0.001585871246475873, 0.7942619768635446, + 0.001590184264311382, 0.7987525387422443, + 0.001594923540574454, 0.8036798573342322, + 0.001600187467232215, 0.8091477920349469, + 0.001606086745205357, 0.8152745179862013, + 0.001612743036112452, 0.8221917759509073, + 0.001620285966641179, 0.8300425555166407, + 0.001628847946012576, 0.8389766067695471, + 0.001638556304338204, 0.8491431596995497, + 0.0004152983993727092, 0.0005045486166497230, + 0.007137584516676377, 0.0005825747502812775, + 0.03371009582559231, 0.0006508564339714855, + 0.06827733616228911, 0.0007108440797559780, + 0.1055439591076286, 0.0007638115008710665, + 0.1429323580617065, 0.0008108326421179146, + 0.1791786256178479, 0.0008527988118498596, + 0.2136890926697665, 0.0008904462894848839, + 0.2462228452780043, 0.0009243836974156776, + 0.2767268570137912, 0.0009551158310881699, + 0.3052472497196298, 0.0009830633537396637, + 0.3318803708195339, 0.001008578703487142, + 0.3567454603219721, 0.001031958817701520, + 0.3799693497349148, 0.001053455282818112, + 0.4016780028151404, 0.001073282437929197, + 0.4219919994202545, 0.001091623864253886, + 0.4410243065866673, 0.001108637603920062, + 0.4588793741064279, 0.001124460377322258, + 0.4756529875379346, 0.001139211008944395, + 0.4914325418394411, 0.001152993225032100, + 0.5062975349402129, 0.001165897950461469, + 0.5203201620487163, 0.001178005204347923, + 0.5335659407189512, 0.001189385672505494, + 0.5460943265934672, 0.001200102018320324, + 0.5579592979271204, 0.001210209980791963, + 0.5692098980166754, 0.001219759298541784, + 0.5798907312704116, 0.001228794490820103, + 0.5900424125337194, 0.001237355520454566, + 0.5997019714820298, 0.001245478358886877, + 0.6089032150489527, 0.001253195469650359, + 0.6176770513802826, 0.001260536223624142, + 0.6260517789476357, 0.001267527256990541, + 0.6340533443783142, 0.001274192780889601, + 0.6417055723602077, 0.001280554850208162, + 0.6490303707240170, 0.001286633597682126, + 0.6560479135277237, 0.001292447438469551, + 0.6627768046927827, 0.001298013249521533, + 0.6692342244811717, 0.001303346527400884, + 0.6754360608644642, 0.001308461527646537, + 0.6813970276241349, 0.001313371388331951, + 0.6871307708378881, 0.001318088240100810, + 0.6926499652502783, 0.001322623304669488, + 0.6979664018971263, 0.001326986983552337, + 0.7030910682519399, 0.001331188938584919, + 0.7080342220886105, 0.001335238165685898, + 0.7128054602082953, 0.001339143063206245, + 0.7174137831602817, 0.001342911496162030, + 0.7218676570980016, 0.001346550857633121, + 0.7261750739540748, 0.001350068128634278, + 0.7303436111948426, 0.001353469937828520, + 0.7343804925285762, 0.001356762622556962, + 0.7382926510963945, 0.001359952292807390, + 0.7420867968756576, 0.001363044899939134, + 0.7457694902776256, 0.001366046312228174, + 0.7493472242304510, 0.001368962399598178, + 0.7528265174113487, 0.001371799130263930, + 0.7562140217340938, 0.001374562682436201, + 0.7595166477149035, 0.001377259574721566, + 0.7627417119340626, 0.001379896819392827, + 0.7658971114809663, 0.001382482103293908, + 0.7689915310079312, 0.001385024001753947, + 0.7720346888027838, 0.001387532231477270, + 0.7750376290830836, 0.001390017948880056, + 0.7780130684490018, 0.001392494100651911, + 0.7809758049987551, 0.001394975833264466, + 0.7839431988406547, 0.001397480967482131, + 0.7869357323732872, 0.001400030542294373, + 0.7899776573739077, 0.001402649429581176, + 0.7930977330965135, 0.001405367015557528, + 0.7963300544867956, 0.001408217936717937, + 0.7997149612640727, 0.001411242845492577, + 0.8033000057004371, 0.001414489162825236, + 0.8071409378596117, 0.001418011750045248, + 0.8113026400715047, 0.001421873399672547, + 0.8158599058260445, 0.001426145003995468, + 0.8208979110240450, 0.001430905213100405, + 0.8265121682023010, 0.001436239345537763, + 0.8328076907174900, 0.001442237275146430, + 0.8398970330439564, 0.001448990003811190, + 0.8478968323160648, 0.001456584666833031, + 0.8569224819892680, 0.0003704312646343119, + 0.0004500459652486567, 0.007138650748115411, + 0.0005196512293102546, 0.03371612727399277, + 0.0005805664280060180, 0.06829155668533947, + 0.0006340849446568049, 0.1055690170651003, + 0.0006813427081724704, 0.1429704232383565, + 0.0007232974239492588, 0.1792314731911011, + 0.0007607439326118729, 0.2137581723047245, + 0.0007943388257980795, 0.2463093367632228, + 0.0008246248539513288, 0.2768317147355182, + 0.0008520521766292996, 0.3053712382217758, + 0.0008769959255269664, 0.3320240933589542, + 0.0008997703900142133, 0.3569093819512950, + 0.0009206403645220593, 0.3801538161111002, + 0.0009398302000432457, 0.4018832556603875, + 0.0009575310308788060, 0.4222181893493448, + 0.0009739065619456522, 0.4412715038513685, + 0.0009890977229041295, 0.4591475776827830, + 0.001003226429225417, 0.4759421328870969, + 0.001016398637371945, 0.4917425076000317, + 0.001028706839793818, 0.5066281487544273, + 0.001040232113307033, 0.5206712056814181, + 0.001051045809625145, 0.5339371545956020, + 0.001061210957702222, 0.5464854138565951, + 0.001070783432788909, 0.5583699280903157, + 0.001079812935679248, 0.5696397102784545, + 0.001088343816748556, 0.5803393375366302, + 0.001096415772455089, 0.5905094001856708, + 0.001104064436547561, 0.6001869059172129, + 0.001111321883943327, 0.6094056420120871, + 0.001118217061857135, 0.6181964990928702, + 0.001124776160068879, 0.6265877600346048, + 0.001131022930068676, 0.6346053575793632, + 0.001136978961092068, 0.6422731040006305, + 0.001142663919667303, 0.6496128959041625, + 0.001148095758170784, 0.6566448969707471, + 0.001153290896971796, 0.6633877011656901, + 0.001158264384001310, 0.6698584786727629, + 0.001163030034968892, 0.6760731065636836, + 0.001167600556950560, 0.6820462859911614, + 0.001171987657658222, 0.6877916474950851, + 0.001176202142362038, 0.6933218458373045, + 0.001180254000157654, 0.6986486456296808, + 0.001184152481040773, 0.7037829988914664, + 0.001187906165063826, 0.7087351155643580, + 0.001191523024697338, 0.7135145279256490, + 0.001195010481397003, 0.7181301497708876, + 0.001198375457282797, 0.7225903311867283, + 0.001201624422765785, 0.7269029097019594, + 0.001204763440909706, 0.7310752585900764, + 0.001207798209286642, 0.7351143331006848, + 0.001210734100078424, 0.7390267154202931, + 0.001213576199187821, 0.7428186592069160, + 0.001216329345156313, 0.7464961346090013, + 0.001218998168739366, 0.7500648747695434, + 0.001221587134066625, 0.7535304249333266, + 0.001224100582415115, 0.7568981954218305, + 0.001226542779750137, 0.7601735199195562, + 0.001228917969342930, 0.7633617207306558, + 0.001231230430958390, 0.7664681829190014, + 0.001233484548321435, 0.7694984395410563, + 0.001235684886817594, 0.7724582705209949, + 0.001237836283660978, 0.7753538181016055, + 0.001239943953067019, 0.7781917222296842, + 0.001242013609290138, 0.7809792796931293, + 0.001244051610712973, 0.7837246313034256, + 0.001246065128479356, 0.7864369818849385, + 0.001248062343408890, 0.7891268582478557, + 0.001250052675057249, 0.7918064106168962, + 0.001252047046705140, 0.7944897630608011, + 0.001254058189642781, 0.7971934181681546, + 0.001256100989185991, 0.7999367203284967, + 0.001258192873167162, 0.8027423802037812, + 0.001260354240858018, 0.8056370599049799, + 0.001262608925972372, 0.8086520134810325, + 0.001264984681034516, 0.8118237698928188, + 0.001267513661363494, 0.8151948348470072, + 0.001270232874562430, 0.8188143727609828, + 0.001273184545147458, 0.8227388097836817, + 0.001276416323542609, 0.8270322725064919, + 0.001279981244520295, 0.8317667447053557, + 0.001283937313921567, 0.8370217873957335, + 0.001288346577738765, 0.8428836291187909, + 0.001293273510746542, 0.8494434005718798, + 0.001298782562596834, 0.8567942719004841, + 0.001304934730786103, 0.8650272688993226, + 0.0003247324487808653, 0.0003945315229438140, + 0.007139767532965116, 0.0004555578699667749, + 0.03372244637254624, 0.0005089677216150194, + 0.06830646000320411, 0.0005558945983563953, + 0.1055952873791690, 0.0005973340508520150, + 0.1430103457525390, 0.0006341254407194094, + 0.1792869234600663, 0.0006669653938797302, + 0.2138306885390802, 0.0006964293711881412, + 0.2464001780084456, 0.0007229930587138452, + 0.2769419073380583, 0.0007470509916283250, + 0.3055016129403092, 0.0007689319468807855, + 0.3321753151236530, 0.0007889113759410096, + 0.3570819738779806, 0.0008072213501811222, + 0.3803481790268297, 0.0008240584940970029, + 0.4020996841123463, 0.0008395903192560990, + 0.4224568848461668, 0.0008539602966613761, + 0.4415325859147346, 0.0008672919359416600, + 0.4594310931563854, 0.0008796920818161035, + 0.4762480638503880, 0.0008912535918781442, + 0.4920707781580621, 0.0009020575233992923, + 0.5069786309167420, 0.0009121749286872399, + 0.5210437244980383, 0.0009216683368023415, + 0.5343314926832955, 0.0009305929826843983, + 0.5469013154214589, 0.0009389978318087510, + 0.5588071025313237, 0.0009469264384779324, + 0.5700978354396460, 0.0009544176680744464, + 0.5808180626619678, 0.0009615063075283847, + 0.5910083486194518, 0.0009682235834936652, + 0.6007056775836025, 0.0009745976039775797, + 0.6099438156993251, 0.0009806537362012611, + 0.6187536345605122, 0.0009864149311092719, + 0.6271633999553797, 0.0009919020030614374, + 0.6351990293204530, 0.0009971338717269585, + 0.6428843212420017, 0.001002127771980826, + 0.6502411600835498, 0.001006899436614548, + 0.6572896985355157, 0.001011463255869661, + 0.6640485206005014, 0.001015832417146389, + 0.6705347872580487, 0.001020019027701906, + 0.6767643668025705, 0.001024034222710236, + 0.6827519516206730, 0.001027888260690500, + 0.6885111629699746, 0.001031590608007845, + 0.6940546451402459, 0.001035150013900340, + 0.6993941502179868, 0.001038574577276322, + 0.7045406145358273, 0.001041871806352736, + 0.7095042277666803, 0.001045048672060125, + 0.7142944955177615, 0.001048111656019274, + 0.7189202961898697, 0.001051066793794383, + 0.7233899327913630, 0.001053919714044959, + 0.7277111803329067, 0.001056675674131018, + 0.7318913293773558, 0.001059339592671662, + 0.7359372262783432, 0.001061916079514346, + 0.7398553106107196, 0.001064409463539858, + 0.7436516502756216, 0.001066823818705570, + 0.7473319747524817, 0.001069162988716224, + 0.7509017069698120, 0.001071430610707160, + 0.7543659942763458, 0.001073630138329335, + 0.7577297390145481, 0.001075764864638867, + 0.7609976292302569, 0.001077837945216411, + 0.7641741700960905, 0.001079852421973832, + 0.7672637166832609, 0.001081811248148003, + 0.7702705087876981, 0.001083717315034678, + 0.7731987086032039, 0.001085573481080025, + 0.7760524421380459, 0.001087382604024221, + 0.7788358453933391, 0.001089147576881027, + 0.7815531164629429, 0.001090871368639801, + 0.7842085748763442, 0.001092557070691845, + 0.7868067296884163, 0.001094207950110233, + 0.7893523580223542, 0.001095827511049306, + 0.7918505959922322, 0.001097419565672728, + 0.7943070441648366, 0.001098988316160812, + 0.7967278899584393, 0.001100538449478067, + 0.7991200496055508, 0.001102075246684770, + 0.8014913325065773, 0.001103604708628230, + 0.8038506309404848, 0.001105133699816469, + 0.8062081381315597, 0.001106670112111886, + 0.8085755975333251, 0.001108223049519360, + 0.8109665857911905, 0.001109803034693859, + 0.8133968310607946, 0.001111422236740111, + 0.8158845670237690, 0.001113094718271409, + 0.8184509208406880, 0.001114836697350123, + 0.8211203301382262, 0.001116666816628120, + 0.8239209796093340, 0.001118606407495873, + 0.8268852415235039, 0.001120679731089786, + 0.8300500959832002, 0.001122914170403457, + 0.8334574957353697, 0.001125340338439976, + 0.8371546264999228, 0.001127992056534935, + 0.8411939971620041, 0.001130906145334969, + 0.8456332754097852, 0.001134121959793832, + 0.8505347650275864, 0.001137680591275090, + 0.8559644039843292, 0.001141623657948933, + 0.8619901524142233, 0.001145991613898916, + 0.8686796434054859, 0.0002875557040695001, + 0.0003493682107340224, 0.007140652840633392, + 0.0004034136512140228, 0.03372745678580264, + 0.0004507156263114678, 0.06831827979235850, + 0.0004922776751319498, 0.1056161282055053, + 0.0005289812044432154, 0.1430420271934089, + 0.0005615693465755460, 0.1793309426893349, + 0.0005906588650957148, 0.2138882776015863, + 0.0006167592500442515, 0.2464723498787023, + 0.0006402916548621664, 0.2770294926804611, + 0.0006616053847329528, 0.3056052894425374, + 0.0006809915244670573, 0.3322956309926026, + 0.0006986939459404484, 0.3572193667731841, + 0.0007149181133975426, 0.3805029914283647, + 0.0007298381072985964, 0.4022721758944257, + 0.0007436022322429452, 0.4226472436509502, + 0.0007563375079342728, 0.4417409357850834, + 0.0007681532808226864, 0.4596575017826150, + 0.0007791441427437137, 0.4764925487070491, + 0.0007893923017930954, 0.4923333117464571, + 0.0007989695184985524, 0.5072591452826548, + 0.0008079386954131118, 0.5213421151585618, + 0.0008163551890154100, 0.5346476220690836, + 0.0008242678979707145, 0.5472350159192663, + 0.0008317201703560293, 0.5591581791948586, + 0.0008387505635876626, 0.5704660684234719, + 0.0008453934839008121, 0.5812032094226068, + 0.0008516797268548300, 0.5914101459193340, + 0.0008576369361234619, 0.6011238433265917, + 0.0008632899945099273, 0.6103780506208373, + 0.0008686613584996434, 0.6192036237904337, + 0.0008737713455743161, 0.6276288144678238, + 0.0008786383818419734, 0.6356795272806593, + 0.0008832792161976796, 0.6433795492571826, + 0.0008877091061492647, 0.6507507543610395, + 0.0008919419795673447, 0.6578132859480015, + 0.0008959905759071083, 0.6645857196542167, + 0.0008998665698679513, 0.6710852089553721, + 0.0009035806799802425, 0.6773276153852716, + 0.0009071427642160033, 0.6833276251737907, + 0.0009105619043959713, 0.6890988538586815, + 0.0009138464808966333, 0.6946539402426604, + 0.0009170042389371524, 0.7000046309052734, + 0.0009200423475395102, 0.7051618563365225, + 0.0009229674520990890, 0.7101357996343394, + 0.0009257857213720340, 0.7149359585989350, + 0.0009285028895757936, 0.7195712019621512, + 0.0009311242942067709, 0.7240498204076717, + 0.0009336549101012279, 0.7283795729669328, + 0.0009360993802001778, 0.7325677293146301, + 0.0009384620434241330, 0.7366211084358048, + 0.0009407469600177421, 0.7405461140927553, + 0.0009429579346863432, 0.7443487674837327, + 0.0009450985378153066, 0.7480347374559778, + 0.0009471721250379737, 0.7516093686126949, + 0.0009491818553984218, 0.7550777076367228, + 0.0009511307083407467, 0.7584445281427596, + 0.0009530214997467334, 0.7617143543649362, + 0.0009548568972384669, 0.7648914839873381, + 0.0009566394349615138, 0.7679800104318763, + 0.0009583715280677518, 0.7709838449309258, + 0.0009600554871248025, 0.7739067387317117, + 0.0009616935326914640, 0.7767523058059454, + 0.0009632878103157287, 0.7795240464721949, + 0.0009648404062341729, 0.7822253723804877, + 0.0009663533640789765, 0.7848596333593397, + 0.0009678287029319074, 0.7874301466854236, + 0.0009692684371035443, 0.7899402294061247, + 0.0009706745980610887, 0.7923932344258478, + 0.0009720492589794330, 0.7947925911586078, + 0.0009733945624476692, 0.7971418516523020, + 0.0009747127519265526, 0.7994447432038601, + 0.0009760062076207416, 0.8017052286081833, + 0.0009772774875013603, 0.8039275753153862, + 0.0009785293742870215, 0.8061164349067315, + 0.0009797649292608988, 0.8082769344340225, + 0.0009809875538617746, 0.8104147812911904, + 0.0009822010600294816, 0.8125363833872510, + 0.0009834097502974072, 0.8146489864477286, + 0.0009846185085894264, 0.8167608302603168, + 0.0009858329025720856, 0.8188813255629256, + 0.0009870592982031829, 0.8210212529979992, + 0.0009883049867630125, 0.8231929850588618, + 0.0009895783241000432, 0.8254107311438275, + 0.0009908888810000608, 0.8276908045991552, + 0.0009922476024127977, 0.8300519088320196, + 0.0009936669716440181, 0.8325154370399047, + 0.0009951611734340783, 0.8351057766377819, + 0.0009967462469844777, 0.8378506048585280, + 0.0009984402163659223, 0.8407811560526175, + 0.001000263181294734, 0.8439324337673380, + 0.001002237346041166, 0.8473433317092810, + 0.001004386958434913, 0.8510566173745598, + 0.001006738125009853, 0.8551187210241215, + 0.001009318463085570, 0.8595792618934147, + 0.001012156547280817, 0.8644902349222623, + 0.001015281108386375, 0.8699047776816512, + 0.001018719948988823, 0.8758754423894201, + 0.0002516072353014572, 0.0003056959967091976, + 0.007141513331248321, 0.0003529898095786411, + 0.03373232773731790, 0.0003943840897337921, + 0.06832977329356830, 0.0004307567414106005, + 0.1056363991444212, 0.0004628788405472162, + 0.1430728515532258, 0.0004914005032824914, + 0.1793737852691615, 0.0005168612968898808, + 0.2139443476569179, 0.0005397069428251232, + 0.2465426458452338, 0.0005603058824394920, + 0.2771148378485354, 0.0005789637011504982, + 0.3057063604036936, 0.0005959350504603019, + 0.3324129804044311, 0.0006114332776489099, + 0.3573534416826857, 0.0006256381290223384, + 0.3806541481236008, 0.0006387018947049087, + 0.4024406920346254, 0.0006507543147370997, + 0.4228333282534617, 0.0006619065080162839, + 0.4419447375155043, 0.0006722541319677103, + 0.4598791158936434, 0.0006818799359437668, + 0.4767320228947860, 0.0006908558354114982, + 0.4925906511342484, 0.0006992446058387721, + 0.5075343166976332, 0.0007071012733743214, + 0.5216350508314642, 0.0007144742625858456, + 0.5349582228611499, 0.0007214063485450536, + 0.5475631541591855, 0.0007279354505312647, + 0.5595037011924066, 0.0007340952968696949, + 0.5708287967136168, 0.0007399159843938746, + 0.5815829447836500, 0.0007454244513185431, + 0.5918066692004921, 0.0007506448786223955, + 0.6015369171138536, 0.0007555990321360334, + 0.6108074207645846, 0.0007603065552321395, + 0.6196490208139152, 0.0007647852201872223, + 0.6280899548719071, 0.0007690511448239667, + 0.6361561147571614, 0.0007731189798710006, + 0.6438712758203572, 0.0007770020715316172, + 0.6512573014043507, 0.0007807126029873436, + 0.6583343252310160, 0.0007842617179394069, + 0.6651209142221997, 0.0007876596287823588, + 0.6716342139918672, 0.0007909157115868082, + 0.6778900789954702, 0.0007940385897245874, + 0.6839031890937339, 0.0007970362076856718, + 0.6896871540821554, 0.0007999158964005718, + 0.6952546075538913, 0.0008026844311858064, + 0.7006172913010297, 0.0008053480832662807, + 0.7057861313157792, 0.0008079126656911606, + 0.7107713063270146, 0.0008103835743445347, + 0.7155823096970855, 0.0008127658246549895, + 0.7202280054070732, 0.0008150640845261530, + 0.7247166787741906, 0.0008172827039407797, + 0.7290560824713176, 0.0008194257416320207, + 0.7332534783544617, 0.0008214969891654706, + 0.7373156755481164, 0.0008234999927330391, + 0.7412490651900622, 0.0008254380729235324, + 0.7450596521952805, 0.0008273143427041148, + 0.7487530843625872, 0.0008291317238207998, + 0.7523346791167432, 0.0008308929618041609, + 0.7558094481526250, 0.0008326006397480466, + 0.7591821202261264, 0.0008342571910138194, + 0.7624571623184618, 0.0008358649110001742, + 0.7656387993861767, 0.0008374259681086725, + 0.7687310328982383, 0.0008389424140275449, + 0.7717376583539388, 0.0008404161934509115, + 0.7746622819709052, 0.0008418491533472557, + 0.7775083367312447, 0.0008432430518896748, + 0.7802790979757885, 0.0008445995671611185, + 0.7829776987415892, 0.0008459203057504956, + 0.7856071450464104, 0.0008472068113602371, + 0.7881703313360623, 0.0008484605735526905, + 0.7906700563263103, 0.0008496830367716911, + 0.7931090394909276, 0.0008508756097868982, + 0.7954899384715712, 0.0008520396757221188, + 0.7978153677138051, 0.0008531766028449862, + 0.8000879186670883, 0.0008542877563141193, + 0.8023101819251651, 0.0008553745111013562, + 0.8044847717273021, 0.0008564382663308516, + 0.8066143532903718, 0.0008574804613037265, + 0.8087016734969329, 0.0008585025935063833, + 0.8107495955250247, 0.0008595062389322027, + 0.8127611380708978, 0.0008604930750795124, + 0.8147395198853895, 0.0008614649070224791, + 0.8166882104165335, 0.0008624236969844256, + 0.8186109874227465, 0.0008633715978728290, + 0.8205120024888089, 0.0008643109912587642, + 0.8223958554353771, 0.0008652445302964463, + 0.8242676786542088, 0.0008661751880747444, + 0.8261332324148928, 0.0008671063118639506, + 0.8279990121599971, 0.0008680416836568219, + 0.8298723687144858, 0.0008689855872887505, + 0.8317616421559534, 0.0008699428822395237, + 0.8336763097907850, 0.0008709190839453324, + 0.8356271482143981, 0.0008719204500557906, + 0.8376264087468918, 0.0008729540715222103, + 0.8396880045621392, 0.0008740279666600877, + 0.8418277064895145, 0.0008751511753462460, + 0.8440633426727417, 0.0008763338492436154, + 0.8464149949224021, 0.0008775873323529088, + 0.8489051816016571, 0.0008789242242430914, + 0.8515590131598368, 0.0008803584160127719, + 0.8544043019385164, 0.0008819050864333951, + 0.8574716026611897, 0.0008835806429514380, + 0.8607941542532526, 0.0008854025895229178, + 0.8644076876951290, 0.0008873893010135113, + 0.8683500591389794, 0.0008895596827024104, + 0.8726606635323475, 0.0008919326940631082, + 0.8773795829320804, 0.0008945267194288890, + 0.8825464274388153, 0.0002223192652822833, + 0.0002701145057190040, 0.007142201961578917, + 0.0003119065510375409, 0.03373622651253249, + 0.0003484864321264339, 0.06833897467046082, + 0.0003806297364820721, 0.1056526311462410, + 0.0004090176838012951, 0.1430975404471804, + 0.0004342246342064952, 0.1794081097583843, + 0.0004567272828059632, 0.2139892833907438, + 0.0004769194148963887, 0.2465990011834060, + 0.0004951265406555741, 0.2771832823761325, + 0.0005116186382371054, 0.3057874476558851, + 0.0005266206864730374, 0.3325071660393497, + 0.0005403211724599088, 0.3574610980955170, + 0.0005528788972227103, 0.3807755762784305, + 0.0005644284045399661, 0.4025761311147353, + 0.0005750843154180597, 0.4229829635932437, + 0.0005849447992701323, 0.4421087071714556, + 0.0005940943654599883, 0.4600575161312302, + 0.0006026061192146514, 0.4769249128064807, + 0.0006105435941597527, 0.4927980565571165, + 0.0006179622488629170, 0.5077562335628903, + 0.0006249106954973403, 0.5218714480507487, + 0.0006314317138679972, 0.5352090448328407, + 0.0006375630925795459, 0.5478283229614227, + 0.0006433383302749551, 0.5597831185164269, + 0.0006487872230220317, 0.5711223455807324, + 0.0006539363586005573, 0.5818904910810551, + 0.0006588095342876049, 0.5921280630645866, + 0.0006634281114812186, 0.6018719941845592, + 0.0006678113179369536, 0.6111560033299172, + 0.0006719765063612168, 0.6200109188606474, + 0.0006759393764906060, 0.6284649670553408, + 0.0006797141664962577, 0.6365440293006893, + 0.0006833138185165486, 0.6442718713535327, + 0.0006867501222863375, 0.6516703477465010, + 0.0006900338401544602, 0.6587595841259685, + 0.0006931748162308895, 0.6655581400283747, + 0.0006961820719554190, 0.6720831543307668, + 0.0006990638900109890, 0.6783504753604156, + 0.0007018278882011304, 0.6843747774195197, + 0.0007044810846600041, 0.6901696652750492, + 0.0007070299555552817, 0.6957477679800600, + 0.0007094804862707378, 0.7011208232299629, + 0.0007118382169105868, 0.7062997533135355, + 0.0007141082828461975, 0.7112947335920807, + 0.0007162954509237486, 0.7161152543292093, + 0.0007184041518653100, 0.7207701765965301, + 0.0007204385093230375, 0.7252677828954485, + 0.0007224023659844375, 0.7296158230608452, + 0.0007242993070741803, 0.7338215559473337, + 0.0007261326815532289, 0.7378917873419190, + 0.0007279056212778734, 0.7418329044971879, + 0.0007296210583486120, 0.7456509076357754, + 0.0007312817408508591, 0.7493514387389932, + 0.0007328902471654914, 0.7529398078995253, + 0.0007344489990066897, 0.7564210174894084, + 0.0007359602733269230, 0.7597997843696403, + 0.0007374262132138434, 0.7630805603462782, + 0.0007388488378909974, 0.7662675510594492, + 0.0007402300519233290, 0.7693647334760027, + 0.0007415716537192339, 0.7723758721433454, + 0.0007428753434132293, 0.7753045343511121, + 0.0007441427302069922, 0.7781541043385911, + 0.0007453753392414597, 0.7809277966791060, + 0.0007465746180687906, 0.7836286689677923, + 0.0007477419427901918, 0.7862596339363163, + 0.0007488786239238555, 0.7888234711170709, + 0.0007499859120665148, 0.7913228381802210, + 0.0007510650034123837, 0.7937602820697135, + 0.0007521170451945067, 0.7961382500690559, + 0.0007531431411158165, 0.7984591009343806, + 0.0007541443568405107, 0.8007251162411515, + 0.0007551217256207493, 0.8029385121019574, + 0.0007560762541391865, 0.8051014514262963, + 0.0007570089286545360, 0.8072160569092491, + 0.0007579207215452834, 0.8092844249546161, + 0.0007588125983558522, 0.8113086407595959, + 0.0007596855254600513, 0.8132907948125792, + 0.0007605404784685073, 0.8152330010832001, + 0.0007613784515200193, 0.8171374172145180, + 0.0007622004676113267, 0.8190062670610542, + 0.0007630075901355534, 0.8208418659532486, + 0.0007638009358163845, 0.8226466491084072, + 0.0007645816892425407, 0.8244232036498043, + 0.0007653511192248359, 0.8261743047383627, + 0.0007661105972153171, 0.8279029563638637, + 0.0007668616180436525, 0.8296124373828724, + 0.0007676058232385866, 0.8313063534256175, + 0.0007683450272099249, 0.8329886953198786, + 0.0007690812465664271, 0.8346639046910128, + 0.0007698167328335732, 0.8363369473861753, + 0.0007705540088076615, 0.8380133953277569, + 0.0007712959087329680, 0.8396995173132502, + 0.0007720456224088709, 0.8414023791296488, + 0.0007728067432140554, 0.8431299531191393, + 0.0007735833198629735, 0.8448912369930949, + 0.0007743799114709090, 0.8466963812112370, + 0.0007752016451809944, 0.8485568235840266, + 0.0007760542751796868, 0.8504854288745331, + 0.0007769442413753351, 0.8524966300217779, + 0.0007778787253163293, 0.8546065661289764, + 0.0007788657000623884, 0.8568332105076614, + 0.0007799139696833306, 0.8591964798032911, + 0.0007810331928461635, 0.8617183125335791, + 0.0007822338835880836, 0.8644227022726899, + 0.0007835273809189877, 0.8673356673041829, + 0.0007849257774604757, 0.8704851350330805, + 0.0007864417960824488, 0.8739007161188697, + 0.0007880886026971684, 0.8776133406687649, + 0.0007898795433580249, 0.8816547276255949, + 0.0007918277950171212, 0.8860566596308294, + 0.0007939459222137213, 0.8908500402679119, + 0.0001944104808172863, 0.0002362079689279158, + 0.007142870645995927, 0.0002727565493010114, + 0.03374001298187475, 0.0003047478195749429, + 0.06834791269705135, 0.0003328598979745383, + 0.1056684019862271, 0.0003576884028469226, + 0.1431215337265024, 0.0003797355245930193, + 0.1794414760981541, 0.0003994180621642384, + 0.2140329776183974, 0.0004170803229573239, + 0.2466538170423533, 0.0004330069180398755, + 0.2772498801896881, 0.0004474339038008580, + 0.3058663763636773, 0.0004605579911155484, + 0.3325988808094674, 0.0004725439839337465, + 0.3575659744772789, 0.0004835307298323497, + 0.3808939216502081, 0.0004936358667461324, + 0.4027081940104168, 0.0005029596128586884, + 0.4231289413573305, 0.0005115878016710237, + 0.4422687522901076, 0.0005195943228286058, + 0.4602317415082190, 0.0005270430946153614, + 0.4771133961932997, 0.0005339896662637906, + 0.4930008443009192, 0.0005404825264865527, + 0.5079733438010129, 0.0005465641777837335, + 0.5221028734536996, 0.0005522720230787040, + 0.5354547549768437, 0.0005576391012124826, + 0.5480882663954187, 0.0005626947000884556, + 0.5600572245757691, 0.0005674648702683609, + 0.5714105259898375, 0.0005719728571649507, + 0.5821926413793687, 0.0005762394663436609, + 0.5924440638839293, 0.0005802833735974854, + 0.6022017124008726, 0.0005841213892159104, + 0.6114992931083616, 0.0005877686840933180, + 0.6203676226097062, 0.0005912389839103901, + 0.6288349163028890, 0.0005945447364939478, + 0.6369270455027728, 0.0005976972565551031, + 0.6446677666447656, 0.0006007068512753596, + 0.6520789256394533, 0.0006035829296188047, + 0.6591806401656133, 0.0006063340977673600, + 0.6659914624065441, 0.0006089682426829690, + 0.6725285244645835, 0.0006114926054781716, + 0.6788076684377859, 0.0006139138460109964, + 0.6848435629139552, 0.0006162380999006194, + 0.6906498074313085, 0.0006184710289781289, + 0.6962390262713238, 0.0006206178660351128, + 0.7016229527864589, 0.0006226834546060953, + 0.7068125053216800, 0.0006246722844146502, + 0.7118178556622645, 0.0006265885230237052, + 0.7166484908292960, 0.0006284360441552101, + 0.7213132689469173, 0.0006302184530805945, + 0.7258204698201126, 0.0006319391094293539, + 0.7301778407871102, 0.0006336011477170803, + 0.7343926383451021, 0.0006352074958549976, + 0.7384716659907177, 0.0006367608918694911, + 0.7424213086665331, 0.0006382638990313429, + 0.7462475641609494, 0.0006397189195696667, + 0.7499560717702578, 0.0006411282071242605, + 0.7535521384979339, 0.0006424938780717482, + 0.7570407630365846, 0.0006438179218450410, + 0.7604266577520003, 0.0006451022103519516, + 0.7637142688659893, 0.0006463485065869407, + 0.7669077950147200, 0.0006475584725197199, + 0.7700112043418378, 0.0006487336763355520, + 0.7730282502703713, 0.0006498755990944187, + 0.7759624860841656, 0.0006509856408696007, + 0.7788172784380622, 0.0006520651264205267, + 0.7815958199061201, 0.0006531153104498718, + 0.7843011406686931, 0.0006541373824907589, + 0.7869361194320170, 0.0006551324714664429, + 0.7895034936680300, 0.0006561016499619955, + 0.7920058692573547, 0.0006570459382452019, + 0.7944457296146663, 0.0006579663080720945, + 0.7968254443729997, 0.0006588636863112547, + 0.7991472777018847, 0.0006597389584201900, + 0.8014133963335314, 0.0006605929718067311, + 0.8036258773716017, 0.0006614265391084759, + 0.8057867159584249, 0.0006622404414238483, + 0.8078978328788472, 0.0006630354315293254, + 0.8099610821822974, 0.0006638122371188470, + 0.8119782589091303, 0.0006645715641033481, + 0.8139511070129370, 0.0006653141000107842, + 0.8158813275773382, 0.0006660405175299570, + 0.8177705874338766, 0.0006667514782449204, + 0.8196205282970527, 0.0006674476366107756, + 0.8214327765433879, 0.0006681296442262653, + 0.8232089537737035, 0.0006687981544637654, + 0.8249506883116352, 0.0006694538275230569, + 0.8266596278067956, 0.0006700973359816298, + 0.8283374531279623, 0.0006707293709212047, + 0.8299858937501699, 0.0006713506487175973, + 0.8316067448595304, 0.0006719619185889133, + 0.8332018864208099, 0.0006725639710052013, + 0.8347733044749573, 0.0006731576470708964, + 0.8363231149564427, 0.0006737438489993667, + 0.8378535903427503, 0.0006743235518061943, + 0.8393671894697208, 0.0006748978163539151, + 0.8408665908653167, 0.0006754678038850311, + 0.8423547299689948, 0.0006760347921811532, + 0.8438348406117731, 0.0006766001934827970, + 0.8453105011300979, 0.0006771655742948708, + 0.8467856854705638, 0.0006777326771850360, + 0.8482648196070496, 0.0006783034446530447, + 0.8497528435300649, 0.0006788800451053436, + 0.8512552789714525, 0.0006794649009063182, + 0.8527783028853924, 0.0006800607183903050, + 0.8543288265058851, 0.0006806705196006733, + 0.8559145795259218, 0.0006812976753667025, + 0.8575441985760543, 0.0006819459391275817, + 0.8592273186991227, 0.0006826194806570309, + 0.8609746659004745, 0.0006833229185231614, + 0.8627981480750792, 0.0006840613497285638, + 0.8647109406514445, 0.0006848403745099397, + 0.8667275621282101, 0.0006856661137341258, + 0.8688639333027147, 0.0006865452157148281, + 0.8711374124074637, 0.0006874848486099405, + 0.8735667966111717, 0.0006884926738773655, + 0.8761722784739423, 0.0006895767956239815, + 0.8789753440908044, 0.0006907456801615706, + 0.8819985980014631, 0.0006920080398012621, + 0.8852654987569412, 0.0006933726750250028, + 0.8887999886800295, 0.0006948482698509175, + 0.8926260022952612, 0.0006964431366613300, + 0.8967668406721245, 0.0001687522084062742, + 0.0002050350430521891, 0.007143489225104815, + 0.0002367622652786059, 0.03374351625166600, + 0.0002645340906026387, 0.06835618366232366, + 0.0002889390544558335, 0.1056829987008023, + 0.0003104940979691790, 0.1431437456375445, + 0.0003296350786177901, 0.1794723727318731, + 0.0003467237429868135, 0.2140734485464243, + 0.0003620589217153205, 0.2467046039766637, + 0.0003758876341573480, 0.2773116025546536, + 0.0003884147581578293, 0.3059395516583021, + 0.0003998110227339366, 0.3326839408735750, + 0.0004102194641152033, 0.3576632785546656, + 0.0004197605903284232, 0.3810037669469621, + 0.0004285365009823915, 0.4028308242884812, + 0.0004366341766023805, 0.4232645539797606, + 0.0004441281128435874, 0.4424175040394658, + 0.0004510824389517647, 0.4603937534270471, + 0.0004575526297479205, 0.4772887576403662, + 0.0004635868963219365, 0.4931896163747717, + 0.0004692273217485011, 0.5081755622500646, + 0.0004745107935135632, 0.5223185511672184, + 0.0004794697730555439, 0.5356838841319745, + 0.0004841329341264508, 0.5483308203204026, + 0.0004885256949620448, 0.5603131593778051, + 0.0004926706640505523, 0.5716797819868060, + 0.0004965880152488166, 0.5824751443673352, + 0.0005002958048415423, 0.5927397262665235, + 0.0005038102406673260, 0.6025104342019820, + 0.0005071459114881099, 0.6118209628858234, + 0.0005103159832377398, 0.6207021182846412, + 0.0005133323675598979, 0.6291821059168485, + 0.0005162058670665758, 0.6372867879128392, + 0.0005189463009622880, 0.6450399121650791, + 0.0005215626140454308, 0.6524633166362534, + 0.0005240629715848113, 0.6595771116117261, + 0.0005264548421517410, 0.6663998424002746, + 0.0005287450701469129, 0.6729486347171443, + 0.0005309399394814304, 0.6792393247326799, + 0.0005330452296408964, 0.6852865755411093, + 0.0005350662651709710, 0.6911039815981985, + 0.0005370079594647384, 0.6967041624928251, + 0.0005388748536006167, 0.7020988472546843, + 0.0005406711508695714, 0.7072989502566063, + 0.0005424007475382063, 0.7123146396434907, + 0.0005440672603167729, 0.7171553991088069, + 0.0005456740509357201, 0.7218300837422168, + 0.0005472242481790601, 0.7263469705865458, + 0.0005487207676758462, 0.7307138044675716, + 0.0005501663297110800, 0.7349378395946277, + 0.0005515634752832511, 0.7390258773726449, + 0.0005529145806065207, 0.7429843008159668, + 0.0005542218702305272, 0.7468191059101640, + 0.0005554874289292619, 0.7505359302293567, + 0.0005567132124919160, 0.7541400790825443, + 0.0005579010575325747, 0.7576365494325465, + 0.0005590526904217706, 0.7610300518048510, + 0.0005601697354308826, 0.7643250303805051, + 0.0005612537221699207, 0.7675256814467769, + 0.0005623060923901496, 0.7706359703613220, + 0.0005633282062150818, 0.7736596471697186, + 0.0005643213478564601, 0.7766002610022336, + 0.0005652867308658178, 0.7794611733633313, + 0.0005662255029669265, 0.7822455704165419, + 0.0005671387505098367, 0.7849564743577130, + 0.0005680275025831865, 0.7875967539612229, + 0.0005688927348179374, 0.7901691343763252, + 0.0005697353729126355, 0.7926762062443136, + 0.0005705562959076292, 0.7951204342015494, + 0.0005713563392333756, 0.7975041648285145, + 0.0005721362975559819, 0.7998296341008703, + 0.0005728969274414421, 0.8020989743949635, + 0.0005736389498586027, 0.8043142210972835, + 0.0005743630525397174, 0.8064773188650033, + 0.0005750698922165000, 0.8085901275829018, + 0.0005757600967488519, 0.8106544280606480, + 0.0005764342671629149, 0.8126719275136132, + 0.0005770929796147660, 0.8146442648700572, + 0.0005777367872959363, 0.8165730159477090, + 0.0005783662222969873, 0.8184596985434300, + 0.0005789817974456180, 0.8203057774808211, + 0.0005795840081362118, 0.8221126696623233, + 0.0005801733341683536, 0.8238817491745800, + 0.0005807502416126773, 0.8256143524986065, + 0.0005813151847234263, 0.8273117838796568, + 0.0005818686079183535, 0.8289753209156332, + 0.0005824109478480398, 0.8306062204274619, + 0.0005829426355783928, 0.8322057246800982, + 0.0005834640989120021, 0.8337750680287443, + 0.0005839757648761716, 0.8353154840714917, + 0.0005844780624078450, 0.8368282133969516, + 0.0005849714252682631, 0.8383145120235179, + 0.0005854562952230521, 0.8397756606357110, + 0.0005859331255265216, 0.8412129747325485, + 0.0005864023847522156, 0.8426278158130220, + 0.0005868645610151844, 0.8440216037344282, + 0.0005873201666349592, 0.8453958303903652, + 0.0005877697432917324, 0.8467520748664289, + 0.0005882138677316644, 0.8480920202427393, + 0.0005886531580803781, 0.8494174722229419, + 0.0005890882808263732, 0.8507303797787185, + 0.0005895199585379871, 0.8520328580063178, + 0.0005899489783783064, 0.8533272133961881, + 0.0005903762014816018, 0.8546159717171726, + 0.0005908025732518324, 0.8559019087112308, + 0.0005912291346377758, 0.8571880837811911, + 0.0005916570344294526, 0.8584778768299521, + 0.0005920875426055483, 0.8597750283715609, + 0.0005925220647400795, 0.8610836829786467, + 0.0005929621574468788, 0.8624084360518852, + 0.0005934095448005555, 0.8637543837896255, + 0.0005938661356200435, 0.8651271760926207, + 0.0005943340414329835, 0.8665330719519609, + 0.0005948155948529893, 0.8679789966288171, + 0.0005953133679941353, 0.8694725996326263, + 0.0005958301904145430, 0.8710223121296252, + 0.0005963691659207649, 0.8726374019561603, + 0.0005969336873744813, 0.8743280238622816, + 0.0005975274484218217, 0.8761052619650037, + 0.0005981544508145503, 0.8779811606467382, + 0.0005988190057157910, 0.8799687393004150, + 0.0005995257270899495, 0.8820819854186045, + 0.0006002795149823573, 0.8843358195863941, + 0.0006010855262223838, 0.8867460250263935, + 0.0006019491298677465, 0.8893291335470804, + 0.0006028758445922773, 0.8921022591848045, + 0.0006038712552612013, 0.8950828706648276, + 0.0006049409062046725, 0.8982884942350033, + 0.0006060901692668508, 0.9017363396754307, + 0.0001481251565099711, 0.0001799742621307956, + 0.007143974934319647, 0.0002078249765617697, + 0.03374626735466673, 0.0002322040770469374, + 0.06836267972058510, 0.0002536281024389343, + 0.1056944648470500, 0.0002725507603509361, + 0.1431611968300346, 0.0002893545952483257, + 0.1794966519846322, 0.0003043571067937865, + 0.2141052583069300, 0.0003178205747305427, + 0.2467445313185863, 0.0003299618049127232, + 0.2773601392459256, 0.0003409606161517330, + 0.3059971101361032, 0.0003509668551995601, + 0.3327508670011682, 0.0003601060630945735, + 0.3577398618615326, 0.0003684840080409944, + 0.3810902489006329, 0.0003761903012944965, + 0.4029274050222500, 0.0003833012841788339, + 0.4233713978033811, 0.0003898823401138323, + 0.4425347439853034, 0.0003959897539743794, + 0.4605214950272289, 0.0004016722146902933, + 0.4774270820870889, 0.0004069720358522181, + 0.4933385831828130, 0.0004119261525257769, + 0.5083352115151812, 0.0004165669396400193, + 0.5224889054945915, 0.0004209228874124991, + 0.5358649502937634, 0.0004250191616382618, + 0.5485225906897057, 0.0004288780707755034, + 0.5605156131771370, 0.0004325194571969843, + 0.5718928863819531, 0.0004359610264298928, + 0.5826988554317172, 0.0004392186254392934, + 0.5929739898366225, 0.0004423064788406665, + 0.6027551866407443, 0.0004452373902181403, + 0.6120761317679944, 0.0004480229143725210, + 0.6209676230156103, 0.0004506735052476993, + 0.6294578582946426, 0.0004531986434246486, + 0.6375726926413187, 0.0004556069463824008, + 0.6453358673250855, 0.0004579062641690959, + 0.6527692141203824, 0.0004601037626756183, + 0.6598928375275065, 0.0004622059963377751, + 0.6667252774457851, 0.0004642189717935211, + 0.6732836545324753, 0.0004661482037761131, + 0.6795838002301146, 0.0004679987643218002, + 0.6856403732164480, 0.0004697753262034514, + 0.6914669638252581, 0.0004714822013627870, + 0.6970761878028088, 0.0004731233749983658, + 0.7024797706018147, 0.0004747025358699538, + 0.7076886232711463, 0.0004762231032989864, + 0.7127129108730295, 0.0004776882512767774, + 0.7175621142484538, 0.0004791009300347118, + 0.7222450858541227, 0.0004804638853820701, + 0.7267701003089459, 0.0004817796760758937, + 0.7311449002133155, 0.0004830506894522046, + 0.7353767377389203, 0.0004842791555179398, + 0.7394724124294618, 0.0004854671596773276, + 0.7434383056023196, 0.0004866166542444491, + 0.7472804116970708, 0.0004877294688748149, + 0.7510043668780048, 0.0004888073200324911, + 0.7546154751637144, 0.0004898518195952196, + 0.7581187323268813, 0.0004908644826877864, + 0.7615188477809879, 0.0004918467348233061, + 0.7648202646474365, 0.0004927999184228891, + 0.7680271781760355, 0.0004937252987761405, + 0.7711435526736958, 0.0004946240694979417, + 0.7741731370801548, 0.0004954973575308488, + 0.7771194793153748, 0.0004963462277370809, + 0.7799859395107068, 0.0004971716871193750, + 0.7827757022247849, 0.0004979746887058557, + 0.7854917877352522, 0.0004987561351304407, + 0.7881370624886681, 0.0004995168819371097, + 0.7907142487831792, 0.0005002577406335545, + 0.7932259337516524, 0.0005009794815172498, + 0.7956745777068556, 0.0005016828362948059, + 0.7980625219048639, 0.0005023685005135441, + 0.8003919957780823, 0.0005030371358225455, + 0.8026651236850512, 0.0005036893720789472, + 0.8048839312204863, 0.0005043258093139596, + 0.8070503511257529, 0.0005049470195719527, + 0.8091662288371395, 0.0005055535486349787, + 0.8112333277068590, 0.0005061459176442604, + 0.8132533339296184, 0.0005067246246294598, + 0.8152278612058557, 0.0005072901459559465, + 0.8171584551713140, 0.0005078429376997978, + 0.8190465976214947, 0.0005083834369598832, + 0.8208937105586977, 0.0005089120631160979, + 0.8227011600888023, 0.0005094292190426258, + 0.8244702601946616, 0.0005099352922850141, + 0.8262022764129838, 0.0005104306562098391, + 0.8278984294418413, 0.0005109156711358289, + 0.8295598987064962, 0.0005113906854554846, + 0.8311878259120602, 0.0005118560367565149, + 0.8327833186126263, 0.0005123120529527563, + 0.8343474538279233, 0.0005127590534347159, + 0.8358812817402723, 0.0005131973502504269, + 0.8373858295066677, 0.0005136272493279681, + 0.8388621052231878, 0.0005140490517517615, + 0.8403111020816669, 0.0005144630551056335, + 0.8417338027616508, 0.0005148695548966082, + 0.8431311841041218, 0.0005152688460744951, + 0.8445042221173288, 0.0005156612246635426, + 0.8458538973693004, 0.0005160469895237514, + 0.8471812008262565, 0.0005164264442608728, + 0.8484871402011642, 0.0005167998993056541, + 0.8497727468820885, 0.0005171676741845232, + 0.8510390835157447, 0.0005175301000056107, + 0.8522872523277160, 0.0005178875221857676, + 0.8535184042670900, 0.0005182403034460151, + 0.8547337490696901, 0.0005185888271046153, + 0.8559345663404898, 0.0005189335006986103, + 0.8571222177620127, 0.0005192747599661662, + 0.8582981605412726, 0.0005196130732232652, + 0.8594639622127785, 0.0005199489461690734, + 0.8606213169188581, 0.0005202829271545004, + 0.8617720632905069, 0.0005206156129478311, + 0.8629182040514101, 0.0005209476550295670, + 0.8640619274638366, 0.0005212797664454193, + 0.8652056307266341, 0.0005216127292413131, + 0.8663519454211874, 0.0005219474024967696, + 0.8675037650792340, 0.0005222847309624981, + 0.8686642749148173, 0.0005226257542936992, + 0.8698369837189167, 0.0005229716168515654, + 0.8710257578565097, 0.0005233235780207398, + 0.8722348572285707, 0.0005236830229588920, + 0.8734689729618574, 0.0005240514736547882, + 0.8747332664628638, 0.0005244306001218837, + 0.8760334093141518, 0.0005248222314940908, + 0.8773756232962860, 0.0005252283667175941, + 0.8787667195815746, 0.0005256511844461572, + 0.8802141358619505, 0.0005260930516464654, + 0.8817259698386895, 0.0005265565303044835, + 0.8833110071141399, 0.0005270443814944088, + 0.8849787410860012, 0.0005275595659308863, + 0.8867393819581020, 0.0005281052399771031, + 0.8886038514594998, 0.0005286847459332971, + 0.8905837593259870, 0.0005293015952926587, + 0.8926913570756628, 0.0005299594435392922, + 0.8949394641477838, 0.0005306620549953031, + 0.8973413611324083, 0.0005314132562256762, + 0.8999106446760794, 0.0005322168766096216, + 0.9026610388027025, 0.0005330766749183085, + 0.9056061579514983, 0.0005339962511354281, + 0.9087592181279729, 0.0001291672658807919, + 0.0001569411415132314, 0.007144429374444041, + 0.0001812286696375032, 0.03374884163870904, + 0.0002024891487895646, 0.06836875906346668, + 0.0002211729609091939, 0.1057051970576302, + 0.0002376757078934563, 0.1431775337300160, + 0.0002523309440420044, 0.1795193851821314, + 0.0002654155096114621, 0.2141350485529856, + 0.0002771580968905830, 0.2467819320733997, + 0.0002877477478365611, 0.2774056154477370, + 0.0002973412539386665, 0.3060510531385813, + 0.0003060692727883761, 0.3328136064982617, + 0.0003140412687616450, 0.3578116754563008, + 0.0003213494654089220, 0.3811713698313008, + 0.0003280719982928522, 0.4030180284424702, + 0.0003342754323013638, 0.4234716859228214, + 0.0003400167776073826, 0.4426448303068433, + 0.0003453451109288780, 0.4606414878637722, + 0.0003503028857160415, 0.4775570675004032, + 0.0003549269964559184, 0.4934786274558236, + 0.0003592496478431822, 0.5084853632454121, + 0.0003632990683734921, 0.5226491973781846, + 0.0003671000992804959, 0.5360354006553708, + 0.0003706746830802694, 0.5487032048025572, + 0.0003740422708473267, 0.5607063844089743, + 0.0003772201633670793, 0.5720937971957492, + 0.0003802237982173855, 0.5829098782647340, + 0.0003830669924186714, 0.5931950878770883, + 0.0003857621484003172, 0.6029863145180096, + 0.0003883204295409269, 0.6123172361692740, + 0.0003907519103608007, 0.6212186432401899, + 0.0003930657055071256, 0.6297187267546153, + 0.0003952700809230814, 0.6378433353164356, + 0.0003973725499905643, 0.6456162041780895, + 0.0003993799569511753, 0.6530591594781886, + 0.0004012985495172340, 0.6601923004327613, + 0.0004031340422649590, 0.6670341619826434, + 0.0004048916721408514, 0.6736018601298540, + 0.0004065762471981460, 0.6799112219451941, + 0.0004081921895038212, 0.6859769020007800, + 0.0004097435730108617, 0.6918124867754874, + 0.0004112341570695012, 0.6974305883977158, + 0.0004126674161504436, 0.7028429289271262, + 0.0004140465662688992, 0.7080604162333366, + 0.0004153745885277149, 0.7130932124031323, + 0.0004166542501385347, 0.7179507954967295, + 0.0004178881232298605, 0.7226420153762622, + 0.0004190786017085115, 0.7271751442443414, + 0.0004202279164050269, 0.7315579224557873, + 0.0004213381487029441, 0.7357976001001488, + 0.0004224112428257702, 0.7399009747952365, + 0.0004234490169331078, 0.7438744260815747, + 0.0004244531731582231, 0.7477239467635279, + 0.0004254253067028491, 0.7514551715040853, + 0.0004263669140908001, 0.7550734029462083, + 0.0004272794006696848, 0.7585836356036648, + 0.0004281640874393643, 0.7619905777378661, + 0.0004290222172765655, 0.7652986714139369, + 0.0004298549606170237, 0.7685121109086968, + 0.0004306634206495281, 0.7716348596250679, + 0.0004314486380701255, 0.7746706656513523, + 0.0004322115954393903, 0.7776230760895890, + 0.0004329532211809737, 0.7804954502645794, + 0.0004336743932555310, 0.7832909719139642, + 0.0004343759425404994, 0.7860126604497781, + 0.0004350586559430094, 0.7886633813730524, + 0.0004357232792703970, 0.7912458559151491, + 0.0004363705198802944, 0.7937626699724827, + 0.0004370010491300795, 0.7962162823950203, + 0.0004376155046435118, 0.7986090326833559, + 0.0004382144924106579, 0.8009431481441662, + 0.0004387985887356742, 0.8032207505493939, + 0.0004393683420456565, 0.8054438623405243, + 0.0004399242745725549, 0.8076144124157677, + 0.0004404668839190812, 0.8097342415347859, + 0.0004409966445185832, 0.8118051073727768, + 0.0004415140089980146, 0.8138286892532131, + 0.0004420194094523807, 0.8158065925862987, + 0.0004425132586383796, 0.8177403530382282, + 0.0004429959510943727, 0.8196314404545940, + 0.0004434678641933102, 0.8214812625597571, + 0.0004439293591347870, 0.8232911684526717, + 0.0004443807818820194, 0.8250624519185151, + 0.0004448224640492010, 0.8267963545745015, + 0.0004452547237444166, 0.8284940688674631, + 0.0004456778663730607, 0.8301567409401316, + 0.0004460921854065215, 0.8317854733825585, + 0.0004464979631207512, 0.8333813278847675, + 0.0004468954713092401, 0.8349453278065194, + 0.0004472849719748584, 0.8364784606800110, + 0.0004476667180050050, 0.8379816806613994, + 0.0004480409538345297, 0.8394559109472592, + 0.0004484079161009533, 0.8409020461724398, + 0.0004487678342966111, 0.8423209548062871, + 0.0004491209314224874, 0.8437134815648469, + 0.0004494674246486925, 0.8450804498574688, + 0.0004498075259867541, 0.8464226642871850, + 0.0004501414429791688, 0.8477409132253626, + 0.0004504693794119635, 0.8490359714824147, + 0.0004507915360563808, 0.8503086030978187, + 0.0004511081114462013, 0.8515595642743328, + 0.0004514193026976681, 0.8527896064831288, + 0.0004517253063794774, 0.8539994797685749, + 0.0004520263194408489, 0.8551899362836138, + 0.0004523225402062811, 0.8563617340890786, + 0.0004526141694462433, 0.8575156412528867, + 0.0004529014115337412, 0.8586524402878235, + 0.0004531844756974208, 0.8597729329695807, + 0.0004534635773826384, 0.8608779455798124, + 0.0004537389397327130, 0.8619683346221994, + 0.0004540107952033793, 0.8630449930628203, + 0.0004542793873242631, 0.8641088571494663, + 0.0004545449726219747, 0.8651609138678200, + 0.0004548078227201481, 0.8662022090955665, + 0.0004550682266323894, 0.8672338565183648, + 0.0004553264932646083, 0.8682570473740338, + 0.0004555829541435220, 0.8692730610930815, + 0.0004558379663881761, 0.8702832769045586, + 0.0004560919159410250, 0.8712891864758329, + 0.0004563452210743556, 0.8722924076528336, + 0.0004565983361864682, 0.8732946993631147, + 0.0004568517558999058, 0.8742979777371169, + 0.0004571060194709263, 0.8753043334925269, + 0.0004573617155151244, 0.8763160506117581, + 0.0004576194870483323, 0.8773356263222484, + 0.0004578800368343567, 0.8783657923622515, + 0.0004581441330213403, 0.8794095374796469, + 0.0004584126150361641, 0.8804701310663527, + 0.0004586863996908342, 0.8815511477743261, + 0.0004589664874357118, 0.8826564928888149, + 0.0004592539686711794, 0.8837904281482389, + 0.0004595500300013319, 0.8849575975954920, + 0.0004598559602799827, 0.8861630529202465, + 0.0004601731562602071, 0.8874122776038270, + 0.0004605031276134677, 0.8887112090056589, + 0.0004608475010329713, 0.8900662573321374, + 0.0004612080230785231, 0.8914843202051330, + 0.0004615865613575363, 0.8929727913000981, + 0.0004619851035704269, 0.8945395612571059, + 0.0004624057538807515, 0.8961930087896581, + 0.0004628507260045860, 0.8979419796374420, + 0.0004633223323547168, 0.8997957507473553, + 0.0004638229685297288, 0.9017639768452591, + 0.0004643550924143431, 0.9038566164094044, + 0.0004649211971655587, 0.9060838340132801, + 0.0004655237774111018, 0.9084558761162183, + 0.0004661652880954744, 0.9109829176962647, + 0.0004668480955879464, 0.9136748776971255 + ] + + _fpa = map(x -> SVector{6, T}(x), fpa) + _fpb = map(x -> SVector{4, T}(x), fpb) + _fpbe = map(x -> SVector{5, T}(x), fpbe) + ROCK4ConstantCache{eltype(_fpa), eltype(_fpb), eltype(_fpbe), T2, typeof(zprev)}(ms, + _fpa, + _fpb, + _fpbe, + recf, + zprev, + 1, 1, + 1, 0, + 152) +end + +function ESERK5ConstantCache(zprev) + ms = [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30, 35, + 40, 45, 50, 60, 70, 80, 90, + 100, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000, 1200, 1400, + 1600, 1800, 2000] + Cᵤ = [1, -64, 486, -1024, 625] + Cₑ = [1, -32, 162, -256, 125] + Bᵢ = [0.51000000000000000000, 0.49000000000000000000, + 0.15175595325054784514243973703433162892622352081811541271, + 0.4776587289992695398100803506208911614317019722425127830533, + 0.3705853177501826150474799123447772096420745069393718042367, + 0.171292271855634748274302568345977333137780187276509375111, + -0.142394363264918735501782787535994907865493057653096376214, + 0.3031160937815012006356183084140929657730712942298386293, + 0.667985997627782786591861910775924608954641576146748371803, + -0.2395607163123067106628641054321945729049318796662228882758, + 0.0322753316670842254789679591276287281776581352286896612159, + 0.1311198549137829290449396289890724944618997972541672447189, + 0.4420263297245774635901262045359551693827496339040954996064, + 0.6341392000068620925488303127795381808826243132792704827345, + -0.0705527233174208787197482567012020748, -0.28314320544924802791643836910100325622, + 0.19785090029766025895627566014160733854, -0.42177903459881749394659312103987771203, + 0.34798179035774081281423544657031887843, 1.22964227271008532881226864013015682608, + -0.023312108626697192778954029514024155590455567466604125321, + -0.133587241606424763164999610937242437020685580372892917197, + -0.807816187727509870414818584094023142999629225128357391874, + 0.035476895783242056771711790729782516422751007751815116498, + 0.149607787788030927665027003231661098177436901731326766172, + 0.57498834712543318780630073306500660354701244451330594928, + 1.204642507263925654115732697518839517463570018971406602442, + -0.06183255936954052372346637670968840324, + 0.24585010938894813663007172333107991903, -0.22278728293517506331040227550535600357, + -1.15228036070198057531767004885883669258, 0.27248345332452279643055687285311892589, + -0.94663509712136048123663124969573327248, 0.49107351303189728397292372218922624695, + 2.37412822438268842655461763239618928, + 0.267629933137095245141975809560761081772265274435597289728, + -0.006141586913407430655973481502643365713649790710295868616, + -0.075413760530132378580716897804667838399145117853966422589, + -0.413732608581709348691129801944743112619079061906883568263, + -2.219755953356489632106290970858486877686158726479341880497, + 0.041831600717443209915013866154013953177078863044028484934, + 0.198251969249198553353762337987712861100318955878803016743, + 0.859429079700333096723067072151535793932185170639840432677, + 2.347901326577668684900292066256517504436184432952218515884, + 0.04334233496728318173316556549400405312, 0.28314718674373824327128333993303395952, + -0.19691175059131013000473375960242211319, 1.0143522195178293575154435082688758514, + -0.54456448978467780165114785396914473844, + -3.44227306031624992637612263891716183315, + 0.41616051745839018146471699669491474031, -1.99431152490366256986310650480329437152, + 0.76615984404425241607002155607656609488, 4.65489872286440704784047979083, + 0.01185981511609708439591263798032260188, 0.08313810798594927518141308800422658388, + 1.36524308048041620952880042718654864619, -0.01827474030589477217044171499310793939, + -0.17628501318837535533115360122055965499, + -1.01698852621620427516096462226557091393, + -5.59376138718872207707282115748, 0.05312126866410229999185962171436582123, + 0.28375149392681463287142512194791155436, 1.3863138835464458632096743126042793536, + 4.62188201717937111455629588652, 0.03969981439217597320648548760187749161, + -0.26123314150702799097976575231108173978, 0.22377746288085075525371428197050370229, + 1.69666756226863378995937682521810719807, -0.49131949600957692517825210290306837642, + 3.1080707614085650333516840811827436161, -1.22864881730603059070878872425149963605, + -9.11689366539937630043735086892, 0.67785105301773902362095145917851111, + -4.10631720372905360414597657171939847232, 1.26937540263078554905007063379542835836, + 9.18897026735231528700785125117, -0.27217328167460956131476047439990910903, + 0.00232423179456403254837083539454086331, 0.05835150404451187539144020461201262805, + 0.42883425599848069725879046327775141413, 4.95905709165333544549841757169, + -0.03977266751636963109146218894149857435, + -0.36571787671245400376083804163342213853, + -2.31568252687422134776066391768411540054, -13.43925313136367349501729212019, + 0.07077616236834410843502486226791398161, 0.42282994010986272157251902585583891218, + 2.34796383346795816363119912676449258734, 9.14246246470427099460925465297, + -0.03232911686897840419632830592607494535, + -0.28041462996958647581873583696711945616, + 0.20724033413910790425827799265356162173, -1.58579023135541602567366698739041278356, + 0.78922415382841551949951795717071921361, 6.76103173539977893909117415311, + -1.12806447574673841730721198743265087628, 8.4128930401780590648783621418, + -2.68103276352794485617211013468853083618, -22.64411393742258884318225036397, + 1.15338533203053367320846851344449345606, -8.36649294273889607381551803959, + 2.18999145420808421833691176599430999249, 18.2044720478461697768931091318, + -0.00667461933209428360036059839767196909, + -0.06273416882765801260467188444545123031, + -1.91860065644695596557081912874590006998, 0.01081950272692567798463347457716599767, + 0.18620287400700286111119582520568003694, 1.51685497093458109071452221097531826534, + 15.48467225224063382408542314168, -0.07629435549619645150060099149748659182, + -0.70994280729761713821480657439726187699, + -5.09786121288496023233135783192012886576, + -31.31366293050426656280475363934, 0.09668925281447020816755087806058848403, + 0.64160729399321059791833884085849337916, 4.11515766267157779011538851714, + 18.13376694140134659653031776024, -0.03037494879224957381, + 0.26769482655261944704, -0.23423482472351800365, + -2.23691169833583813897, 0.73825815998211408164, + -6.40259119852919145188, 2.36911603756859356906, + 22.44048313192979904329, -2.49482139053923956951, + 21.26654473338750150901, -5.75737544126531464173, + -54.03252185208918234594, 2.02558891383845240952, + -16.95132447144789011872, 3.89091799212724609447, + 36.14155203033610064267, 0.27370071452556125738580307616746406842, + -0.00101450699232079107494839643253574126, -0.0421778107308704184205972489180026588, + -0.45492171781790484171533837732603459541, -8.80169460307346570219685526926, + 0.03209492992153378796235073295247422927, 0.48309012264549762247353121170560716644, + 4.57193445509757012268100650141, 44.28646324764299770114299155112, + -0.13513736812765156422555300149958994539, -1.3094516454056600353893156976781723315, + -11.03264943941473807782420990691, -71.40471498300717340098157611827, + 0.13255236883772753763114951776103255274, 0.97507291799219631127287057870756336304, + 7.39886522252575346780862680416, 36.02798809538094702347006404231, + 0.02676643747401255415303526637253451088, 0.27803868732635739714471068179519418395, + -0.22155079006814126994037729687735448451, 2.15574690923055538239247922134299880259, + -1.0778659528599404410662904317139695986, -11.1471746666195630447143697743, + 2.23436630309744428666667493907499988059, -21.50420900479098398814532064502, + 6.51549267396532457547389528903, 67.03905313830550194316675944332, + -5.41194565913122422429322417774871060049, 51.48018906430259950897914290647, + -12.26203235981870608850811224531, -125.43531884209663425323375640483, + 3.64381096919383534800082384293596432988, -34.2320186066464743124862253755, + 7.06951825611039023503066452037, 71.8491334430256463913794902406, + 0.00340689673802506213303384484509136815, 0.05228705712268901670389496880773812136, + 2.47039294036984554932736964470531135295, -0.00594057518160297556499869434867775171, + -0.15882678990301389748444992126650829906, + -2.09765142555254023998820089374989236072, + -33.05493564550817970065352595133, 0.07524780495086350581442341674688301039, + 1.08987647194958887130792909482113039062, 12.62690855205540138003125256268, + 119.52688045374009632471194074126, -0.22191294651663094070494334469346472413, + -2.29326856382526286947609808804967180703, -23.6543339916672207354449847187, + -160.2245112767409871217443877074, 0.17772756950196874401339349752087803836, + 1.46035084374438066775181417195624164031, 13.56922952633457984023510397301, + 71.6590730983879995190314334032, 0.0254989750507690416158900092583788061, + -0.27150332095935691008041245564479800925, 0.25040875458791366862032306855843262628, + 2.77234503223041207908178336716580896046, -1.02508602475269189066667422781083228361, + 10.84012803789364057774217355532, -4.02313281174909696845575404863555565009, + -44.43623469340417443100506746948, 6.18446460347732677016960475691, + -64.91956776809007138378879015975, 16.97564405621258948030713834141, + 186.96577861032607828085869483504, -11.61373650731142819198699779096, + 120.95458448877866234536702389443, -26.00083446688465464279363129214, + -285.413535667390249788285968404, 6.67957798439682166613931796742, + -68.98481366937255880870027602458, 13.07390313135872302630261439725, + 142.96611125560134607955900768024, -0.27437150678312070048789310318099599853, + 0.0003784719665842144596292876531237521, 0.02341419133518841327246499805255328215, + 0.48967164084053327260939920578195676639, 13.74291335865643631275888590195, + -0.01943318472909677458733860694716049963, + -0.44507292610456309177664407309567872043, + -7.84872755539821519579690946373, -110.20854664616670666383616442962, + 0.14495622821747634242205428414992202425, 2.16729454226225883116896715473892677117, + 33.03055278058466724157650523529, 309.52629673872144897888936842269, + -0.32840954767864854828672297197036726737, + -3.76014612282312222396568631829275416037, + -50.44373757546528326232478669895, -355.05236273646947942934098957538, + 0.22353349190063034701522539807717206844, 2.11078903142948273626797129417018707321, + 25.28319160947632671181575182399, 142.63781571622720248814691223465, + 0.02153010041325617447214011851238242907, -0.00035312500559146601064091884504155054, + 0.04315268909892505278296205077074964762, -0.00063335965620347197855589751121633853, + 0.04343209730256000137914294630073874306, 1.36121123278170163250415775438309975301, + -0.00010269258405807042083480110794537073, + -0.02466194904244495835705307769128418707, + -0.00015611193917798681912877704769526034, + -0.00821490339148783729500236581961114108, + -0.2591399857155196063379226298995389325, -0.02849292330522666798577147339101266948, + -0.51897402516968046597501693192897307436, -0.008752639973769899125564600200652295, + -0.52160025205152132403758691081912844534, -5.46735119137426948186596083827, + 0.0049001364164793137415262698706763, 0.06597662565893965441249367273925378323, + 0.00272897402944820780923381012175615248, 0.02198297716327474388009527055909147874, + 0.34945121963022734583565508211602409287, 0.08211979877802195374948052822727709048, + 0.69696011499698417141518632902035008902, 0.0337366977850506456101843885425887805, + 0.69717811146671264846029599770043247089, 4.41407238368736969015648500366, + -0.27264230707143080006228228852520934606, + -0.00146727627649110021526958657224180741, + 0.00455307961282068320658460993381027324, -0.00071682294634056808709280641722213914, + 0.00151488313514253807930675970192836591, 0.11998557946507875045026277679688538357, + -0.02253227342209968980542646756495957483, 0.24125190449540166305842927931674590484, + -0.02707145949722676361423194674357610551, 0.24370380158739675099900605849215229216, + 4.89941508132748815033253967016, 0.01944356054859593747141865362619479298, + -0.07189905187400788318054904316230721282, 0.00945939147795132639173764117514975317, + -0.02392589344431559513910276966420592395, + -0.63382939447112602670857009233371471096, + 0.05748959514711578736903056100680527907, -1.27970172270354746402194171160674661615, + 0.11310927823082498458668173636044480029, -1.29748466220076897087327293746617695782, + -13.08211483290942258460088953818, -0.02584388693517433701079785537803987186, + 0.11856115929711735146335664844764980675, -0.01249416269425528348335685793545112788, + 0.03946019668121248512751989421978871845, 0.63095014913911526291093477569984872759, + 0.00411269814456369669023939003269456412, 1.27657082326819886642473940038334310806, + -0.08236074900236698089732139844178887993, 1.29649495186135861514081826752391976385, + 8.7580083620291911979974991771, -0.01946786738837134705577429707680345932, + 0.00854170161436535972072265344290128689, -0.03904818489477180165377702642810643303, + 0.00880138213707826579738411603535089168, -0.03938717884953170541954103433025485895, + -1.90544153082436446838546249573587118655, + -0.01654157805071585426269414720731633975, + 0.02992285844107527776180619256843745168, -0.00816624996038633808937100268161786912, + 0.00994991881887605151143365483425033634, 0.4575929475094065338866813752289751796, + -0.16589733835957194386540525054943294277, 0.92579588786342386975900780160310218907, + -0.1917505052555918581339702254089381018, 0.94153908112196765733276154251997780747, + 15.20571430103007550304641630555, 0.10068829211891987523521882478808228184, + -0.19551050625732036403208512778119747481, 0.04966946633673740802736949323948015029, + -0.06501772218182200262475408591561860907, + -1.49903635726836093613945306953768488855, + 0.42761538544348650551363119961369075824, -3.05509106880803578245857859341018015727, + 0.57668179629328062059717711425089374292, -3.12827035838824761786010571342494916477, + -30.39683677132421294870056407649, -0.1097428245263077613269219277420767745, + 0.23031561701973227987956198050580605593, -0.05408629166163225988650767154317254051, + 0.07660035500929052580657656693812772948, 1.18263720591278065521283399991471769983, + -0.24515512122445807387232596354224711012, 2.42463955250348935570603283752433576671, + -0.41301638179413886813377248061275654673, 2.49621778011862793023608268690522578792, + 17.39454030772522825687036584395, 0.27267295220108274515984762793039093744, + 0.0034810447637688192893141123083284051, -0.00453022476352550334732726974390556343, + 0.00172457744458184765815671237338653242, -0.0015056391886760133116010338814545958, + -0.15200283248845752083482819404817793584, 0.08971747834546983118969730287274130041, + -0.30671190949739971558838174170178037415, 0.09490595216460469615132277419101155601, + -0.311426850377915370139265119228472319, -8.68483156780175914997490128344, + -0.09829014544703463067789060695811538363, 0.13250725104297849897033000279870093998, + -0.04868354875987289587423165714734318111, 0.04404234803258316115216637031838237985, + 1.48238018557882760196890836366639145418, -0.78360426764026360412104782268369392556, + 3.02252497721748715405119764443758574916, -0.89251009420154057180037428742127448374, + 3.09950072847079985963467510337805848046, 43.29005574501806767767470543635, + 0.36968507692886756325760191226539588483, -0.51739194918333825296788577802210718514, + 0.18305936164690945694232879241472565761, -0.17198103535588996025656802753683250661, + -3.47862941668848084268098471621153482394, 1.62067927214107210043535946394817256729, + -7.16046663130841107685213084382, 2.01255008535105794053998282666218830932, + -7.40782094607771948540521810034, -69.15307773871510979327967735681, + -0.32406871904134998700451851193389111743, 0.47194913818235568678926204363170378083, + -0.16042496553427558015167143817031303644, 0.15688685545421092203267695038075882392, + 2.27340429242371491609019305524540439688, -0.91461485670322487937367886780491752122, + 4.71964017563393644918860947682, -1.25908835255551658514471197992577028677, + 4.92068111707537099223829334959, 34.56961307621201349837226531522, + 0.01934899037581786233583863454042769313, -0.0151045254396994605867338311944032388, + 0.03884435362314285056810948705621861612, -0.01541389307310727864613879391707116617, + 0.03928540827154943194053070064096429501, 2.4450081003640925782649220334641974855, + 0.03838579873974113490316874075774277378, -0.04231186770579453632901128014070547903, + 0.01904060891653568360887634127202470592, -0.01405814292823910590642757345757853724, + -0.75098899071419304464334275709028465779, 0.54927346218645881332054915881366007439, + -1.52650313221542831237083232474408508362, 0.58923369126566296790936036097807328803, + -1.56237476712559749916368325046460444878, -32.44512010992623206186779202974, + -0.43877493550497497945146750829652142959, 0.4940633913538807077891393471394722459, + -0.2176236411286971259986700087782273311, 0.16416052522783304669713579889866324596, + 4.38134452230907455033307970949, -2.9836922644320887351862874288932376063, + 9.01115183601068899243020278284, -3.3801535213138559184025679330931829109, + 9.32523200324003102395350683013, 116.39447546637852307350262411277, + 1.17021295237428641753349338334169406806, -1.347375731234967774425453566458459163, + 0.5803357157905916840037001336034685149, -0.44770851587535871820460293710474200048, + -7.96894306942897057881089580236, 5.01695901294685418992109670865, + -16.57219059429120940823673167439, 6.03456296309774818327427264399, + -17.32469827169158253455141769502, -154.83367235055442525409444572176, + -0.84914494024373623863901801959184483578, 1.00079026701057708404662656537034105726, + -0.42105822925592228108444516916029709634, 0.33256041721548961976079964305950854608, + 4.44618560728964372242879710562, -2.56647936082256790389626868492833259598, + 9.34235002662534952830244524954, -3.29879604477830779042409156238198011788, + 9.85758932101193536931941177613, 68.7317924580594480247726383049, + -0.27213079746594852346228998206271787994, + -0.00538962671639760013875082829697935441, + 0.00525735372742345464361927365888045207, -0.00267506367873453766941948786084705444, + 0.00174623327490308231309494805793139602, 0.19320618235928500366530453776499923834, + -0.17391491421766308264720703396036785465, 0.39073041918252994631149401872149791932, + -0.18084032757369442483637141240298089856, 0.39839547140335261024026768193756779719, + 13.52582085551653779079733897948, 0.24797279229737471138967647940926860018, + -0.24510515830014663836797335770080205566, 0.1230710533900699725211237396946368936, + -0.08141442392388751612459109080013662718, + -2.99422670740241811167222292722218701817, + 2.57417996192597592256292752045883184956, -6.13635536700218610871791624918, + 2.78975694723518092422363621035918123086, -6.33607558528207779464264194776, + -107.68748507110401874111110517067, -1.66427788247398150066374926301375712458, + 1.66777637868761166745502561054714207429, -0.82594770112919712802276692038298544019, + 0.55398850392322364354111438510478089989, 12.20222905902275974082845396365, + -9.98451694183534066214034933946, 25.32898967456914204106131486903, + -11.30556342863719335163863070783, 26.46436781072628314527396590974, + 300.39702992249913812063091439446, 3.40500517881972386725528529294301392189, + -3.46117818453391787567469718736077438559, 1.68973107396794004820604177027745701653, + -1.14974389206944675566897637826473427065, -18.07313265295388962564327748434, + 14.02206606818921069122147949077, -37.9781037138881385107510570641, + 16.63427564729230392344393087892, -40.12157375627202990954878130438, + -342.36414976146255037425831598432, -2.09973384833415254128908853510258675354, + 2.16622025661237066442093213123400622237, -1.04192236343711613628324962770558045787, + 0.71960500012530845336142507880930775787, 8.79874375182177707317795505407, + -6.44592324515440294411401387183, 18.70667194613468121404144319205, + -8.03595755611636831582766847318, 19.96715958134832228200426878556, + 136.69334084691246871632307743253, -0.26657379047455461433248068840320276677, + -0.01537610731771496983752200313547883016, 0.01583795693227915594206292571199409121, + -0.01173453270544991785466990502208214813, 0.0117144457322767190591468933987654944, + -0.00826254632403646227141178338738452724, 0.00773214924213668745566034649019362321, + -0.00491013283901438857489588649488692534, 0.00384295453792246699080001584081627817, + -0.0016288426817551281794507509392456641, -0.05043140993988520530991105878579198802, + 0.21234049381592637285482241734950824677, -0.10583605555316035694947015339346171637, + 0.21783966226263956916864635014560334508, -0.11313081322333947646319732766184058101, + 0.22565735765380804217623695911597445277, -0.12283831041293618533187251084904617673, + 0.23590147532229435400561449453586247761, -0.13508124666149873006981034128638911049, + 0.24871219242508908339842030787771911404, 4.76032630874568281418574402225, + 0.21445449604793603325163563234089209966, -0.22697481305587854711270633374914470591, + 0.16361117515206793069125583587012483302, -0.16791409773408466315640652930871200861, + 0.1151733549985610045432746284966285781, -0.11084822263670721131226918606060846123, + 0.06843168693252828651319580044386273357, -0.05509751607553919147132799913058547231, + 0.02269894447239023440799323376505764618, 0.19007449060324603191253886318905767644, + -1.0216262893781339623661196078159664251, 0.440360717112065707742286257923652141, + -1.07729536344845597702698328664596304024, 0.5115202810618397099474128446482797984, + -1.14404265883011435132729269783033611656, 0.59448913131288173476449654662378727371, + -1.22282310575317191798063240262653198798, 0.69028237370378530775209987072027336743, + -1.31475207163882224332064545496431476066, -12.66175385950051665575985853355, + -0.31337865171959206803740601036496653932, 0.34190456362144917178293051488830316436, + -0.23899078298125178565228781423843658508, 0.25299228952995101265319726290099817105, + -0.16818693275043700088814901799121796449, 0.16703838817128801784137910992323868874, + -0.09991035476274405146853400138790933274, 0.08303486322385310721464416924964011995, + -0.03313713188393272291666278130220470734, + -0.12613298240443333888079779423154819294, + 0.93967416218731368787446012445706716058, -0.3397062916827019135624182918913184261, + 1.01489605398798449761435369298428482732, -0.43698281023020436672327806294070022098, + 1.1001838795108250469509681992877864515, -0.54524780127808233083374164589359647844, + 1.19679089326753882408689007604638932646, -0.6657960756818576845470406067736602294, + 1.30612166329290806383000592249146257861, 8.45276319669953874290707714909, + 0.011817114248617761591021064424331903085024240920931087141, + -0.038914889113826451597414999868031641100335638090083832527, + 0.023905844568374861058252342389432410779880474666471596171, + -0.039454761693130390432608311508120268619788685752136979965, + 0.024724445831781410158667536497826576728497323743678140665, + -0.040542027593174133233642488724051892806304487580340725391, + 0.026101342595397848395283212517191921337215702812103387191, + -0.042191830789036060669996040812319078923220567555816805341, + 0.028055556599509393176092839400029783983943703036408971542, + -0.044427144877172482050873515873995828233830229613280957884, + -1.842273279581869901915567238175467019212042571221665042666, + -0.129156578225142785080862394723981275156392194181415218641, + 0.125319106462333805500576560486456618837701985885334699014, + -0.09846945299567626118139955211531859345846060358904023063, + 0.092521281991112089181222858039450384549980196414285928802, + -0.06928159296283766427605161322768375928306698116402722679, + 0.060987497482206600669258781640835802248684530953277164474, + -0.041150309073287653109683999175118525137835833316632683636, + 0.030286878697082077721788514606778120408219876498092716354, + -0.01364727868858572214942627139660105218600941147260568883, + -0.215619048474964319867197630426041739778073736012987296735, + 0.826257529333722083901236057366133578317896986864281016748, + -0.467115705285170139125795476538519784359980811811064454272, + 0.864838335109481541743604232219014836300643916135572209305, + -0.514665819902196141155489962342122585305166226111198326233, + 0.915280126771533801299438219848951549650875056538501372832, + -0.574540841091119692777487680555015332661406020207859340373, + 0.978323252304676523903525644101340712009767337756275457765, + -0.647563461610680215967117687877525574335598371361253218674, + 1.054883746090545897645381659699028435548910736365121451184, + 14.6543819145425122457330292617484151343, + 0.761508780928595282409126576986463874282980495286104016637, + -0.749943464097554399696091742605636818706572702212689520504, + 0.580412328005106366983118944183842080884429270641224366847, + -0.553692946413292014372528987028760361411016590334093411471, + 0.40827996326301251767523601116578983331058892693367938397, + -0.364989143911904229800342844267290720487951436419192372669, + 0.242464878251434131217941872180636511281869689920984544819, + -0.18125952408686753650206860478870681481145846182956798863, + 0.080406137063063324261372446453329984410118504363145095092, + 0.538333572877011789580186886159864233947443836825206771859, + -2.479976211830083623994769698876284358925576648396979101867, + 1.274116232959517284639764942931604292219213317711760626705, + -2.673988836736279385907959547105669805196779550955629144082, + 1.506638459146916772375048802617600945354840524277880062329, + -2.904160680018723141018370797360387037802653837977667110582, + 1.777412715732542775778427605682175055074438904554544338207, + -3.173956776204816931160461989814597756450595463892743141107, + 2.090146429319172433513387104926271742167923045061916915175, + -3.48739545773492414371160787535901733415370705935748764879, + -29.25629027234456922699192405774971881733, + -0.813277148428546857427477945489091446987675671933957127111, + 0.8140652203957630161093948183062331253635278085860310569, + -0.619679878765962454811465298547890964488492714485506176098, + 0.601063680995146284000723145229567237252138663800791390328, + -0.435799256112724648203913635197804080042587203568405459309, + 0.396229363685842156639561502324522310128872803331240576546, + -0.258766293298538568751550077887913499932468445496571458909, + 0.196778123157297095014013906983179451726167849005122025667, + -0.08580505699146472057866410381630573806845102167761739795, + -0.314242363364379958980327720352227233279320918597508622564, + 1.81634521087574193950814401438140304433993808195805677876, + -0.836652333376180819507278278661436211408237541527222469481, + 2.011678588010937221787675300607017076742425475429407327238, + -1.070429487961011097164118099022506654528606579077459937233, + 2.233771722732667123416883777285411264487802567819242887469, + -1.333000688805428051707727182260177847326676073178199570354, + 2.486036631970582028535908755399884541432169817488468418734, + -1.627948169302255214498714402364909626548497263115855783564, + 2.7723072448875471250429645856794927043842761077972335065, + 16.73458875485659242921071796742674000157, + 0.261947446440655505500051253714555100384429186920689392664, + 0.025227746177797025520943993613524055230677293094749299247, + -0.023457998039986900182987833025015788850004644157705190695, + 0.019204025881616867689197640146242982158476580402581923783, + -0.017283131482322763274563709585315130932532472406250176702, + 0.013495676389757410688324191292093021987021621576934739686, + -0.011375550179308353498691080840447358780935052743419193445, + 0.008009438099888802952332840294708001147487418809378013635, + -0.00564406387545921836676645220471929583902294006446680408, + 0.002655213787591449113232880782168626268613361917074364038, + 0.095160851269783807966348266300792391859463942976077463239, + -0.30166800867591477505013258920230212696525189344762503868, + 0.19861387940851814648195405466956097309566679375007108415, + -0.312303597359262301217852543257063439328863662785402753631, + 0.212328906986980753062023745702316701741904019419257318833, + -0.32843111642006129532545034805765148921055848319189942031, + 0.231673615402709413082795008140575828969418323687553217963, + -0.350298870398457847227545340152280508277596228693110892664, + 0.256937967395173210266393342829187244786381995309864472574, + -0.378240203322960444028368060879505069342711224611205867902, + -8.31576250446052202333558046762787302119, + -0.671053201506931783314035359107414730077806816542167032397, + 0.629050888172090059325785294062600573052764920564329233654, + -0.510661709735514707089324051074939852693625328429720018901, + 0.463416772185323092720458512753193737605597368219453617225, + -0.35878124984599759402865762682680876498986780585846359369, + 0.304992105505850844410518146707204939410653405856747685729, + -0.212894835506530574133153203413077500459330597810710647074, + 0.151317090105922076604137631753490991076087575953421485374, + -0.070570979186201175574273261928563413074079475300069496717, + -0.741962199874410402881372492633181670652759399071942238018, + 2.674133086357234592832129480934794290110834976409934525, + -1.658410449108144480500361673318498449177361649497015331196, + 2.862599860963823959080422936136653034437454327230464272102, + -1.88193665159812085404576558641116083279097224371013997939, + 3.101462085731520613049460322326728280500491224022195434355, + -2.15793250298421747244050976299502375434622790033535921115, + 3.394540896197534931528904342602650518119531029362865859695, + -2.490603624085508854298317118696713342761651709196591863359, + 3.746462136053229210711812102686685661517394533678189006941, + 41.41975642325750322575110265428881265999, + 2.395880657503085158835196571776907315875711886364303089105, + -2.265767460891455114365740522708152110498533470883906534803, + 1.822639397563376620414343614729619762614895439486326226721, + -1.66901559300801809300581014120909525836462471581262527589, + 1.280231973492216051470936346409464089333618031403853012756, + -1.09836700520788096152670168689112268724586326728955284464, + 0.759539302595409335365294512210064573718760485706000826556, + -0.544915019065384535373347441099790784698281953703884097621, + 0.251752573846695083896387718013550785746282427699556887154, + 1.379710999998291024276257353383080252365010309461513863896, + -5.78057838240423109568420290580146723321, + 3.353522082654439792385417462310426276555357231880070892259, + -6.38615657357094867002330094195221524009, 4.05526254400461665165245974820427712019, + -7.10390178640270746497043205957552378474, 4.87551319383724123961026295359036576949, + -7.94558274539048347099536173153436224447, 5.82689888558581968809462945529155990626, + -8.92481038861390507052551682400477708621, + -66.20956855283156587537068580085861367178, + -2.008443608103388961583290242719081684767717503264997829126, + 1.917508987323100615885492513702370860094532260989614841727, + -1.527395958380095263373111986491630055421524548792328575396, + 1.412364271799288425961790766381136017873479237511647777883, + -1.072577762261809493493577902307735379948704482151483015588, + 0.929410997618981145707688824610513939949869701245451316778, + -0.636231266383557871428572596903305553012341390902186298104, + 0.461076847610806152590638703917324736261464417623669154808, + -0.210863071128479554507794581952900341491074326616392187947, + -0.704331991123252133907171075637121994883654699902905578315, + 3.523178178068561822207439392510026766943592303360909384416, + -1.899039730909024170566000372330896192012111796239367029981, + 4.0066840934412954077548545424461314105, + -2.455708509377864729021535479476116613651878935547644294645, + 4.56018382000254353327926589855946243188, + -3.087352085160345762605607536736549350266702191232990607176, + 5.19293869891671005379125057401735460282, + -3.803763336682236096525938661896018005852932962907865925436, + 5.91538946909122450464614116360482975936, 33.14097018781826090250333229591702482106, + -0.014788511945922011871929825295100891028601111925600395057, + 0.041507323381683355807133903116175310380438826942342797119, + -0.030035340197011162451346427319274816457213179050231942327, + 0.042423759615412627065453267880957959485917469345584365587, + -0.031417580315012307118341605703832599551470598770479847525, + 0.044271241567406612229139318560958553187432707734282197394, + -0.033745724137406633489157362596133007638635340659558393389, + 0.047079201151216842028462472458699699688768572809199681706, + -0.037056760602896428565259976803347270002100511340518640897, + 0.050892321615455868830591174349165155575391256297470197902, + 2.322327830930299889486037423412126812266175282709699908055, + 0.258151978294969372097337962051622975076192006382120822346, + -0.235669991380814767379171663998452386844910213167997307751, + 0.196030839187296586297705105407712021211162578239566142334, + -0.173213257657032946930550587294033901755434977328353850862, + 0.137501713655980494133060119581244466367711903694155186324, + -0.113805243102084476983339149930339161874142316433256650027, + 0.081500424554749652673386487290095540629240204325148057301, + -0.056404545273414239858373309371392521282337614848488067781, + 0.027000790054649897720122184387782135281675439994147584824, + 0.468900073970495940544699020042940314394118763785736878971, + -1.452930750477580747239026459326201520775092999537642711341, + 1.010325795338527337393460412732744448680916245352959141171, + -1.53964714060602885193305722000314986860824724007933100305, + 1.116347922122055821276994146246387932893242654800741118146, + -1.66059915896804559559477906086181269644917222299473497933, + 1.25765583039592414354141280269529731842563093046464095354, + -1.817854977121043944263523770192737873562043400083155839575, + 1.436600439899964400439621235191330527803917879949860016425, + -2.01406074820323104652093214937428807249758905331994958244, + -30.79942480725895304465786939192186353539, + -2.76583748585219126184847574346144776863626352672249098858, + 2.537917246494280622630169543501155630148248604995485220314, + -2.099427173427148795162123104062555385344264128590374693541, + 1.864898924930677098799067196275300999432548801821175938409, + -1.472141111008422416327291003131314729899560327700671911529, + 1.225078905191984962534131566504781344267398812555949692329, + -0.872386964882903667234960701374993887930041382327991770691, + 0.607116144095775122104403155695248735163410207146373330202, + -0.288987556709470821435968790732878597513687675990745836728, + -2.231383315006562920100864612981631472362435300765345589692, + 7.74889435125779675004355399611358497876, + -5.15580833383037143615870704694484131881, 8.50389315699077330012957293906113286115, + -6.03293139205564680267039098556336770553, 9.44961863988494250172965677857935457466, + -7.10931754518870299105373535215331412403, + 10.60283362315080352170416985534530675926, + -8.40332743827225993716148391302340773763, + 11.98361088717469629130844126714813368187, + 110.63140775542922546538304291090114021455, + 6.95914900146854168043793908943270713176, + -6.42095343349567034822194930890933331766, 5.28027661746128504714134985233537377766, + -4.71720091871679321465160858471719172866, + 3.70144257457612659110000369476099754289427828313889167473, + -3.098311897793954475483134157002120426356253936487125587329, + 2.193002878556054752412860042866558339594133438977713088416, + -1.535293460847719536964839813833542770143419823658442560321, + 0.726378172318471546383539728363968864892682082415001243486, + 3.297817831262631388249179555823203946308232004469612052762, + -13.04951057672865720724078509168102367677, + 8.27475306126789818602482142442649082043, + -14.80313679292300487409815611740230770653, + 10.27157060066859302384418183724050394377, + -16.89024319195802422224477108434603478529, + 12.62124985962758301431571318329808340227, + -19.34880482712755762783955976278068343812, + 15.3645911995411451782879639303658234151, + -22.22273103193059114210294890989775366669, + -147.49663958956267642259324287785549491337, + -4.79352154292008807692669339706003331377, + 4.44896487970415134362384712560250598796, + -3.635661790142085371318607407762672297187385125497345448184, + 3.267815095097670715841297845276682135953429846421530047255, + -2.547797311537896045067972824253969559245807727309486065545, + 2.146026413292433445527651320474142845288636193203305206314, + -1.509184665650188734486852784308708472267988923148606677121, + 1.063317132485135097653595046609039654809241327752707659507, + -0.499827327757530850282140389141126453702317597274821627636, + -1.484682959709979509077233856137018163976584439519712269773, + 6.82092213343560140477920980990530271334, + -4.10701071026041882721170857854098587405, 7.97846767527998958266390541010204658494, + -5.41391068760743925430881213799109011042, 9.31587700733568143192853339470608371489, + -6.91339399002935431953444898085569065998, + 10.85802271637101162682654617538123618681, + -8.63186978571668569050859507697653002762, + 12.63305160491489530781746921845795466621, + 65.64540577089453016138428642491593758773, + -0.256057453908453096627772024861723574544178845272908351286, + -0.036801853630338144715533774286036402538874858600962751702, + 0.033078064094115749662413908153031535594590544457667471148, + -0.027875248166686865163437036393431559277779788631607758993, + 0.024251011987734491262116850522680696213195203265284966951, + -0.019514360813178021345840398420286099856124497636105743113, + 0.015904357337139392740817527286754093047201908342987616046, + -0.011551255196668523743125868289933806219873353910376700861, + 0.00787378270965895765605383125663305573225863050929102499, + -0.003824316090323470091277480351240447179470885349210301842, + -0.141327811666895597110786446396407477949772695071577981481, + 0.395178923550613140789694207526542799065350524139828094855, + -0.295997772163658529514763266116459738497413101547784691016, + 0.413850847255185732242321333464298967094450148412600881493, + -0.320528020043149714682230672528995081992534706501775097585, + 0.443893435577654472280441685142269642165465175020119074521, + -0.356690821076891879245927762293614565744943794136719047523, + 0.485850218654532718237724075317477885197352803124126109586, + -0.405130594758564309611899965429499576942229859788998801441, + 0.540469266981313136693891886028533574765709719647871058864, + 12.71917422746774831917262496288009112486, + 1.575657766121991735247396207595541103907970846853653564526, + -1.420620267884084861581879827106173049563022727670588463607, + 1.192852290988634319140846644054178476263209997551446580145, + -1.041138562128023041856690144246252368713678514379433820522, + 0.834734432227563740644920767724181787532832222823164662043, + -0.682618253175798484920553070575273131824098050268483285615, + 0.493974325704644511319919804432312664221618890024878029008, + -0.337888772648412056158951610012238358907786490728685765294, + 0.163519179868454327711190993344394502030404366112444507644, + 1.810647289658816607324905676821557556388563146335604736047, + -5.55533607225779021833893350153848071529, 4.03713137306020887627487240037564686746, + -6.04175867371460840931827546956381582453, 4.61706357547604960133124258208516198702, + -6.69717627241318352638538372994722982337, 5.37213804206383907947149087901664731652, + -7.53412841557993410849019291657175064618, 6.31642273237046150232806371555616440711, + -8.56827969138235375082594380173758616072, + -101.4326649470130456577617627405441534476, + -9.90332681759734959591277523569672345141, 8.9587704438201803222559859541400604341, + -7.49351878272042687023001157795125006864, 6.56337100058510476495779359104100936127, + -5.24175376035002320201741118183865115754, 4.30214156715101802346465648757679279187, + -3.101100852292154513467034394840783833862282470476035222411, + 2.129179709631660446618133632499251505982549102671110593571, + -1.026410146999138992467294817656926970310765554751697781676, + -6.10426272323360043975543788012489897829, + 20.80820844445091197430760085638117335871, + -14.63196243162443595792314748094044684573, + 23.47148243882955835541440787441058681122, + -17.69286050840597717452686295127576486133, + 26.79965087744478812913093344525590878452, + -21.45127736706605620694157680101310101179, + 30.85872003289574965492346860168047007535, + -25.97933397909183057934279409959097214986, + 35.72730379640509575731861784635517738388, + 283.77305326539945784025549778204146360161, + 19.08808501770381738639392693645893501745, + -17.32941617052784760283335718836391426005, + 14.43617654771880343665376913153204502105, + -12.69166669408130155066787366007432597617, + 10.09429637906541450282411958600521330813, + -8.31707685220691696766574465440786264088, + 5.97036849969845520147894883397471341334, -4.115605095702478316771152075154557653, + 1.975823717366589011837557199747758944443883177123930698311, + 7.47283894206645915611041486870626233109, + -28.67853338015964027595875604010937295825, + 19.46757961819177118173859395181944003096, + -33.485451101447199114858256205680234699, 24.89511493879750051175167505397823257943, + -39.24850041172171655432894094990049093496, + 31.33716628322680384994529400920450133259, + -46.08522214135169554195116545144545100495, + 38.92019538029957707724812143484822581031, + -54.13170430839446840647363990811031395484, + -324.54670038814575931868733097398509449125, + -11.15137344498570785409807068339953603091, + 10.16259417115943549083147656792717055303, + -8.42964553667570033072560146870215036066, 7.44053710634280461705197982679163909956, + -5.89210856944751980016618281835333259614, 4.87480296895680736352932136941417276278, + -3.484052133017074496365400870796810381520212928049854171629, + 2.411900057399299708888981536377731919841491990828249011116, + -1.152856405927615148567371980205882935267657093555822535892, + -2.998000922988408444648507070029105670890078328117696373945, + 13.13961126481091996185857961305135784929, -8.5933339741758423602170349364230889636, + 15.84140874002494047425110625334610454016, + -11.61582412222875392708636775565390130329, + 18.99726380499859651666424192972412321966, + -15.12522431266609235663388810472750217103, + 22.6730878871857033272452866513381788385, + -19.19173499911296550612659728495590043443, + 26.9437836393930633632738733963517532079, + 130.04856608588109185514943384805537667706, + -0.00551685914480483115, 0.00383166826329893028, + -0.01107910504463041276, 0.00392242677051488423, + -0.01121341489735282887, 0.00410022766934416659, + -0.01143103552325743129, 0.00435751623622209275, + -0.01172240815234229516, 0.00468265160768314721, + -0.01207371575512900842, 0.00505952906935149774, + -0.01246643748119653436, 0.00546706434325942240, + -0.01287676013732901199, 0.00587852922967377171, + -0.01327483458369148675, 0.00626072495076088371, + -0.01362386180428826199, 0.00657297629435848671, + -0.01387899001788521665, 0.00676592611035669190, + -0.01398600047880395325, 0.00678010580840181058, + -0.01387975550942632287, 0.00654425317669483485, + -0.01348237773744558402, 0.00597334401353584975, + -0.01270112440295574283, 0.00496629865386127595, + -0.01142591486675509360, 0.00340331839083577933, + -0.00952646299502411115, 0.00114279993524864861, + -0.00684895880845284855, -0.00198223169179524792, + -0.00321223554421190289, -0.00616824020372091098, + 0.00159665105012571731, -0.01164592333252398304, + 0.00782751494495050569, -0.01868567591306876524, + 0.01577289932524070931, -0.02760387310195202767, + 0.02577481270846897904, -0.03877009056170410695, + 0.03823246648181807122, -0.05261539489752908166, + 0.05361115619148085210, -0.06964185631800622056, + -0.72702340658979747179, -0.11901788557702494553, + 0.10781788899263820836, -0.08494126330907547651, + 0.07680659957975853602, -0.05725479542641895292, + 0.05166648969129684910, -0.03496258376741386703, + 0.03147542870447711527, -0.01721102568611536376, + 0.01544375563467406329, -0.00326981200558040200, + 0.00289653740890911298, 0.00748463573807822864, + -0.00674189129058601171, 0.01558359431218297834, + -0.01396139300297683482, 0.02147860249186919063, + -0.01917774887547137735, 0.02555239526200124914, + -0.02274285748261718754, 0.02812841568535804498, + -0.02495360526982505489, 0.02947908647541628430, + -0.02605957928046208349, 0.02983300128191120060, + -0.02626977220770847221, 0.02938117640677757533, + -0.02575841177026127332, 0.02828248680033714282, + -0.02467003064823838909, 0.02666839546496058144, + -0.02312387947237333832, 0.02464707257278835051, + -0.02121777340854649752, 0.02230698947315847697, + -0.01903145252271460156, 0.01972006313935405208, + -0.01662952717619263499, 0.01694441832290834865, + -0.01406407203908390316, 0.01402682760879008124, + -0.01137692579242408249, 0.01100488357798883390, + -0.00860174810816324853, 0.00790895228496566079, + -0.00576588095846940814, 0.00476395316215378218, + -0.00289205763570544354, 0.00159100720327448272, + 0.01261245248172582385, 0.00971700414967629524, + 0.02820262124979095938, 0.00636947488924472383, + 0.03132974169485707588, 0.00288269837782265028, + 0.03457538605806446258, -0.00070718154447934939, + 0.03789781489998973740, -0.00435209503936459172, + 0.04124221012766234734, -0.00798964437355055568, + 0.04453807684650341880, -0.01154029487439305578, + 0.04769620758153732959, -0.01490409560449625255, + 0.05060514124984259732, -0.01795685734471452744, + 0.05312703935254585452, -0.02054570488213628907, + 0.05509289053724011898, -0.02248390850916689651, + 0.05629694176655733462, -0.02354488584497811676, + 0.05649023959544660634, -0.02345524935660865673, + 0.05537314825835262105, -0.02188675701733985152, + 0.05258669211395423926, -0.01844700309204969427, + 0.04770254816704349449, -0.01266866273963577691, + 0.04021148951864327026, -0.00399707758156321938, + 0.02951005227143552526, 0.00822406083905695244, + 0.01488516616701007940, 0.02476920719336211940, + -0.00450354747991990600, 0.04654995474726647542, + -0.02964414876330540363, 0.07463688519997778437, + -0.06169580882853799297, 0.11028468788878478812, + -0.10201573598623135675, 0.15496101792413008447, + -0.15219009958832913076, 0.21037962837591669962, + -0.21406952285663458091, 0.27853838615601622664, + 0.96994481533499166126, 0.23070909730061650578, + 0.08149241132275680810, -0.06774581401434494332, + 0.05331239626178230218, -0.04303160439824205152, + 0.03181247407027135155, -0.02431993275205081642, + 0.01569727107231399729, -0.01042939853782810442, + 0.00389027240941400201, -0.00037999722004080890, + -0.00449979461058223722, 0.00663797160724996765, + -0.01020770787409374172, 0.01129047493924661451, + -0.01383630083283237527, 0.01412242189469396954, + -0.01587739864326751307, 0.01557698652863863560, + -0.01672964496852928640, 0.01601204779640731310, + -0.01671365667553798007, 0.01571415348735234752, + -0.01608488491198662926, 0.01491036022355342675, + -0.01504451008654099711, 0.01377825417415571262, + -0.01374865411880199159, 0.01245441605309204579, + -0.01231615511703713223, 0.01104155844772387700, + -0.01083511663632664296, 0.00961453287377285297, + -0.00936841522024787002, 0.00822537756489876912, + -0.00795832547436955452, 0.00690755436145714611, + -0.00663040097456233605, 0.00567950371194406774, + -0.00539673145971127349, 0.00454763035543218584, + -0.00425868163888253656, 0.00350881838335790784, + -0.00320920425268274821, 0.00255256280417961567, + -0.00223480951053625686, 0.00166279521983652627, + -0.00131726446603322380, 0.00081947357475553855, + -0.00043508911665919581, 0.01552929451626864146, + -0.05336338722930451112, 0.02981016188833992761, + -0.05162318820478238590, 0.02768344576255073186, + -0.04899663879425891072, 0.02466668408448949648, + -0.04547723361898219074, 0.02075939273058108672, + -0.04107145081706938677, 0.01597605983865807780, + -0.03580302477116303894, 0.01035102806803796065, + -0.02971847893838695451, 0.00394472370978003316, + -0.02289410187313737147, -0.00314856451713282177, + -0.01544459018983806650, -0.01079111104619678678, + -0.00753362799154610324, -0.01879008878219779952, + 0.00061327582796835548, -0.02688346418291742007, + 0.00869331191684856799, -0.03472303898783447168, + 0.01630780841524732960, -0.04185415321759954066, + 0.02294005713789529569, -0.04769148119595777169, + 0.02792891380459940759, -0.05149025716756568116, + 0.03043745609576783973, -0.05231215767280743278, + 0.02941586597515388757, -0.04898494199743377159, + 0.02355756774465384701, -0.04005480723501154972, + 0.01124749799956109748, -0.02373024792409280520, + -0.00949879501844577180, 0.00218398141555323829, + -0.04110673070859165168, 0.04036442295163183286, + -0.08652669846173068058, 0.09405986699584756305, + -0.14933249928552827512, 0.16719786522670657125, + -0.23383655530636976438, 0.26450930752745527297, + -0.34522457468521400292, -1.84373725562854740012, + -0.33377729253913263063, 0.28145563584659122336, + -0.21997862602140469401, 0.18143422878689410838, + -0.13298751027907537714, 0.10550911702883669641, + -0.06762130210810157749, 0.04895325066279562071, + -0.01957217450123023908, 0.00784459362269569055, + 0.01472725501829331290, -0.02105815407424898797, + 0.03821882915708051109, -0.04042175942749363926, + 0.05331697729975302252, -0.05242908814498498105, + 0.06199239404054832786, -0.05885633413557941201, + 0.06584328872730904614, -0.06113872564545381333, + 0.06615595430366623397, -0.06042633467192215502, + 0.06395616875373164034, -0.05763139740953419909, + 0.06005273862665716500, -0.05346836372608086002, + 0.05507431751415364091, -0.04848772935921919630, + 0.04950047954615872242, -0.04310456247092351451, + 0.04368789597652989604, -0.03762251361695397728, + 0.03789234916144421789, -0.03225399266939688037, + 0.03228722044253772017, -0.02713710568345229987, + 0.02697900469365873549, -0.02234986732279095611, + 0.02202033290289409639, -0.01792213870255883121, + 0.01742092370796727296, -0.01384568505282066098, + 0.01315683406417563622, -0.01008270132696001756, + 0.00917833717177181894, -0.00657311583963362742, + 0.00541672156844859483, -0.00324095144175490235, + 0.00179027820335208037, -0.00998176481558320401, + 0.07004910008566912760, -0.01615596565298059797, + 0.06528753785208610272, -0.01112862737122684298, + 0.05926515958149193575, -0.00480988774136887828, + 0.05192039075180831381, 0.00284994391272265415, + 0.04321771933647901992, 0.01186990602904763360, + 0.03315738354834902452, 0.02222763539109498532, + 0.02178728014789379705, 0.03384619459712724654, + 0.00921751515614894872, 0.04657801979554899996, + -0.00436190893614698399, 0.06018545423073017042, + -0.01865969153744131276, 0.07431724286828401971, + -0.03325744278540623822, 0.08848025875338605406, + -0.04757871513674043207, 0.10200561061851648459, + -0.06085193970034134120, 0.11400814109471586744, + -0.07206619857091911552, 0.12333816282194977332, + -0.07991859020768683763, 0.12852409250778265570, + -0.08275174368034798889, 0.12770442677674642695, + -0.07847980533410439663, 0.11854725416354094936, + -0.06450095348133891293, 0.09815520988167332483, + -0.03759418781347848015, 0.06295344837835149809, + 0.00620221572056235768, 0.00855782668047679398, + 0.07173360374094683856, -0.07037994827543120335, + 0.16489668896576686885, -0.18035396124260180684, + 0.29283617224964347825, -0.32921685421173801922, + 0.46417490111174070089, -0.52642872012678987304, + 0.68928294012833757343, 1.85352560197468818615, + -0.00577917210846778853, 0.01580499621916471586, + -0.01144760591712027167, 0.01558269875924717281, + -0.01111250172140038940, 0.01513238495107778123, + -0.01054460332755289588, 0.01444309932674875917, + -0.00973067475267454934, 0.01349963968026328398, + -0.00865393346615445265, 0.01228410563708146226, + -0.00729590602952150113, 0.01077808463076071477, + -0.00563897147936483992, 0.00896558376199439559, + -0.00366971695827939893, 0.00683684897838245185, + -0.00138326498771233070, 0.00439325007084866680, + 0.00121122874188986417, 0.00165345215733650377, + 0.00408366303559632923, -0.00133885724323362003, + 0.00717436825252997217, -0.00450536046985680443, + 0.01038341641913529539, -0.00772123126307058642, + 0.01355743797977028431, -0.01080051991715558213, + 0.01647343711506935385, -0.01347824818066666215, + 0.01881900229829784957, -0.01538855712520405955, + 0.02016819755461847150, -0.01603813104009708598, + 0.01995229004835750997, -0.01477398011964489027, + 0.01742431805056795374, -0.01074450096316547677, + 0.01161632646147159331, -0.00285254287054021024, + 0.00128789076033978926, 0.01030101483687595465, + -0.01513569022234304007, 0.03048492881106132715, + -0.03963743244927576265, 0.05991855760341852077, + -0.07469716158598647959, 0.10136853590248587342, + 1.08464115184427933869, 0.43039240134532363857, + -0.34537195956701954858, 0.26598910085814125859, + -0.20625562104050748635, 0.14939710693947058640, + -0.10909411319805968621, 0.06950537004565966737, + -0.04392368558630291298, 0.01739216863393270099, + -0.00276832182828219437, -0.01406102295873830690, + 0.02071363109127160110, -0.03049274235873340386, + 0.03152490979851345354, -0.03633144501519722930, + 0.03357575011029523965, -0.03502032375385425583, + 0.02988885974413912558, -0.02920404941163720972, + 0.02276941717197000781, -0.02088340292789961361, + 0.01394560527286497695, -0.01154288012345441004, + 0.00468436545135307754, -0.00225558886267724756, + -0.00411364656748093842, 0.00623089314377424808, + -0.01183652424990253027, 0.01342458809662870102, + -0.01809812803351167759, 0.01903247814406474128, + -0.02268723019558506471, 0.02291492221394468565, + -0.02552673177808755661, 0.02504923888587506919, + -0.02664121190447829232, 0.02550085446185481122, + -0.02613133604846197208, 0.02440065955437897144, + -0.02415387340727596574, 0.02192742191288794482, + -0.02090626000824665626, 0.01829427291825631852, + -0.01661479817752003693, 0.01373842443106997220, + -0.01152570838728820234, 0.00851338498935017701, + -0.00589834944126419423, 0.00288303256307973757, + 0.03706762815338294353, -0.13232268952516326732, + 0.07908111910398271660, -0.13604076873058337793, + 0.08182829526033189027, -0.13739629460592203691, + 0.08204325775538665044, -0.13603932043088301507, + 0.07936273504152040192, -0.13159709999374055722, + 0.07340903596274624132, -0.12369242412772259165, + 0.06381169870909678132, -0.11196891955397671181, + 0.05023681637416833184, -0.09612482025475252434, + 0.03242571877104945960, -0.07595707340757139325, + 0.01024506910281987142, -0.05141805056226591425, + -0.01624912480215444377, -0.02268761126433967157, + -0.04673056989804724032, 0.00973617665142057637, + -0.08050120059884784129, 0.04492370384400386218, + -0.11636482170313142137, 0.08137315332606614993, + -0.15247073188785426057, 0.11683688666548140700, + -0.18612120972402373953, 0.14810821982175723099, + -0.21353561017617853079, 0.17076069900328802453, + -0.22956249231003617028, 0.17883055139356260343, + -0.22732964652704237829, 0.16443130711138928546, + -0.19782007518444050254, 0.11728762769223698148, + -0.12935986132689325512, 0.02417308689908822389, + -0.00700138722173940416, -0.13176602111215210411, + 0.18821751939414829713, -0.37182188441841318438, + 0.48016129360857134900, -0.72269605095184941135, + 0.89865789069106283282, -1.21765886561580138903, + -4.39913267011877184842, -0.82714299222235865283, + 0.66073717457451164314, -0.49920115918363411334, + 0.38329479015258888230, -0.26699209406679702550, + 0.18986487939902060851, -0.10827991520961283145, + 0.06050660097121394326, -0.00520826907291782083, + -0.02074451463651781971, 0.05647187678426078550, + -0.06658326051982915716, 0.08804861379689243872, + -0.08702562136455353758, 0.09838888708667400951, + -0.08990159581478025796, 0.09438813335651045910, + -0.08126514764652317813, 0.08134377429537625881, + -0.06573422145058493982, 0.06326450405844750990, + -0.04677183808148174804, 0.04312553136018459909, + -0.02691763940521117032, 0.02307841389062597129, + -0.00797784320367831562, 0.00462282011622913627, + 0.00881963507931733670, -0.01125355918255364039, + 0.02269916482142772182, -0.02396167612926488472, + 0.03323563354333339964, -0.03321990164540411516, + 0.04027282181094283403, -0.03898113123865994817, + 0.04385844104888229206, -0.04137501959691035347, + 0.04419288791714203607, -0.04066263109880820931, + 0.04158921597448973079, -0.03720120205024209786, + 0.03644219820634512358, -0.03141704978254516306, + 0.02920466191111809051, -0.02378494218321083875, + 0.02036952814326434616, -0.01481246578559310134, + 0.01045618774040239438, -0.00502810691587956236, + -0.03411888847007982922, 0.15338325174046296695, + -0.07772044108974779375, 0.16121206846305952132, + -0.08469060648897472343, 0.16622873111275440761, + -0.08854702249740217801, 0.16781916222720855147, + -0.08866698434032266318, 0.16535725967238326661, + -0.08442694649383604422, 0.15822923148763018419, + -0.07523102356023363135, 0.14586675163448939441, + -0.06054933803245813456, 0.12779108946020978355, + -0.03996857839613627422, 0.10367080561857582033, + -0.01325760980695633688, 0.07339612804835203563, + 0.01954845402917694541, 0.03717373726664351119, + 0.05804164019356757714, -0.00435358317559762700, + 0.10130710062161024654, -0.04995711895703210809, + 0.14775589534041025375, -0.09763590012371384241, + 0.19491768662933561806, -0.14438637481025037856, + 0.23918517233637320851, -0.18591918678442473367, + 0.27550058068540050904, -0.21631253160248334333, + 0.29697278408000032934, -0.22758965638813427601, + 0.29441152332082920484, -0.20920583361462513627, + 0.25576281732002348335, -0.14742752708897896574, + 0.16542681015722437987, -0.02458341768512704514, + 0.00343601167459529726, 0.18183660316706343196, + -0.25553195593400374053, 0.50026251399964105637, + -0.64333747233235716312, 0.96633819351398575481, + -1.19979347649841883161, 1.62446690262207393829, + 3.54321654625748472256, -0.21110962704589514294, + -0.11266671632038706419, 0.08268984222467105905, + -0.05716859202584648192, 0.03751215678091399802, + -0.02089143252250461741, 0.00879758601648085274, + 0.00135250988137868683, -0.00802003919987646745, + 0.01357295671320827950, -0.01645295305268028307, + 0.01883799741766243457, -0.01917330739622202448, + 0.01946738527582608097, -0.01818773102045551440, + 0.01719002835079487534, -0.01497928092406673739, + 0.01327180115816274826, -0.01062239613609019216, + 0.00861881354978876260, -0.00587555447910280675, + 0.00386043615339759331, -0.00125556291519500528, + -0.00058432583742357234, 0.00290323803016417480, + -0.00445411591407307832, 0.00640212360405201329, + -0.00760367521267675799, 0.00914121748940977322, + -0.00997138927575066253, 0.01109092547743342760, + -0.01155422027597101907, 0.01227001340142968785, + -0.01238861028879211651, 0.01272904503523455272, + -0.01253619017297744921, 0.01253812299202200498, + -0.01207333600258605859, 0.01177806464982560780, + -0.01108378701724867590, 0.01053430149429654232, + -0.00965368096024160974, 0.00889291880484974033, + -0.00786847884069640478, 0.00693835731666184868, + -0.00581134522611327555, 0.00475238266933428102, + -0.00356262512890790891, 0.00241399479045846261, + -0.00120011680244782649, 0.00879337868422610733, + 0.00560242325358608576, 0.01487748085308594065, + 0.00854366701471974757, 0.01169900784177251539, + 0.01185861308956835669, 0.00826431563170655810, + 0.01528922552810627403, 0.00487552312028703781, + 0.01849070535326601677, 0.00191823417804714061, + 0.02103907455050798431, -0.00014825269426210817, + 0.02244349791083718321, -0.00080617243224531969, + 0.02216484550169259965, 0.00049832370497238294, + 0.01964244470727900468, 0.00432343002541935115, + 0.01433149554980667206, 0.01118782181057128601, + 0.00575424490893476637, 0.02151121470749959436, + -0.00643124440005256315, 0.03553509000909799848, + -0.02234001031155414749, 0.05321836231521814148, + -0.04174101947170701793, 0.07410161293768553759, + -0.06390287185144336024, 0.09713213555202049321, + -0.08739584330675051471, 0.12044039795562096196, + -0.10983993390636084819, 0.14105656621889023361, + -0.12758645383422839714, 0.15455340755559737742, + -0.13531813799933661846, 0.15459911872122725218, + -0.12554976252732219510, 0.13240033916483390231, + -0.08800765620246746301, 0.07601171078538733472, + -0.00886225854539771270, -0.03051626813943424804, + 0.13021714218188712442, -0.20818480350043536142, + 0.35322228819936646316, -0.48432993302126164936, + 0.69122424580087360457, 3.80397716382247264022, + 1.35070880605387677598, -0.99571403845854733472, + 0.68901549933828598604, -0.45757338929420304785, + 0.25759142999552103737, -0.11659672763180151112, + -0.00583650657171797156, 0.08202696921098251437, + -0.14939896138854211194, 0.18045561210942365205, + -0.20992135680519644070, 0.21076072927148972735, + -0.21524393456546592196, 0.19702267149432001192, + -0.18611213621241445848, 0.15703450968589521830, + -0.13771081696677117678, 0.10368194474670434924, + -0.08090392532771109591, 0.04605562965601771308, + -0.02323123632481552403, -0.00965693208205728459, + 0.03029476298572558735, -0.05946054807848034224, + 0.07655590234900704061, -0.10098977423580902946, + 0.11382937644008681022, -0.13306738282890528957, + 0.14139799759486090802, -0.15536127351444004030, + 0.15924910459789504147, -0.16812114554534593469, + 0.16784515355554516236, -0.17197951837820346643, + 0.16795200409908589423, -0.16780441544472471382, + 0.16051340240557304684, -0.15659329340970168376, + 0.14656222650216380043, -0.13939967533730598936, + 0.12716076190898484288, -0.11728548839832635131, + 0.10336366948448301450, -0.09129336305527438467, + 0.07619843602360935886, -0.06243416066907948869, + 0.04665899753308404285, -0.03168579241846158911, + 0.01570892404081728616, -0.00788062830360144670, + -0.12373533419306789738, 0.01702953888771774685, + -0.15684692710737777044, 0.05090912213718094825, + -0.19034291999476263268, 0.08437881807096882236, + -0.22253580773860121012, 0.11556453300066957257, + -0.25136942582509325117, 0.14223495283598719396, + -0.27444726967766291947, 0.16184161319619022601, + -0.28908616967681888266, 0.17158827863632020172, + -0.29240374193862378460, 0.16853912570017323680, + -0.28145028561572560388, 0.14977768840941624306, + -0.25339849617225362888, 0.11263148157936893334, + -0.20580760413854140567, 0.05498076790248222073, + -0.13698243934211093431, -0.02432580297069831393, + -0.04645258917770002383, -0.12492084295670032035, + 0.06439758434889035488, -0.24419919735170370068, + 0.19151060503405301083, -0.37638895019026941124, + 0.32710374925520924183, -0.51136242409427556943, + 0.45832809167212729129, -0.63312670177055063725, + 0.56557231500773941235, -0.71792077287422317866, + 0.62033132040903371518, -0.73183163962652064694, + 0.58254357856967897700, -0.62782417946293456179, + 0.39728206593152798343, -0.34205877453803362753, + -0.00933899323764278942, 0.21065389464830797106, + -0.73520612605248769622, 1.14244059730414537768, + -1.90839353093721530996, 2.59920991896200614946, + -3.69472843391955274583, -10.14649766391068652638, + -1.81075266402760060025, 1.34207499644410588324, + -0.93047108737206218887, 0.62628126583998089405, + -0.35701172104697992404, 0.17316135164382245870, + -0.00732919215686259409, -0.09037867382483064094, + 0.18276136211462354342, -0.22055817193534879572, + 0.26236757200341825902, -0.26014455618892162736, + 0.26861354577232826601, -0.24124721114721894843, + 0.22916068620749183160, -0.18758966123724415964, + 0.16425360963945004333, -0.11634974523975871730, + 0.08837334002685265366, -0.03964299294921509731, + 0.01156655916043822750, 0.03428791287575121138, + -0.05949162424676426170, 0.10012510618911137084, + -0.12065347665671814770, 0.15472522722969000997, + -0.16963315366962500308, 0.19653050625365278692, + -0.20548683978311590992, 0.22511112409514472121, + -0.22821111564813595374, 0.24081394016145804549, + -0.23843692025787449618, 0.24449703668784661392, + -0.23720045816080989609, 0.23733316458200365284, + -0.22577571919939026790, 0.22066819936680218128, + -0.20555603004556366464, 0.19592321701528309097, + -0.17797432676159813392, 0.16453085560807248489, + -0.14445369589745848948, 0.12789830370134611104, + -0.10638123644991860639, 0.08739060287994704357, + -0.06509949409558699052, 0.04432901316531071001, + -0.02191065096157937542, 0.00462186892487669292, + 0.14352790965899070441, -0.03594200471706139599, + 0.18839031305132050709, -0.08142645608780442468, + 0.23272540736885632962, -0.12548473565597237367, + 0.27465071048384004371, -0.16607720673827730540, + 0.31197219123579994493, -0.20086049801282088167, + 0.34220531340728777003, -0.22722028495333346232, + 0.36262148098118168749, -0.24233355888971394587, + 0.37032854878468285387, -0.24327008135263200606, + 0.36239623592072967018, -0.22714511694659381136, + 0.33603991795013204991, -0.19133844201912553196, + 0.28887946770514283390, -0.13379813674830676185, + 0.21929367023296578165, -0.05345190044821659242, + 0.12689538007328582392, 0.04924628001523750215, + 0.01315816653870439598, 0.17160017060527305022, + -0.11776812138083775361, 0.30774478653137771200, + -0.25800744025621086264, 0.44745934954810107076, + -0.39461830637661754473, 0.57465928120604226059, + -0.50789885305005533223, 0.66549438553515050110, + -0.56925627762057684489, 0.68596560461038769141, + -0.53854466816872059720, 0.58895519457058143065, + -0.36075610285008674616, 0.31054437977114512925, + 0.03807271034957853545, -0.23453207161462180652, + 0.75590275551533880893, -1.15847401222081325400, + 1.92088012861285961641, -2.60726085495302806194, + 3.69890202943744350605, 6.77439365960242767528, + -0.0026951572113763988160882647788846532, 0.0022866458613710398193139125559317372, + -0.00514717117329615764032657098319608179, 0.00180371342857511529974306272713269378, + -0.00443102457219779565882149876253553204, 0.00086443172724591535811798846398541688, + -0.00328178867838733508586512321936092773, + -0.00047791517896731565862496884052281816, + -0.00176615614691317184312913335444635561, + -0.00214319987392671172066788520396015733, + 0.00002231225956865057890808745699640678, -0.00402447595621051209966391721682045966, + 0.00196340096384904240642094685376162982, -0.00598847049238193769655931069139323396, + 0.0039111178898339530848912711233476149, -0.00787697286052389472343667831321735952, + 0.00569573818622052790639584147927972364, -0.00950969935988516385351153099158792147, + 0.00712767960866272831652491417246099459, -0.01068939563979410318608388144512537032, + 0.00800407746575524875464542710450417541, -0.01121016196311908059734533423076834637, + 0.00811917381675731588757654778336545924, -0.01087025963956110844966267297549955926, + 0.00727993840878678160598187974447748061, -0.00949099243474815852540589975171801178, + 0.00532871044746469924530567633038868773, -0.00694366826801789683674450564656446762, + 0.00217510579691369762859641715416872525, -0.00318715046332333741471592295165383704, + -0.00216000854545423544951380672884075142, 0.00168087635659537384518224906279151386, + -0.00748499070506649997492186166107403198, 0.00735504991281351651546020783461490134, + -0.01335804079810331677487322102270949384, 0.01323109469038991403238464769366644064, + -0.01898264246066146098855834463350144124, 0.01828631085993538458175867933988766886, + -0.02307129431512382807757493537117323868, 0.02092455097880162641432861710825084664, + -0.02366952319949780818001937810903090611, 0.01877682896771622950461804540444868115, + -0.01793039346355741518689265316307628653, 0.00844675501879476099339940117382862029, + -0.00182758662945195313754263527606784487, + -0.01481235630652412812883046393332516262, + 0.03020744579106489251068067886882840134, -0.0575046744782302201726556059798141106, + 0.08574183800422313245967788803055717738, -0.12840268356733499757526955812896675703, + -1.44447507674287111096096695954543229821, + -0.69356260409626604350553852644355264201, + 0.45845234927576752932910584407185332539, -0.26808281926145095614039785613310660496, + 0.12547100111908380099014252385350501874, -0.01270771012816442966124912249468421089, + -0.06561576327891337694934590902765290012, 0.12514446651941261645973071148828704703, + -0.16016459950198999384188946417707745132, 0.18446033914604581891320232246846143377, + -0.19155690376739619568898194368483198897, 0.19369937973082562005471184905561211945, + -0.18393993657119595653573444356150823629, 0.17324002377776092728513016077888829246, + -0.1544068794821967206656339411707011332, 0.13731996149975277482728252685330128962, + -0.11472124297965946158273938049812506582, 0.09556633799770648155493272518272052343, + -0.07267251964311144450296385626630476955, 0.05419468081149251410713261109584206853, + -0.03313452921202652493996216699306947409, 0.01694127511543039221554744470916130923, + 0.00111495863900825443695237074188668528, -0.01421801969625091322283649422833443709, + 0.02876542535531943831591448620654398581, -0.0385192539127422946616094613149431243, + 0.04949659410854296560484167327568191448, -0.05599698031721464530194678597755769842, + 0.06362151239051477364797507849976735461, -0.06717743348783167049757560318629617508, + 0.0718240878130822868975369616449573377, -0.0728552740297484530787341725900267668, + 0.07497042937793776276648044518012509485, -0.07393540151954958833853854240053702109, + 0.0739774465284838338281219167723351227, -0.0713250517019771362734084923703742661, + 0.06972551562409610366318686802368976309, -0.06586442733571844917234221454394796314, + 0.06300476214398709526827046018580904991, -0.05828658137132766852547306624888161405, + 0.05448673035993113709009762036870697709, -0.04919927013802861148970590728275912205, + 0.04471500623605302135240987101944530844, -0.03908310091635715531170865703971006227, + 0.0341097946755396247605498502557749423, -0.02830157672100061169965401776277861612, + 0.02298258674449207468592586343051312281, -0.01711964331999961195347611786155041044, + 0.01155793276469666721038066945038417682, -0.00572811102519202356734980610976115675, + 0.07726956802082358423537741415889137172, -0.07163627416183410068291234944576253182, + 0.13829095978090381952340998309857653244, -0.05092564637252149970578065607148105387, + 0.1130372843395403629610405621089793827, -0.02158924441680841619286672215923673077, + 0.07966857010126974923602350080945999912, 0.01521255155690975850419827065562917662, + 0.03962291120386726820518338582426995736, 0.05775680394179970426203840845324618819, + -0.00508578347539873300164521730181035445, 0.10373402139309388193512726704544801828, + -0.05184984316637988659470764321597058216, 0.15023846329260175951222135912213676958, + -0.09746896667429258479776221105673832405, 0.19378308599639627991118693255798947781, + -0.13818242812087239479609243270300874118, 0.23035295971577947608738444492923758006, + -0.16974821944988659570172122398455462589, 0.25551527627495596867272847738046591768, + -0.18758975747705304990148385294559508415, 0.26460936073435698470132148357682276155, + -0.18703666167904494370094279290098528735, 0.25304662727870613240046830220535608148, + -0.16369335426180052029925921997673718029, 0.21675845814139074063225870371848945378, + -0.11397814727159118681966608079240963206, 0.15283986159361774609465319640820332326, + -0.03588642002193399842451978875592929215, 0.06044887077592357132866594461187480372, + 0.06995512135676565859997762671531379533, -0.05796355757308127619690889843276501607, + 0.19885976712011778569781313231750847745, -0.19500034644217608102315896211842314977, + 0.34017447701560116227479399611067299284, -0.33612707177703685914116101407254485824, + 0.47476850646195862671049706557497074139, -0.45680136887905549813352878882403715694, + 0.57176031435082164030814762667177555657, -0.51874944083910583021500355171989096248, + 0.58429069506137006725761708431951882772, -0.4651772646617723307832377822969048361, + 0.44410739518336408768242552721018345652, -0.21465724999240557884112218198186797776, + 0.05467509579387071213045465011791738919, 0.34662522651277815713688318189832266423, + -0.7175370920986504582285012336030395592, 1.37464861067312004949572312174028694395, + -2.05401251316681365143322697518110515732, 3.07981952028153945790098238062608930463, + 11.40956295387489636280124829887, 3.83986659438918143471292765677504215076, + -2.59045002814586735071846308519848319475, 1.57088562889972056996642603934944180835, + -0.81411569776756745655740844280794175509, 0.20814062693029007648978150989675439504, + 0.20640256437302705914116036191813077073, -0.52873486341682010815932430311987602329, + 0.71293525075480455752192662402326708635, -0.84759621194457609338149982979725373436, + 0.88344196047069916704956435168997634006, -0.9001520123182459710060986345403880095, + 0.84663247104157501454378884381725675668, -0.79501168548559956617069058721730723484, + 0.69359522336435153938690321672253244784, -0.60803510154261453998649261799325998208, + 0.48699545446458893361583784927212011063, -0.39049482928587604135432511888445403795, + 0.26830642330170273999432575274178839173, -0.17547138827595388262364785977930181719, + 0.06345478889678491613497192675058493652, 0.01717330976808259715196574331615844535, + -0.11280738863865448790566864237808914909, 0.17696168363754271106020142588389077874, + -0.25354855202022446041263832577326347319, 0.29987464533895652001572925178351852978, + -0.35711325857273601509931862288339143103, 0.38614650001767533656973534591829883067, + -0.42521843178231304332406784550310195615, 0.43862844915815061061165617978642642846, + -0.46155349816260617477062464008437969569, 0.46159790127658910888938404260561957452, + -0.47077427424429227461148607896645233266, 0.45991492991553903316094464931287146762, + -0.45780233593472607017319292577498735909, 0.4384470153702659638273247373508513463, + -0.4273595088691508898192319653923750356, 0.40169938780681609953504734278789936834, + -0.38368172528386339656909170913609379835, 0.35360145966089192251986492523781245768, + -0.33036835195589058992977338467520265427, 0.29741049721562046261724145926438185114, + -0.27033266255621086624726607886842156343, 0.23570225101084906545601467587509257941, + -0.20582678369166108851724081247720943386, 0.17042508376228365691700205779000473427, + -0.13852049524071261470173298812174285047, 0.10299948011728589155935908390510506716, + -0.0696179608488404938826600019327561226, 0.03444891644261495775395353051340424206, + -0.26369749766142447723714029761541033403, 0.22593623045824910104705742429446818091, + -0.44491749642696641871413911784233371615, 0.1318323348573737413177064467200630539, + -0.33808413615330879691520737245790086317, 0.01459645619141934841114939378687942364, + -0.20972221091276400481824012717090694381, -0.1221494796800764491408106625716166823, + -0.06428816833825197125059397143861088853, + -0.27307760320524371007142083729342731776, + 0.09198578167056570040452944053451547925, -0.43102435568801762939941286191772616032, + 0.25098512942149805242290447979359666743, -0.58691457595402493563960986062942943653, + 0.40267639074818360940181991199748368911, -0.72977401584042270229426863454951508104, + 0.53518025612337739192454362733124892386, -0.84687623054878921214135951869334091399, + 0.63500718530535861473232230287590211801, -0.92408390803327215915413544094048675271, + 0.687523803955732923723814314556236907, -0.94646222669617856832010691294406629852, + 0.67773796399682600503345217198942666767, -0.89926352354878834362887422302591688418, + 0.59151443636101517354948027873483069064, -0.76940932319283573261225583897771017114, + 0.41736290438235105728958583324014550849, -0.54762870389204348822068298494108208652, + 0.14897640028224009884969137774781889395, -0.23145235093118823518566496212118468082, + -0.21125701562589290022050673447233692176, 0.17068899369620388339576829129699495265, + -0.64749201647953432685826725891715018753, 0.63395280357839361583824840530288936273, + -1.12406952367659840442887118634654933593, 1.10977771990726296912982902080768904047, + -1.57714169303570871743153560420296258187, 1.51631041087832223539087988462778107575, + -1.90375646038269533829542754770698254578, 1.72598820420344589516873489535765883131, + -1.94776173528666057286044487524123262981, 1.54956973637147765787843762462021859337, + -1.48174701499862303060555172145463771882, 0.71574968541725965219307266257749375847, + -0.18406888623781606806178995143254828906, + -1.15469415553196589219092274740945710973, + 2.39019892909136921692426447611749335048, -4.58149864667916654452834606403665775864, + 6.845797163178363103141514033, -10.26580524302655738733397316828, + -22.71507491921768905657946518092, -3.89359576233312569369687379192803968561, + 2.64940907477924156858892067706602044045, -1.62595976114992244653767426921238001518, + 0.87394416982800760813310223632293185269, -0.2639875308437160367568506832095619259, + -0.14625853016890375421765850643837753909, 0.47264942990847757063278196122835262206, + -0.65299009811308228312857840550939853402, 0.79176592092601960003013545184764338792, + -0.82416867238070188504958297359590858371, 0.84502846870722196450637224065555480235, + -0.78846158219985699676011401709254864198, 0.74100391498317768699952180920749360087, + -0.6369147498570791417591954209159254405, 0.55550988879951937877618290772230427855, + -0.43215160770582980280904439615002386156, 0.33977777565732999024021884231603466234, + -0.21560498037220382145238222837731826069, 0.12684856442111759276337340139654622693, + -0.01316299793709556082096158352360776287, + -0.06345323415285324769017439892780515647, + 0.16045848186296216833141092079618917959, -0.22068494285257330536137523379157264131, + 0.2983614621847113144154460262499269171, -0.34085961510507367458194950550425542424, + 0.39892120088017273632703678617625767836, -0.42424076241704974706447000544247878215, + 0.46388233293048493546797963970235622807, -0.4737057697054732937428075238313348708, + 0.49695895859338367285469438623176882607, -0.49355519435657136178295243053024469343, + 0.50282855380983870623720866871403456431, -0.48866928069699849636051971131017217666, + 0.48643142714910488150361864932967880797, -0.46393281851394352523062811748228356078, + 0.45250535430781656680920025769511169912, -0.42386565587522095286469133421503086021, + 0.40529962848819156596646723918417089629, -0.37240934714048668568079044914775502706, + 0.34842462441054887423053729458693121881, -0.3128310794799004466084226683881041804, + 0.28480254292985296089070487174622423636, -0.24771459137489872457195125254854284793, + 0.21669265954595814133794301101357342417, -0.17901461597799441812038162580341649363, + 0.14577045178554400222554433370518915666, -0.10815672819429004174359946154643138824, + 0.07324467600811347742508763270276224762, -0.03616856850411951138772009601765720269, + 0.20071383763912470122711487758029840126, -0.14322179465751591662177963339746394911, + 0.3194782424254389446529389512715494548, -0.05393593698602187056658885548900375408, + 0.22127132018831385694592325800871738053, 0.05065055688633172754854243361086191799, + 0.1089930242687455587441934187551116858, 0.16777268372547477104523928264908247822, + -0.01397336911054567424105129582054431402, 0.29339234679011590510557871444183471939, + -0.14290189467069310996022395766312929618, 0.42206787835180701074683673407391233187, + -0.27161361384846741643529272362305869952, 0.54686992177307123051249276459548098152, + -0.39242557087698479355431050076472609642, 0.65937141886175693937751189717891330596, + -0.49619094556807333020442610373846865901, 0.74974837987973650702040446832770716993, + -0.57247236563837019517345777592308547045, 0.80703930841254548713139197001385277824, + -0.60990284920413058949201090547486343013, 0.81962511059999909528355976219362146648, + -0.59680440449162411805958217190351067218, 0.77600863763175880903972202477799769201, + -0.52215357555957518473326718118404400787, 0.66599441076379428081220014414346935294, + -0.3770069764351987125308302624054529072, 0.48239541964282394459445809822172433882, + -0.1565290419836608814997624706864012466, 0.2234261951955153666096436719374169593, + 0.13720003520446677033546327064644052514, -0.10401913622762516496638514560368239546, + 0.49137457827974521335124622911256570988, -0.47995694995721716803430586010127732482, + 0.8773771855306849483868573999968218147, -0.8654669504779292852132892027111645949, + 1.24407675028385785896750600365020382484, -1.19503129867122601003275791484310660184, + 1.50909338635471881978267730946148523984, -1.36659769354434037893785278355415302268, + 1.54751848003531817029572977783702257027, -1.22880034165998285833595346308946153404, + 1.17746421335686702944286221932175099947, -0.56464778410896160512146789570988860756, + 0.14167983911309028012353570514058537713, 0.92916371621466599902562267365948953491, + -1.91569267929852597777187374934260461826, 3.6683328930973466744434068343584205165, + -5.47834853355771073898176583095, 8.21367009990610832192048575812, + 12.95344200053354305369502764187, 0.19276237961140618715, + 0.13835177485333768899, -0.08915343623085687785, + 0.05122652652822255043, -0.02361828111729003671, + 0.00328461990902793183, 0.01016697954863024500, + -0.01919783022391419181, 0.02379034964927153814, + -0.02595566601290856881, 0.02538315354097932589, + -0.02373678263884605039, 0.02050355650039226499, + -0.01707978561657483990, 0.01281981233108658337, + -0.00891314000363757630, 0.00463458987832051847, + -0.00101301148927019193, -0.00271618395854253316, + 0.00565017062583661120, -0.00856301915538093712, + 0.01065227329185829130, -0.01267946280085774022, + 0.01392378897851559959, -0.01511830910699629021, + 0.01561049564310376149, -0.01609365471115933865, + 0.01597419139881025088, -0.01589790139428150922, + 0.01532382780479679685, -0.01484512839779322455, + 0.01396945034147279059, -0.01323412801874773205, + 0.01219303326356336974, -0.01132590237483011367, + 0.01023164259729165623, -0.00933162341333112350, + 0.00826943668385697779, -0.00740801788798979479, + 0.00643586871938298024, -0.00565789978033121380, + 0.00480813151786172507, -0.00413417185534362477, + 0.00341641495586699666, -0.00284608611143452117, + 0.00225095858258427765, -0.00176691433433226485, + 0.00127019762701695640, -0.00084245433325484946, + 0.00040953743305730694, -0.03828206317070226988, + 0.05391804098365797493, -0.07320635483296035473, + 0.04804515601810783326, -0.06480910504305308073, + 0.03718751209647608996, -0.05152410256760924651, + 0.02158543634250701185, -0.03368726639707727427, + 0.00167836815315975611, -0.01185027098132572509, + -0.02186048242665663763, 0.01318248778041110000, + -0.04808582865097689452, 0.04031541589106143325, + -0.07574305797088287662, 0.06812735728276833602, + -0.10323870533529846960, 0.09484919097065595828, + -0.12862784027395601782, 0.11836410438530202416, + -0.14963081002320233193, 0.13624494088087021892, + -0.16369594838760903599, 0.14584772890135908052, + -0.16813017482097467048, 0.14448648991057005952, + -0.16032614910845102707, 0.12972199841657219843, + -0.13812315099983601963, 0.09980670073315330015, + -0.10034952847525563380, 0.05433993719289352542, + -0.04760789495910075497, -0.00479750420769441046, + 0.01661915174139648801, -0.07214199467968795965, + 0.08444445257165009155, -0.13686846252233897392, + 0.14150912139360893871, -0.18039602633869905590, + 0.16421779906896361023, -0.17320466449297244882, + 0.11608297079696286436, -0.07064726327348019863, + -0.05706196688678422807, 0.19251051276276912039, + -0.43327852903254165939, 0.70915336777315451933, + -1.12253531373677306604, -6.20065638319891032637, + -3.26188309685461330645, 2.07928975968822227216, + -1.16323588948711997837, 0.49895610510748455990, + -0.00549458244117491303, -0.31880793608615071166, + 0.54058479233600065239, -0.65199287391497839916, + 0.70852480765616132619, -0.69564498396240870282, + 0.66017771977965311603, -0.58307137805637432315, + 0.50438964455710066925, -0.40223818178329318052, + 0.31138021985310959661, -0.20835431095459683304, + 0.12373060236356339670, -0.03344339661609748576, + -0.03529943511231296155, 0.10644940390601009828, + -0.15554553737302126426, 0.20589648652468975354, + -0.23533941087475407361, 0.26615764155913473887, + -0.27816551522092286541, 0.29235027715668393533, + -0.29027962839838389320, 0.29145844837699874663, + -0.27905703438041512543, 0.27097480088277131616, + -0.25188811720456250054, 0.23801445810281138260, + -0.21547943662228510875, 0.19877598559881132223, + -0.17545068183462800282, 0.15825347025896227549, + -0.13614371846188558224, 0.12012678676323601534, + -0.10058046812101931189, 0.08677538474867711737, + -0.07052258137643781233, 0.05937531381861135826, + -0.04659859283934631585, 0.03805043949390526231, + -0.02847413789304003087, 0.02205747994084103492, + -0.01504839025944109190, 0.00999107977205408032, + -0.00466556424439917676, 0.43115574262207345679, + -0.62971432609082389487, 0.83174092332348725787, + -0.57832004148789095677, 0.75851961259160782802, + -0.48404842072728387903, 0.64258660349587171101, + -0.34767629462069393753, 0.48564926814805903232, + -0.17194127999119637740, 0.29158077011155092428, + 0.03803899702031000168, 0.06685356986172223681, + 0.27432832728477840600, -0.17902813418357646502, + 0.52575907730151971720, -0.43315121461113353929, + 0.77760964230182438861, -0.67894805481266362612, + 1.01146202024076381498, -0.89618772164256377266, + 1.20536193798392599064, -1.06134593142055333459, + 1.33444579032165311361, -1.14854313956897446936, + 1.37225199005603659685, -1.13130018043020763585, + 1.29300194294599757328, -0.98543685595178098779, + 1.07522111150959243098, -0.69353441397240234156, + 0.70717758047125434118, -0.25150243808192834782, + 0.19474909733943149281, 0.32206030907987059919, + -0.42750433440684609820, 0.97283657550849600426, + -1.08107943555021779325, 1.59298956111724065998, + -1.62284323824727549912, 1.99720483259656034214, + -1.81737158698442069493, 1.89084338277118946259, + -1.30037909676041452123, 0.82804932157319377506, + 0.46916254835280080115, -1.84286338687297379657, + 4.27119440778852776930, -7.05005362347872832629, + 11.20470290966020598944, 31.01684953697291291519, + 10.80521618716694653983, -6.86430712170021273266, + 3.79775574415761285607, -1.58442233270164090086, + -0.07296627537953742637, 1.15303797167981070260, + -1.90415548723565608569, 2.27444883765401639764, + -2.47397534414523434521, 2.42973467695280831435, + -2.32171918086456052777, 2.06305422680158523363, + -1.81002515983951295375, 1.46746182655722057220, + -1.17280884899864523696, 0.82685341821591507028, + -0.55188968973595409206, 0.24787253094831918077, + -0.02471400030436379791, -0.21606787046100436878, + 0.37489283892307101453, -0.54691684792267880599, + 0.64139653958982922877, -0.74888642745358480202, + 0.78641112070462126926, -0.83902068282470698701, + 0.83076254624001188986, -0.84056098763511732930, + 0.79898456202095091694, -0.77842108467967519037, + 0.71563930198500524948, -0.67623536245889537266, + 0.60298954490042977472, -0.55456408571446391687, + 0.47965724792394487386, -0.42993568015518496273, + 0.35998905218984811327, -0.31448296068431252914, + 0.25391787581555924636, -0.21599106818390584328, + 0.16716378650028190789, -0.13822283079693045704, + 0.10165977743633690389, -0.08142472334810517409, + 0.05612104345333531613, -0.04294552486584467949, + 0.02670162364815002395, -0.01792173225381077026, + 0.00770122838184682853, -0.97609414695659169059, + 1.38260449821184261410, -1.89258620839194846575, + 1.28053959536395201013, -1.74368679042709073812, + 1.08734200606295661196, -1.50271249038299870016, + 0.80217044640531398603, -1.17101771705191226580, + 0.42884714212169894321, -0.75517447525414360676, + -0.02301914008082621768, -0.26811552702143065519, + -0.53689117391977625449, 0.26975102173457154997, + -1.08824751394890206768, 0.82958246750143582737, + -1.64376448604948266485, 1.37347752612329321309, + -2.16094816098347619615, 1.85443657711598941518, + -2.58850694964206340387, 2.21724399903277458179, + -2.86785609727433588034, 2.40072418733684322945, + -2.93627366815447388149, 2.34196739770622119892, + -2.73239022039032697364, 1.98330422714879128776, + -2.20489930845167059204, 1.28303718103474384549, + -1.32563295740251585464, 0.23122509052116163586, + -0.10846711002869069418, -1.12782590726851750240, + 1.36407901477064674722, -2.66426690766115603637, + 2.90419154221962250162, -4.11995908830849000282, + 4.16909037712575436530, -5.05095065498341355692, + 4.59461854567531080562, -4.75102175774805957076, + 3.30745232877780237501, -2.15112185137519285050, + -0.98983525830738827711, 4.31172193316853658018, + -10.16800120855391220687, 16.86396589962381042938, + -26.86346895195370265697, -49.58243301680786885299, + -8.63695392482518364830, 5.48691280855822594020, + -3.02455835914614867832, 1.25634980878071012000, + 0.07837540405723548986, -0.94012606647637664281, + 1.54946203739771926067, -1.84347241737896272440, + 2.01109757726292714963, -1.97350198817999333833, + 1.89459806592530966007, -1.68543143042415377586, + 1.48997210627782772363, -1.21361073904306637772, + 0.98426716878514197706, -0.70508014044007960575, + 0.49087070916356023709, -0.24509469126392452454, + 0.07168826187072827039, 0.12365866114292595190, + -0.24625532828823215592, 0.38676685324341231187, + -0.45855271246654411010, 0.54761220742158667196, + -0.57450062283717340250, 0.61982856423978971439, + -0.61075169308580479210, 0.62199443265346365806, + -0.58691210822952299964, 0.57401405170526154098, + -0.52259911637845024579, 0.49475705420398591317, + -0.43557988795474306132, 0.40062371249710809762, + -0.34069940796551906326, 0.30477983277720516186, + -0.24937394553367867034, 0.21686679908562767061, + -0.16948138429245748759, 0.14304097185628289468, + -0.10552296159997814895, 0.08623500929839784945, + -0.05896491234111965463, 0.04656364848163067893, + -0.02869489387551559662, 0.02181962610129379795, + -0.01154828604026412672, 0.00802298708031387586, + -0.00287462295517599978, 0.60222540822576153818, + -0.81628030015667907282, 1.17241440830730070388, + -0.75974998968479112715, 1.08724293109403036262, + -0.64823236448878529536, 0.94580440129946308225, + -0.47985150454559077904, 0.74766951117146107642, + -0.25582180907118073909, 0.49589832632273883606, + 0.01874745339050226320, 0.19785149749863767399, + 0.33404816624213451437, -0.13403000846328722018, + 0.67483848451619365960, -0.48155959607106513243, + 1.01987651164781722990, -0.82037249480425855630, + 1.34166242366815868792, -1.11989038137449981036, + 1.60668127488526901736, -1.34390694286334544394, + 1.77640592984360989881, -1.45209410501895064272, + 1.80940525394914653035, -1.40282517034752363116, + 1.66501125835932461960, -1.15783305054940743872, + 1.30913568077475161999, -0.68937502791897942167, + 0.72299797833931223057, 0.00923282223025355051, + -0.08425923783541827694, 0.90860964104400032681, + -1.05782520178034999958, 1.92243405219660057348, + -2.07277472880842950076, 2.87893419973839304049, + -2.90094217966628020733, 3.48252763074681448430, + -3.16663655041365954546, 3.26284039972349360070, + -2.28810436582617748869, 1.50765509525329810536, + 0.59910456914092824476, -2.82449317861073589953, + 6.74163097802557054194, -11.21736659196045415854, + 17.89653920916279972175, 24.77000986667923854156, + 0.01199078156786659646, -0.02153988905650507796, + 0.02366760744916501444, -0.02091146738655667164, + 0.02272373429327278344, -0.01965100973027534420, + 0.02114551388320260600, -0.01775445229554873175, + 0.01893080893496497386, -0.01522351022457045337, + 0.01608746002401469435, -0.01207474576777588585, + 0.01264364010757609326, -0.00835108607494330912, + 0.00866038074422420708, -0.00413516515020858309, + 0.00424549211479376999, 0.00043646896385841867, + -0.00043229627185002099, 0.00515970722510431662, + -0.00513069566878917357, 0.00975186019138153670, + -0.00952518880620872171, 0.01384620269301161354, + -0.01320780701278399631, 0.01699617954341713089, + -0.01569816417553794238, 0.01869489998939465394, + -0.01647330910753305386, 0.01841754714636196708, + -0.01502523382435444477, 0.01569691525175001198, + -0.01095780937229151077, 0.01024561016718025450, + -0.00413867721864448566, 0.00214268887360162443, + 0.00507359599781768457, -0.00789210561772938496, + 0.01550074309495320761, -0.01810656425530228833, + 0.02468042320129784292, -0.02516819920883036146, + 0.02822271682776653773, -0.02341122380577891765, + 0.01893201551835267671, -0.00381582325396153136, + -0.01437603115481124287, 0.04735934922777725736, + -0.08845129183244888893, 0.15039103734488487585, + 1.63226487431681754892, 1.24515750018337367777, + -0.76757078111445975477, 0.41443197819068328114, + -0.16796064924648490546, -0.00229293563856986828, + 0.10626685486840324601, -0.16702827817494389495, + 0.18888846652715668428, -0.18946342375016531068, + 0.16911867807528219165, -0.14147814153326615516, + 0.10422583333337434586, -0.06808531807861449570, + 0.02900010983992349842, 0.00439872570784303682, + -0.03721613538830184642, 0.06232357821772595979, + -0.08537274890869842037, 0.10031353201928938645, + -0.11298692857593925498, 0.11812228149538062105, + -0.12150073998084413851, 0.11842553100569926106, + -0.11444913116851269941, 0.10531190658624060841, + -0.09622762785307355238, 0.08328701650101816290, + -0.07129740681224133736, 0.05664868551328293422, + -0.04370383272011902492, 0.02912547541561422149, + -0.01681477633508135158, 0.00369738397879313535, + 0.00679127849821343187, -0.01746145855959436999, + 0.02533887191983940149, -0.03296201799825364959, + 0.03780818563085669437, -0.04213288236818562432, + 0.04385288086041266853, -0.04492784183199288045, + 0.04370100443462789780, -0.04182297173514639560, + 0.03805046575041177992, -0.03371217464400146080, + 0.02796584716674249682, -0.02180606357242264107, + 0.01477982702201681778, -0.00753610877175445344, + -0.30068693551013425669, 0.50976270378803856254, + -0.60685199345502260915, 0.50541084172803596442, + -0.59205958572530181794, 0.47993944420190287614, + -0.55532002828301862962, 0.43175073708751326995, + -0.49518708238465747318, 0.35963502773840810844, + -0.41078443333012915062, 0.26315726120183086101, + -0.30223622443116976433, 0.14312741113105117985, + -0.17117188492948504086, 0.00213277611496210436, + -0.02127708821867217368, -0.15490337794316749731, + 0.14115345273096138734, -0.32019139030849441685, + 0.30672793344435955731, -0.48265358760675997063, + 0.46263102260555644119, -0.62772719141497512751, + 0.59259650013973463878, -0.73755421966712997328, + 0.67737013291793657377, -0.79178238615818385959, + 0.69592428812277007388, -0.76928121771003077356, + 0.62777707787130188066, -0.65118131101649934234, + 0.45688641606933372286, -0.42577775985110344337, + 0.17773981147111533874, -0.09600856827905189517, + -0.19554793036336390322, 0.30956576457507384292, + -0.61607481588353052437, 0.72108345596208034411, + -0.98557040285617081299, 1.00546380388574796427, + -1.12865163280505353960, 0.93628350912979840803, + -0.75769656934612084065, 0.15294661122376862483, + 0.57447773813627145412, -1.89401488783924398795, + 3.53768481683568447593, -6.01549351377702024024, + -21.99408726856634999081, -12.19691849491231927516, + 7.41777655255724344130, -3.87416689987663209749, + 1.40725276963657575102, 0.30599475360109246180, + -1.34678936926878001223, 1.96354821638567789144, + -2.18201732151115912473, 2.19531469546676394344, + -1.99052937861740675274, 1.72006967646593800225, + -1.34500965861766230702, 0.98796405547452870177, + -0.59340174785677168856, 0.26222109166014956338, + 0.07079404848331979916, -0.32056318394843902331, + 0.55697060080885918421, -0.70651385566175917141, + 0.84017121425538765500, -0.89302969742917559515, + 0.93467018288205716559, -0.90671441524161855430, + 0.87565785074962787515, -0.78829041617744788351, + 0.70692194204691338744, -0.58264350817751409117, + 0.47290209834461144345, -0.33257875015694232657, + 0.21387845557283471920, -0.07520856633901888688, + -0.03664256371752601382, 0.15983794985794777532, + -0.25304515768653068619, 0.35098633435475573572, + -0.41773905839473129964, 0.48450785075350616404, + -0.52068478237084969695, 0.55384407824525005992, + -0.55857157610369978507, 0.55868250419577880628, + -0.53382648524619180641, 0.50392756457295184713, + -0.45356952154518992426, 0.39865663413800500603, + -0.32858249405674616606, 0.25510972796251007999, + -0.17232423461721441127, 0.08773207446124531295, + 1.35377363550116736057, -2.18891837487143625651, + 2.83500939314374944544, -2.26647451685583822822, + 2.85628904140385753152, -2.22965768588049728649, + 2.75525899200422585977, -2.06308898924730366176, + 2.51776543264594820926, -1.75438113882861812520, + 2.13379172810559047946, -1.29655102099220265188, + 1.60010489012577616919, -0.69087856363197386322, + 0.92329742843749562642, 0.04990727280309075614, + 0.12306745408827310384, 0.89831750294851109295, + -0.76451815868606742832, 1.80898462380501623414, + -1.68416788908539416525, 2.71621176573806843990, + -2.55949049541212270142, 3.53287677704659364153, + -3.29291917050646620879, 4.15166039171011114206, + -3.76857688211500407860, 4.44993807550097919545, + -3.85964803429933001055, 4.30015753581799398120, + -3.44237037673473134092, 3.58814705513054876818, + -2.41946750370200458491, 2.24259928271012176637, + -0.75674569931790147681, 0.27999452211601705276, + 1.46227239007638587509, -2.12947965455060961304, + 3.95735161031835902534, -4.56782408663254102521, + 6.14003021513119406904, -6.23770057902145236284, + 6.95913790151320199584, -5.78167730252874711994, + 4.69002986337042226950, -1.03724389354214108216, + -3.34934699750021236397, 11.29138256201905043952, + -21.17686633807399587681, 36.06856485582710547533, + 79.52864344593601231281, 29.04526602369451282470, + -17.56983997416358178612, 9.03696700506058903102, + -3.11240754249168016798, -1.02501874825995487051, + 3.52523292187893266814, -5.02839419017458144623, + 5.55327848072644503219, -5.60537164260266251858, + 5.11265039159422851611, -4.48093921336470568662, + 3.57775658860312617549, -2.73546176256006434713, + 1.78369851209788055080, -1.00074359930929390750, + 0.19497451681906954879, 0.39526046503869349813, + -0.97080967490529102015, 1.32308006230253227820, + -1.65356777663565690517, 1.77626454789853438498, + -1.88733505113501198736, 1.81842641272375193928, + -1.75632050458568977902, 1.54704196931635817869, + -1.36534929187423115238, 1.06956540069422345596, + -0.82079991954195297144, 0.48844864975405277718, + -0.21906221009348328388, -0.10752219830207217222, + 0.35973235909831130508, -0.64752061597040067031, + 0.85438772325797429641, -1.08004769171938752592, + 1.22296440481415591428, -1.37242857738553181157, + 1.44163834002324486860, -1.50919012211853020844, + 1.50272695115281118561, -1.48984165860349748733, + 1.41231061736382978999, -1.32640552432166769492, + 1.18772539671117538518, -1.04091203333055659641, + 0.85508906638574211367, -0.66297583060929876630, + 0.44693893471938211936, -0.22749951266459186860, + -2.09605784235203707055, 3.26370766337405360247, + -4.56877483905605608072, 3.55846424632551938672, + -4.76543124267924333992, 3.65375441096854647327, + -4.74380479319308978603, 3.51307542760005286908, + -4.47011392170395982504, 3.10641906690887381615, + -3.91928196799763028935, 2.41489797541235207134, + -3.07996015463132577494, 1.43612941561351648012, + -1.96022134003309433936, 0.19017048894400431780, + -0.59364708312350000785, -1.27435744270567496983, + 0.95465422457059723182, -2.87453462366105805259, + 2.58281456534437969808, -4.48867473682186712836, + 4.14881913055424256243, -5.95439628301239487485, + 5.47048405765353606967, -7.07103502193759858585, + 6.33092399697887397991, -7.60889213194552471720, + 6.49242593213818963704, -7.32871467552770372578, + 5.72267146307356977530, -6.01596949954625070944, + 3.83856959274676245997, -3.53596515208130002250, + 0.77464944435871674333, 0.08221979028611466067, + -3.31489253320957066862, 4.52262960847553951993, + -7.90868304446715164602, 9.00672698177146457965, + -11.90997605901503497705, 12.04784537977509017992, + -13.35826303526457792259, 11.11376297155557146823, + -9.03583122162078566930, 2.16939072284252398859, + 6.06224808440866969050, -20.93585412687845703772, + 39.43448295043651796732, -67.28061223004438318185, + -106.34266444768560688772, -19.27641151323571833132, + 11.62535760090912262399, -5.92015839083729389358, + 1.97030051194788669022, 0.80326776961292212231, + -2.46953851232786680825, 3.48553656503402242706, + -3.83418214664820267146, 3.88137017156688690633, + -3.55084674061102978371, 3.14071661369320453971, + -2.53577945918325386998, 1.98381243691823772046, + -1.34572478182879740061, 0.83188640847944705925, + -0.29038867045151761648, -0.09637119206164433682, + 0.48509248405410143601, -0.71456980892562038665, + 0.94057422926763512017, -1.01831316659552983950, + 1.09864301501610928113, -1.04989893480073259724, + 1.01532153455142015730, -0.87418954032998008596, + 0.76036714859225063012, -0.56269147838150068708, + 0.40456641834528284107, -0.18357141788874783983, + 0.01204303948526042924, 0.20411714147006237985, + -0.36391975191395653511, 0.55329437637564549135, + -0.68266214903802735492, 0.82976465034031521295, + -0.91636057096786649456, 1.01187969486285456178, + -1.04926595916886289395, 1.08945629904730911797, + -1.07638727253584676191, 1.06229645164274977276, + -1.00190558062709822451, 0.93854095254139857651, + -0.83750261645680035283, 0.73299959526080504801, + -0.60071178978920813929, 0.46553582981794483509, + -0.31334391669004402203, 0.15953644740017736137, + 1.04423622392915249613, -1.57269689116422495267, + 2.36716223594700458932, -1.80930681190181585904, + 2.55023110804695329890, -1.93736955259230447801, + 2.61227234872922453590, -1.93266083030699009626, + 2.53080642732021932062, -1.77506479127805638640, + 2.28875601321404253952, -1.45126996181041922895, + 1.87735138729450223849, -0.95786549274075161176, + 1.29939029952850582106, -0.30472716480214134815, + 0.57270051849477243699, 0.48150742160101661637, + -0.26645300721843678815, 1.35419994987846181722, + -1.16042050440849431325, 2.24420433906881466868, + -2.02828070671363613897, 3.05881528741929065163, + -2.76587969309787862215, 3.68319859776362656945, + -3.24900659282216874857, 3.98572626189506662442, + -3.34137046850736263437, 3.82915529969772183705, + -2.90962944245779153718, 3.09025535213025559500, + -1.84847783219000016963, 1.69134390105743159793, + -0.11976171607055380308, -0.35172372063289131239, + 2.18918049804070813380, -2.85918261688344443883, + 4.78120519012751454824, -5.38693705818294965582, + 7.03037865068800194024, -7.08623458404849859704, + 7.81717263976429244110, -6.51084336478848069163, + 5.30363522684232524540, -1.35572800869285026160, + -3.36947412165662196770, 11.89302194410945645586, + -22.48631833330700402485, 38.42251051038211073774, + 47.36795723222282816778, -0.17677626427368753337, + -0.15716496144868752349, 0.08662841120167157072, + -0.03677493988842233524, 0.00359975652609073431, + 0.01756281811173892107, -0.02912512744386330787, + 0.03435246544458035733, -0.03454378959637502411, + 0.03197594909189348938, -0.02718784382960316368, + 0.02176998370318927387, -0.01575876250646160090, + 0.01027710121567707545, -0.00504403976662262579, + 0.00087091733447824341, 0.00270967872825650597, + -0.00508877119296891490, 0.00682956785513975234, + -0.00745074440009065551, 0.00755014900428113266, + -0.00672453124314334200, 0.00556655070620727319, + -0.00371946915830470093, 0.00174608117069214946, + 0.00068272879174412248, -0.00304817117012522133, + 0.00566193140713088829, -0.00805624152632864604, + 0.01052977297675033660, -0.01266816204376762164, + 0.01475781921781130906, -0.01643731962702458041, + 0.01797940370620213640, -0.01907352572398452947, + 0.01997622477179268261, -0.02042503556443520107, + 0.02065733866026776833, -0.02045577128203440037, + 0.02003561520595798645, -0.01922179604063561573, + 0.01820483165094280084, -0.01684947195832919506, + 0.01531920639624190401, -0.01351656959698801716, + 0.01157619034710595345, -0.00943676900024478273, + 0.00720264053254417690, -0.00484741527951893479, + 0.00244402336040747689, 0.05946552802972392138, + -0.09986698639203320238, 0.12360175249676204345, + -0.10422198364953824679, 0.12746104445721123666, + -0.10739374710268584368, 0.12967878743925123630, + -0.10838986860883481622, 0.12912351803439542364, + -0.10596860815601411021, 0.12447760864319258600, + -0.09877645081073582745, 0.11439721996963164719, + -0.08553023299006505542, 0.09771608082302300768, + -0.06524165754836740161, 0.07368930465162928933, + -0.03747832439872598315, 0.04226873252977141754, + -0.00264948308636630712, 0.00439397560348155688, + 0.03770422036352508166, -0.03772747088510507857, + 0.08065067915928661457, -0.08039308485024843076, + 0.12168785964868400473, -0.11829465466912993110, + 0.15472399605444336901, -0.14461694392126403508, + 0.17232761244922203958, -0.15147804370879047742, + 0.16640418215135013846, -0.13089635641436814240, + 0.12951666388267440988, -0.07653844209984735081, + 0.05714643125084903352, 0.01340751058524805063, + -0.04870569407424780312, 0.13177039865722717238, + -0.17404518141452243740, 0.25573356624695453565, + -0.28483172903317133251, 0.33716331471027083388, + -0.31542567880480659737, 0.28887375372429030529, + -0.15233041837123514894, -0.03454069600699952169, + 0.38832476742524263402, -0.86307054298998253650, + 1.59156226495810271260, 8.73630353617817867473, + 6.49349227197141676271, -3.67449290866817213086, + 1.67946560839844893920, -0.35492049094671607179, + -0.49237358847420426011, 0.95249241523648486840, + -1.16237146883957631616, 1.16783407331948740904, + -1.06599652954268897531, 0.87256207525460138807, + -0.65691101439683718954, 0.41492788397249380505, + -0.19700607376280310223, -0.01338306995609109609, + 0.17859360794326853417, -0.32233181522922449425, + 0.41533111567541958209, -0.48484949020880302450, + 0.50701195702686419065, -0.51018229604670084498, + 0.47389443961844540665, -0.42602499689648604120, + 0.34825471961694648426, -0.26698608807785029207, + 0.16529136520896928197, -0.06753331820797570106, + -0.04223180701485113736, 0.14196168033791400909, + -0.24679262881022426268, 0.33709819701153714844, + -0.42723739887802097970, 0.49998122903379166315, + -0.56885508984138344335, 0.61894528400786985589, + -0.66284248156529435025, 0.68783663821088880663, + -0.70546559279531118047, 0.70510416849951562668, + -0.69712000270953167202, 0.67286058570230455889, + -0.64141703217200163323, 0.59601132704548909214, + -0.54436780342590496140, 0.48150176714999415317, + -0.41369783505251123135, 0.33770029875426876842, + -0.25829711267963528787, 0.17391175779371192966, + -0.08779148581377513305, -0.59735600117134768361, + 0.93217185014288883593, -1.36800130494669591741, + 1.10076078593330484168, -1.52724431091254331250, + 1.24704192263687629882, -1.65482329192280275265, + 1.35137862177564471722, -1.72944700805843010194, + 1.39127079810785603264, -1.72793566018849586996, + 1.34347254529493520536, -1.62767564713238055418, + 1.18678467805829512827, -1.40974540453016627950, + 0.90550264886101006212, -1.06266557664940397565, + 0.49343835374625544254, -0.58664847843696699137, + -0.04166305374174811976, 0.00189780480480570787, + -0.67363556640979560530, 0.66603039302676558808, + -1.35386744456365004652, 1.34476594050870823516, + -2.00856613916836712619, 1.95142165713520610026, + -2.53854390531075191362, 2.37528708111577291362, + -2.82330181572405791712, 2.48874389364633330501, + -2.73192108543250355979, 2.16279318883202842372, + -2.14423815985735055634, 1.29505878445668987098, + -0.98704893767135615246, -0.14421594953856048393, + 0.70826107326445852941, -2.04078115302535900710, + 2.71812904846229130840, -4.02978512481106410092, + 4.49799467673138941848, -5.34104882018646698327, + 4.99746620067698810175, -4.57933150421288281962, + 2.40023108168379506466, 0.58231320892221982710, + -6.23617903783484184288, 13.82433893224587073689, + -25.47278464139897380392, -69.96804341671519011925, + -39.23367360104749224092, 22.33055047867799558503, + -10.35133040046546959445, 2.41636037299735395578, + 2.67435349547022971350, -5.42172356913767750086, + 6.68624311762980738649, -6.70505056431791235383, + 6.09799241605072506189, -4.92322457225296084005, + 3.63244120771236334022, -2.16662150981781742587, + 0.86179760274986183521, 0.41379711293295645680, + -1.40235952626023041567, 2.27699035652084713632, + -2.83191024277143954535, 3.25979989010406612238, + -3.38897985336845186666, 3.41703635423403984106, + -3.19449608689682884588, 2.91429357050733717216, + -2.44159091780343651124, 1.95874944341827061933, + -1.34103624289013567683, 0.75684583928791904217, + -0.08910614717395462514, -0.50943982754922578771, + 1.14926206026014532391, -1.69384233990732813169, + 2.24722893700071146839, -2.68901877858702897939, + 3.11650067842290212639, -3.42489494928738080759, + 3.70412454896539644622, -3.86436452251125306390, + 3.98746396035918015954, -3.99784135206796209516, + 3.96856850826514850894, -3.83763570588145075391, + 3.66870055762752977913, -3.41273773145186254396, + 3.12345027198130908985, -2.76431190187363817756, + 2.37863482222776179142, -1.94200754968584043958, + 1.48701122373065275362, -1.00105214761627880904, + 0.50571772022851124717, 1.84178359334532681935, + -2.68997289695558139400, 4.68672075478592553566, + -3.67304395252083848433, 5.62430325506305983652, + -4.54912070412095559391, 6.40973873671829696974, + -5.22488194692122043250, 6.94446770564578219620, + -5.59835596706018367996, 7.12526343976423692794, + -5.56755719212218558312, 6.85422140694145554107, + -5.04184373651734940580, 6.05147760178989368995, + -3.95595983496421554904, 4.67050118038347861216, + -2.28645840165574210090, 2.71546958640374791472, + -0.06978186411496464792, 0.25972436011423893909, + 2.57933823716403765047, -2.53643618114163915678, + 5.45138761320661124898, -5.41142096267625483108, + 8.23094464480145582286, -7.99571452361336287851, + 10.49608828049746378497, -9.81917833167789844140, + 11.73580197941154956709, -10.34117629086030198948, + 11.39591101654892746353, -9.01595496128817686099, + 8.96815616917929681051, -5.41036926112471583394, + 4.14233771498398173350, 0.60286903246948986279, + -2.95159935369697334906, 8.54534960315436897815, + -11.37570114742995741608, 16.88528671926995983199, + -18.84300183332808487080, 22.38773051673566172326, + -20.94129478046622594434, 19.19177056627063038263, + -10.04085790472601580348, -2.47725678229972867683, + 26.21841136447688924704, -58.07920400828165696794, + 106.99492191139883345841, 196.65345403285328984566, + 73.22346357231110403063, -41.69101433978728721286, + 19.31157730770532410247, -4.52224701090670944126, + -4.99467540048776381667, 10.09844777600668841444, + -12.46972464417312664864, 12.47871709668210371547, + -11.35355506332316366525, 9.13367690999610104541, + -6.73000398985900538662, 3.96656993150510039925, + -1.53506307997594859671, -0.87295234091088935724, + 2.71515162023157374804, -4.37380673004233866408, + 5.40704505361028608945, -6.23036844483423024599, + 6.46890283006363286944, -6.54398851156316840871, + 6.12555184911824657235, -5.62293188399131604882, + 4.73672635947360909370, -3.85321956870067028333, + 2.69522617305146372502, -1.61964058825957546439, + 0.36693372375675403774, 0.73853551601744471533, + -1.94061500134858677669, 2.94855260934574348042, + -3.99085101652553131402, 4.81016163846720612440, + -5.61901121532400971148, 6.19253846878692915112, + -6.72616240099883899717, 7.02626280677933134911, + -7.26982984805601972766, 7.29315875062493912395, + -7.25349865510950841951, 7.01580869000653706280, + -6.71640921555788406039, 6.24782912184076089090, + -5.72445271639235464534, 5.06547508782236821645, + -4.36253175931013092992, 3.56076916282439093209, + -2.72844081146344263900, 1.83609250086440489724, + -0.92810741669548657562, -2.20342924351108804260, + 3.00576851706421743771, -6.25001518795906108039, + 4.81699050687453578234, -7.98294490895184249979, + 6.44731596160924258498, -9.45962018219222144921, + 7.74242575747277417264, -10.51969854624906197671, + 8.53868242699089208259, -10.99945882716123080058, + 8.67599078527912404013, -10.74665120678811547350, + 8.01467527208279051365, -9.63940382620074309727, + 6.45637181972228280102, -7.60899801610755943670, + 3.96851269132249795391, -4.66580088401928527730, + 0.61133798601700206632, -0.92685809977467381593, + -3.43458193437564140993, 3.35748867211007606670, + -7.84368492644507675493, 7.78220150001282817698, + -12.12888137358947204802, 11.77782614001606376064, + -15.64100521994395265324, 14.62193834117747925916, + -17.59562159359125743663, 15.48530353715495522238, + -17.14324779379318286487, 13.53169282718344135219, + -13.50524209041096668216, 8.09740145947762890444, + -6.20573974052248011901, -1.01420785373646293870, + 4.55941262487481946408, -13.07578604278682554707, + 17.36210863264463455380, -25.75385231197509128265, + 28.71764629443316252377, -34.11870888007892688165, + 31.90198977074308928081, -29.23837784709186848886, + 15.28746836397773201099, 3.78361884615030774626, + -39.96239927078673304095, 88.50743727770181124015, + -163.04386879534706622508, -225.63898325894774643530, + -41.75927536578417686997, 23.75204549274604559628, + -10.95250264483586555286, 2.51395942024297447404, + 2.93352299011966621833, -5.83650076051394339771, + 7.19894545617090386713, -7.18990983484311829699, + 6.55283449609930102042, -5.26970996979011374606, + 3.90076602590048215902, -2.30685458183090164042, + 0.92097759567494708044, 0.46976077210030331432, + -1.51966374083908850601, 2.48187078168812691459, + -3.07004325545144984844, 3.55436102108452711690, + -3.68872937415691071195, 3.74471647921217920540, + -3.50378873863942441602, 3.22870847716754028056, + -2.72043097470618766565, 2.22659623210814716643, + -1.56281851737475396824, 0.95799506208171303356, + -0.23979399410842155982, -0.38342825062280772030, + 1.07307755072332011714, -1.64195107414735042006, + 2.24072023064833913963, -2.70322042157146436026, + 3.16902788545994873459, -3.49249356075139605338, + 3.80145168758868567949, -3.97005755231171697517, + 4.11364857487610269260, -4.12542788534282944823, + 4.10748651977165479821, -3.97136134370885551803, + 3.80521868809935615019, -3.53830501069123570801, + 3.24428688029142930915, -2.86960511985197097573, + 2.47296275953775746004, -2.01758759398589093692, + 1.54685801371050613007, -1.04047445020218520817, + 0.52621244566987013247, 0.90556820632218038014, + -1.14966854787850558672, 2.85619976521518159629, + -2.17805033943477921454, 3.84131594458948200099, + -3.10824966728378582204, 4.68805774062427715876, + -3.85846797855206702366, 5.31237809057062282392, + -4.34375232831514601628, 5.62999391145840810680, + -4.48230739616025442018, 5.56366494857899152038, + -4.20376569492438267872, 5.05246146055747669124, + -3.45943537039796433774, 4.06294534507867322048, + -2.23433148032331141408, 2.60192390879293800054, + -0.56047069250732362011, 0.73003913837315259627, + 1.46956858988325356208, -1.42511687246970120135, + 3.69049950237714785573, -3.65847538940729544166, + 5.85622112516627435497, -5.68278122560909881855, + 7.63968168497163802044, -7.13444075103977226604, + 8.64639425316217469231, -7.59670065287868734316, + 8.44963330153240299580, -6.64962935895906337436, + 6.65844021676452246794, -3.95992546027987302182, + 3.03362899997250723416, 0.57178393709891128793, + -2.32773031180969258713, 6.58247744413025070997, + -8.71204046724249892009, 12.90567844335977198966, + -14.37702893443498552983, 17.07643985610249615092, + -15.96041310265412604963, 14.62835321838231728009, + -7.64779615088127417977, -1.88750982309733283948, + 19.97986476270953914991, -44.25212635533816296629, + 81.52167680554745743393, 90.58480699325136242805, + -0.16083873513343371897, -0.17417163023395793031, + 0.08147846484982745885, -0.02154200733203828072, + -0.01352213653145416077, 0.03186115398108810975, + -0.03780659401040218498, 0.03657767508339756363, + -0.03018435461801718608, 0.02194634397370168535, + -0.01240746635729122853, 0.00369605996266947345, + 0.00452700688247109628, -0.01084736625696620417, + 0.01609880725358190864, -0.01926754180568291536, + 0.02143121356910657541, -0.02177799152650781306, + 0.02147391444720615772, -0.01978927157565199893, + 0.01788775551095361099, -0.01505474127313102123, + 0.01240358248569266991, -0.00920200201309109497, + 0.00649224684258885819, -0.00351298450360462830, + 0.00123104527702433755, 0.00114292034571421676, + -0.00271264851478955019, 0.00428796873136162542, + -0.00503397036458775454, 0.00577076002239210444, + -0.00571422847326909494, 0.00568424057957688748, + -0.00493738855736041045, 0.00428379019915495988, + -0.00301204351117676959, 0.00191467408054535478, + -0.00030539558557910287, -0.00104683684048862812, + 0.00280822360308890986, -0.00423755282831077100, + 0.00598425657806781960, -0.00733744418651194330, + 0.00893163787922396715, -0.01008753084947032301, + 0.01142542805507678304, -0.01229785043537524186, + 0.01331070437374787599, -0.01384784530040312524, + 0.01449999263973882763, -0.01468135481145921295, + 0.01496629780927115697, -0.01479812124224721623, + 0.01473347957816115508, -0.01424338660265212636, + 0.01386537978104835679, -0.01309681910211760864, + 0.01245477752371911516, -0.01146169000996873077, + 0.01061294689718220337, -0.00945494019012086545, + 0.00846033199084385810, -0.00719853779760964204, + 0.00611863883213363546, -0.00481233609339771964, + 0.00370447337640536110, -0.00240849102778788616, + 0.00132452551095482035, -0.00008738802091911069, + -0.00092779355814004384, 0.00206504897061011560, + -0.00297441464640828832, 0.00397884102052138439, + -0.00475356467044697664, 0.00560043046642066771, + -0.00621981706534220982, 0.00689235709765118835, + -0.00734344418025036170, 0.00783233545577250931, + -0.00810926595529166613, 0.00841191874365557375, + -0.00851516999889419084, 0.00863491286031774219, + -0.00857045406395653617, 0.00851567839860039970, + -0.00829411519830062886, 0.00807743113144203731, + -0.00771318234205878653, 0.00735062416231280734, + -0.00686116224294551925, 0.00637146871429217741, + -0.00577664327268027737, 0.00518062633570495670, + -0.00450207876908363495, 0.00382208369884454212, + -0.00308275138031262851, 0.00234220254935419868, + -0.00156590285650906667, 0.00078892196481611518, + -0.01032254916606398926, 0.03071131408395859005, + -0.01867214646463987576, 0.02834998995309952891, + -0.01595848723673722047, 0.02530242645262186993, + -0.01262452580022142661, 0.02171123500536628614, + -0.00883384899582652372, 0.01775947664187505978, + -0.00478722266792826374, 0.01366359006055915121, + -0.00071446951611044303, 0.00966424561817079593, + 0.00313566635967027973, 0.00601526373563408476, + 0.00650749412945197166, 0.00297081087178048759, + 0.00915193431869961577, 0.00077117517445843384, + 0.01084130821812779449, -0.00037247250828351504, + 0.01138489587568701153, -0.00029380922300631661, + 0.01064467645091718602, 0.00111306973611143781, + 0.00855053159161063038, 0.00387902869660170738, + 0.00511405493051148106, 0.00794714277381652727, + 0.00043997641276544933, 0.01316287648297375865, + -0.00526591059985807158, 0.01926835298653868656, + -0.01169352496399552258, 0.02590195073715755025, + -0.01843123053598809402, 0.03260448321198015226, + -0.02497576371913783413, 0.03883315866726063520, + -0.03075048591721223079, 0.04398435346650019645, + -0.03513286416808195783, 0.04742593423112376194, + -0.03749170526950295484, 0.04853939805645750283, + -0.03723410624085117526, 0.04677143282914828643, + -0.03386130409849140432, 0.04169359985423622822, + -0.02703158176991170975, 0.03306768348678864461, + -0.01662709485238543505, 0.02091282483599099518, + -0.00281992288454691259, 0.00556886803048687457, + 0.01386915677454629049, -0.01225155874845314935, + 0.03252765809269195230, -0.03143173475896753749, + 0.05183465769033178405, -0.05045180179228015566, + 0.07008273357318259289, -0.06743513757214121551, + 0.08525231324211265949, -0.08025422453488360863, + 0.09515250678249807803, -0.08670965033334858407, + 0.09764106357316161555, -0.08479317943308319061, + 0.09093182212541708886, -0.07303962607096724236, + 0.07398944172454800794, -0.05096080116294747497, + 0.04699628097864295279, -0.01953573135651847856, + 0.01185226882578060623, 0.01829853524144698165, + -0.02736819490310696268, 0.05725617703327937069, + -0.06413277789434838894, 0.08957820849083031334, + -0.08955033599579866055, 0.10543455112045177491, + -0.09317307728683037193, 0.09424425552440519882, + -0.06497721841572701162, 0.04748750318520382485, + 0.00078949314914145510, -0.03616849749742881426, + 0.09891578799815364809, -0.14227177023566997538, + 0.20232374179680029380, -0.22690824787478686142, + 0.24506888463542111922, -0.19573951984346490973, + 0.09667095002581853336, 0.12723810723625936236, + -0.47570071154233639632, 1.04524053426423635393, + 2.92111900843485239321, 2.04875334229057592950, + -0.93859784873589746645, 0.21888321299471411030, + 0.19984723194505832344, -0.42046506925516807796, + 0.48989661920679944407, -0.47577312313118175213, + 0.39726572215567268476, -0.29910679110535282055, + 0.18297790519470144566, -0.07921011983807652035, + -0.02100627853971309689, 0.09601277550311990150, + -0.16045067913630409184, 0.19757338397292650845, + -0.22484403450059758933, 0.22804451086054416953, + -0.22559415823552567137, 0.20436534903132755336, + -0.18264461340259924294, 0.14759044855719374856, + -0.11678053806928706537, 0.07726669381881384746, + -0.04566842579905275312, 0.00879406647717872678, + 0.01774688050172331527, -0.04737705912201008174, + 0.06543887727992100944, -0.08549546788836465128, + 0.09373069667365484248, -0.10372570807935942161, + 0.10237930480752456541, -0.10316437388265266295, + 0.09357355254261298660, -0.08685736370198574030, + 0.07099802411890106246, -0.05892950800591175570, + 0.03904101891566295890, -0.02387820019318036974, + 0.00217696958316882135, 0.01395547752833554110, + -0.03547623984579666157, 0.05074754899240953299, + -0.07044174620034762691, 0.08340568579246768199, + -0.10003519053359569146, 0.10966470813303887122, + -0.12241129952674868753, 0.12809113089314103084, + -0.13653297711155185090, 0.13802298898117398851, + -0.14208759803737450178, 0.13946784220042984792, + -0.13937145678642121061, 0.13297788661987358649, + -0.12915925314172854721, 0.11951703606599134444, + -0.11257152464982068951, 0.10033102204980559602, + -0.09094932330245783514, 0.07682818258469381600, + -0.06574231216151123214, 0.05047575685312149368, + -0.03841387656040012866, 0.02271419230439446213, + -0.01036479847491739853, -0.00510982090070110848, + 0.01712450725108418184, -0.03179219582753904649, + 0.04293430725973351042, -0.05630369886436967924, + 0.06613026476341489490, -0.07780770382537367802, + 0.08597483629593581644, -0.09566585123564654014, + 0.10192781807168967145, -0.10943410098116267137, + 0.11363851034606022028, -0.11885159291188669706, + 0.12093183207985178096, -0.12382454199141823548, + 0.12379048795530153693, -0.12440713079291268461, + 0.12233500029478532045, -0.12078105393383511967, + 0.11680309771214060499, -0.11323504126019988403, + 0.10752962224781174860, -0.10214535834501839440, + 0.09492779387629492194, -0.08795796841171552027, + 0.07947236778281066560, -0.07117274939689922919, + 0.06168494426552566245, -0.05232990061657451925, + 0.04212144931144962828, -0.03199845004313307123, + 0.02136159949291783697, -0.01076658838772367836, + 0.01790863554411540812, -0.08641579854840096553, + 0.01290465080914166701, -0.06210596007420663561, + -0.01241103584238466631, -0.03581193454246678343, + -0.03924779248428025835, -0.00850011580704478423, + -0.06656113527630362625, 0.01871441446320790472, + -0.09317408342809885280, 0.04460266619308353442, + -0.11781672140417381867, 0.06786603938048854645, + -0.13917514197156138911, 0.08718976985319139283, + -0.15594919753155286890, 0.10130472855001948496, + -0.16691802398962574117, 0.10905627569290353429, + -0.17101175496905196560, 0.10947828400702429297, + -0.16738721779078807872, 0.10186978206072799802, + -0.15550470632118931769, 0.08587094382250076707, + -0.13520217798353950656, 0.06153438708844935490, + -0.10676245184638159802, 0.02938697645594130423, + -0.07096823325955477213, -0.00952339532994868516, + -0.02913911437515449843, -0.05360218592957949335, + 0.01685582753475249607, -0.10071029981851122026, + 0.06461649841182726117, -0.14820058538295113881, + 0.11126791945716726917, -0.19299512251691233744, + 0.15356006541837249890, -0.23170883620088308930, + 0.18801625703821286950, -0.26082339432011070190, + 0.21113295196407222409, -0.27691287328856578620, + 0.21963078782291037272, -0.27691912447322386548, + 0.21075257844172440302, -0.25846998066115345338, + 0.18259849555187179782, -0.22022727149509396805, + 0.13448177908906683298, -0.16224400393187179970, + 0.06727999394271429179, -0.08630105750360057837, + -0.01625277996214562204, 0.00381642457690451299, + -0.11125801974321394838, 0.10215359444290536550, + -0.21068513821187437318, 0.20059263878619118526, + -0.30541017017022403790, 0.28910180554921838247, + -0.38463400820070309249, 0.35630174972680139778, + -0.43663521435719337971, 0.39042188465881028092, + -0.44994477577920738431, 0.38070504679693745187, + -0.41498740905267822443, 0.31928567222795928293, + -0.32618825913164395391, 0.20350558099963034220, + -0.18446425161139584636, 0.03852974045376281187, + 0.00010874200833458515, -0.16003499576295149298, + 0.20585807330685793048, -0.36405493108749231723, + 0.39800165950472765619, -0.53220533228381394775, + 0.52917593326460921066, -0.61211419848456183335, + 0.54371352512413606561, -0.54740300194587843130, + 0.38820640121923150057, -0.29268374706124167250, + 0.03202577474209825081, 0.15910305066161381515, + -0.49698733691585850192, 0.73083374045024906973, + -1.05437199965287398129, 1.18825568325985275742, + -1.28838109221620888967, 1.02818833223408145905, + -0.50307834701788334275, -0.68809544118353593856, + 2.54333981327750313639, -5.57778668180945480515, + -7.77629899323699369518, -2.73222793407472996918, + 1.25439190855387860957, -0.29339146604848903577, + -0.26266490835003625248, 0.55824932993358233890, + -0.64869510225202209330, 0.63133764785091883720, + -0.52465244201930161250, 0.39529339694874526812, + -0.23856580264220311749, 0.10177201023574256045, + 0.03362168215345819750, -0.13202622258022705948, + 0.21960122373191998113, -0.26745686251036848713, + 0.30536549848705396570, -0.30795874192952449322, + 0.30613403452645837621, -0.27612719479239966613, + 0.24850857803105072530, -0.20004581770025917087, + 0.16021399635404984241, -0.10578890977519207761, + 0.06481779097156514791, -0.01390229796725250128, + -0.02040743320797135107, 0.06166712163764408866, + -0.08474640169488872887, 0.11323763133140489490, + -0.12328307281111913762, 0.13834833323981698960, + -0.13567973321220597183, 0.13844768545710206542, + -0.12484121960396987738, 0.11758332832452829397, + -0.09566685985858548735, 0.08124172538962386170, + -0.05399457998693973221, 0.03540646323462741385, + -0.00577758097811317296, -0.01414680073859285112, + 0.04350579651086713268, -0.06233129697712329331, + 0.08923127341029241100, -0.10503511036320788141, + 0.12783052700529953793, -0.13924843756643653925, + 0.15685322822093922257, -0.16306958298969684296, + 0.17492577067069012275, -0.17562467171737897176, + 0.18163961336800243940, -0.17693161265499440793, + 0.17739717450528028064, -0.16773354735906714774, + 0.16323778418871542906, -0.14932160217328974139, + 0.14066090922884671999, -0.12336167418580887278, + 0.11145904583694467294, -0.09173547769009020303, + 0.07756851392743001339, -0.05640227315724245793, + 0.04094294526573962617, -0.01928462022393506031, + 0.00345152964848498755, 0.01782089268299026641, + -0.03319798323167269527, 0.05330875297893829245, + -0.06751301006262160065, 0.08580749508411771032, + -0.09824905575842418637, 0.11420333846127540822, + -0.12442487265911301997, 0.13764769461910816850, + -0.14532314818193270423, 0.15555186115341224085, + -0.16048001259473168578, 0.16757212274124003160, + -0.16966647709731949578, 0.17358822831221629168, + -0.17286460535793238269, 0.17367786186448394559, + -0.17024083562491010291, 0.16808931341825428252, + -0.16211844287420099087, 0.15721411952664945955, + -0.14895069031822905092, 0.14156100507290861334, + -0.13129578908951214378, 0.12173203878355259855, + -0.10979438023058037122, 0.09840152766668000539, + -0.08514988571029194486, 0.07229782989489440259, + -0.05811175275454322220, 0.04418796769035818195, + -0.02946134322633679054, 0.01486467533606057427, + -0.00255116998119958886, 0.05525680452020089589, + 0.02556721887689816092, 0.02353619039954565201, + 0.05776454611599225741, -0.00921371526173692980, + 0.09045854094323034500, -0.04189782367571787819, + 0.12249628982370902586, -0.07331258733330403565, + 0.15263187657885421422, -0.10217904949100543865, + 0.17956372245450194503, -0.12718448469405072010, + 0.20198049049867219940, -0.14703247861507043326, + 0.21861519525259043295, -0.16050085930778179577, + 0.22830667914757959980, -0.16650636884494030010, + 0.23006705082716730204, -0.16417435622439305321, + 0.22315303249997023305, -0.15291108702696817878, + 0.20713844445539397743, -0.13247551756631395503, + 0.18198428438026981180, -0.10304659539468244422, + 0.14810206670925032957, -0.06528135957230279951, + 0.10640531497972385844, -0.02035837219471701640, + 0.05834340480045453747, 0.02999961775259482946, + 0.00591141024505222219, 0.08353031320847274788, + -0.04837069524074064097, 0.13747048471450634688, + -0.10151607822674003911, 0.18863495638530766718, + -0.15017237647334152895, 0.23354151146228571689, + -0.19077118798457545767, 0.26858569776238833127, + -0.21972858771543843370, 0.29026704504756523084, + -0.23369655665888203200, 0.29546466048994202147, + -0.22986105925245897685, 0.28175537785654863887, + -0.20627703890937520992, 0.24776146757654926578, + -0.16222371350184988659, 0.19350730267008542373, + -0.09855522753529161184, 0.12075536893613454670, + -0.01801208603973828218, 0.03328183792273937958, + 0.07455178866143233329, -0.06295890762210763769, + 0.17208238715292237253, -0.15984199253219907866, + 0.26544529915586750901, -0.24732208892203388917, + 0.34382496849708049647, -0.31400078083349858282, + 0.39547851720603316439, -0.34808391579952313588, + 0.40891148398064075531, -0.33878723017104239723, + 0.37452006235565005188, -0.27821542864205411894, + 0.28669866817005196236, -0.16367879941185348169, + 0.14633208210296369534, -0.00030972472366438747, + -0.03653668302775427840, 0.19631792501186171029, + -0.24026794446298724295, 0.39810327721279548108, + -0.43011218480836638234, 0.56375380668012131657, + -0.55873759584571125458, 0.64092874919711873005, + -0.57050745564665072962, 0.57327958640596787809, + -0.41204305893252340942, 0.31544694481579649281, + -0.05274351450992236651, -0.13960149483781381097, + 0.47952372456762548669, -0.71471635973409308740, + 1.04027269620199724898, -1.17562064335830918083, + 1.27773253629739125259, -1.01911063206972740680, + 0.49594433694917572364, 0.69356297739749339648, + -2.54691724871987146273, 5.57961266446317694090, + 5.17656002221390387774, 0.00492757220171445229, + -0.01133289356406465970, 0.00968107339650685697, + -0.01098590832469398780, 0.00916350809325548396, + -0.01030124676229938856, 0.00831644461215963991, + -0.00929762881537013648, 0.00716337110994266519, + -0.00800335931044717647, 0.00573745701127844395, + -0.00645651430661171692, 0.00408171505902639974, + -0.00470505455415456703, 0.00224903931629656531, + -0.00280675897802403320, 0.00030200329460178927, + -0.00082885531447688104, -0.00168770980766425093, + 0.00115278314196675443, -0.00364037649091303664, + 0.00305500455184734261, -0.00546992719616901536, + 0.00478942690726661974, -0.00708637217761016406, + 0.00626526032092310659, -0.00839903375118597993, + 0.00739295643011413702, -0.00932061270803552673, + 0.00808868332377898902, -0.00977205390128434333, + 0.00827955358463051093, -0.00968809723075182878, + 0.00790944649425851833, -0.00902330631792092226, + 0.00694516469139264386, -0.00775826036136393737, + 0.00538255375645620149, -0.00590547914046879625, + 0.00325209559032404397, -0.00351453341605909974, + 0.00062337097099645299, -0.00067568249001947176, + -0.00239231560867952291, 0.00247870970558252638, + -0.00564193003844324498, 0.00577578216314118473, + -0.00893413037240006237, 0.00900760592466978358, + -0.01204688272759400075, 0.01194114553290801829, + -0.01473989847732790591, 0.01433326462845177333, + -0.01677225344108435739, 0.01595094551943444794, + -0.01792512436000814544, 0.01659637613806150963, + -0.01802896359051542330, 0.01613583957968563187, + -0.01699360646071726780, 0.01453040436009533226, + -0.01483875862439209582, 0.01186526058428061595, + -0.01172106092938320424, 0.00837321546970496745, + -0.00795253804495889630, 0.00444644250269722163, + -0.00400383295189710164, 0.00062924601787425478, + -0.00048444174590715359, -0.00241634676940103094, + 0.00190843186403953711, -0.00398044959689476414, + 0.00248020014453578450, -0.00341744122779892015, + 0.00067355140173690664, -0.00030303553640811069, + -0.00375337528126744400, 0.00536931500223758115, + -0.01051728195717652886, 0.01297295885519664758, + -0.01859937909862330666, 0.02105788889463507466, + -0.02609562683844654160, 0.02726797270483610064, + -0.03023533488060101138, 0.02850477036294824310, + -0.02774549262534988306, 0.02156144300529528809, + -0.01583981980570400155, 0.00457219415675569861, + 0.00574274934868579650, -0.02020381896786211870, + 0.03101958263796368923, -0.04150169362875365253, + 0.04144817451632641647, -0.03097301233339419188, + -0.00430155500905537568, 0.06965261236677645906, + -0.18634168574352147352, -1.03298957548508996140, + -1.10846541956532784745, 0.41493713402644905042, + -0.00834755531860681931, -0.19676692698346903709, + 0.27409650919982608830, -0.26791246089633335981, + 0.21944704731764758110, -0.14802736769371241388, + 0.07558814166027248704, -0.00710404673360707627, + -0.04632470312160975878, 0.08736873413259167720, + -0.11049713859736631782, 0.12193793136032901603, + -0.11859755283321132824, 0.10790003315970400632, + -0.08744465603803616705, 0.06459600887109848144, + -0.03677492671825925707, 0.01071294995153046145, + 0.01669346085077818426, -0.03952120265197750504, + 0.06144848530352926830, -0.07732247331467428930, + 0.09129781879139577117, -0.09885619985213091321, + 0.10447225725998754431, -0.10409808442635845593, + 0.10236571162169197380, -0.09554340498367804024, + 0.08827890884258701720, -0.07703050743957791380, + 0.06635220762935076233, -0.05280018716883854574, + 0.04075936431616874328, -0.02682458099958279218, + 0.01516712337767410664, -0.00238939696769304615, + -0.00757037731639511897, 0.01811140514331657445, + -0.02552923481911468020, 0.03321824455698192680, + -0.03769578904409207759, 0.04233505148186550437, + -0.04385578506768973706, 0.04558838989725696317, + -0.04443233587729597533, 0.04365206203344787483, + -0.04030390195603505976, 0.03756416446154346028, + -0.03262514928118415147, 0.02855556678245887298, + -0.02266603869101922047, 0.01790185520202699360, + -0.01167820449874743850, 0.00680514710651333905, + -0.00079270607612589835, -0.00369214321484861649, + 0.00905046809300326383, -0.01276262552858787452, + 0.01714333776261078163, -0.01982145334105528747, + 0.02302512596946508158, -0.02453037276592388502, + 0.02647638954970827144, -0.02678318107265164477, + 0.02749704474744263730, -0.02667752962555288224, + 0.02627311169652087053, -0.02447771445856714023, + 0.02313658566807237638, -0.02057258540368705341, + 0.01852225905167608627, -0.01543207098290329954, + 0.01292465348560602016, -0.00956513711694979840, + 0.00685754152411345835, -0.00348132823239337376, + 0.00081788763747169446, 0.00234258294051785084, + -0.00474455092390381212, 0.00748986261581540379, + -0.00945123478154696710, 0.01162449605135091289, + -0.01301216347560452298, 0.01450516135119339287, + -0.01523654920608098935, 0.01599268103343072164, + -0.01603715045395408267, 0.01605136423775498089, + -0.01542876793436196922, 0.01474481689153130451, + -0.01352154179907325178, 0.01222690853879318529, + -0.01050977821250279227, 0.00872865441711472012, + -0.00665708674085250217, 0.00454181075157362394, + -0.00227863792299523712, -0.06931062178709043731, + 0.17809233717193659330, -0.13994108631474208582, + 0.17604772644615857002, -0.13454608598942430220, + 0.16722266295315602047, -0.12235575914222222849, + 0.15164055324838970895, -0.10350316931771207096, + 0.12954972905238659742, -0.07835723475467638865, + 0.10144457569584505729, -0.04754208663300268922, + 0.06808247822415774975, -0.01195091662177807934, + 0.03049384718074288347, 0.02724857022624230241, + -0.01001777029836489752, 0.06862016145707038051, + -0.05188858244212404824, 0.11047966357659617931, + -0.09332342612484466338, 0.15093278207004659497, + -0.13234324265853600333, 0.18793269187715772039, + -0.16685313124173678512, 0.21935882995868100087, + -0.19473198224660828726, 0.24311729331633044615, + -0.21394336295198787545, 0.25726171087453014730, + -0.22266562626554012305, 0.26013156955921212798, + -0.21943714336674000065, 0.25050273218131258179, + -0.20331015836482271841, 0.22774234005393437230, + -0.17400410079906289407, 0.19195754441299275883, + -0.13204639488386510360, 0.14412471258544734543, + -0.07888606109049906001, 0.08618313232120172751, + -0.01696298059754571680, 0.02107509822156832663, + 0.05028606062436954960, -0.04728699120841731857, + 0.11850406293882860542, -0.11414576690989597374, + 0.18259171090919748548, -0.17413337517999513682, + 0.23700158164745638301, -0.22162763935711221608, + 0.27615734873820640960, -0.25123399076178015710, + 0.29499643641649103687, -0.25838484939905448368, + 0.28961981648998647021, -0.24003088150364224052, + 0.25801279006482291667, -0.19537605829100762600, + 0.20077545364202634137, -0.12658075920217370935, + 0.12177154442521345712, -0.03932519314439777980, + 0.02857096263444019318, 0.05690865400748738867, + -0.06747243488670419398, 0.14901032013923734554, + -0.15169468114382261836, 0.22106598558926307541, + -0.20734837866739283530, 0.25603426716914290395, + -0.21776941590493567591, 0.23843604788907107883, + -0.16960757548140337203, 0.15812285294215649989, + -0.05710136090891999167, 0.01498911679970261514, + 0.11289046507143575548, -0.17585825080072048365, + 0.31584240038958610874, -0.37953762476193475539, + 0.50596951430273606753, -0.53940771013330901518, + 0.61667535456938726846, -0.58100066403100836254, + 0.56929734696360489998, -0.42723735527203565709, + 0.29684543906166416249, -0.03321535690708418698, + -0.20707290875065695324, 0.54697584204023796950, + -0.79900781036397861001, 1.04311455374201211832, + -1.03407749614613075906, 0.77497921006602121796, + 0.07949770650235853109, -1.65577573046217452202, + 4.46426272775262678039, 8.25679615932540400536, + 5.93446828729420072790, -2.23555474154200695125, + 0.06270936925290425401, 1.03122540494035486169, + -1.44781054302872913553, 1.41468762948029658233, + -1.16013439757635428151, 0.77893348860797384514, + -0.39626802395814053614, 0.03055114402802951157, + 0.25099255062395425808, -0.47054802857582489484, + 0.59076828297035810511, -0.65263409968591845622, + 0.63197243774580624809, -0.57596584813090545563, + 0.46431138964488943843, -0.34369755557280529112, + 0.19304478262545643474, -0.05548824960435739390, + -0.09267299144640145370, 0.21279251426325962449, + -0.33146071626303180713, 0.41431636560006379622, + -0.49031524203654358596, 0.52865729394874749758, + -0.55982907916699531370, 0.55571653639477736064, + -0.54746962095991358321, 0.50883763182232333300, + -0.47087813574471276690, 0.40853096144296396908, + -0.35217736466195098677, 0.27745636534416495689, + -0.21367085856992365511, 0.13684315784065198551, + -0.07496006020099381384, 0.00426129565315525212, + 0.04868624636033483388, -0.10747435736322559496, + 0.14695996949475037541, -0.19053206016561857750, + 0.21440773339341262504, -0.24168585991935670476, + 0.24984035122073949831, -0.26156483276301356611, + 0.25546918980437449687, -0.25371818107198951253, + 0.23593591011079387276, -0.22364002403805019470, + 0.19735750960131681619, -0.17785505825398345570, + 0.14646854734934802722, -0.12312931264979518065, + 0.08990885976400198043, -0.06584016320736031658, + 0.03367854656515967965, -0.01151670164933365006, + -0.01723774863666685531, 0.03545507637567615888, + -0.05908896297061776159, 0.07197886011743614976, + -0.08943849643588244747, 0.09626948388237066556, + -0.10713279805068078032, 0.10777528606770726827, + -0.11218410541012770187, 0.10702768347830622642, + -0.10559306232917749224, 0.09544272264416991947, + -0.08913472098865654614, 0.07509663728457957599, + -0.06512832060041373605, 0.04849406117302455105, + -0.03620769023327489317, 0.01834392341376173130, + -0.00510549657162123749, -0.01264551741494319460, + 0.02553890713778355845, -0.04194436268116916167, + 0.05334141743558284271, -0.06734629325333271743, + 0.07630101895097593512, -0.08707863275898446165, + 0.09289192125594754323, -0.09987662164589788949, + 0.10212022240086639224, -0.10502288620938611541, + 0.10354673991718375825, -0.10235430701278477872, + 0.09727869142796384538, -0.09223936809503546774, + 0.08393363475100658333, -0.07552966234808670964, + 0.06457955308336522926, -0.05348960107829773408, + 0.04065525514284059477, -0.02770858575747775845, + 0.01387540904312948957, 0.19578684501704887722, + -0.53514816087076055862, 0.41052203303605577789, + -0.54446317519850817579, 0.41024702612649532885, + -0.53390787435450814957, 0.38961196845577306114, + -0.50267266527607723514, 0.34816307899527620950, + -0.45068725803637849081, 0.28623969648477093353, + -0.37872470578067879421, 0.20507003498566281352, + -0.28848661822714866121, 0.10684348377239936967, + -0.18266008564355881716, -0.00525037057911091100, + -0.06493624061809073755, -0.12702619810867671335, + 0.06001972390641448912, -0.25336086035482541234, + 0.18665673075613453680, -0.37831392589301643392, + 0.30869252344709185998, -0.49531810407851273315, + 0.41934099136366742577, -0.59744417758583057143, + 0.51161490601717618532, -0.67774114398301221751, + 0.57870239813800072870, -0.72964721014602373916, + 0.61440982672943611487, -0.74746099512193409087, + 0.61365680730526683817, -0.72685484449066561918, + 0.57300118768764862764, -0.66540371408649401364, + 0.49116292814006823342, -0.56309396537466960275, + 0.36950657067911923948, -0.42276714192395642433, + 0.21243289462599659889, -0.25044511292338395014, + 0.02762233125339572798, -0.05547589789755356243, + -0.17393307571852095750, 0.14956463862458377334, + -0.37817442402873041596, 0.34927954184241583047, + -0.56855914827057985050, 0.52622317374725835482, + -0.72703310653915065309, 0.66208042996041804873, + -0.83542056610725645704, 0.73926644752423564810, + -0.87722695348522472525, 0.74291907004358537225, + -0.83979999161498064542, 0.66319879275921567174, + -0.71672864935342917025, 0.49773587447023853736, + -0.51027549633503055393, 0.25397201200354657669, + -0.23353802229951317604, -0.04896260863887716419, + 0.08807685659055533578, -0.37930963175505066909, + 0.41659323525990793469, -0.69325958463458758896, + 0.70304475477112082782, -0.93770101228027702422, + 0.89156199470706676280, -1.05580466695629504592, + 0.92659284762967475402, -0.99598739761790200387, + 0.76366883340214919418, -0.72447087794325282228, + 0.38365187461948629943, -0.24098641711730878212, + -0.19049673330466784793, 0.40399603643900011685, + -0.87689764499828704025, 1.09406337486094029643, + -1.52278078913399839145, 1.64024576572792124551, + -1.90598132480924253862, 1.79412996294540705300, + -1.76409384068831864845, 1.29857966165726157470, + -0.87360393967592009368, 0.00369818995536004991, + 0.78702579991575583040, -1.91045152166933518423, + 2.73987024594355332852, -3.54337685673641678008, + 3.50224110535522159537, -2.62792755059432181497, + -0.23153544401621359294, 5.49678687359431172865, + -14.86967881156401105613, -16.53740738476985683292, + -5.93646713629761535458, 2.23873420620245955348, + -0.06253922371217464360, -1.03016551642609477391, + 1.44995073089234693953, -1.41553356029562049656, + 1.16401735628662783562, -0.78144587991237668412, + 0.40164361522053138032, -0.03447050913379994669, + -0.24439185870560725666, 0.46549585361323803090, + -0.58322200852350447597, 0.64673261141555349329, + -0.62376682157134000217, 0.56950271048726175405, + -0.45573434443526961157, 0.33695967848368724162, + -0.18438111476587457083, 0.04875716664987198024, + 0.10114603682983702715, -0.21924492299692685537, + 0.33947754532869600652, -0.42023176818598129145, + 0.49762560434897756823, -0.53379439003843376366, + 0.56620133725387788992, -0.55985410871685137302, + 0.55269358049012184964, -0.51177715267264345389, + 0.47476742682522737882, -0.41009874810369989495, + 0.35457137148015538397, -0.27750528479325303755, + 0.21443620072069993765, -0.13525388691011025477, + 0.07399163451614043652, -0.00094314795239363366, + -0.05146464982579921493, 0.11258302192539831887, + -0.15159545946437319452, 0.19746382353974978319, + -0.22091849592642862077, 0.25044460876025226304, + -0.25821619041505511349, 0.27212647027974873337, + -0.26567240383206586207, 0.26603166007230760748, + -0.24790247390840622344, 0.23762867174805660242, + -0.21099853417516128973, 0.19341816236820491559, + -0.16167198475612926112, 0.14014393738231337161, + -0.10654142234764575614, 0.08416316382947758301, + -0.05158780892895351716, 0.03098690607026385185, + -0.00177890378967897854, -0.01501455004379918454, + 0.03914874041452793413, -0.05075818041194513075, + 0.06877056909020122510, -0.07446960677242976667, + 0.08594255014580977348, -0.08560540809606573265, + 0.09068387966671949407, -0.08470267445037839293, + 0.08399959219352820528, -0.07318056368570952097, + 0.06766658060404025232, -0.05311588862759161062, + 0.04400341611621037125, -0.02701138250020488490, + 0.01564081449976907970, 0.00242833198120145921, + -0.01469403231834410725, 0.03250161498945007554, + -0.04436950459911285366, 0.06068738746675506751, + -0.07101137116899391977, 0.08479022266857932921, + -0.09263049206531649704, 0.10305026650966464530, + -0.10771480560526468240, 0.11421735534737884055, + -0.11528582952646120041, 0.11759031686686946538, + -0.11492131846531983275, 0.11302365995463387049, + -0.10674676135243864328, 0.10090473637175156885, + -0.09139913000603272497, 0.08210505098505310739, + -0.06996676586770252115, 0.05790976990666850399, + -0.04390957607416088454, 0.02992968584860729309, + -0.01496385892695038800, -0.13708469946503715198, + 0.39758001647779345200, -0.29818599600234435565, + 0.41473658816357522605, -0.30857683800010166086, + 0.41751597147543695332, -0.30395850941654117827, + 0.40478614020927861095, -0.28347841451633026821, + 0.37600088153081173692, -0.24692213859170900059, + 0.33130103774563141039, -0.19480678825597458337, + 0.27159807606185959461, -0.12845284883790161756, + 0.19863223620204861763, -0.05002658954242979877, + 0.11499714879896505426, 0.03745513382807894726, + 0.02412283954611978837, 0.13016557591796845683, + -0.06979045344243729743, 0.22356139459833801464, + -0.16189410199056541995, 0.31253416851864829207, + -0.24687316043592122394, 0.39162352387618487581, + -0.31919062774120154913, 0.45529213571406124128, + -0.37339225401755193889, 0.49825880703172148456, + -0.40446570069770870770, 0.51588080127530011598, + -0.40824236433771748933, 0.50457065407735246509, + -0.38182380725512282682, 0.46222595371781821649, + -0.32400769564396830758, 0.38864331253599043725, + -0.23568075553013825840, 0.28588036215185558264, + -0.12013901687437911203, 0.15852268962992352441, + 0.01671077159810475596, 0.01380700618188741152, + 0.16631927126042356235, -0.13845142869661813956, + 0.31768454703400517136, -0.28617868080938252406, + 0.45781339021544920076, -0.41565514402241304781, + 0.57249438620624493179, -0.51245464113006533591, + 0.64740596428430308151, -0.56272058736023566894, + 0.66955533071939210554, -0.55475702884533362180, + 0.62900477360697781837, -0.48086631604065244172, + 0.52078885397722829431, -0.33930512933839340750, + 0.34685891939945157070, -0.13615672995296240755, + 0.11781133935146442804, 0.11316796444322503590, + -0.14593321461437266939, 0.38317873468929686265, + -0.41392200800153039486, 0.63876739657652370497, + -0.64693258636938377748, 0.83740645972213434423, + -0.80024189178607185724, 0.93361554826730364098, + -0.82940151268736561629, 0.88613135824016964204, + -0.69884949047725786198, 0.66795331767915055998, + -0.39330635273479375158, 0.27890599522473680238, + 0.06881119242540326142, -0.24057920980391811483, + 0.62193684904556800763, -0.79730199824048531010, + 1.14377814402483934941, -1.24000386770399839698, + 1.45651473171504997062, -1.36986028592730790798, + 1.35012325815823430730, -0.98105845587582463097, + 0.64568408301921431658, 0.04643110619288610963, + -0.67414855807088502893, 1.56867723412440240871, + -2.22715676251962291232, 2.86541074932260730890, + -2.82731721123250645533, 2.12304085758786342808, + 0.16977793073691832548, -4.38701208053118563157, + 11.89057021544843983918, 9.46668813685057841667, + 0.13458386349447909458, 0.19386329997646270518, + -0.05579949493362588997, -0.01668941796573128813, + 0.04662328731961140615, -0.05144133029755035280, + 0.04217689281171281557, -0.02722234013788040613, + 0.01092330784608116188, 0.00322021364478636317, + -0.01432260662906478799, 0.02129498023566660236, + -0.02482780176008915832, 0.02483405922041755434, + -0.02254528880989282655, 0.01813364942519538059, + -0.01285489833756397159, 0.00679586354918884031, + -0.00102148720337662843, -0.00458632777189534480, + 0.00920443563369214082, -0.01315909573698219488, + 0.01584055505326479804, -0.01773536673632406316, + 0.01838894013145065190, -0.01838611276821566429, + 0.01736633852219336346, -0.01595562060770061227, + 0.01383631474695196963, -0.01163147456388362137, + 0.00902970393433399389, -0.00662183726170305787, + 0.00408047340056453059, -0.00194837082553775366, + -0.00012804721090925249, 0.00165939055647781712, + -0.00302660957775084194, 0.00379158178196900304, + -0.00435794441515086062, 0.00433225282082201190, + -0.00413291399821026553, 0.00340244847771736759, + -0.00256494603727178312, 0.00128980946220599965, + 0.00000199180312745303, -0.00162245391068435480, + 0.00316133422284426823, -0.00491882812185526555, + 0.00650135689188967823, -0.00820234078192328721, + 0.00964899110385944274, -0.01113118884460261721, + 0.01229933805899730177, -0.01344139514918460399, + 0.01423186618887215156, -0.01495705049887492179, + 0.01531527502822109012, -0.01559042146512699782, + 0.01550349044045199257, -0.01533447808287415406, + 0.01482535525546675552, -0.01425035051487267418, + 0.01337041782108053245, -0.01245197092786422960, + 0.01127289931859770666, -0.01008978611766547448, + 0.00869551807819058352, -0.00733500655869923079, + 0.00581442436332483235, -0.00436543808490819953, + 0.00280609317826129197, -0.00135355655138307972, + -0.00016333820019967817, 0.00154284644355620550, + -0.00294610256215044157, 0.00418738764964404590, + -0.00541825567389853709, 0.00646933040774220602, + -0.00748277208151582919, 0.00830562244021265834, + -0.00907061825831023162, 0.00964110368904607870, + -0.01014019773626791826, 0.01044729220941489553, + -0.01067557998410621073, 0.01072015518075162058, + -0.01068390807471062028, 0.01047724184173094708, + -0.01019233855023603426, 0.00975450419812797821, + -0.00924480855290259716, 0.00860306744372818857, + -0.00789885749461721916, 0.00708614190125855282, + -0.00622265948009756518, 0.00527619758702206620, + -0.00429235350162975038, 0.00325245584093616317, + -0.00218969520623136984, 0.00109869348978079554, + -0.00878048411404161976, 0.00542912742480994564, + -0.01445652145870532888, 0.00146432348101391101, + -0.00968307966899631042, -0.00403566204880642220, + -0.00354196905489630133, -0.01070414242240891496, + 0.00353956565635837319, -0.01805915841887100609, + 0.01103169246518603992, -0.02553079170970455961, + 0.01833307206784446849, -0.03249574866157891456, + 0.02480863352013266271, -0.03831796483327693653, + 0.02983259186467352581, -0.04239356606880857747, + 0.03283482823510715937, -0.04419808812929799935, + 0.03334831499691787160, -0.04333342016229159432, + 0.03105483961178938379, -0.03957152387718007591, + 0.02582589184604068555, -0.03289162578429093153, + 0.01775527045172652085, -0.02350733009608616669, + 0.00717978833502790764, -0.01188001044687578972, + -0.00531553052469591059, 0.00128502662824293411, + -0.01891109636698489957, 0.01506268495555928080, + -0.03258797297403857179, 0.02835481410315863690, + -0.04518640221924043188, 0.03996059904158115461, + -0.05548790623673544031, 0.04866996170884245465, + -0.06231928284973119181, 0.05337712127376616211, + -0.06467434882639352955, 0.05320875926173279646, + -0.06184636412768346886, 0.04765812178362360124, + -0.05356080304102953799, 0.03671302209368933200, + -0.04009473292749856504, 0.02096234654159766925, + -0.02236584441841241513, 0.00166271018729894629, + -0.00197161688738449557, -0.01925509726071243308, + 0.01884216893723782496, -0.03926057174224920759, + 0.03730353931727836692, -0.05539733798607128501, + 0.05034314460835304095, -0.06456903698415276949, + 0.05493783991273110817, -0.06393938428857097456, + 0.04856377211546861195, -0.05143218419530206503, + 0.02973413232954505089, -0.02629410711425022099, + -0.00142970192145554405, 0.01034679475727550910, + -0.04267791662234613620, 0.05502960007775929002, + -0.08928494734019869206, 0.10175754228783552569, + -0.13403530878520925063, 0.14222058275444918185, + -0.16773299085081111448, 0.16664188905941082486, + -0.18043269934425057444, 0.16543518336155649262, + -0.16355333173761069099, 0.13178653112186430874, + -0.11291406608016661683, 0.06509390004457281387, + -0.03247639704121589588, -0.02515610966783156377, + 0.06189957388431965163, -0.11612016097068442178, + 0.14018643016142384727, -0.17102103130973769773, + 0.16022230677594784254, -0.14498984365983560996, + 0.07890823006764495495, -0.00358895353158855592, + -0.11945502501692079056, 0.23591999993218812359, + -0.36509040356686273121, 0.42489866070984111390, + -0.39557592838574895389, 0.14146904141323382587, + 0.42948039127818093963, -1.54890162951564702709, + -4.28661321834297659450, -4.70577132301904299538, + 1.39653339748609717219, 0.34096667701802030326, + -1.05507163472442222485, 1.16844107690506282538, + -0.94182556427257069220, 0.58067524663872327473, + -0.18531936686387287527, -0.15629415957323911091, + 0.42679292237637239671, -0.59618083601045834818, + 0.68482804084154536017, -0.68686915912764578973, + 0.63557657452913929319, -0.53139076907570281794, + 0.40808207368015692040, -0.26412890287120310839, + 0.12863869073450065472, 0.00474238875210593325, + -0.11279334963630392730, 0.20677789092916057379, + -0.26867981124860779163, 0.31352380344316116423, + -0.32710096976390246049, 0.32670875833580681480, + -0.30047881435209605749, 0.26661050122879637048, + -0.21434866836612326280, 0.16173585521610026050, + -0.09825052823317732831, 0.04107597552857419204, + 0.02060968067617998528, -0.07086290685348635432, + 0.12104989300997771873, -0.15659380827216912158, + 0.18943377267561475885, -0.20630916344854735578, + 0.21961940795387999148, -0.21726185012133236718, + 0.21190606854400970138, -0.19239817980190646041, + 0.17145967925976540736, -0.13866737254122357692, + 0.10658324999519676324, -0.06531596356725787034, + 0.02708529794941780602, 0.01763154885034263694, + -0.05709963036810618980, 0.10059390857103114869, + -0.13696343860151377614, 0.17531309019831531337, + -0.20513371581235914642, 0.23539892698529979453, + -0.25626331918791478426, 0.27657574144966817764, + -0.28714789948140589937, 0.29668569510878928241, + -0.29663051707376886235, 0.29551015050380796678, + -0.28535487994257324740, 0.27446925792150511647, + -0.25542485874008535873, 0.23625391243432658506, + -0.21002021579646751315, 0.18443533114087903857, + -0.15300882326562026403, 0.12308742493189463174, + -0.08858545231857363478, 0.05644707290094673480, + -0.02095747432239108976, -0.01137185210763438231, + 0.04591084461314329235, -0.07660283192127970153, + 0.10849100462947404433, -0.13598800464028534818, + 0.16382110329856788833, -0.18687988107488803791, + 0.20958016998656717189, -0.22729032242490634919, + 0.24411402682739111181, -0.25589566758286813597, + 0.26642214379243894795, -0.27200779814198555728, + 0.27611536584597273780, -0.27552090609041418601, + 0.27335398852374753753, -0.26684300269032396047, + 0.25877465872722371643, -0.24681998377190370042, + 0.23341317709432066185, -0.21665853261974804544, + 0.19862865101097632037, -0.17785245823410228416, + 0.15603274174659914619, -0.13211536971074444580, + 0.10742608833687732062, -0.08132098746932948929, + 0.05474247350944393131, -0.02745097658927909620, + 0.10334153582589750142, -0.06590242509369341473, + 0.14421494605882798079, 0.00327041195680919132, + 0.06894495246020339307, 0.08349811485556515867, + -0.01537229382396948334, 0.17052450135578287038, + -0.10402504575878779303, 0.25923707992776251485, + -0.19156343302058803646, 0.34392014580524365996, + -0.27208513903551878599, 0.41857106308691693908, + -0.33957981553687599519, 0.47726981714713345717, + -0.38832023397477083426, 0.51458766384452481191, + -0.41328375624758184603, 0.52601616434671738531, + -0.41058309698602535320, 0.50839327045442572750, + -0.37788078210186204497, 0.46029869606112128189, + -0.31475751130787787968, 0.38238695191347576996, + -0.22300123100521737629, 0.27762360742110198109, + -0.10678164074635418390, 0.15138914340860248897, + 0.02732529738159397009, 0.01141582240039421686, + 0.17049582151241202133, -0.13247296906839986508, + 0.31202700058680188366, -0.26884374589189580229, + 0.43993293050021514690, -0.38536511592515904079, + 0.54177147849324169826, -0.46974504568285901929, + 0.60568512835390142524, -0.51086512013238982721, + 0.62161497159696388337, -0.50005679718943729650, + 0.58261774707691282860, -0.43243357472893312332, + 0.48618320113565610674, -0.30815932689427166791, + 0.33541500551428732324, -0.13349947026812306050, + 0.13990629626041953260, 0.07852796210024547141, + -0.08388472642112840272, 0.30810434773491929272, + -0.31296645462022737449, 0.52937202740206268370, + -0.51905195080724797485, 0.71218966112314618933, + -0.67086386598978586804, 0.82500757281100300933, + -0.73758634701014924584, 0.83888398088510862660, + -0.69341102532240650458, 0.73249966100667029956, + -0.52292840423158715168, 0.49779887139277656516, + -0.22685167540857559265, 0.14558610862462934010, + 0.17277000874797393548, -0.28994910018630520865, + 0.62906934949189075024, -0.74919427602801469401, + 1.07021193046946994087, -1.14933334928805552799, + 1.40448470295919713990, -1.39280685637211520955, + 1.53260468574866925984, -1.38388258107080241999, + 1.36885172864666815329, -1.05447227624303163651, + 0.87142904206594640204, -0.39852767505060593400, + 0.07988473401840179289, 0.48919030347545833237, + -0.84732268806369093195, 1.38042724534204030995, + -1.61013333543342551657, 1.90765925359115273707, + -1.78720953378505131859, 1.62250965373195210617, + -0.94790311517628833560, 0.18097128969016501587, + 1.06438301753637776237, -2.24392037366519447872, + 3.55143735244257285899, -4.16532102702119200188, + 3.88856175500311973536, -1.36395704936458450618, + -4.32867053143996027842, 15.50601690336145033200, + 21.51797968325463017436, 15.65535183383512496391, + -4.63261223529149379630, -1.15813578250686766147, + 3.53033952376025617070, -3.90712907745208992694, + 3.14360299921450092597, -1.93856602316381554374, + 0.61267055909644174694, 0.52724714404495687248, + -1.43676607040999404497, 2.00251757123593554510, + -2.30559789831337402788, 2.31336933311142400882, + -2.14964446411590826003, 1.80310068761109909552, + -1.39891931622767362597, 0.91953338981127796803, + -0.47429012114823082547, 0.02981117995101359441, + 0.32446888466741335977, -0.63799837203266740460, + 0.83898329044168518109, -0.98911218586252480645, + 1.02957350243058010086, -1.02933515921759344280, + 0.93767902072336595243, -0.82628287688117696419, + 0.64843110454000696397, -0.47498223626782953843, + 0.26029145489143512560, -0.07205664725076567356, + -0.13607579300032224268, 0.30083690379045346930, + -0.47010201122054479095, 0.58545414896951297745, + -0.69638544392744483602, 0.74916250158958996863, + -0.79451851801220052529, 0.78287607540699477582, + -0.76557525614662946811, 0.69649717118156129203, + -0.62686100942140909886, 0.51327932407003862281, + -0.40614534122333811883, 0.26414010324877157387, + -0.13622154637640054853, -0.01740527550808491225, + 0.14969347441800864851, -0.29931647815615058938, + 0.42146929664445953456, -0.55396313195868296386, + 0.65442783532320336626, -0.75994195419582377671, + 0.83064360824120897497, -0.90290045590229683903, + 0.93933703257438172507, -0.97554959259612139544, + 0.97655789982150453810, -0.97706965919352106731, + 0.94436412128966551460, -0.91211012639030830673, + 0.84968791865701764898, -0.78956389566734042074, + 0.70305590862575162436, -0.62126679998807043948, + 0.51729732764714353443, -0.42073959428567631047, + 0.30634066713275664995, -0.20205612787733903679, + 0.08416652165184297651, 0.02110947258827128650, + -0.13604441076455769943, 0.23623035799048627825, + -0.34255333642579482989, 0.43246450986081441670, + -0.52549942642349400934, 0.60099382567558001789, + -0.67714770079049424467, 0.73518755149350811795, + -0.79197547439519278001, 0.83061968262313712330, + -0.86662891512464912402, 0.88497295107608886511, + -0.89978263239145461760, 0.89786194076384762131, + -0.89193387442232285878, 0.87060544910769943616, + -0.84515958034640781271, 0.80597413560050212844, + -0.76285986447711606750, 0.70793438387749363372, + -0.64950608543059207278, 0.58140369215004261694, + -0.51040596710564489769, 0.43202724974913303546, + -0.35149270207361155149, 0.26598002389963359970, + -0.17913990995038300835, 0.08979396242173713627, + -0.27310096588509114035, 0.17667906041796727079, + -0.35111110546665791343, -0.03111087033866121940, + -0.13208994979049404339, -0.25801470927094566354, + 0.10072640516295228164, -0.49293854211483661976, + 0.33539223890585495580, -0.72321044267986567267, + 0.55865323022157487021, -0.93515510982405547491, + 0.75659116460883946154, -1.11480494718209377503, + 0.91539648867717293701, -1.24872792340101601560, + 1.02224397309705317127, -1.32494214858911885102, + 1.06623588958066828347, -1.33387589461705569072, + 1.03936567295363890828, -1.26932027677150216505, + 0.93744363058319424287, -1.12931071148661943404, + 0.76091569782201973204, -0.91686350254728177234, + 0.51549756815237757213, -0.64048665005573968134, + 0.21254102722868209452, -0.31438060756855878974, + -0.13095152392890044291, 0.04175319343549319800, + -0.49274291381312651517, 0.40336897836617796598, + -0.84627248780708497211, 0.74225321766215579533, + -1.16210473105008893491, 1.02824736835031349536, + -1.40992280064439756693, 1.23150268094935366747, + -1.56102812901654863786, 1.32520040458095000879, + -1.59124860795435685290, 1.28860625615230861563, + -1.48408803465849348235, 1.11025351122541948712, + -1.23387125619056803316, 0.79096833442668246228, + -0.84855779197074743259, 0.34637034501998498204, + -0.35181948831618325979, -0.19158960821691486953, + 0.21608377393578198644, -0.77454074660641192285, + 0.79912697507769725469, -1.33954728653213339662, + 1.32851862478227333852, -1.81334847246194885706, + 1.72825946950084641252, -2.11928587296735670975, + 1.92345295634143553798, -2.18696750308801268758, + 1.85123993523535190775, -1.96432639442876344482, + 1.47376032082369556875, -1.43118001601214328566, + 0.79191024610204907574, -0.61268121378019546608, + -0.14212867828365066680, 0.40980624362406548045, + -1.21651746626817591768, 1.49380341554284634675, + -2.25939041479930358136, 2.44103227844107584232, + -3.05105852051619219623, 3.01771267054312453126, + -3.35354423704569715170, 2.99432709194239299322, + -2.96129672467136595415, 2.20757877879168828983, + -1.77405635274947837132, 0.64294261167350641450, + 0.11333192253359228308, -1.47228593963367426767, + 2.32075738733745051690, -3.59054344209839459978, + 4.12837916637901436445, -4.83012911792652399612, + 4.52539493220556554576, -4.11539616024937426886, + 2.47875282545331643291, -0.62127491401023027251, + -2.38679181497309800264, 5.23632334369429131016, + -8.39487061351554331168, 9.88828025514089148373, + -9.24548819501871044224, 3.20759495956306484032, + 10.43274453756728448184, -37.23654329154006603630, + -34.54087677308262271936, -12.49560383390995177422, + 3.68221746677957462168, 0.95154069704314259148, + -2.84446082213820039541, 3.14691764954337172000, + -2.53126562539820776365, 1.56817488948121375181, + -0.50268616723770020993, -0.40834982873660297109, + 1.14063435098903775966, -1.59233569631413152123, + 1.83932582633789887261, -1.84460296929601641480, + 1.71796905619354900452, -1.43971982009848331607, + 1.12050904953787688889, -0.73588259931519128809, + 0.38358380832035621211, -0.02675520517933281661, + -0.25303324486151784756, 0.50524908492638032076, + -0.66267813476283621288, 0.78433412554930415084, + -0.81363228267885212563, 0.81516374654714462977, + -0.73906207315337668629, 0.65184015387166305278, + -0.50707730336704681662, 0.37038482616112439194, + -0.19644259966860250222, 0.04808721435289440432, + 0.12032438434509021286, -0.24974494354033760501, + 0.38679060313154584039, -0.47654189116248674152, + 0.56666389938801131620, -0.60623017293862324628, + 0.64365396703553090507, -0.63157973424709012988, + 0.61866134144748285983, -0.56055615009672010718, + 0.50557620914128087453, -0.41181007513356038263, + 0.32666371970835772487, -0.21012648497826896810, + 0.10821060349396358080, 0.01762942686501338396, + -0.12315591394402952696, 0.24577124529802985009, + -0.34327713642020662999, 0.45214033848683621297, + -0.53235650839735693118, 0.61956045814737270572, + -0.67600069711859589461, 0.73649754600289130124, + -0.76553504316605081037, 0.79707063547604994902, + -0.79775108759850221762, 0.80057727930143751660, + -0.77425024309146217583, 0.75069405520299503642, + -0.70053734369402298476, 0.65449652701283078660, + -0.58499722870200121516, 0.52141931979477784687, + -0.43786175494145890275, 0.36225010233807630744, + -0.27024745243854553234, 0.18822442991118948363, + -0.09331806516855638278, 0.01026371034375645787, + 0.08239687116867248917, -0.16162270413989945905, + 0.24751554099961275979, -0.31876750578425400162, + 0.39415268368556177769, -0.45411672533479879865, + 0.51611796516475483276, -0.56236058008034595090, + 0.60898527324925133541, -0.63994756858572976466, + 0.67005817289651226076, -0.68500790276002343493, + 0.69825785130451589744, -0.69721230524451616173, + 0.69395881062816122675, -0.67759026191601468003, + 0.65879489983406602782, -0.62832855649560037659, + 0.59545454203733338971, -0.55256682281862978812, + 0.50747967363766532944, -0.45420236075539749399, + 0.39907836289433790133, -0.33771193592227066738, + 0.27495664625254423452, -0.20799401629324912322, + 0.14017107423890143303, -0.07023112398296872672, + 0.18687596415986582055, -0.11154180970775663673, + 0.22427300209814499121, 0.04466608613328120619, + 0.06224187176441269009, 0.20992810029975225716, + -0.10506936389274035282, 0.37645004481288196763, + -0.26941405876186336199, 0.53561365383785042305, + -0.42189421036503449436, 0.67834384615528087181, + -0.55337057114606957864, 0.79555971734872343859, + -0.65495175046515241579, 0.87869812424127613504, + -0.71854775117470282009, 0.92029170185930009307, + -0.73746602527917215486, 0.91457552968119726344, + -0.70702033391648755334, 0.85808879378125479942, + -0.62511487810181876057, 0.75023016439891521134, + -0.49275889037436898521, 0.59371886101631643484, + -0.31446085598512463211, 0.39490829722023101933, + -0.09844762776280807648, 0.16389671858125137716, + 0.14334709001566448006, -0.08561957500562063228, + 0.39557698278084857391, -0.33679885825453115267, + 0.64010338208176864594, -0.57044898016698908361, + 0.85696953218343663305, -0.76618233684966174923, + 1.02573411434408146015, -0.90392167949443757990, + 1.12713843985326822583, -0.96571265856805221794, + 1.14504270024545107276, -0.93775609368109558162, + 1.06852016546984462941, -0.81252332956093398231, + 0.89394608986296586473, -0.59076423432132407765, + 0.62686366081797095795, -0.28316365223083961311, + 0.28335783744578746379, 0.08864523556566250573, + -0.10937311308531975917, 0.49203438436126778477, + -0.51357905408491955068, 0.88463047971746888720, + -0.88297011089432853037, 1.21715459968088546283, + -1.16643532118072990045, 1.43805305288446039214, + -1.31359530988832440279, 1.49995215301323736590, + -1.28210371903057174237, 1.36770844357970910998, + -1.04629899680234728088, 1.02745845535152202643, + -0.60638540398660256692, 0.49559496728785396025, + 0.00320580593287137904, -0.17397493607430503104, + 0.70822809011004694835, -0.88655400621022018015, + 1.39436770877405025182, -1.51019389171546825068, + 1.91537501847910118791, -1.88922279290269790053, + 2.11275133706837436876, -1.87075301369050994715, + 1.84955744094700369473, -1.34598530596575982621, + 1.05898947542213939244, -0.30524297907008096642, + -0.19574471453177116897, 1.09999417118643583180, + -1.66131630684222364458, 2.50478927532082717988, + -2.85796307851147091128, 3.32149885578187165081, + -3.11199816479077728815, 2.83322958221087839448, + -1.73494683490778567325, 0.49018219736740714643, + 1.52308754700474735522, -3.43008479406560562452, + 5.54422540780052397480, -6.54784372603158271176, + 6.12814125245676510900, -2.11142062321759693688, + -6.97310750382111699253, 24.83341625303393129798, + 17.31282634113740925841, 0.01080164543755444267, + -0.02034308647146336121, 0.02128963864714401855, + -0.01971867342876755524, 0.02036023143694128124, + -0.01849291332185255821, 0.01884958366975059141, + -0.01671166168961163434, 0.01681473924679832352, + -0.01444294468780636664, 0.01433443759535474836, + -0.01177587232279883947, 0.01150773106450128820, + -0.00881891303166568337, 0.00845186719753602406, + -0.00569733325623310999, 0.00529923609358902252, + -0.00254960587196999483, 0.00219319801546034908, + 0.00047737794674568485, -0.00071734623938132010, + 0.00323439419343099326, -0.00328469734260557677, + 0.00557726943364905692, -0.00537034916782567952, + 0.00737542790601287707, -0.00685401666082526180, + 0.00852130244232333911, -0.00764330782525377700, + 0.00894012053585366458, -0.00768345164777630135, + 0.00859937698192963888, -0.00696629437927533384, + 0.00751711051424610189, -0.00553759357729178246, + 0.00576793609388158088, -0.00350149770563596514, + 0.00348567458916063328, -0.00102102895403645248, + 0.00086139980853170263, 0.00168657754850879663, + -0.00186417521966540396, 0.00436064745690960352, + -0.00441478885454386124, 0.00671456836441586009, + -0.00649955925758708992, 0.00846007105854249333, + -0.00784043862261179537, 0.00933755736632793133, + -0.00820498250292507787, 0.00915073412266401154, + -0.00744211698429081588, 0.00780262047647660873, + -0.00551732814875773459, 0.00532869816971275664, + -0.00254239595311210424, 0.00192171063178013263, + 0.00120637774937722782, -0.00205840103346118571, + 0.00528828624697432262, -0.00609641164273012470, + 0.00912358252106915298, -0.00956210566736690783, + 0.01204990090612900050, -0.01178362602391566129, + 0.01341279599285653303, -0.01215477748057069117, + 0.01268853032845031550, -0.01027098767733621021, + 0.00962968604151016178, -0.00607965681601644291, + 0.00441378572404556302, -0.00001889198478665999, + -0.00223779801988366594, 0.00689514476805691036, + -0.00901750605354941816, 0.01308584679037922034, + -0.01412514927460763528, 0.01660205231511315688, + -0.01556189611590025161, 0.01553383756653221523, + -0.01167754318094807627, 0.00869424044276737203, + -0.00197945808493502334, -0.00346659053298695955, + 0.01189072969600174154, -0.01789294682783109172, + 0.02530523772723293138, -0.02834585464429247720, + 0.03056818387789730571, -0.02612048057853497834, + 0.01884016717864587034, -0.00371709120928178901, + -0.01374075901292644460, 0.03567982500997449180, + -0.05206078298088805123, 0.05821188167101448707, + -0.03419603540469017683, -0.03865007164670340029, + 0.19962925628803043776, 1.13290093984547368677, + 1.54574394922713365119, -0.26753804077274867534, + -0.32640984515075921468, 0.50834994483305495638, + -0.46970383462042580858, 0.32788641104102733692, + -0.16230296994842169367, 0.01127723937516194284, + 0.10041460716374522866, -0.17060825697848186477, + 0.19752070100840343758, -0.19226063156464226478, + 0.15986124557182210260, -0.11361184944804329777, + 0.05806922506269369261, -0.00420208622161479667, + -0.04640289569205458681, 0.08618727324844195625, + -0.11667866703173192244, 0.13327124002307899620, + -0.13979994089325584183, 0.13363693215566449513, + -0.11990858349257832449, 0.09699230845636624965, + -0.07042876742189878303, 0.03884829234339501336, + -0.00759025150789347652, -0.02494067314220424145, + 0.05395589878472711876, -0.08150952007189112003, + 0.10349616840514884453, -0.12247700285755701299, + 0.13501071322534008434, -0.14409454337219754216, + 0.14684287736273279878, -0.14655585131942241994, + 0.14075646091246749037, -0.13289567218951334193, + 0.12075538891500682548, -0.10779557028465047708, + 0.09192727077622900311, -0.07650448885127163201, + 0.05946906388097022295, -0.04398792351794274247, + 0.02796991510089680971, -0.01434775190718773179, + 0.00096578903375880672, 0.00949481885037689426, + -0.01925894022077791548, 0.02589092550445785262, + -0.03166974413300946423, 0.03438291182537418778, + -0.03633557286619564647, 0.03550656827953529299, + -0.03419285455189944450, 0.03052909353141675108, + -0.02676848406081934473, 0.02116691922334373172, + -0.01590097520422042651, 0.00931735031996444064, + -0.00348844436055943154, -0.00317250312474792913, + 0.00871807689564917804, -0.01468567733210181595, + 0.01926647414479063306, -0.02395854564176462531, + 0.02709832357741740611, -0.03014803233607265751, + 0.03158992807346722859, -0.03284827292377357627, + 0.03254672654769720508, -0.03206513109168949299, + 0.03016043010609393421, -0.02815854700490787871, + 0.02493919404559281558, -0.02176310929943807773, + 0.01762108552106280909, -0.01369679622548651381, + 0.00908032835787784751, -0.00486678390949193442, + 0.00023454759810837380, 0.00382019786298401585, + -0.00804029242815594396, 0.01153707990334726201, + -0.01498219312680814166, 0.01760098683364032593, + -0.01999921217116263500, 0.02152039658761849966, + -0.02270737553312262430, 0.02302364881785022577, + -0.02294977413929919635, 0.02206875713015202939, + -0.02079734185721304404, 0.01883551340973871682, + -0.01653274509499207123, 0.01370170839850487488, + -0.01061955584378478090, 0.00720594413144663975, + -0.00365944620375080378, -0.24790171585233580775, + 0.44868009655293444871, -0.49354739718029305706, + 0.43680750450800137630, -0.47202163091833060360, + 0.40578305474007447806, -0.43166331590609952062, + 0.35645182638639277828, -0.37373353621410154712, + 0.29049631564188388433, -0.30033839524972344437, + 0.21044467014182605125, -0.21442220042661899737, + 0.11964657827210202490, -0.11972378680971779152, + 0.02220779355561379453, -0.02068711250506110808, + -0.07712515250911824993, 0.07768161163391026913, + -0.17313677110549471894, 0.17001564399310248321, + -0.26037468988453638108, 0.25085000363787146593, + -0.33344136092398785065, 0.31494104787885535135, + -0.38733914208805475532, 0.35763380754882823087, + -0.41785569759905877296, 0.37526028403893862961, + -0.42196901719459900537, 0.36554400468566816684, + -0.39824332680143814667, 0.32797815512003225535, + -0.34717942794926059946, 0.26413733446180592823, + -0.27147644102170453984, 0.17787740163411550065, + -0.17615763315700896929, 0.07537519147254222174, + -0.06851226718905138735, -0.03503856499952483911, + 0.04219037292470857042, -0.14329253559813276420, + 0.14524799686818867794, -0.23825937340438552159, + 0.22934822170680230213, -0.30871405035766658065, + 0.28365518279076790131, -0.34453680680416598481, + 0.29911155667357092192, -0.33809117949857442342, + 0.26986332832937992565, -0.28565976404497489538, + 0.19466419698481210454, -0.18876836701308691291, + 0.07806433297708380292, -0.05517857086593203758, + -0.06885876946708764657, 0.10071203883822754666, + -0.22850121039958568026, 0.25834176267859837450, + -0.37774180810747853831, 0.39259036510304318179, + -0.49019217183139951466, 0.47670570242687004825, + -0.53981049628057431455, 0.48658775058232056621, + -0.50580470379258946068, 0.40621851014144477743, + -0.37844828832310661859, 0.23366736919825259466, + -0.16501660016873498371, -0.01336792620536756369, + 0.10546495717045005491, -0.29407525191914646312, + 0.38053502673329753225, -0.54523968343371831402, + 0.58804527759076641313, -0.68868530127733229573, + 0.64792560086404737962, -0.64791204794391710209, + 0.49407947648253308648, -0.37536860255124127050, + 0.10674498288091945064, 0.11097900844077181193, + -0.44843556671946094294, 0.68890808589016450103, + -0.98633927998527559655, 1.10883098941415147998, + -1.19908538773120620924, 1.02249254944332812478, + -0.73302025769868384142, 0.12981079996816255462, + 0.56644078751350479539, -1.44195474326391570585, + 2.09487742950029209865, -2.33861171951108781641, + 1.37548766322143189988, 1.54084479946951247165, + -7.98259142456071479899, -15.01444051858947936751, + -15.50289707069072164813, 2.72067426100263931588, + 3.22433091892078849128, -5.04487959880503922250, + 4.66478662857695436372, -3.24865410648482333400, + 1.59993252257861184873, -0.09250749085981470332, + -1.01666259164566263884, 1.71509022023974910809, + -1.97594882386525583229, 1.91928406944449791993, + -1.58663095316244850963, 1.11964359562780946256, + -0.55529170512398251525, 0.01182501911841361657, + 0.50328959873002443448, -0.90610425005230121887, + 1.22009727984048699234, -1.39104672639303861281, + 1.46530699186265489509, -1.40863653091547869067, + 1.28010715096439042782, -1.05573075233835123043, + 0.79852559039291770571, -0.48723412119047604385, + 0.18266549054866235147, 0.13849261686749755884, + -0.42113490453847574058, 0.69295944737947157144, + -0.90588896718385758522, 1.09248997679473114353, + -1.21152161255324197775, 1.29970890374143754897, + -1.32156378398399709795, 1.31663781903753385194, + -1.25372500195112213106, 1.17368282233757459387, + -1.04809044549141594516, 0.91769298721276326702, + -0.75555741202217618913, 0.60116704597656622777, + -0.42809324143092136739, 0.27374660259906313797, + -0.11156538604600853282, -0.02358375442403711636, + 0.15871034305225448224, -0.26166488065264148499, + 0.35995164449201400014, -0.42407749313370701749, + 0.48188987294941743045, -0.50632832409473405022, + 0.52530383372937750064, -0.51386993624016474858, + 0.49965716307277219244, -0.45947770780307767291, + 0.42032558144314119408, -0.36042545410001669559, + 0.30580580963777398429, -0.23579925707117632694, + 0.17519287427688248759, -0.10418430587515574437, + 0.04611082071755340239, 0.01813695702600078008, + -0.06680786882204274579, 0.11841891258455866653, + -0.15287208047599759597, 0.18812686953340232443, + -0.20574428483735582307, 0.22310540609946374890, + -0.22338624786091507146, 0.22332503119014773807, + -0.20763175460049790311, 0.19230689698030917212, + -0.16348942372979116677, 0.13632947643590662135, + -0.09827820361440456343, 0.06351665526980455889, + -0.02069036196730098323, -0.01710378246066286342, + 0.06013580328479259385, -0.09649646719127108474, + 0.13546658801968769481, -0.16641072271678214456, + 0.19769619707999086522, -0.22002628845809751867, + 0.24090816109639712206, -0.25242554312245030212, + 0.26125519796613871915, -0.26087943747133557348, + 0.25715113031146535905, -0.24494666411181381660, + 0.22927980338845094233, -0.20639592317764823837, + 0.18043528139429534929, -0.14896949958795419056, + 0.11521501362670846791, -0.07801288028129715890, + 0.03959332246701368491, 1.09663738243983011067, + -1.92379793391949727166, 2.22542530756628575972, + -1.90814776199343172358, 2.16060249227113265746, + -1.79443425143310730796, 1.99773394559961170458, + -1.58385928135702269692, 1.74040084916985060559, + -1.28246989550908740974, 1.39718060109061004148, + -0.90141254337772758198, 0.98179786860793638592, + -0.45696601097248074064, 0.51302461908120233769, + 0.02970571526542764573, 0.01427244761080837671, + 0.53313371175749657560, -0.48717057545884151493, + 1.02449823923009675219, -0.96129037944991535536, + 1.47297777623987147244, -1.37689302786376122079, + 1.84748666115071813465, -1.70352368641137830174, + 2.11876019827830219810, -1.91369730112828873025, + 2.26170465389940700263, -1.98533573879585500954, + 2.25788331250777973835, -1.90425845407654170671, + 2.09796148612048627413, -1.66652587517964900776, + 1.78388705444898576502, -1.28039125633797956638, + 1.33054401699825919358, -0.76758362859336315420, + 0.76659118406530080136, -0.16362880735076204552, + 0.13419417516610090968, 0.48307470804375907125, + -0.51261522361924360958, 1.11366404382480621571, + -1.11115392736647722316, 1.66285691024647541703, + -1.59496748308463431876, 2.06464933630143265830, + -1.90030296064724835148, 2.25949222649405534469, + -1.97388566278103216867, 2.20252983438891147827, + -1.78144373196106342583, 1.87219595290358764572, + -1.31612168034990273391, 1.27815122605857589555, + -0.60561042082812299725, 0.46724087226785593341, + 0.28346071513254322838, -0.47409278526489445627, + 1.24551437576320767064, -1.42262293908757064820, + 2.14205796618773769424, -2.22794690743668466482, + 2.81515670600395040424, -2.73001637135011021584, + 3.10908508286684215349, -2.78480881105691890909, + 2.89971191859872146068, -2.29687244376979604610, + 2.12936057569693470981, -1.25532350604126508031, + 0.84239204620073704355, 0.23294197087953477654, + -0.78633906277269438601, 1.92236412353952479393, + -2.44139985774746071101, 3.43301787922598666825, + -3.68930041882581960522, 4.29528921959152309995, + -4.04910829870314969980, 4.04971740195914442495, + -3.12383944670723634474, 2.41064848305173606846, + -0.79463802493331481269, -0.51434182571004549711, + 2.54479717866421717432, -3.99200621500424057686, + 5.78375128671543858871, -6.52477533289726885357, + 7.07483122969900080079, -6.02294639369558915121, + 4.29588233753530168713, -0.68573636002989468707, + -3.48094980058910730136, 8.72369539250050252122, + -12.62958818762574253469, 14.08068223268631236067, + -8.28974600759126545313, -9.22024776363016052017, + 47.88316966743320790556, 53.76776744529013996043, + 37.35495129269128256055, -6.68281461361596829107, + -7.59289135770639411760, 11.95868773474363422338, + -11.05553049984535185501, 7.65484357873777110370, + -3.70821204427738315701, 0.08982613679187069489, + 2.56080553016920919873, -4.23636089755741984675, + 4.85014215177105523225, -4.71241817393972883821, + 3.90105232975760340963, -2.77768376630273605699, + 1.40971161951266732437, -0.10211320495443697298, + -1.14802760008114757007, 2.11855041355018247629, + -2.88614910176355055071, 3.30049916094174777825, + -3.49270695319999679995, 3.36089560540165255276, + -3.06620382052972217934, 2.53185850903345288643, + -1.92798091331174270557, 1.18484754995540608746, + -0.46678924116719572313, -0.30035204408305005153, + 0.96642302001227575747, -1.61561013262249675293, + 2.11511549687146960252, -2.56031202208363906081, + 2.83529734789504406223, -3.04492677564285063596, + 3.08759286982345138028, -3.07443642553156459840, + 2.91461534413267164823, -2.72190640310839393479, + 2.41264058676381232260, -2.09982679530212079655, + 1.70385575848873971339, -1.33421004116368902004, + 0.91298036063819754116, -0.54417692378009752119, + 0.15006096444901165232, 0.17196033987460232484, + -0.50020994454327338818, 0.74429906347070429184, + -0.98324699947192950589, 1.13353707806223713561, + -1.27452054788227298054, 1.32901562825718722038, + -1.37603379164043149174, 1.34396288987734702225, + -1.31064841059041081728, 1.20919461635106695319, + -1.11542584480963391513, 0.96633151697179497930, + -0.83492461127767492179, 0.66134841579255765343, + -0.51514187272547340424, 0.33901878920854788824, + -0.19854336915448306256, 0.03858665240694356124, + 0.07958951351474648217, -0.20919861729971772624, + 0.29344251419110228829, -0.38370320388877099393, + 0.42766071292735835518, -0.47481558616118335614, + 0.47722075832961879938, -0.48234084672369914593, + 0.44640752162961677696, -0.41462188933941696023, + 0.34714254476803252381, -0.28663694132761097233, + 0.19691048838632591034, -0.11781201164599608422, + 0.01651112415662121108, 0.07023814606924773385, + -0.17216577954749395785, 0.25586102037122082642, + -0.34818200383510811147, 0.41926806836561908431, + -0.49328729663408454886, 0.54408510858121617026, + -0.59326762490788398363, 0.61848669529558908398, + -0.63885805812230145317, 0.63588374357254640046, + -0.62620491857076998610, 0.59516323826174644118, + -0.55688902950142504800, 0.50050365055454981711, + -0.43754428867546474313, 0.36080973867979743153, + -0.27912358429838690643, 0.18882603700794040047, + -0.09587765297073458370, -1.64453971178319569013, + 2.79775577400067509970, -3.40597963700915018492, + 2.83787111409367609483, -3.36506313742919127563, + 2.71577686622319136589, -3.15948050150089931876, + 2.42864504355508925570, -2.79069608662686308165, + 1.98246568926597732663, -2.26941404172727656530, + 1.39279299078000518008, -1.61611459905602217191, + 0.68504193264185020418, -0.86108196620145849298, + -0.10578035404759819627, -0.04381339397469841829, + -0.93601074729343269887, 0.78828154845603892742, + -1.75501034161674529521, 1.58195028250438807227, + -2.50762630768408234516, 2.28094803590409833660, + -3.13742017085452351566, 2.82962337595736812546, + -3.59058092155274533042, 3.17711908193050440730, + -3.82036314338006421920, 3.28198592234586383753, + -3.79180350106356511830, 3.11691756323852597887, + -3.48637865527256973763, 2.67322546659711290928, + -2.90618135059374305129, 1.96459180224536411608, + -2.07711881183675783902, 1.02957704500612945431, + -1.05059080640788171657, -0.06766970659627666307, + 0.09690197988098522841, -1.23903049245755281227, + 1.26671953201288256530, -2.37681810078712718592, + 2.34399339388085836688, -3.36124272254386369241, + 3.20665866430934443088, -4.07097760907966765842, + 3.73747398305635325499, -4.39650012567932968466, + 3.83849053265896156262, -4.25543040000965788749, + 3.44693244258668052282, -3.60855287286696935212, + 2.55088471998178922817, -2.47462239938979067233, + 1.20259925225684161099, -0.94148843859504283138, + -0.47329752863315599498, 0.82938660417546528070, + -2.27976648051501751269, 2.60815252358842242231, + -3.95858749156243661105, 4.11447406163265050338, + -5.21547247372614553029, 5.05021440824436673722, + -5.76043940023917677706, 5.14731129556781130674, + -5.36261907867071307976, 4.22848123775048279072, + -3.91528072039974395224, 2.27436757474403528079, + -1.50220717446676621520, -0.51450999760582438736, + 1.54923189504886993362, -3.67881508298135306845, + 4.64929668885054958594, -6.50845799259641211165, + 6.98795391463494741657, -8.12602580087417969423, + 7.66672207909879688259, -7.67318306876135736161, + 5.94395998787577362066, -4.61618060528588980418, + 1.59735456764265948415, 0.84453978862837486563, + -4.63847120563194614817, 7.34044520453976012675, + -10.69029187480709097713, 12.07609584619722298271, + -13.10957864684615614692, 11.15056877169092608426, + -7.93475186439988267040, 1.20210170159272511370, + 6.56655609979098642270, -16.34518119417681347727, + 23.62617001005075678677, -26.32579322136927402198, + 15.50549489492130561530, 17.18983026178549522456, + -89.37135780150485686590, -71.42601040334382389574, + -24.97946305028164104556, 4.53635983337713799557, + 4.98450095688186678444, -7.89088665064770999891, + 7.29315353388449327809, -5.02267209387324609082, + 2.39654421007790441323, 0.01834677202144067640, + -1.77995664612683124339, 2.89897816582955547560, + -3.30224725275123764945, 3.21184723212558598249, + -2.66466064132809776765, 1.91668024669245284919, + -0.99815118244849243556, 0.12695360645134035060, + 0.71320582013133171362, -1.35999689488883723776, + 1.87856009976098703440, -2.15479505003412707964, + 2.28977950832453780450, -2.20205125584584360254, + 2.01237215295155102979, -1.65635603862205771364, + 1.26041587103768648603, -0.76520582562906380719, + 0.29294146502382839570, 0.21833846536054857257, + -0.65620711829475186772, 1.08897014822220361552, + -1.41610796339379962916, 1.71304243515978238399, + -1.89085466024487725001, 2.03094652186987412179, + -2.05426613957844983460, 2.04606404007637809883, + -1.93480242166803706461, 1.80714739486116160450, + -1.59668055825435706296, 1.38921436060893421782, + -1.12137443816435444788, 0.87628064151694851081, + -0.59202970134033772176, 0.34775159344669087647, + -0.08199475203471830176, -0.13085440034836323675, + 0.35229858458030904877, -0.51297171181329603851, + 0.67450213502390388154, -0.77244643208152996561, + 0.86831534743650895525, -0.90222981926006007303, + 0.93513485691034825553, -0.91120541460438519987, + 0.89026964840099820364, -0.81998754012288543880, + 0.75849997427672344319, -0.65639761900633408764, + 0.56960698172243706683, -0.45116172133013543455, + 0.35433189694242556156, -0.23420510057708310292, + 0.14106087167379163794, -0.03176506456053682093, + -0.04661196333590734292, 0.13558740071951869144, + -0.19140786424519162789, 0.25402968727342567501, + -0.28302630935024408743, 0.31675999134977617100, + -0.31806099697713213770, 0.32359460483361524030, + -0.29931860325110792864, 0.28004961583720300311, + -0.23470520193537416920, 0.19607326209063535849, + -0.13584447792119416776, 0.08458804700067297511, + -0.01657942852640389292, -0.04001501585205074346, + 0.10851088013846543756, -0.16331033014145385218, + 0.22547238074933781404, -0.27210566990636986251, + 0.32213384839323311315, -0.35547610084809683206, + 0.38900615254294934608, -0.40552073498108170968, + 0.41989143560557767865, -0.41782181762544251535, + 0.41219196017227038853, -0.39160535293182041627, + 0.36692649532193444273, -0.32961899915785142223, + 0.28847704172056953809, -0.23775633197252482587, + 0.18410055332944147422, -0.12446699118454435107, + 0.06324936746883021155, 0.78985594567140426925, + -1.30074651377616046233, 1.66871919405846891316, + -1.35103770815071566602, 1.67706291650371719371, + -1.31715696211808652727, 1.59877752310047838158, + -1.19534265024837083047, 1.43249205706233806445, + -0.98677846561862248009, 1.18208157493652277203, + -0.69813568823544835951, 0.85708213904319163756, + -0.34184303315002650958, 0.47279822309226060550, + 0.06398475294822453252, 0.05003745744481236796, + 0.49601929485325535474, -0.38558002823895393130, + 0.92663594885142064328, -0.80477097797295293891, + 1.32529687270679175093, -1.17620334702899032031, + 1.66038961149022723518, -1.46854707222328206839, + 1.90147252435147362526, -1.65289079230164537293, + 2.02183329484645302188, -1.70540627989588156055, + 2.00121692835533693255, -1.61009115757004206415, + 1.82852798758430035164, -1.36136940215489543604, + 1.50426254884245302890, -0.96628306086754012227, + 1.04238402848634170716, -0.44597374512999482521, + 0.47133053515483080975, 0.16386362877824661721, + -0.16616213983816580102, 0.81386112280855726908, + -0.81470941343826974723, 1.44345056971869478701, + -1.40961674938448422445, 1.98509411947040215196, + -1.88200758223313591166, 2.37029159539997680284, + -2.16566489033608222670, 2.53718021519738101688, + -2.20527875538699236202, 2.43928239872057694981, + -1.96550703143626503966, 2.05465032870672370535, + -1.43993242533193055444, 1.39432218731327006722, + -0.65866446991076477158, 0.50868017273520682586, + 0.30696641041900213365, -0.50996115756501159133, + 1.34437838118175156943, -1.53032989389604145991, + 2.30614366551645710857, -2.39241257470687607167, + 3.02432302508617745218, -2.92611342400372453909, + 3.33351855452912682054, -2.97859321002834764869, + 3.10217230925030085231, -2.44893743691231691173, + 2.26970360661050829520, -1.32650645469460726211, + 0.88441767630718393089, 0.27368454740086617383, + -0.86618607103596123586, 2.08873255027869353384, + -2.64469858783492917098, 3.71247134469472905849, + -3.98786095656984906910, 4.64316071123357509975, + -4.38191821997721220328, 4.39001350594895445312, + -3.40279528288728583263, 2.64778174563423451815, + -0.92324102549943642959, -0.46917678731335588083, + 2.63710475250080511600, -4.17895183658183455577, + 6.09361392287548309099, -6.88418509873007877786, + 7.47569870705499273100, -6.35574292855415823311, + 4.51953072436962077774, -0.67251745118328998263, + -3.76494575202090064892, 9.35186593356407946942, + -13.51038803209049987686, 15.05162450134379170663, + -8.86640101605486385949, -9.81845863889610726005, + 51.06725946872800392384, 31.66260161393984162714, + -0.10847687067449772458, -0.21067305717607767712, + 0.03015275045214120195, 0.04301858752337783115, + -0.05659724545570123805, 0.04182947284542457012, + -0.01707700732853678974, -0.00675976382661835472, + 0.02497934904700344419, -0.03552824163152198261, + 0.03910475612979191773, -0.03669284588345672615, + 0.03041414230122781170, -0.02166503780929384879, + 0.01234501991475442546, -0.00331253856717190348, + -0.00422556410926025992, 0.01010001203395239668, + -0.01374655701729816590, 0.01551870334965804385, + -0.01527169623291800560, 0.01364244330612397228, + -0.01067614700104903107, 0.00708900437716333646, + -0.00294553024331191578, -0.00109320132781692619, + 0.00504229030497956726, -0.00836221428473684324, + 0.01118585086561293962, -0.01310994572966157901, + 0.01438131530133532690, -0.01471525126685136430, + 0.01444512317318148373, -0.01337140568916795474, + 0.01187775709940674940, -0.00981316433249610105, + 0.00757641247062708530, -0.00503276220735785536, + 0.00256775735666754570, -0.00003900865949015105, + -0.00220042106692536340, 0.00431513016487588847, + -0.00599462985444748023, 0.00743170074732989877, + -0.00836073948337287889, 0.00900186346317901655, + -0.00913089707119247966, 0.00898975797923767632, + -0.00838860908296339136, 0.00758300603066236478, + -0.00640866097263097408, 0.00512573383003297328, + -0.00358654593742807658, 0.00204728537470927948, + -0.00036889609344120867, -0.00120364060708692973, + 0.00280711794036791248, -0.00421317697635954693, + 0.00556077953375250841, -0.00664163982996249496, + 0.00759938051146826030, -0.00824737696565282230, + 0.00873465953658754402, -0.00889625565385141100, + 0.00888592358460392473, -0.00855909139070902721, + 0.00807251478484842869, -0.00729991263267964433, + 0.00639863749373891563, -0.00525809879023815714, + 0.00403352314402876007, -0.00262724195707964838, + 0.00118960296696952474, 0.00036681820318649956, + -0.00189911110013220720, 0.00348685302958636400, + -0.00499677935995595981, 0.00650261481449256138, + -0.00788250863875818164, 0.00920586330385791095, + -0.01036353446441902817, 0.01142165701738681594, + -0.01228461904170208979, 0.01301589329662241126, + -0.01353380052843492637, 0.01389935965329834600, + -0.01404485917764696640, 0.01402874182784835319, + -0.01379700377135894933, 0.01340512979979466626, + -0.01281233907030210686, 0.01207058566012102901, + -0.01115166722628422973, 0.01010330338515651009, + -0.00890912056270174758, 0.00761181774493966366, + -0.00620603737038138027, 0.00472862502715645696, + -0.00318439296964392665, 0.00160347771242734484, + -0.03285518730561506895, 0.07451666747045319894, + -0.06123892723547409711, 0.06884938590721721707, + -0.05448333079116886302, 0.06113336511148190905, + -0.04596915285606487794, 0.05199767748994456318, + -0.03641581558825079945, 0.04223646010103900006, + -0.02667430388115046153, 0.03273774121960665306, + -0.01764828744933865171, 0.02439821564128215325, + -0.01020407823154323608, 0.01803007227836072798, + -0.00507616066304967910, 0.01426718600934222259, + -0.00277610901912689985, 0.01347890436235433045, + -0.00351343821989433648, 0.01570017508671875048, + -0.00713720142549897213, 0.02058674618847521412, + -0.01310681852013406527, 0.02740349298150565258, + -0.02049956291019546656, 0.03505246076075593797, + -0.02806023265468329461, 0.04214485343207964585, + -0.03429570169885810815, 0.04711788903986446203, + -0.03761326098524873235, 0.04839319467190295737, + -0.03649697598636509471, 0.04456833848319059072, + -0.02971088178333220961, 0.03462744081133220519, + -0.01651203235021431182, 0.01815097776821420622, + 0.00314928323109574465, -0.00450051474810057427, + 0.02846975264090723795, -0.03205831455400913466, + 0.05770449146947401187, -0.06230441944384664671, + 0.08818099642282822836, -0.09214756784503840004, + 0.11644335926817196702, -0.11784051863902109125, + 0.13854584228390662282, -0.13535109503481884685, + 0.15050007669614651196, -0.14088130370321869100, + 0.14885852687249229165, -0.13150383536685081309, + 0.13138864786538803631, -0.10585417214198676594, + 0.09775876344927385275, -0.06478159017739354431, + 0.05012127544660722328, -0.01182781649646554543, + -0.00655311771995224432, 0.04662515347659873521, + -0.06455660768488237500, 0.10170661698437884202, + -0.11410399361613450531, 0.14305635854779330529, + -0.14469280185235441905, 0.16055332125872609494, + -0.14718986248603296851, 0.14672629164982434191, + -0.11650398754808345692, 0.09959289491920805815, + -0.05445704049378295719, 0.02538560517841748077, + 0.02785817415933940222, -0.05972841358667026895, + 0.10931068654166656295, -0.13018513094169784083, + 0.16095142427731981560, -0.15530622225242876611, + 0.15270854117408197426, -0.10867930922786582515, + 0.06557918996043142490, 0.01694991049547012879, + -0.09125072614689509753, 0.19132802683361124774, + -0.26256284726206963187, 0.33210481816065201555, + -0.33988448468680904080, 0.31090012493178870168, + -0.18913459338067623028, 0.01388829420044625923, + 0.24055430393521093357, -0.48082678565445718943, + 0.64424963625924636101, -0.50078689922702313009, + -0.21562517476702866559, 2.02903441353233882083, + 5.56746336054321933062, 8.22843958524915741748, + -1.00600247940717579809, -1.92387043278828939741, + 2.46796768286476320142, -1.87954179260332798762, + 0.88967373797943771763, 0.06228473753915251404, + -0.79158796960359878447, 1.21282577992665974165, + -1.35717027738842221929, 1.26077617807386710425, + -1.01167394477179906076, 0.66258258490295618426, + -0.29257271579395616179, -0.06708731848299970268, + 0.36510650743541495089, -0.59771605907161784454, + 0.73940216052758600540, -0.80723941930163589653, + 0.79256680723037076230, -0.72372680538159694930, + 0.59972930584583827862, -0.45201964162458185825, + 0.28045239873712485279, -0.11419879400043991824, + -0.04999941356998766073, 0.18790273860095926817, + -0.30740918979955950130, 0.38980012391514373693, + -0.44746017429740742033, 0.46648308786071390752, + -0.46264507783902231175, 0.42551816155526522856, + -0.37281990764856109966, 0.29613413978137548277, + -0.21371361748238981715, 0.11786475487405324858, + -0.02624105101229970427, -0.06908515855078602164, + 0.15182899755890078008, -0.23073434081363677906, + 0.29128847548920011601, -0.34329022773750200725, + 0.37409136846565022028, -0.39451171612235391706, + 0.39362912844360320452, -0.38306286085264745767, + 0.35333324191945164605, -0.31653242056642599822, + 0.26427161982562369369, -0.20875452216709805553, + 0.14232567332824985762, -0.07695726915478992569, + 0.00540777968883854408, 0.06087142698992912410, + -0.12896225465253041698, 0.18815070257669386233, + -0.24553618855464667825, 0.29128000360943312463, + -0.33259863162821273752, 0.36059205158732898777, + -0.38262353683842070806, 0.39073125137295705578, + -0.39239790577985139697, 0.38054964640149524513, + -0.36271923548742535104, 0.33263625836100219058, + -0.29778733762280712449, 0.25260133767372877633, + -0.20440966583463332507, 0.14822957652443274901, + -0.09112698638824637265, 0.02860029094018871551, + 0.03265256751634539739, -0.09674806662969843984, + 0.15744471506576315778, -0.21855375871653059949, + 0.27436099989676487887, -0.32843376688441627831, + 0.37563696109460348316, -0.41933626529467682431, + 0.45500880742719329586, -0.48584291044057398290, + 0.50794400744420220573, -0.52433144455239832915, + 0.53174041474773003912, -0.53301642783753255816, + 0.52551406625063012967, -0.51188975197929065253, + 0.49009808705447405197, -0.46258349779718982431, + 0.42787482807629256820, -0.38817634858989397140, + 0.34256114417541655426, -0.29296186150770586742, + 0.23896329309273042774, -0.18219311991533587713, + 0.12271396213765967120, -0.06181427014471471693, + 0.23269112336812552977, -0.57479221004746683388, + 0.32723377882837123565, -0.42396494711826043789, + 0.16635443309838909842, -0.25560669723290724287, + -0.00620652734869082175, -0.08196267260397938070, + -0.17722891890201919463, 0.08302553253196406913, + -0.33233237270895182869, 0.22484627277950372526, + -0.45720144489922498465, 0.32972221729502099175, + -0.53894710873468554269, 0.38600438055307545460, + -0.56750647273894672118, 0.38554866235672197172, + -0.53696557059604144158, 0.32495297958079966127, + -0.44667802741378875853, 0.20652426613118238241, + -0.30204737542232590330, 0.03884391643385309151, + -0.11484498374257957887, -0.16319011131956603911, + 0.09704880658829546924, -0.37894420472753431728, + 0.31056371288269074560, -0.58331636282948129413, + 0.49905819529451106442, -0.74870159482900500159, + 0.63461805850487640335, -0.84760055581184168272, + 0.69094154485619041495, -0.85573650133236189852, + 0.64663210298463003056, -0.75545616340494470276, + 0.48862806929039048764, -0.53909772631561836409, + 0.21540797668689751210, -0.21192323992940667599, + -0.16046776558471881335, 0.20585370413223078034, + -0.61096916330328643330, 0.67844555788278715358, + -1.09286026167649308327, 1.15575208165788390069, + -1.55005534229147423630, 1.57688872586395323339, + -1.91837047605004595852, 1.87617945508146855005, + -2.13273596191653469489, 1.99152045914059239173, + -2.13658953751189306658, 1.87462140279192746029, + -1.89271911794992453437, 1.50213390501875831973, + -1.39428976138343285740, 0.88611831079774050490, + -0.67422326383492270363, 0.08174771122438841131, + 0.18941177480879917150, -0.81028751176786439903, + 1.07466269976857264901, -1.64937173410623727499, + 1.82621870693319632295, -2.27092499398352343221, + 2.27714989053588112711, -2.51404215763455818333, + 2.28227610736455899243, -2.26005062841612103242, + 1.76091956891859169332, -1.47792686159222053099, + 0.74283723939328194508, -0.26791034249029171965, + -0.59405276429931230808, 1.11097662369557337314, + -1.91139126798405722951, 2.24952797818641547778, + -2.74589133293563003591, 2.65686593321574049398, + -2.61645314618930768802, 1.91051338961064609556, + -1.21922005802306610001, -0.10534505333225561985, + 1.29851904585487543109, -2.90628301936495292424, + 4.05284487975245966140, -5.17422142079721858465, + 5.30767257259646907386, -4.85451323766168219009, + 2.91710198864776648620, -0.12530929200663440404, + -3.93341697030713266514, 7.76442685932752230116, + -10.36568654098420516618, 8.05610843025500678038, + 3.42075595671699250744, -32.44991078202424006349, + -44.84833760886334630413, -49.08346733366112601971, + 5.74069113956701482238, 11.85623621053311538276, + -15.12675018979277119513, 11.61132241904219775108, + -5.67559285299951632453, -0.02378817676461228436, + 4.39874247699308718040, -6.91668592424010508779, + 7.78459698313771664147, -7.19969830463170890056, + 5.70966899886658740826, -3.61153581116521893435, + 1.39877013247898918102, 0.75988569099868197299, + -2.53808544843082906084, 3.93166304740799033013, + -4.76938167279070945881, 5.17171290373115777328, + -5.06898134626991136997, 4.64884129365215947871, + -3.88808597462040061998, 2.99256038135772772790, + -1.94456733125897329728, 0.93587878697783788429, + 0.06943966425542394405, -0.90963668986487145052, + 1.64804724443378125542, -2.15647714708087789859, + 2.52474463894961642652, -2.65396374954058655860, + 2.65386724411199326212, -2.44687429702909176044, + 2.15393223223480223538, -1.70996809539985883397, + 1.23870801688162401888, -0.67985296788743232455, + 0.15310224879603984149, 0.40280808337505430439, + -0.87682083449063752401, 1.33465666146815853388, + -1.67632100251880578057, 1.97342287052411280435, + -2.13758372135951768556, 2.24609655155340082189, + -2.22136809475060514885, 2.14504556200356377715, + -1.94861908129892191788, 1.71613055223217503276, + -1.38604401210511074538, 1.04262778446367709861, + -0.62917450610464908944, 0.22812084451514696992, + 0.21432810157741646884, -0.61930319698099700609, + 1.03921230188699209585, -1.40005276849281412588, + 1.75390779255520934399, -2.03246838436196819444, + 2.28808984527062042602, -2.45853677119735136714, + 2.59661430823272931789, -2.64615711555099331065, + 2.66025542972342821102, -2.58851221601870751243, + 2.48388582555827319709, -2.30123970963029611525, + 2.09282251921427731034, -1.81813267026174885110, + 1.52805400453418949169, -1.18605401942532640014, + 0.84098946569405652607, -0.45965290632158856132, + 0.08825850810918667300, 0.30365267007587143366, + -0.67304044703124321636, 1.04809507486065123238, + -1.38937589823865215166, 1.72317274613443061071, + -2.01395574184693249009, 2.28636824411984473926, + -2.50899027095477089588, 2.70496468125288869189, + -2.84707814029071837325, 2.95702349598868075020, + -3.01180299887931735014, 3.03163045551319054738, + -2.99766161960266819264, 2.92853981188776169020, + -2.80945814498024803996, 2.65735201385045627376, + -2.46129723772904673851, 2.23635228184314005517, + -1.97529562735753305702, 1.69111991102168590650, + -1.38011099087885424908, 1.05299550134558383974, + -0.70936327527431541906, 0.35746920540231680308, + -0.49578422921602105511, 1.37103438267581179133, + -0.23034036021737122613, 0.57327937315407206942, + 0.59002903377975757238, -0.25749958698867481122, + 1.41524229184794858583, -1.06333409285941349331, + 2.18462019709368604481, -1.78190991500392081903, + 2.83539157204250402700, -2.35126306519681893548, + 3.30773099227275402257, -2.71508373759041443662, + 3.55024299416135091789, -2.82828476121430449908, + 3.52550938432355787100, -2.66241394420670030030, + 3.21524555055450900198, -2.21042750064333670679, + 2.62456012406725180952, -1.49030309229149859895, + 1.78478893124055693065, -0.54696527696394969809, + 0.75438855237397461906, 0.54796692404553959399, + -0.38256340050673981468, 1.69901178763148652529, + -1.52059636260962238730, 2.79248904980674250709, + -2.53995822759773881572, 3.70505710473037241925, + -3.31652036260553106928, 4.31488775588585582454, + -3.73408072984563910168, 4.51491045703334137329, + -3.69831426316721412206, 4.22718520109861728429, + -3.15123624076297748076, 3.41707752859808788770, + -2.08466641415312325947, 2.10555053000396563689, + -0.55085583144702754410, 0.37761074510583347852, + 1.33177515466705864711, -1.61518594963931749753, + 3.37986807371402120381, -3.66016914467586929050, + 5.35517121810088703171, -5.49853118815242325468, + 6.98466141721870137360, -6.85066746883698041160, + 7.99100996771155092091, -7.45147915518861303497, + 8.13220904872104455308, -7.09355958875327896607, + 7.24728114898880537709, -5.67409929979710003778, + 5.30275203966467856276, -3.23899945614523643300, + 2.43219048317164476813, -0.01536581125694595935, + -1.04102538953280743250, 3.57827355811271186070, + -4.60890278724715329872, 6.95535607511645270762, + -7.62295446835915768702, 9.42824208285969334042, + -9.38543450833235581854, 10.32424109590092520250, + -9.28943903512750068785, 9.14751512607658590071, + -6.99843713511523457527, 5.76980671039768200359, + -2.63917376840313266939, 0.61361213594423302808, + 3.03987769464898605065, -5.23222719973065686361, + 8.61692560960251086044, -10.04862115116373111334, + 12.14599128920243842344, -11.77395240873359405498, + 11.60675884895984033562, -8.63434471305267514651, + 5.72377188439224315886, -0.14431815300849809569, + -4.88321932598324082164, 11.66021866895103720196, + -16.50026658159707082518, 21.24168859330157488330, + -21.83402225245405503529, 19.96864837763820688110, + -11.86965693859903758778, 0.18717099178225682365, + 16.81620062849824392970, -32.85944671548272566497, + 43.73754819195137599763, -33.98763602542324946398, + -14.26500495376414967552, 136.23851832916008675056, + 126.04425541854854486701, 91.38018201222152470109, + -10.46032672753610626160, -22.41958197209601166833, + 28.53507086761052136126, -22.00184275782881826444, + 10.92919148149371899592, -0.31554625547276077269, + -7.84706181675622183036, 12.52593457889709505082, + -14.14562751062287837556, 13.03655673259027913957, + -10.25840030284463466614, 6.32868490972728992006, + -2.20504990588181426503, -1.83363094741083365591, + 5.14253489064988755786, -7.74918386330065267487, + 9.29914055855683052698, -10.05176831875135690098, + 9.84305716328503699231, -9.05696012144728790361, + 7.61705258061340373388, -5.94042291865168170517, + 3.96177286696302166646, -2.07109789960826029542, + 0.16989650708974876614, 1.40870020917593641308, + -2.81350400950256096522, 3.77485222056733293883, + -4.49015672556311074004, 4.74529435658993214986, + -4.77401738764784688840, 4.40280538029349344242, + -3.88551286053136868404, 3.07280263354010640953, + -2.22288634558013908915, 1.19617522399154330159, + -0.24253557337150735695, -0.77858381313786395594, + 1.63427599054521777155, -2.47257122613899316121, + 3.08203932206637265523, -3.62086085410494673553, + 3.90011466810954976481, -4.08774925149642243127, + 4.01580132465436356881, -3.85950439111681076199, + 3.46867596769111230515, -3.02217636308336023987, + 2.38366616826956301267, -1.73158485605538725594, + 0.93943169135184012575, -0.18138354434071529697, + -0.66279808343196267018, 1.42643906910466400362, + -2.22636262174321108986, 2.90582177280367703887, + -3.58020691197334928191, 4.10424184091760047011, + -4.59299736459501950492, 4.91337671521547569853, + -5.18046207893641774689, 5.27332892926149199297, + -5.30676242579265089461, 5.17144633735089609416, + -4.98108954689528449222, 4.63703549360186784156, + -4.25083729566135115618, 3.73332972240126448327, + -3.19268637171467517533, 2.54798967468059789354, + -1.90279659882156360062, 1.18323441952844476965, + -0.48709375426668810594, -0.25353014786734717756, + 0.94760570328744919699, -1.65796587563734965087, + 2.30113311426716604657, -2.93555650193692407868, + 3.48589409769031322028, -4.00668554798633191893, + 4.43109668508433873768, -4.81003051431330685972, + 5.08534163158253793569, -5.30439088033603667327, + 5.41773859507026855908, -5.46914941782791785840, + 5.41777373312711851838, -5.30360935646551290290, + 5.09418002958477078579, -4.82546018433812040627, + 4.47305826399223604994, -4.06860977434243231698, + 3.59547173281213261475, -3.08058798368757225106, + 2.51469948045665292469, -1.91968457862743280273, + 1.29328832775908364461, -0.65193934594646996139, + 0.37540997830521632972, -1.24786994295498532281, + -0.60835020252735749757, 0.14965005186650312541, + -2.01949092319334955192, 1.55446124213973591033, + -3.39085001149697928824, 2.87074242807193202864, + -4.62403741996090378308, 3.99918689234130297905, + -5.62061513806570900442, 4.84412094030680506762, + -6.28965283793389584588, 5.32138923151857845539, + -6.55581986854693532507, 5.36651538648884685045, + -6.36746231349428981616, 4.94253051066163706651, + -5.70400686528837308487, 4.04676729576500271435, + -4.58195360145059371604, 2.71585653959369910382, + -3.05868146978652744039, 1.02815098453335762585, + -1.23330851783705819358, -0.89714644320013081646, + 0.75606131772689211257, -2.90474213760956878616, + 2.73919826081157591346, -4.81226990667238840871, + 4.52493734454075902107, -6.42361953347298975103, + 5.91655515575666068884, -7.54621137655793106092, + 6.73072649104193843073, -8.01134981288844016944, + 6.81891699722467858891, -7.69622374515515428328, + 6.08948679057430286576, -6.54553752965422752652, + 4.52820660547697073639, -4.59021145352031290088, + 2.21439341980394033271, -1.96016888858210536206, + -0.67045147998676402068, 1.11197110744504312763, + -3.84466232650074513089, 4.29933447361922382868, + -6.94188730064594849978, 7.20379706344146608643, + -9.54194073111587037772, 9.39479464754856330444, + -11.21742722129292602062, 10.46331897235305241622, + -11.59432579625004677837, 10.08792447855010898650, + -10.42183744847396198452, 8.10639241551336731106, + -7.64338429277120834371, 4.58312675303563921148, + -3.45702718004936926377, -0.14117424675456419214, + 1.64969604235991385011, -5.43381240591392700168, + 6.90756185074943473978, -10.40561537976059724997, + 11.33279073729687169703, -14.01287767077897683521, + 13.86599548201674458880, -15.23409637396583704572, + 13.58561304928569413164, -13.31663693587984909072, + 9.98144186212365802646, -8.06734266297596036566, + 3.24857483865935314782, -0.13165039674751044529, + -5.47114633168995645462, 8.83025989196575800122, + -14.01050074641134735032, 16.19844548528634575746, + -19.40410665172252180355, 18.83159959298378893777, + -18.57386834865769031921, 14.02741773571212924310, + -9.57723039547669507954, 1.04735769830372138500, + 6.63996259962656321107, -17.00456713399118058305, + 24.41648478216415796282, -31.68808159754333786395, + 32.63642873328581828218, -29.84811657701686371524, + 17.56037254621574206226, 0.18112571374192146245, + -26.03103899195820503110, 50.41275452749624719218, + -66.92402797856955487532, 51.99868470867278347214, + 21.59734281796415444887, -207.53167037610992906593, + -144.44480768099555234585, -52.12712863160621168390, + 5.88121936023590929921, 12.92464718100216458652, + -16.42403490429128609662, 12.70661270965607592132, + -6.38287890193178331089, 0.33215510742269560573, + 4.33014271642051351563, -6.99130179007999608132, + 7.91631637841013802159, -7.27187334255408757144, + 5.68539792175431379917, -3.43097508401172301973, + 1.07722640066375374701, 1.23765772100629756203, + -3.12430334414010602018, 4.61912387890984632577, + -5.49917455493558549051, 5.93286913372460489313, + -5.80657230683036740260, 5.35941040242106048197, + -4.52828989435767592653, 3.57078891584675961468, + -2.43066396375894866466, 1.34952767082262514720, + -0.25265446214510001166, -0.65132195475716792021, + 1.46538555424884719969, -2.01765642883958440379, + 2.43840059783904328228, -2.58796222102959339040, + 2.61688461174041986368, -2.40920171043435482616, + 2.12645593105757768626, -1.66698936470137693000, + 1.19434697080135410197, -0.61293136302392403625, + 0.08103206992528828867, 0.49700752029962974587, + -0.97307512895352865634, 1.44660974359373617482, + -1.78225732267951042509, 2.08476512828851001657, + -2.23212696370732111006, 2.33417943146734607751, + -2.28137762059546034266, 2.18722835948534388706, + -1.95283246861771897507, 1.69327637852121304363, + -1.31805652300056763693, 0.94152587264666109945, + -0.47928833741090492992, 0.04276809353738420666, + 0.44836698573963018610, -0.88747299286256497997, + 1.35244468823635455301, -1.74280370541055140698, + 2.13513999414712252189, -2.43602263673352048556, + 2.72137257854511016575, -2.90521109595509496870, + 3.06297889276474366582, -3.11614509381483406614, + 3.13949354568087546369, -3.06161870581294381921, + 2.95620188339074951855, -2.75842052257509706692, + 2.54023614839286304701, -2.24274129019051926548, + 1.93547801060765922720, -1.56474298251767662826, + 1.19695151196572147079, -0.78291682931957196079, + 0.38527014954184352069, 0.04127433707272011587, + -0.43843707792318381555, 0.84811524791301295956, + -1.21683553200613503442, 1.58349974956415207039, + -1.89977340562959251535, 2.20183423329567773408, + -2.44669943586503491062, 2.66797866744270173456, + -2.82814442503325125244, 2.95829236169566289760, + -3.02636009926812743487, 3.06089846568413070926, + -3.03524419077001361700, 2.97530580017109969049, + -2.85969535982834388577, 2.71153248165778126832, + -2.51453963873992236699, 2.28886718493618301906, + -2.02315591309826592337, 1.73438529864998502994, + -1.41590604772305783676, 1.08131306632096668707, + -0.72844985832778252899, 0.36730710144065453759, + -0.07656500885077702212, 0.37316583696850846863, + 0.60356595376144950293, -0.39645248535350469110, + 1.37225786743360900211, -1.15382864460693235209, + 2.10356159518210539261, -1.84813161665540093281, + 2.74596382232584268479, -2.42799701676865575806, + 3.24913812704701410183, -2.84507240837949515466, + 3.56767641979238181449, -3.05788407886605062558, + 3.66503263767552533992, -3.03579183947447095449, + 3.51741584354650704825, -2.76274121692427643282, + 3.11731670311438291421, -2.24047482927808738751, + 2.47631104613190089481, -1.49083358637293339477, + 1.62676406697198228102, -0.55677114355840984228, + 0.62206640179169114813, 0.49827045710357609209, + -0.46492349360609380726, 1.59291242515684072778, + -1.54547069022632799218, 2.63249782441258428634, + -2.52069592752970006444, 3.51587918124980980394, + -3.28937328509970949852, 4.14415071870402318410, + -3.75748893105134529335, 4.43089101245835603748, + -3.84898907973739357047, 4.31320091981395670189, + -3.51685598004188815224, 3.76253030615573758055, + -2.75336501579861403499, 2.79401583674178910499, + -1.59812943100771964744, 1.47284171193266466560, + -0.14237769304761951905, -0.08396357565530820910, + 1.47211287063955631460, -1.71180996698484610974, + 3.06082264330425779519, -3.21011967712506196548, + 4.41199030578506068423, -4.36180890278476063315, + 5.31000297911237950643, -4.96036450376178006394, + 5.56576677397425712002, -4.84292496754548196236, + 5.05170666150835323549, -3.92618647998968306467, + 3.73733746382756448767, -2.24016923957769131803, + 1.71953757191849332386, 0.04688562487499681186, + -0.75997484406615067876, 2.62061042860522830367, + -3.31848910641463801241, 5.03822994891337572199, + -5.46582760801140654650, 6.77949726286791776175, + -6.67378984499181626688, 7.33503601049252562660, + -6.48284714178307286403, 6.32965629817239783250, + -4.63889839240367596318, 3.66765044668563167107, + -1.24023125182361182439, -0.32765104534941558168, + 3.14174938621858812482, -4.82580039847230590766, + 7.42319914951704440398, -8.51671326720336985261, + 10.12143168909081936135, -9.82985444637498773091, + 9.69762679442501962512, -7.41440425474816855456, + 5.18093944259424254994, -0.90161942934702576924, + -2.95509021790001025209, 8.15579076422432969196, + -11.87906730325937409987, 15.53683280175500591724, + -16.03211358453145862768, 14.66298443647034233095, + -8.54347262314847455400, -0.29975116990505734638, + 13.19767831836444571536, -25.35911574351862896037, + 33.58567421394389640454, -26.09232237603507087442, + -10.73617114784464909860, 103.73461806502612603254, + 57.90703436804812298533, -0.09796498638346064214, + -0.19541022431201554577, -0.02189157057617789962, + 0.08402851020046281372, -0.07385082752317675969, + 0.03944913874581196939, -0.00480649822768446956, + -0.01903837180619273595, 0.03022609461742453707, + -0.02993142096229719010, 0.02212929702260025416, + -0.00995175073870575161, -0.00288050207689621732, + 0.01456472076071208335, -0.02310372511522541805, + 0.02837322515981949289, -0.02981097024430689676, + 0.02836874850394421888, -0.02421212550960879714, + 0.01868413809383816584, -0.01208556526967204982, + 0.00568166173865774539, 0.00043066250491890937, + -0.00528190339501580751, 0.00909297691290201528, + -0.01122075553362210376, 0.01217238863081795269, + -0.01155697094176571030, 0.01006825689125587578, + -0.00745653211648837459, 0.00449065479080945976, + -0.00095813226290543656, -0.00238815446530968745, + 0.00579852622109719874, -0.00859378435830428569, + 0.01110250983082865239, -0.01274346167969709134, + 0.01393339671307555587, -0.01418682136213034704, + 0.01399674056437105046, -0.01295420347621867307, + 0.01160428714433085415, -0.00958754773485765745, + 0.00747306350084908384, -0.00492333079498631730, + 0.00250557735823170834, 0.00011897353731472765, + -0.00240489702226307812, 0.00470855173041157590, + -0.00651883725514601064, 0.00821845533246175382, + -0.00933582394621534049, 0.01028190683218401652, + -0.01062367451738682744, 0.01079692929392327659, + -0.01040178260002959029, 0.00989193395468439436, + -0.00889262509879932758, 0.00786679024010756948, + -0.00645588107129014318, 0.00512322147278951399, + -0.00351800117258616128, 0.00209606536657748086, + -0.00050726995815614207, -0.00080616617635376393, + 0.00219884942057835264, -0.00324625926828567193, + 0.00431046678262587100, -0.00498661670841977003, + 0.00564522378474517552, -0.00590117303468345056, + 0.00613268081554482238, -0.00597292600115877786, + 0.00580578209945503427, -0.00528020257343260555, + 0.00478283334986701492, -0.00397527159677026933, + 0.00324365856295178931, -0.00225891692099502864, + 0.00140340626724854757, -0.00035422366711862209, + -0.00051301789438683223, 0.00151776435176826578, + -0.00229358215486780278, 0.00315857023200809967, + -0.00375724671684907197, 0.00440778078863983749, + -0.00476670880555207961, 0.00515298630796060843, + -0.00523555312168831437, 0.00533421916597028121, + -0.00513010905913181998, 0.00494340438479354011, + -0.00446670503326666423, 0.00401965548345288755, + -0.00330526293541753141, 0.00264143647491116036, + -0.00174030160530432216, 0.00091667955519852008, + 0.00010956517481521777, -0.00102808187520223699, + 0.00211262123503523939, -0.00305861048866115127, + 0.00413465020492467545, -0.00504309517218663305, + 0.00604844069075580453, -0.00686090294923090514, + 0.00774168134222912550, -0.00840953787581803780, + 0.00912292773083127340, -0.00960958235914378608, + 0.01012550542171703621, -0.01040756847200668272, + 0.01070937334426056570, -0.01077687254435401656, + 0.01086110207475276049, -0.01071684083724344302, + 0.01059221976620645239, -0.01025043573633410698, + 0.00993624380945651309, -0.00942074143252928826, + 0.00894475070491101455, -0.00828668818362000154, + 0.00768284349584179554, -0.00691834899629101534, + 0.00622435994537101373, -0.00539213675077809297, + 0.00464713046748709956, -0.00378618856138293342, + 0.00302854781639739492, -0.00217617262785833486, + 0.00144165566170920741, -0.00063169574645951371, + -0.00004809506440327813, 0.00078656877591073580, + -0.00138533088947496714, 0.00202896930233452009, + -0.00252644449591351693, 0.00305816792494324752, + -0.00344049830020393263, 0.00384966850674559090, + -0.00410939414155087317, 0.00439164888425117635, + -0.00452739198467517166, 0.00468419261466953597, + -0.00470008326303064921, 0.00473803394035810475, + -0.00464293845206531497, 0.00457293943703892657, + -0.00437955428476236204, 0.00421585189766841926, + -0.00393972463315449620, 0.00369891742798014343, + -0.00335745162034207199, 0.00305750670326579389, + -0.00266900125671409687, 0.00232832714590628254, + -0.00191109210794555514, 0.00154770571829932705, + -0.00111928746687769910, 0.00075010331576194579, + -0.00032664239805992485, -0.00003309748802925524, + 0.00043736209088283913, -0.00077450836144774384, + 0.00114758371873011403, -0.00145134930831146533, + 0.00178368500217876706, -0.00204577099944272013, + 0.00233031769466506998, -0.00254490856057386014, + 0.00277705438331020361, -0.00294070047649324122, + 0.00311810505543734648, -0.00322951385170649899, + 0.00335186258402570122, -0.00341162197689793200, + 0.00348032438963821180, -0.00349058209910176401, + 0.00350843817864154688, -0.00347256069322940007, + 0.00344341788781106625, -0.00336565067449064647, + 0.00329407210674106856, -0.00317922022534699840, + 0.00307018167403607864, -0.00292332662655437388, + 0.00278195625361337892, -0.00260822109087413198, + 0.00243959190958837040, -0.00224396251709163335, + 0.00205294342652894085, -0.00184014971967556948, + 0.00163131676617107803, -0.00140577343404864373, + 0.00118337898630066886, -0.00094918160709244587, + 0.00071717551223179075, -0.00047814447691077406, + 0.00024023814420958808, -0.02312277071506261064, + 0.05132853664661048143, -0.04514703329711765994, + 0.04961596481467100972, -0.04283526021552492430, + 0.04671904443115414141, -0.03937799402809815524, + 0.04272515259298303308, -0.03488163859028541036, + 0.03775898453035116120, -0.02948829114993575112, + 0.03197900022908074791, -0.02337159022377042344, + 0.02557269376880362891, -0.01673143086444566288, + 0.01875078329363031454, -0.00978766244645638134, + 0.01174045406922898972, -0.00277291877668349495, + 0.00477782170867076424, 0.00407523530226268360, + -0.00190018349912612645, 0.01052262357960847758, + -0.00806427823924493227, 0.01634699660171412203, + -0.01350137206125591634, 0.02134651375398700229, + -0.01802291160734300485, 0.02534787356409400755, + -0.02147271939340701999, 0.02821378239202405186, + -0.02373401347571757122, 0.02984944643851129495, + -0.02473529417543373493, 0.03020777732835605578, + -0.02445479523480145745, 0.02929301896687450460, + -0.02292322078956467168, 0.02716253423361976449, + -0.02022452749870599226, 0.02392653530146714516, + -0.01649456377371261509, 0.01974560138206769497, + -0.01191744542600259825, 0.01482590229966461795, + -0.00671962863977913858, 0.00941213452998955480, + -0.00116173560617578633, 0.00377827639536299420, + 0.00447170685330750689, -0.00178362177412871728, + 0.00988434303655987348, -0.00697628226397660218, + 0.01478149046094634142, -0.01151123410690604865, + 0.01888456704182777529, -0.01512348150206445363, + 0.02194583706199475931, -0.01758615292452440221, + 0.02376277968867654064, -0.01872439762817456124, + 0.02419131622100587423, -0.01842774267899520077, + 0.02315709456115841794, -0.01666010367052481872, + 0.02066402887901802946, -0.01346666286604368545, + 0.01679933566570103801, -0.00897689571297499364, + 0.01173439967863697947, -0.00340314496878896039, + 0.00572094815055928813, 0.00296568661777107251, + -0.00091778993668031438, 0.00977552949272589636, + -0.00780101283746147556, 0.01662355709791668232, + -0.01450914108645089649, 0.02307922814478899007, + -0.02060692518317168778, 0.02870923327838756714, + -0.02566996001433004618, 0.03310526176810213439, + -0.02931334533848670154, 0.03591315643454598416, + -0.03122089790946055987, 0.03686171173296607512, + -0.03117303514860497032, 0.03578911933841710802, + -0.02907124247118625035, 0.03266490832325250754, + -0.02495693742211619465, 0.02760519395861403200, + -0.01902258386839158349, 0.02087916917431209898, + -0.01161311548051720266, 0.01290506986183608332, + -0.00321612013491060986, 0.00423433562024216371, + 0.00556017347606527646, -0.00447662410272592175, + 0.01402128121793334327, -0.01250677255896182581, + 0.02143243478489675197, -0.01912157612913771218, + 0.02707425569725959227, -0.02363245781342759172, + 0.03030507608860066524, -0.02546092853922375318, + 0.03062568624068200129, -0.02420263000248054283, + 0.02774124017004158185, -0.01968557809647446602, + 0.02161424341101315233, -0.01201626125677237450, + 0.01250212059725367905, -0.00160706553795247073, + 0.00097295706598386278, 0.01082109260264489496, + -0.01210623897822535322, 0.02426592274345956701, + -0.02561289398484480409, 0.03750378409241464372, + -0.03824565523211021639, 0.04918291377651332064, + -0.04863327947445311022, 0.05794669451801760102, + -0.05547046851168972725, 0.06257969710468207214, + -0.05767120007525273345, 0.06216483075840385092, + -0.05452570227297924566, 0.05623566284318760877, + -0.04584322047956368440, 0.04490440250958058904, + -0.03205976598090221757, 0.02894387719374076975, + -0.01428885879981514097, 0.00980184130712022199, + 0.00570532884309887453, -0.01047107878630182398, + 0.02562831678106134228, -0.02939191099049513062, + 0.04287646044280686575, -0.04431582164514297900, + 0.05485354733033040442, -0.05279343204080596402, + 0.05936110615670871921, -0.05298394315176034597, + 0.05502167979071072995, -0.04407345017381468499, + 0.04167479730536127053, -0.02662920176401675776, + 0.02066860252368641487, -0.00280673468378687821, + -0.00503953499183431870, 0.02367727158209331773, + -0.03105720729153326962, 0.04788223300426379392, + -0.05206849799851660798, 0.06433433486439436855, + -0.06270056093064525771, 0.06805596879115871634, + -0.05869142286885806192, 0.05583451584927479755, + -0.03820835875109385160, 0.02752432213583367107, + -0.00305298416178034424, -0.01293901155018538536, + 0.04062035790253462619, -0.05722869651923911949, + 0.08251763587271594702, -0.09347175130291898726, + 0.10977578312671738836, -0.10861158948052176965, + 0.11014150607065610610, -0.09236853195930820604, + 0.07660157723634372640, -0.04233100664170385413, + 0.01261003940201982539, 0.03113863782649141376, + -0.06392798250881298605, 0.10258671648590500514, + -0.12087776252300048985, 0.13518904199541609268, + -0.12006798960728415349, 0.09427589572660456663, + -0.03670037998265069518, -0.02741493336157831834, + 0.11059949962679313518, -0.17751313355092709911, + 0.23037066557131055666, -0.22583033544425371031, + 0.16460811410345704831, -0.01508005654361537114, + -0.18700547424597310786, 0.40001743134695311177, + -0.45543900120597013981, 0.08935361810730409193, + 1.21998491728417302049, 1.71431950329647220244, + 2.40095734662835624817, 0.20679463989727073225, + -0.95391664580445079125, 0.83199773267485133132, + -0.42072048212748852647, 0.00529378678210096557, + 0.27924859143001534711, -0.41315587130163894392, + 0.40798203787733272607, -0.31396212061241818292, + 0.16616348252576540467, -0.01174428164788603700, + -0.13015353237431545597, 0.23308037650249338602, + -0.29800969128077953174, 0.31573723424808097793, + -0.30012337920632164989, 0.25072390034135649817, + -0.18606816331415435006, 0.10736075903238720408, + -0.03217168432254703669, -0.04071461197204963300, + 0.09730311714169818937, -0.14259697989849315358, + 0.16654367827814173242, -0.17755482235629121979, + 0.16863052788872806564, -0.15039530383285998338, + 0.11756952819092840457, -0.08165257356931211741, + 0.03783745334682844796, 0.00259458412694334129, + -0.04487848290029193554, 0.07864359529825798445, + -0.11003799799273017435, 0.12989295960539781749, + -0.14538866769535085943, 0.14853179282054984611, + -0.14739148813346600320, 0.13491937705094189659, + -0.11978345150118288598, 0.09555586392533246820, + -0.07116657779854290711, 0.04047747547612710883, + -0.01237025331375733901, -0.01928203466364981911, + 0.04588540704715675378, -0.07375134470926933417, + 0.09472386107806181343, -0.11540410837783683651, + 0.12813644389409933888, -0.13983472131724306031, + 0.14333207441114176328, -0.14581398140701332111, + 0.14053743646187236149, -0.13487625165374714231, + 0.12241517824937300785, -0.11061241765202184384, + 0.09327345838317313564, -0.07783475741011439131, + 0.05822090202597469261, -0.04175219122719849713, + 0.02238747326237386023, -0.00725712444340821054, + -0.00970726324649852715, 0.02161409388227699888, + -0.03459503645425232587, 0.04202087124143532443, + -0.05009825263057366557, 0.05246123096245306622, + -0.05538251839209681893, 0.05274207213272991829, + -0.05085410627680823914, 0.04381424823339388763, + -0.03794357585369863978, 0.02751581121598754148, + -0.01881955028631634996, 0.00626678719765426297, + 0.00392570714961767205, -0.01724548333657074939, + 0.02758319345843083387, -0.04035854410818929400, + 0.04959882156394252589, -0.06068121005136666024, + 0.06779091316330002059, -0.07627960060925920160, + 0.08050320673784373826, -0.08579647987808493304, + 0.08669072179401782208, -0.08850457449421604561, + 0.08594209557958003287, -0.08430002604296142621, + 0.07844667638270265420, -0.07364597826374530420, + 0.06491768963756520960, -0.05747854935257036557, + 0.04648430365539763659, -0.03708826406361413752, + 0.02456562121197422566, -0.01398966151257073978, + 0.00073877639543864799, 0.01020946860664361314, + -0.02338829197199359181, 0.03392965184193669909, + -0.04629091026772538114, 0.05572476343683277489, + -0.06662242573834496751, 0.07436555331628004473, + -0.08328583051774030022, 0.08889896651123171956, + -0.09548062608889286429, 0.09868262939974192793, + -0.10272521693500634432, 0.10339562061185803010, + -0.10485668820299007264, 0.10302801971406194692, + -0.10201099964322907221, 0.09785270635663778638, + -0.09458741226885360176, 0.08838347692466014260, + -0.08320137691354576037, 0.07532378724432829686, + -0.06863019632403968839, 0.05951036684360155177, + -0.05175557840205164545, 0.04185564046677653360, + -0.03350678815617028766, 0.02329239780336167173, + -0.01480754186357248134, 0.00472353394678786710, + 0.00347087156506793596, -0.01302100191912529056, + 0.02054845590153838580, -0.02921861319234326723, + 0.03576626619046779920, -0.04327905634252760675, + 0.04860661592772425738, -0.05475988908184112325, + 0.05870386420649338632, -0.06337275190048191620, + 0.06584639795323569966, -0.06898130150594189436, + 0.06997080449753242948, -0.07159194114322364744, + 0.07114950234706345078, -0.07133871220806231594, + 0.06957326556685229646, -0.06846382905852710365, + 0.06553014700007551985, -0.06329536392129317401, + 0.05938228887154805430, -0.05622353384465740567, + 0.05154201977109116456, -0.04767692129891868552, + 0.04244848973002482428, -0.03809978971017587146, + 0.03254590563670132358, -0.02793145040155137551, + 0.02226421277793959666, -0.01758841286182455041, + 0.01200283902036558201, -0.00744981944468348176, + 0.00211788873806448893, 0.00215355968142399382, + -0.00708704510047541460, 0.01094670540874187470, + -0.01536648142572087476, 0.01871422319330920056, + -0.02253526775878065408, 0.02530098985282950436, + -0.02846775865407740608, 0.03060997765454400929, + -0.03309440972018221072, 0.03459775067917294361, + -0.03639631472658291789, 0.03726818498000535052, + -0.03839825302641231702, 0.03866498746320148894, + -0.03916082225530245070, 0.03886358123423130223, + -0.03877221005109988267, 0.03796289087860054562, + -0.03734011225487379043, 0.03607750397321763530, + -0.03498423816654188528, 0.03333060973323668380, + -0.03182976076936340493, 0.02984802702335629526, + -0.02800197639834409863, 0.02575353700558827286, + -0.02362233908089153914, 0.02116563536056345618, + -0.01880593452166298696, 0.01619571996622629073, + -0.01366036192924105497, 0.01094763644314135018, + -0.00828590266772495643, 0.00551841991640405084, + -0.00277677663825476274, 0.07004656845943156573, + -0.16759072545773670559, 0.13216840410885943857, + -0.15728925119284872802, 0.11960135528020200690, + -0.14249167637097806538, 0.10272471538280662784, + -0.12361034946841288618, 0.08202848985573524265, + -0.10121027644512006760, 0.05814933772399247941, + -0.07599573675875291590, 0.03185445059559677272, + -0.04879146721316814789, 0.00402010593191504031, + -0.02051867270735918680, -0.02439475253136614771, + 0.00783368684489365100, -0.05237935958286960014, + 0.03524168616223159745, -0.07890565115685872766, + 0.06068245362467240833, -0.10296551907252389502, + 0.08317237772150094799, -0.12360966299081356523, + 0.10180627751932627700, -0.13998673330227448530, + 0.11579615480189540955, -0.15138131461079096240, + 0.12450801890697130170, -0.15724919282801266829, + 0.12749519117158056303, -0.15724828985205693832, + 0.12452646441026998803, -0.15126364826460761415, + 0.11560752352603413662, -0.13942491347366681165, + 0.10099413456480424434, -0.12211489981350844014, + 0.08119578784930854554, -0.09996804571607385836, + 0.05696874037215205605, -0.07385786380067538293, + 0.02929774433826473970, -0.04487287370753484383, + -0.00063383025182301052, -0.01428096370750672056, + -0.03148527809394953414, 0.01651734815091744288, + -0.06181049249886203661, 0.04604570616186189763, + -0.09011920202524525969, 0.07281710717655157095, + -0.11494554660389985634, 0.09540521972163090725, + -0.13492142405192325549, 0.11251897331611346309, + -0.14885147347273017249, 0.12307702919955161580, + -0.15578607586724096956, 0.12627831130593775155, + -0.15508838376051795049, 0.12166448178226273169, + -0.14649118115626652559, 0.10917012874292045255, + -0.13013936186972366316, 0.08915653294494509107, + -0.10661403371249668359, 0.06242522716431007229, + -0.07693473688030290358, 0.03020818148150635971, + -0.04253702608805249447, -0.00586764790787160876, + -0.00522371308999180703, -0.04384248167210699765, + 0.03291061181592861568, -0.08151221821308239635, + 0.06958059459045858042, -0.11654122872918472320, + 0.10243372653181023746, -0.14659557712595480683, + 0.12919173388241947387, -0.16949090294073781982, + 0.14780304922969322856, -0.18334735908192303921, + 0.15659789198897852702, -0.18674233074814636235, + 0.15443596656657990196, -0.17885032977863554726, + 0.14083568222171868878, -0.15955862314186683437, + 0.11607327350367194208, -0.12954698000107492395, + 0.08124041547924185092, -0.09032056280939947113, + 0.03825002705550568927, -0.04418657271667841141, + -0.01021795192586144249, 0.00583212574217073162, + -0.06083588058792998438, 0.05614950614218737479, + -0.10981372256580305968, 0.10283344384544888805, + -0.15314610701123473890, 0.14188026134453410321, + -0.18691106691880227109, 0.16953357675618863087, + -0.20760412546851766957, 0.18262798510240424443, + -0.21248519641811949854, 0.17893212716026943299, + -0.19991017586820686303, 0.15746066664141550318, + -0.16961480210238694122, 0.11872131551464282229, + -0.12291608956659587359, 0.06486207812079836099, + -0.06279716257342231323, -0.00031392893588742099, + 0.00615466926942385625, -0.07149273563395718012, + 0.07797867751670257974, -0.14216927220631803142, + 0.14574996971235090748, -0.20514441478547373876, + 0.20216015490671013222, -0.25318243509095239574, + 0.24024191582742693285, -0.27979010050308988911, + 0.25418706867439089248, -0.28005518939012785662, + 0.24018422167701414249, -0.25145940218942414157, + 0.19718081168654635893, -0.19456162378750468944, + 0.12745851205160149688, -0.11343594103635194770, + 0.03690472709092398884, -0.01574887374805209253, + -0.06512967759615780061, 0.08762391113922514407, + -0.16647116588746183052, 0.18350599467831810174, + -0.25330185731421339668, 0.25786165890907503107, + -0.31184689395589926253, 0.29770041357727905496, + -0.33045491874871235627, 0.29327915311344776583, + -0.30185435622279860324, 0.24033199685269235335, + -0.22526410133412166914, 0.14195852221166302409, + -0.10794773889537417899, 0.00972737040615069548, + 0.03425095277200766730, -0.13646958963130753628, + 0.17783803087737773407, -0.27021686067283018362, + 0.29439850676862017176, -0.36225983016633689360, + 0.35521897533404200864, -0.38599593313837771147, + 0.33751668158149095156, -0.32424223159400727967, + 0.23147154057726809784, -0.17617991764707852109, + 0.04665387697950057477, 0.03723561689141364345, + -0.18414371011823998936, 0.27162139149929881432, + -0.40604219971657362631, 0.46367318077366725948, + -0.55045272904058883956, 0.54376580241902361390, + -0.55203011436342075413, 0.45707578503237078493, + -0.37336774063916666755, 0.19073448302681264566, + -0.03287608970640355094, -0.20000742183162004140, + 0.37397004707013098423, -0.57942010172423763503, + 0.67581248046401409812, -0.75113865913547828157, + 0.66910528848915484801, -0.53029583860912454796, + 0.22163223585690566830, 0.12179565574022031826, + -0.56722276681412864274, 0.92577705032925095008, + -1.20961465051501115830, 1.18725469282481577160, + -0.86279204743341908479, 0.06730719690363315411, + 1.00833281730108326180, -2.14228777096016553827, + 2.43565936349832012908, -0.48101803934737286106, + -6.50435752887366636088, -4.54762147663604654468, + -3.21561143638093360764, -0.26114130171188104645, + 1.25894918761884477831, -1.09619032063555477130, + 0.54949309711019089786, 0.00456737336351403962, + -0.38226509405299791133, 0.56093182825545029324, + -0.55232921130709655699, 0.42706610603881822730, + -0.22829261805512832129, 0.02247776250342891843, + 0.16842494201500077255, -0.30559530245995053521, + 0.39386302398279615655, -0.41743912451315601242, + 0.39829859007740592292, -0.33236991737353771548, + 0.24781611640143816344, -0.14280159395599334449, + 0.04417289989234408909, 0.05309489793590441847, + -0.12695920160804016752, 0.18745752879260862978, + -0.21784124868008958309, 0.23265492409541146945, + -0.21925742858679572733, 0.19510626335293571043, + -0.14989131521885248888, 0.10219895526141532793, + -0.04238659221879935435, -0.01128786975883824470, + 0.06900027775933999241, -0.11374451417655243035, + 0.15687656804361052587, -0.18303054505088744985, + 0.20490119831586112165, -0.20872751854480220413, + 0.20835214568584708994, -0.19131170259368820985, + 0.17220986221011957973, -0.13944832546633390002, + 0.10794262280163155476, -0.06651847736723107141, + 0.02998960535739575786, 0.01276565052516374400, + -0.04735467316387981240, 0.08510743524657911341, + -0.11225281373546716623, 0.14046927255173155547, + -0.15669033720155500777, 0.17297366448558487706, + -0.17694202821571475281, 0.18097750446090435372, + -0.17330558386043878882, 0.16652170378416625285, + -0.14932595753176067244, 0.13438854791408452738, + -0.11074150141470323616, 0.09098827186274838219, + -0.06435732461196116971, 0.04325947736240094710, + -0.01700654079974960736, -0.00228165869490339025, + 0.02529196473694702782, -0.04026068801457195756, + 0.05792130971717219384, -0.06689774084602430337, + 0.07798571014183430794, -0.08019792298085072491, + 0.08438043006921949751, -0.07991158267088475931, + 0.07765499085168879601, -0.06731433888109489283, + 0.05972459110273726363, -0.04486466709703428729, + 0.03348840449958714882, -0.01579686476874269871, + 0.00241028190074437949, 0.01629855931228884128, + -0.02989051096230041851, 0.04786454237116764127, + -0.06000155765925662549, 0.07570603763978921152, + -0.08500733278115575609, 0.09723810721395913237, + -0.10269325825256730988, 0.11064508500882413999, + -0.11166022885270089626, 0.11495170422325171056, + -0.11135442851949062248, 0.11001439829457551611, + -0.10202348288531411236, 0.09644610904304087851, + -0.08461403636922526506, 0.07549093579335407200, + -0.06062785632909651473, 0.04886605851154562918, + -0.03195383270741718879, 0.01858788964206482819, + -0.00069211254537945703, -0.01320227488293669940, + 0.03101553534090193201, -0.04440034583488246256, + 0.06113781851641259674, -0.07307949394908211382, + 0.08788027148013478895, -0.09760152849496632477, + 0.10978076846182817372, -0.11669600738332354395, + 0.12577202759657643560, -0.12950623897788282601, + 0.13521149112598074282, -0.13560366705426388223, + 0.13788105436294800787, -0.13497396269411382486, + 0.13396068606696209802, -0.12797945298299190364, + 0.12398102844148557733, -0.11530330885113415640, + 0.10876061527543967600, -0.09788123640847803952, + 0.08933345669269714129, -0.07682633205569933121, + 0.06687248028054776361, -0.05335234859097809368, + 0.04261377163428181625, -0.02869995988631261763, + 0.01778580528193331872, -0.00406978712313746382, + -0.00645302104522861488, 0.01943496376848553864, + -0.02906616765503075572, 0.04085433858849547156, + -0.04917859210639748818, 0.05940493019965852051, + -0.06610365379179861112, 0.07450043817280153913, + -0.07935745936136037737, 0.08576000727857212291, + -0.08866146943095096211, 0.09300543648053308243, + -0.09393469382558627956, 0.09624878531486741329, + -0.09527716609154425476, 0.09567219710041049985, + -0.09294661135946313824, 0.09160191505858392147, + -0.08733031473610160245, 0.08447850072168884561, + -0.07891417511837038601, 0.07482519072646412472, + -0.06825080990870735498, 0.06321616759851565737, + -0.05592837970955687882, 0.05024629302448157392, + -0.04254154942903743547, 0.03650357900359967739, + -0.02866571359546856920, 0.02254537284280752965, + -0.01483530795931230044, 0.00887892418204722957, + -0.00152672356277179988, -0.00405329816243488097, + 0.01085395215489925319, -0.01588345163082263700, + 0.02197840820539766898, -0.02632348871108435712, + 0.03159906836587433182, -0.03516602067709585083, + 0.03954799573811448171, -0.04228141498424189959, + 0.04573234871456894474, -0.04761178637184160234, + 0.05012709177128595039, -0.05116261711572286236, + 0.05276571748695677022, -0.05299277309926334750, + 0.05372974650933828172, -0.05320367281106642976, + 0.05313774391728194602, -0.05192832068878393964, + 0.05113452872739306099, -0.04932084001221944541, + 0.04788116412370676395, -0.04554704003847585836, + 0.04354620578779785228, -0.04077643384804424675, + 0.03829856113121854477, -0.03517599410433301654, + 0.03230217991224332286, -0.02890580015770468150, + 0.02571266305167239571, -0.02211659786156967497, + 0.01867574743694152065, -0.01494916884162289517, + 0.01132750555689763551, -0.00753529388564407304, + 0.00379599471028508424, -0.04789907937357454348, + 0.12418833973221099498, -0.08636671977370648234, + 0.11288071339306977869, -0.07332917001469789475, + 0.09810925605688487761, -0.05700279916084022291, + 0.08025603017158140784, -0.03783314275794346510, + 0.05982814305919557235, -0.01638636547969662266, + 0.03744768590589585278, 0.00666326326752401076, + 0.01383674833495011393, 0.03055079075822443244, + -0.01020239015462387142, 0.05444270307826128141, + -0.03381159679833920656, 0.07746335104041056352, + -0.05610524916915114041, 0.09872507329097883477, + -0.07620191317088860494, 0.11736119854477621016, + -0.09325841353464427164, 0.13256090402481313095, + -0.10650517685853277960, 0.14360471837289628949, + -0.11528155024715841526, 0.14989929477533689428, + -0.11906965323276268165, 0.15100995453140558800, + -0.11752521770882806695, 0.14668942358153713723, + -0.11050382074740965066, 0.13690116501539581484, + -0.09808092841304441589, 0.12183575876176780395, + -0.08056425379593595837, 0.10191890343236170713, + -0.05849709635203159674, 0.07780982034529092262, + -0.03265157659056520251, 0.05038912889076608420, + -0.00401101128729409832, 0.02073563484989857097, + 0.02625891307428492374, -0.00990807593719989291, + 0.05685002430964086056, -0.04018082676069037462, + 0.08636191320984401565, -0.06865783717431658828, + 0.11336126139425377335, -0.09391391659705042305, + 0.13644834885583609352, -0.11459265856084904778, + 0.15432823470375506281, -0.12947883837703239029, + 0.16588353760895888089, -0.13757068366289385009, + 0.17024525244048518968, -0.13814825040065237260, + 0.16685766617911107490, -0.13083383735197798292, + 0.15553322001167516064, -0.11564024902846402332, + 0.13649314496219547288, -0.09300280990898394939, + 0.11038991116856215757, -0.06379137290161313034, + 0.07830800493144998708, -0.02929917759021642698, + 0.04174030198667129377, 0.00879368859866716535, + 0.00253834582818853816, 0.04848329269071750131, + -0.03716384455457835689, 0.08753094532205056566, + -0.07505125306533398655, 0.12357633613369747860, + -0.10875169473914358953, 0.15427085434836876332, + -0.13597719075684158718, 0.17742534559400133243, + -0.15467620645821777980, 0.19116471362095091568, + -0.16318829820684821463, 0.19408011338841790749, + -0.16039119918699643041, 0.18536815245364351989, + -0.14582927186246869011, 0.16494568394191391758, + -0.11981173123884120146, 0.13352860133377006391, + -0.08346925931771097262, 0.09266368691954748882, + -0.03875873052308214523, 0.04470415061649138377, + 0.01159214000556148261, -0.00727788998431243717, + 0.06420527056100100438, -0.05964506889900022396, + 0.11523867385761618620, -0.10841298285398308365, + 0.16063465200306437097, -0.14952585194171294503, + 0.19641962654884317918, -0.17917643159408114251, + 0.21903925569938303974, -0.19415068804610449704, + 0.22570628843835599531, -0.19217177701851023697, + 0.21473301908893296930, -0.17221283383738059114, + 0.18581590774192041637, -0.13474470481477263117, + 0.14023766390277750404, -0.08188378309478318295, + 0.08095261275378796972, -0.01740730099602398606, + 0.01252518228998519834, 0.05339057821942598536, + -0.05910057368509262499, 0.12401828552610433265, + -0.12701006239787160368, 0.18728378358958805427, + -0.18389876828746112847, 0.23595202481179250453, + -0.22279688985302695259, 0.26352417082947643401, + -0.23788757186834719182, 0.26507633133326657937, + -0.22534483642541033865, 0.23807279441029882694, + -0.18409598321660228248, 0.18304969458242378866, + -0.11639744247681524381, 0.10405351215157117306, + -0.02810678532916474973, 0.00871885133304251166, + 0.07145897032513807978, -0.09211424441751896175, + 0.17016352670335388453, -0.18530804385181876004, + 0.25422897173108205404, -0.25686790630133476965, + 0.30992246013445695629, -0.29384611424115025802, + 0.32563599202701248858, -0.28654332771723090012, + 0.29414199094443754801, -0.23073772432660727416, + 0.21470329744109262204, -0.12957254462602074696, + 0.09462671059760989489, 0.00534096794108063905, + -0.05020215979241463705, 0.15407003817391745626, + -0.19624953890093574382, 0.29016055488387432204, + -0.31506317975717668123, 0.38432213442434565165, + -0.37789551793581288575, 0.40991978217585689492, + -0.36193320869943557128, 0.34974191329272302786, + -0.25732955798771633971, 0.20294523562467833844, + -0.07363260963801029901, -0.00953486584037783677, + 0.15638270836272705200, -0.24333069249929373257, + 0.37785022327634065764, -0.43514839744050948234, + 0.52218895399491516152, -0.51536816451877187628, + 0.52405655774291504123, -0.42916683666594318547, + 0.34604421463945717052, -0.16367105980825585876, + 0.00655521852762364597, 0.22587811986077671600, + -0.39894768214584525046, 0.60376527713229077854, + -0.69912300490787815388, 0.77364446285993815344, + -0.69044594781353940682, 0.55067163688970888202, + -0.24072550285485966315, -0.10381334657912344444, + 0.55062544190331386140, -0.91042100985900520360, + 1.19572949300535569250, -1.17472386672491335702, + 0.85180005510996792406, -0.05776402935602854838, + -1.01628829827953781617, 2.14871951058431776005, + -2.44047455462389484282, 0.48425490950345467800, + 6.50274545337563836256, 3.02644654545471780693, + -0.00416932496684814524, 0.00754183010998490510, + -0.00819442140728940914, 0.00725485452498268214, + -0.00776764663002176437, 0.00669267335394551320, + -0.00707585189872618654, 0.00587841562024637738, + -0.00614756565428842099, 0.00484575738399011229, + -0.00502131285272971756, 0.00363772873073348177, + -0.00374424210107201149, 0.00230516986125892456, + -0.00237042078981301212, 0.00090487663921361074, + -0.00095884370897238039, -0.00050251379932530940, + 0.00042878916833863199, -0.00185483667809831741, + 0.00173046013058615156, -0.00309084208999766416, + 0.00288631147246423735, -0.00415268714420700437, + 0.00384113030298463554, -0.00498839089755192568, + 0.00454675039754341530, -0.00555415941061364760, + 0.00496427639788470446, -0.00581648487840333902, + 0.00506603371776518339, -0.00575392244227365419, + 0.00483714892713096433, -0.00535845161176691943, + 0.00427667075608436590, -0.00463633676661213880, + 0.00339815168477161211, -0.00360841340769975111, + 0.00222962472466300575, -0.00230974394585779655, + 0.00081292960675723169, -0.00078860889292092513, + -0.00079763292795552736, 0.00089517389783935037, + -0.00253731109886819357, 0.00267257838261389944, + -0.00433353603163755090, 0.00446829020707365139, + -0.00610910416623193942, 0.00620412367691848977, + -0.00778579631210422115, 0.00780280602077918894, + -0.00928828602698905659, 0.00919196483680030305, + -0.01054815746317556112, 0.01030812446656112664, + -0.01150782568995032014, 0.01110049355739797274, + -0.01212413331449553253, 0.01153431182121508053, + -0.01237138852396358658, 0.01159352144264045800, + -0.01224361380983925857, 0.01128253991581220500, + -0.01175579357596199560, 0.01062693798624272414, + -0.01094394393174960567, 0.00967286981238073447, + -0.00986387975842842671, 0.00848516246785766849, + -0.00858862208425484677, 0.00714404735585486873, + -0.00720447114730973000, 0.00574060455373401595, + -0.00580586410434926446, 0.00437108866317831388, + -0.00448923653837037841, 0.00313040605252020831, + -0.00334620765507201391, 0.00210511169160304849, + -0.00245650295654958970, 0.00136638115062006748, + -0.00188110681996811794, 0.00096348097626092763, + -0.00165619176327945613, 0.00091829945303723633, + -0.00178839220735473297, 0.00122150092652146235, + -0.00225196993499079305, 0.00183082279024733086, + -0.00298834951086012152, 0.00267193940165024683, + -0.00390838057281445769, 0.00364216918938951731, + -0.00489750966758340216, 0.00461710176307671138, + -0.00582382131702575186, 0.00545997769548308299, + -0.00654864582611944419, 0.00603337732039716489, + -0.00693914551839617654, 0.00621248498242783689, + -0.00688200325082455149, 0.00589891625873496285, + -0.00629707452389707996, 0.00503385750107184903, + -0.00514965907870308832, 0.00360910299984492202, + -0.00345993389921162454, 0.00167451972401038308, + -0.00130810098743559182, -0.00065944463603770614, + 0.00116603003040577965, -0.00322534163650762054, + 0.00376996139555770514, -0.00580908641891156752, + 0.00627233918559059241, -0.00816718753939729182, + 0.00842340998150138340, -0.01005015124692743358, + 0.00998098057917560025, -0.01123048941773472850, + 0.01073985294466522043, -0.01153285093563002905, + 0.01056182058368822577, -0.01086296362389030032, + 0.00940256602391235582, -0.00923144880217183911, + 0.00733133237617628660, -0.00676829968425479451, + 0.00453920413110958914, -0.00372404552482761544, + 0.00133236376247224250, -0.00045448284663653971, + -0.00189210137484537109, 0.00261257682528685852, + -0.00468833829331988770, 0.00502781546019346985, + -0.00661971090378903060, 0.00638456953273712231, + -0.00732743240911815346, 0.00638981828134407241, + -0.00660140558178980846, 0.00493202339888001214, + -0.00444192176738005071, 0.00213334450179524437, + -0.00109895660248247678, -0.00162738017523920433, + 0.00292436015071845246, -0.00573349061062227664, + 0.00691516479975826798, -0.00939993400370906819, + 0.01004673395850050853, -0.01179479781190494354, + 0.01152346918745170146, -0.01220395024161631363, + 0.01075968787529553439, -0.01021671032947666334, + 0.00756316475360362377, -0.00589665180277069902, + 0.00228124985647756937, 0.00010984381141928179, + -0.00414138187740086244, 0.00657949494500467344, + -0.01024384365896452258, 0.01187759049775275258, + -0.01430438496871685831, 0.01430376193769024480, + -0.01477077637071220681, 0.01259347649759073179, + -0.01081054826380941497, 0.00648496079578004831, + -0.00285252020180541948, -0.00281633459320374067, + 0.00708562403018758117, -0.01251229573530799818, + 0.01554037720593988252, -0.01868491921228100996, + 0.01845280069720050403, -0.01754837307549982767, + 0.01280990712659921607, -0.00741669954276540956, + -0.00119005213199609074, 0.00914213977758773430, + -0.01829484846561495875, 0.02417026647614625365, + -0.02825136660976312539, 0.02610232008865250378, + -0.01985489211806467508, 0.00650880874176437783, + 0.00947162086203717953, -0.02790232472714133244, + 0.04062439242046778781, -0.04408963797642258264, + 0.02874879572222250115, 0.00549263274428485066, + -0.05518635211090439086, 0.09053194063382978551, + -0.05014994850743385163, -0.19817088090579360049, + -0.56715999134902927992, -1.15690559744525911512, + -0.32741912374481557668, 0.57456400285662512228, + -0.35671618583161784910, 0.06322218638837939775, + 0.14816747351330164517, -0.23572018407021694264, + 0.22102654246184491593, -0.14036631605519722665, + 0.03602382166081879999, 0.06403624681586199408, + -0.13774265351663417256, 0.17927119460057641676, + -0.18568508484650170232, 0.16512819438649958825, + -0.12330540709497868346, 0.07222607245416465260, + -0.01787586436238770837, -0.02999711407553444509, + 0.06903717835858950991, -0.09374481195555997570, + 0.10586963852214990867, -0.10355730485148841036, + 0.09137902824151215853, -0.06949653950246917344, + 0.04358887346372503080, -0.01422274122692581202, + -0.01320209042894024409, 0.03881085115722502504, + -0.05826723644751998638, 0.07286934973398336013, + -0.07955337766790054888, 0.08077182515263735263, + -0.07453796578608321011, 0.06413761805059869925, + -0.04826258733928568551, 0.03059850211863947983, + -0.01008274720360162989, -0.00960388403055587384, + 0.02963457079480148401, -0.04662797796490849439, + 0.06209416423926911177, -0.07310784154043498129, + 0.08160557484797041627, -0.08514681095302441272, + 0.08607054133304423149, -0.08235365998199919990, + 0.07663715536656123817, -0.06719186667136881064, + 0.05682366595803420295, -0.04395522434567294967, + 0.03141758206548395799, -0.01765408608667635645, + 0.00540310157626611946, 0.00697239826624166965, + -0.01690881418288234239, 0.02618559846115840750, + -0.03245590692338417432, 0.03766430388741836416, + -0.03968557506009445790, 0.04061840458135170667, + -0.03853470275924900795, 0.03565176311696868772, + -0.03019474909080724356, 0.02444989146504475755, + -0.01674262810706068569, 0.00937408897119530911, + -0.00071694229424816536, -0.00696311674160278275, + 0.01529235029673222182, -0.02208138823963947880, + 0.02899020309575496210, -0.03393392677197430013, + 0.03862754648638138527, -0.04110515573233591152, + 0.04314456417445099168, -0.04290040751077691533, + 0.04220919334787837790, -0.03933695357399188269, + 0.03616544012937313729, -0.03105513010881101946, + 0.02591335295600997665, -0.01917347141062390736, + 0.01274568796049936614, -0.00511314991560074626, + -0.00183392428705039042, 0.00958460167932670935, + -0.01628930050211568892, 0.02342816025640903979, + -0.02920898336230782696, 0.03511734461907387722, + -0.03943026277281641567, 0.04364793895788255523, + -0.04612316442612964668, 0.04837471738853754699, + -0.04883263707461506231, 0.04903341659372365685, + -0.04748136365089877103, 0.04572580045890252409, + -0.04233878673665721765, 0.03887457702680040261, + -0.03396400429609287147, 0.02915645379668174025, + -0.02313120026917383359, 0.01742214113204336792, + -0.01074635294349328592, 0.00461179157289343025, + 0.00223670924695544950, -0.00832661045636044587, + 0.01489405606430936613, -0.02050981145890825100, + 0.02639792287899214371, -0.03117836858512950532, + 0.03606792695858883346, -0.03973953794223561431, + 0.04340536530248433750, -0.04579290918476226074, + 0.04811028801147698708, -0.04913917750456090611, + 0.05008236808764407466, -0.04977363032696657114, + 0.04940762405355227788, -0.04786680479204498406, + 0.04633377143537417697, -0.04373533352568716864, + 0.04123738614804575014, -0.03780625508961188430, + 0.03458618205646012134, -0.03057805530197487201, + 0.02689957695324657339, -0.02258147237402359508, + 0.01871039604942038512, -0.01434269546249577684, + 0.01053009432282114334, -0.00635106772250619827, + 0.00281932305614385117, 0.00096717586889232118, + -0.00403492775322147369, 0.00726820102858409100, + -0.00973496640125226867, 0.01230253159854765611, + -0.01408071514660535692, 0.01591981802298930368, + -0.01697107717922557643, 0.01806699358783400017, + -0.01839911173712906536, 0.01878073044829666263, + -0.01844205908478482522, 0.01817534126426779972, + -0.01724744000829872559, 0.01642740533582926973, + -0.01501653935049226257, 0.01375843705489421080, + -0.01198657885870274206, 0.01041687025928324413, + -0.00841280394419023116, 0.00666051875243703784, + -0.00455156695789897450, 0.00274050667568100439, + -0.00064530256131426671, -0.00111254094141287839, + 0.00308992488500767519, -0.00469948116083282203, + 0.00647385065387083656, -0.00786047309695354045, + 0.00936819195688431625, -0.01047952054382083296, + 0.01167957366168919341, -0.01248582661915583272, + 0.01335937883304722656, -0.01385222619665589690, + 0.01440086582831033059, -0.01459110486907475024, + 0.01483401835590920925, -0.01474831891420782214, + 0.01471868130808784425, -0.01439569769531364590, + 0.01413658282517241647, -0.01362273861809584242, + 0.01318285335065914020, -0.01252809743581492254, + 0.01195762839821944666, -0.01121143702156309624, + 0.01055826764599452662, -0.00976613049662330805, + 0.00907264401570583891, -0.00827322538355215395, + 0.00757385842686087146, -0.00679697028642424483, + 0.00611662511502028116, -0.00538209072820779698, + 0.00473545500885023170, -0.00405288238039474419, + 0.00344464674562470824, -0.00281407391283938681, + 0.00223998217090599179, -0.00165330352418228163, + 0.00110192077934384938, -0.00054495772742786338, + 0.06271550731965483405, -0.10521278112066129173, + 0.12164125507213091604, -0.09875559657989974038, + 0.11254673838808357256, -0.08711034123867798795, + 0.09843447239560794426, -0.07067038339439016270, + 0.07980174734066958209, -0.05003350499634381249, + 0.05734242047633080624, -0.02598424893288280371, + 0.03192537874241004742, 0.00053141795291154097, + 0.00456552058112021271, 0.02843865117761577507, + -0.02361212994967889361, 0.05657272939307457504, + -0.05141427767647140795, 0.08372346493251908717, + -0.07762598903854013577, 0.10868368939832769027, + -0.10106062691190531577, 0.13030020142262482841, + -0.12061134444685396583, 0.14752531179373001846, + -0.13530216193258526314, 0.15946691145647279297, + -0.14433646853988688075, 0.16543483762138794235, + -0.14714067678273448636, 0.16498123978644241294, + -0.14340072887601054696, 0.15793266756763926772, + -0.13308922672647210961, 0.14441173061416132106, + -0.11648114440301589323, 0.12484642910590582066, + -0.09415639303993890430, 0.09996562840104082637, + -0.06698794745809812101, 0.07077965443754688502, + -0.03611480904533737046, 0.03854561148920670338, + -0.00289976064085853934, 0.00471775665233610270, + 0.03112735225490322749, -0.02911591711369728580, + 0.06433923140479468061, -0.06130886783389796757, + 0.09509116348545763875, -0.09024005915673485867, + 0.12180815432041494639, -0.11440313914537574014, + 0.14307502738869359860, -0.13249625364282807682, + 0.15772467892413000179, -0.14350741545076620143, + 0.16491919465168281000, -0.14678998076527266514, + 0.16421829602025062034, -0.14212269416695935687, + 0.15562965410883208839, -0.12974900633711752840, + 0.13963603524809958811, -0.11039098596321723911, + 0.11719505721165400514, -0.08523416304242933950, + 0.08970855190927368161, -0.05588105627271117842, + 0.05896013784529684915, -0.02427292596302786307, + 0.02702156121010637624, 0.00741860247196809899, + -0.00386940710277751398, 0.03692607384704790774, + -0.03145434077381089460, 0.06204050778544849959, + -0.05361520891626669894, 0.08077673249516691134, + -0.06854127763163796183, 0.09153891651606900492, + -0.07489014813859397324, 0.09327384634273558350, + -0.07192991386995119252, 0.08559856632810777799, + -0.05964891246415466447, 0.06888896610209543914, + -0.03882003884921522707, 0.04431695305783143329, + -0.01100823355951476012, 0.01382611604215052900, + 0.02148733543984456679, -0.01996067066373376567, + 0.05576070724792998867, -0.05390347753400711456, + 0.08849514784780243559, -0.08457331049365621189, + 0.11622044361753948449, -0.10853516838321090876, + 0.13561730899034693532, -0.12266852764157250288, + 0.14384785263136912192, -0.12450093247684888842, + 0.13888475726550081335, -0.11252466407171944629, + 0.11980690920738443217, -0.08646253598290169762, + 0.08702648860256574637, -0.04744754441178833382, + 0.04241281554460105130, 0.00191683058142037518, + -0.01071774392622742121, 0.05764279815469412066, + -0.06776826855755907486, 0.11460758394960468554, + -0.12319398298515286949, 0.16696782054179992727, + -0.17099422253735041544, 0.20872237434845961057, + -0.20533669888839239936, 0.23438586568842906255, + -0.22126535425466273277, 0.23971331134351947512, + -0.21542182640582363540, 0.22239633440536588083, + -0.18669263183700932074, 0.18263638634076814760, + -0.13668297429133488552, 0.12349392751468335483, + -0.06991718071722742567, 0.05091805176220919049, + 0.00632147618971517188, -0.02661832979500862451, + 0.08256981595559026443, -0.09891499217435892333, + 0.14819459393415321258, -0.15525516116485021945, + 0.19278270771065733613, -0.18594407345429661560, + 0.20778714524196117974, -0.18401154435869154780, + 0.18822608326179812721, -0.14683913711192006502, + 0.13416276718971850701, -0.07741252659975128569, + 0.05164789043167208882, 0.01512759192940297225, + -0.04719766776295962474, 0.11593851591456272310, + -0.14522528823741631676, 0.20614210677574537622, + -0.22255978472776635768, 0.26574169253090279552, + -0.26007906654544371561, 0.27757339582894141605, + -0.24370500459735730536, 0.23176203335082679047, + -0.16880818201772487819, 0.12982010403335941806, + -0.04371436673010525853, -0.01274734400148609496, + 0.10890995006651431332, -0.16658499085400213513, + 0.25400479253018526382, -0.29245909140288045558, + 0.35024563329246571897, -0.34955660276593109037, + 0.36037323984464453286, -0.30752164074754823053, + 0.26440002838450893385, -0.16006226999165451552, + 0.07260738571452272916, 0.06390173742668857348, + -0.16659193341315792214, 0.29722777802331862285, + -0.37008622775286953432, 0.44589645650287462741, + -0.44047375221986762028, 0.41906057222578940724, + -0.30545545742374002884, 0.17626957420181876834, + 0.03019848384553195861, -0.22083368936832073470, + 0.44042324990599335255, -0.58124929056752383527, + 0.67913376143731929435, -0.62739883246132732708, + 0.47740771730810727114, -0.15696596135584914289, + -0.22661192110612660144, 0.66906602665612635583, + -0.97444117492367554600, 1.05770868285149410859, + -0.68957462538601899116, -0.13213120304566861041, + 1.32473145921990886897, -2.17294826356778436605, + 1.20372673166268828737, 4.75604108543791159747, + 4.47191329112243352029, 6.22808310253652219757, + 1.68685593535995415060, -3.00583089586405005633, + 1.84279794763504889410, -0.27862476563610311109, + -0.84968487635727241170, 1.31524880386084586092, + -1.23750622056891623757, 0.80568560961795443465, + -0.24954961974150377535, -0.28597572168128437831, + 0.67897400120056183859, -0.90255725420184118590, + 0.93690269217174515504, -0.82957425295831910272, + 0.60688136215002419505, -0.33695941990196165428, + 0.04765880621002504397, 0.20498941827818722983, + -0.41245131082421115920, 0.54139922643123894463, + -0.60515059257066927678, 0.58986284951593126458, + -0.52385821658719922134, 0.40409072312288146778, + -0.26474714082949585281, 0.10498546271825383303, + 0.04254087516054459728, -0.18232023170509711885, + 0.28741497093113210770, -0.36852484655308664907, + 0.40554293464147223025, -0.41528192732883389970, + 0.38342354324698146861, -0.33118100179613574330, + 0.24789911734087308193, -0.15687966926368240861, + 0.04882156265711595083, 0.05304292459631344825, + -0.15856016093364094788, 0.24613865467581577673, + -0.32737700338641395614, 0.38315961013900395882, + -0.42731525854960578092, 0.44335722381947201276, + -0.44721600519790233319, 0.42467486559432454651, + -0.39323035873372585991, 0.34027704845037165526, + -0.28414624215340195112, 0.21308586524284253705, + -0.14551680813829084848, 0.06984086390294486080, + -0.00393999436864328565, -0.06416905889502622085, + 0.11758108775978295957, -0.16899532590842958335, + 0.20270726174972164557, -0.23225307421714133649, + 0.24315494155911385188, -0.24972733226119070427, + 0.23858840817739462858, -0.22464150258957210626, + 0.19536676319018481118, -0.16599142973046662752, + 0.12457506150751940233, -0.08638055725190404988, + 0.03976396102581017389, 0.00024466486742438808, + -0.04523901090211114584, 0.08063998314802559020, + -0.11817653105969061489, 0.14387085891940676330, + -0.16970083162601001803, 0.18236712331643176177, + -0.19413819054818268195, 0.19240166219156792926, + -0.18969462483242791051, 0.17404293850810800826, + -0.15818060326202476595, 0.13068135991832821596, + -0.10437126794255065232, 0.06825701862631816663, + -0.03513567532555413042, -0.00567627328709927135, + 0.04153263085158934859, -0.08292438803611398845, + 0.11746633094707843725, -0.15555745772472320820, + 0.18516282722598795263, -0.21666600091470278322, + 0.23844538796757511201, -0.26091808910929004117, + 0.27291080573403075915, -0.28489520878724106101, + 0.28615413975049430739, -0.28720920534501770405, + 0.27778347844076262119, -0.26842241148858830835, + 0.24925453971904737438, -0.23080701654080926222, + 0.20356594179676559819, -0.17798786981568889831, + 0.14486135649911607848, -0.11451570409814451623, + 0.07798517443928766613, -0.04541604774104236047, + 0.00803472026239589188, 0.02424609742055210473, + -0.06005445732560368843, 0.08975329497181730454, + -0.12186203427139240263, 0.14705077376757469398, + -0.17375605847746111721, 0.19297514538551149843, + -0.21307583774837690616, 0.22539107481428494184, + -0.23822293772446850868, 0.24323799185954211866, + -0.24866573620288570656, 0.24649525729663188112, + -0.24486850307542507021, 0.23607888476578828274, + -0.22815981344279179233, 0.21368591383057908284, + -0.20055727223704883366, 0.18160391046232182699, + -0.16456616472035343057, 0.14250301692518602126, + -0.12296896446729622954, 0.09922672912739798068, + -0.07862089639286140574, 0.05459542837103008306, + -0.03426425774556558779, 0.01123392903869999994, + 0.00762876541129017989, -0.02856879392746837151, + 0.04497821485543113118, -0.06296270928911670839, + 0.07617996917980192351, -0.09060071425200762196, + 0.10015030541246776330, -0.11066427678056181549, + 0.11633339846037447918, -0.12285380912872098658, + 0.12467579277613746735, -0.12734863465046841746, + 0.12557340003698208575, -0.12474265697435465983, + 0.11979755244088879929, -0.11596255047961841200, + 0.10840709399247724920, -0.10217549874869266691, + 0.09265346963240073119, -0.08469327193321024572, + 0.07388534196117731156, -0.06487882974266187541, + 0.05345850817166632185, -0.04406074852632861638, + 0.03265589250324612419, -0.02345968649818599289, + 0.01262123953937784905, -0.00412990648372062955, + -0.00569108567895813388, 0.01308234954825743084, + -0.02154899797812379406, 0.02756302497864734566, + -0.03445824222045726359, 0.03893742890100745230, + -0.04416156107033044481, 0.04706184993833470442, + -0.05062330296971501858, 0.05200178343772497019, + -0.05400195771611206175, 0.05399951569161687281, + -0.05461356768539674805, 0.05343416578995364985, + -0.05288921669640989781, 0.05077743856941288603, + -0.04932985330699970333, 0.04654830288223191920, + -0.04446157698420102888, 0.04126959768109240284, + -0.03879422689248529510, 0.03542920972553970788, + -0.03278569180975789144, 0.02944799075295285659, + -0.02681383707276250097, 0.02365602095969320320, + -0.02115735340741538989, 0.01827821288438866501, + -0.01598620630185135227, 0.01342961825650613311, + -0.01136173561560909623, 0.00912018159008940940, + -0.00724585379809280367, 0.00526810734197884645, + -0.00351824495497423057, 0.00172049814118124789, + -0.18866382428347869271, 0.30782657969007826138, + -0.36649045894866660866, 0.28971290514716441233, + -0.34109245051386827274, 0.25729908909027376929, + -0.30180411260013095820, 0.21155326203692964571, + -0.24988801627782608605, 0.15402627370712773658, + -0.18717412146773665382, 0.08681499721096157252, + -0.11601099732983648216, 0.01250149556717612340, + -0.03919308208578401592, -0.06593135503827703137, + 0.04013493235577532403, -0.14520618969922272079, + 0.11859447004070762521, -0.22187677002283459626, + 0.19270699646731734300, -0.29246915036703424740, + 0.25904122501011350721, -0.35363359777933212058, + 0.31436830432147921943, -0.40230149006193921535, + 0.35581877009439333293, -0.43584057665609571286, + 0.38103429741889749405, -0.45220134824352614666, + 0.38830677522901613230, -0.45004688570200740427, + 0.37669700344616247056, -0.42885850665848801455, + 0.34612544262748573543, -0.38900985048288250212, + 0.29742797215179650472, -0.33180278078715552681, + 0.23237056943225467553, -0.25945966301163092549, + 0.15361822436777822221, -0.17506819781589286200, + 0.06465524282403822820, -0.08247703865231620357, + -0.03034366326483717985, 0.01385715383663325799, + -0.12668951638257877623, 0.10906784526293274162, + -0.21939762890746611346, 0.19811566180262280001, + -0.30344080257658118116, 0.27605507792653666277, + -0.37402647749349587913, 0.33831866885165218228, + -0.42688442499783174622, 0.38100430782659699958, + -0.45854927925068933448, 0.40114867328599151941, + -0.46662052462859893165, 0.39696914285829132396, + -0.44998170865406805774, 0.36805579313565250921, + -0.40896082662144095377, 0.31549597581961458248, + -0.34541518626775147283, 0.24191594205451230626, + -0.26272672173220962266, 0.15142731907120318691, + -0.16569773142204469174, 0.04947091221867380706, + -0.06034232534761058836, -0.05744377617876764153, + 0.04642465504076847410, -0.16209794574352637264, + 0.14719208836919703276, -0.25700872930158946694, + 0.23453330010523762428, -0.33493913263436569938, + 0.30153796688791684177, -0.38944374214505383947, + 0.34236262825918079011, -0.41541430071129259449, + 0.35276096638995030341, -0.40958385417583359489, + 0.33055067149846545371, -0.37094506507146068897, + 0.27597201881425276193, -0.30103818004611404557, + 0.19189490850500703911, -0.20406763423245305455, + 0.08383660007709373141, -0.08681382278944585473, + -0.04023796348290741010, 0.04168163855456501199, + -0.17034745980766616280, 0.17066294135333456850, + -0.29515355644209217978, 0.28842570682605211951, + -0.40282386991470908733, 0.38326546552990342631, + -0.48205123659303555916, 0.44455012823777245723, + -0.52315905417252450693, 0.46383533160676532203, + -0.51920151178418583182, 0.43592254924130674487, + -0.46695115191919117636, 0.35974679223681743645, + -0.36765714451287617726, 0.23897634805336143149, + -0.22745861942616663054, 0.08221391552786480594, + -0.05735078287682603831, -0.09729122852743819772, + 0.12737097792575821642, -0.28247556505704635166, + 0.30822164285051473209, -0.45384445814132307051, + 0.46516852392284285811, -0.59135056393341023373, + 0.57871468470370623915, -0.67664162339017486225, + 0.63226134926020105542, -0.69547897859880325466, + 0.61451594985447921538, -0.64006153700975454424, + 0.52165274688119767088, -0.51093991025376517268, + 0.35889562359390786428, -0.31818379571152682894, + 0.14118964582444418210, -0.08148413900414340494, + -0.10732949331015236016, 0.17105961215984771817, + -0.35526237033465418724, 0.40559138320597043492, + -0.56730894814698040740, 0.58653144670822243700, + -0.70889982153623376515, 0.68170232308701206314, + -0.75168022994540883985, 0.66800168535485748844, + -0.67917156456456917457, 0.53682427474821403646, + -0.49170249588199715918, 0.29823482060561007367, + -0.20954879356715261363, -0.01719685954224086863, + 0.12679196116517954529, -0.35990680363274124565, + 0.46007591764238831011, -0.66689269059851175037, + 0.72398390955047198236, -0.87143706204614868049, + 0.85472038463609822934, -0.91627831765765133110, + 0.80531604865201456001, -0.76846333364451802073, + 0.56030985966490820527, -0.43301012975149050233, + 0.14743653293715050512, 0.03841007820521875199, + -0.35775592498011160592, 0.54794814407327319117, + -0.83839808934753490277, 0.96481761720545966554, + -1.15673008100024521383, 1.15295972655563594422, + -1.18853564264656075267, 1.01116617642157824442, + -0.86716460221536773023, 0.51843639774951677524, + -0.22685855458903778081, -0.22886199847962415688, + 0.57103991466099957020, -1.00695494193384327275, + 1.24952747512928108442, -1.50248092297402968676, + 1.48396866828717044484, -1.41265328072641294099, + 1.03340410266375326565, -0.60267418429498209598, + -0.08622858849351000554, 0.72194359158798349085, + -1.45467730418077545451, 1.92449829895638724331, + -2.25162393438726837758, 2.07969499352255393632, + -1.58062814099667670042, 0.51311415807653626420, + 0.76453085611604254535, -2.23866284614346078286, + 3.25560173911579919803, -3.53236881647227596304, + 2.30425979699765282049, 0.43561447945897691092, + -4.41194908562903709281, 7.24024488771350505090, + -4.01050012317885951063, -15.85444596916714310453, + -8.88778087228576652024, -6.25377028840464621595, + -1.65944966610659450090, 2.97909400382810707342, + -1.81450851773727306337, 0.25114840546844924285, + 0.87854730286933191419, -1.34315559498706726949, + 1.26663474498256123368, -0.83371907077383788920, + 0.27864457094387390379, 0.25811023802311350295, + -0.65020136593344268761, 0.87514172818640789675, + -0.90872678962262321001, 0.80287476501234111836, + -0.57955922398716763766, 0.31122327182257908396, + -0.02142738658781774552, -0.22953620380918920985, + 0.43737743927961919566, -0.56455400966902902216, + 0.62858113949523586328, -0.61144806921697913982, + 0.54562866298965795320, -0.42395517869717219694, + 0.28471981453940353735, -0.12300518396376930452, + -0.02447613376944817246, 0.16624152050243104495, + -0.27134054341939822796, 0.35445565600378026172, + -0.39151354452503372983, 0.40326330876404864467, + -0.37146674225957321269, 0.32122720810624622034, + -0.23801611452416979176, 0.14897914548839014115, + -0.04098836930781591531, -0.05892624946218314591, + 0.16439130041677327276, -0.25006380589441201678, + 0.33127592712117970297, -0.38520676881310272899, + 0.42937198345333221772, -0.44362572674977468479, + 0.44753863940062449389, -0.42328103930280280842, + 0.39194286630595298604, -0.33735191371456446641, + 0.28138609652596713318, -0.20877274842704490743, + 0.14143257028861100366, -0.06429295083332296767, + -0.00131114891792594472, 0.07079119174727500907, + -0.12383579143511973253, 0.17652616955919134267, + -0.20979846331024545880, 0.24052460298977218489, + -0.25091424448512539280, 0.25857134773581230691, + -0.24684837958393529567, 0.23389187846196091147, + -0.20396311972786893008, 0.17548623292755644032, + -0.13334872021397384256, 0.09596402339749381116, + -0.04856293464796703624, 0.00927967933826952945, + 0.03655789166241059374, -0.07131293621947928929, + 0.10974608292288094702, -0.13486823875083803204, + 0.16164218325166126999, -0.17380378099722876284, + 0.18655965469058205519, -0.18437914864883236943, + 0.18269078366398652791, -0.16664869758069708605, + 0.15183160950516585985, -0.12398813751043347153, + 0.09874236167427745403, -0.06232248646717977042, + 0.03027691368163549016, 0.01080968330925509771, + -0.04558643632010989794, 0.08722944538267816961, + -0.12069547680314572646, 0.15902189916712572426, + -0.18756239019008011382, 0.21929211154085495594, + -0.24002471798050434293, 0.26272211073569812223, + -0.27369285319625752395, 0.28590658967380688793, + -0.28617463151629590756, 0.28746970641336283547, + -0.27708995833154193011, 0.26798508531255021969, + -0.24790529026983809668, 0.22973507620991440170, + -0.20162880466527921541, 0.17635346537188273386, + -0.14241246945168695159, 0.11239862461823497963, + -0.07510764308930881206, 0.04290236728975587582, + -0.00481724278287038767, -0.02706541179977568073, + 0.06351899445253729459, -0.09278379531792223245, + 0.12547797175666985936, -0.15019594584754389355, + 0.17742637379875486614, -0.19613780907260283670, + 0.21670353231089808932, -0.22847475411960485592, + 0.24171238597014890748, -0.24614823945207275901, + 0.25192398200826870980, -0.24914091938651325431, + 0.24780648987470588196, -0.23837329337399890128, + 0.23069353570881009907, -0.21554799470832636255, + 0.20260883723280215252, -0.18295919623862780257, + 0.16606475478002116763, -0.14328455643469945047, + 0.12385169146235643078, -0.09937588528607735339, + 0.07883354146955749708, -0.05406255840919291233, + 0.03376189086919416382, -0.00997894235378066728, + -0.00888129011695501860, 0.03057600358680704483, + -0.04700589054293993069, 0.06574195916386696426, + -0.07899739563795364627, 0.09416135589322222055, + -0.10376157612006492448, 0.11500514644413012411, + -0.12073211376809560302, 0.12796330303281575058, + -0.12984519637463282082, 0.13320490564051834514, + -0.13148663466082557982, 0.13131392796900079323, + -0.12641802962567139090, 0.12320753897965926182, + -0.11568897165348185352, 0.11004394568636743923, + -0.10054223027428667303, 0.09312656722712626955, + -0.08231846346422527771, 0.07381072610903438580, + -0.06236621833568491147, 0.05341815438376572994, + -0.04196199786852673058, 0.03316352819384701944, + -0.02224401844746402152, 0.01409604956520090630, + -0.00416206372799996210, -0.00294213068750282967, + 0.01155537276620884762, -0.01734004004197639559, + 0.02441660595613182397, -0.02872503836399502991, + 0.03416590631419218205, -0.03695441667949003056, + 0.04076809840339606222, -0.04209362052210380289, + 0.04438109816613695219, -0.04438384137971519705, + 0.04531933683116005918, -0.04420207662224227146, + 0.04401127316651048255, -0.04201691106192844555, + 0.04095425050839464343, -0.03834323396520099986, + 0.03666982656276017438, -0.03369889352551451445, + 0.03166241519663225840, -0.02856593203728825456, + 0.02638365812646261549, -0.02335856897593827780, + 0.02120442173304152786, -0.01839953812496667937, + 0.01639572312284542227, -0.01390577207703488222, + 0.01211926330082807243, -0.00998379585331951765, + 0.00842761630483854912, -0.00663457255510725187, + 0.00527352178794100040, -0.00376696696089795762, + 0.00252718236384272005, -0.00121848363660603332, + 0.13814893193195648680, -0.21887676563497354687, + 0.26882707222978580175, -0.20648905764260236384, + 0.25144124332036310587, -0.18432402569269357162, + 0.22451918933946854451, -0.15296805061695481487, + 0.18885494004191885620, -0.11342070607045229291, + 0.14564925261806663248, -0.06707726455291759815, + 0.09648291227840057049, -0.01569268134877108492, + 0.04327138507873833084, 0.03867299580867714082, + -0.01179882031150282160, 0.09372700631402187954, + -0.06635085274379612374, 0.14703236053908255720, + -0.11791313267186361025, 0.19610981476978397997, + -0.16402680483831652558, 0.23854980846759660240, + -0.20236106208756066138, 0.27212997859490439811, + -0.23083156462882314930, 0.29493311884957573721, + -0.24771650669193226446, 0.30545986705375077763, + -0.25176439886253210165, 0.30273003411264637341, + -0.24228739079412561774, 0.28636638235462991142, + -0.21923400224263464575, 0.25665486294070954942, + -0.18323549933730415296, 0.21457586501711850557, + -0.13562087517118232016, 0.16180193382488441967, + -0.07839648169962143420, 0.10065868484909942793, + -0.01418780778214386723, 0.03404726017573406205, + 0.05385732111521504550, -0.03467139716131217159, + 0.12220278326601724528, -0.10182799806362009820, + 0.18709183367769902095, -0.16362730273028600059, + 0.24474242780231969530, -0.21635428587815797030, + 0.29156185876992740669, -0.25659460895364377686, + 0.32437018027657898989, -0.28145788768569185434, + 0.34062002199508950584, -0.28879060400866018998, + 0.33859903363271764976, -0.27736445141473820009, + 0.31760048562022596963, -0.24702558563335758057, + 0.27804766466178032491, -0.19879082304447517893, + 0.22155876154740739015, -0.13487840010002219437, + 0.15094104794328991326, -0.05866354434847304011, + 0.07010631568823910698, 0.02544718347174414891, + -0.01609622408487204961, 0.11222410563668909489, + -0.10212822468275019328, 0.19590097248401530661, + -0.18208441727605748084, 0.27052944770316067480, + -0.25007516398988827167, 0.33038472785028510925, + -0.30064937085221721258, 0.37039924634423804228, + -0.32923181068051388110, 0.38659585098848364693, + -0.33254389497401865006, 0.37648752851532257813, + -0.30897346065516539948, 0.33940826450928313074, + -0.25885778210059351423, 0.27673953564350595169, + -0.18464531472989850758, 0.19199972274869217537, + -0.09090605353957832702, 0.09076976284456751698, + 0.01583188792248236415, -0.01956221817244807593, + 0.12743077368285296580, -0.13024184092639165544, + 0.23467389885774803115, -0.23176395976826802414, + 0.32795876526491701819, -0.31463406335285465376, + 0.39811491445349578289, -0.37022845980034863045, + 0.43729019564090715333, -0.39168832997249797279, + 0.43983250574544940914, -0.37476755014021256862, + 0.40308095068343652301, -0.31854374353204484294, + 0.32797313780389558691, -0.22589853056543390819, + 0.21937609202112939855, -0.10367848413123083307, + 0.08605900045540229581, 0.03753547341904542312, + -0.05975201913279566679, 0.18409462358239542246, + -0.20326320080023926873, 0.32038994456239189290, + -0.32842783240068867956, 0.43035609412751024694, + -0.41961436072217545012, 0.49927111527590956053, + -0.46349787977801526484, 0.51569288777997956963, + -0.45098827256477636016, 0.47332005615035838142, + -0.37896050456864860401, 0.37252516745776825813, + -0.25152270404531984482, 0.22129042767874904096, + -0.08055525673143693055, 0.03529126416634398994, + 0.11471183018793500163, -0.16307209664212457545, + 0.30923871330046587280, -0.34679444754255966954, + 0.47486458249203911119, -0.48749042082334576031, + 0.58401116957536003405, -0.55949379780378960536, + 0.61406862917852389483, -0.54439458926944173101, + 0.55192359061104112605, -0.43537550664889063112, + 0.39790309332589429703, -0.24054942771148646319, + 0.16828566998850880143, 0.01557319845047702364, + -0.10447946118691016359, 0.29329358715212494602, + -0.37455321548268710741, 0.54216953832854353212, + -0.58884360526632506527, 0.70879412594246349322, + -0.69628491055325647530, 0.74733243943891258798, + -0.65927966157882234022, 0.63140347247398254105, + -0.46544395930920140492, 0.36500991747581340574, + -0.13695708120033697752, -0.01051664440240835351, + 0.26574499222842146162, -0.41689649978864579127, + 0.64916365754097149487, -0.74949491768289056015, + 0.90308310007381109585, -0.89945479872331324245, + 0.92811823289435313455, -0.78579560035098494630, + 0.67093336155195770765, -0.39169983243882128265, + 0.15890341975503186056, 0.20575789860202434167, + -0.47891798350501391113, 0.82757961561321513599, + -1.02095013110999466299, 1.22309858198704812793, + -1.20750751449845705743, 1.15010858643987656791, + -0.84584587775111230723, 0.50079465184021421109, + 0.05126145455173738291, -0.56040994306131608482, + 1.14758998094562736370, -1.52412128593108309182, + 1.78686306422990659470, -1.65008168406424737817, + 1.25190714550941861738, -0.39873471049751241235, + -0.62227472070740075250, 1.80067436878196862615, + -2.61310080716648363008, 2.83355063418544927956, + -1.84992972261506660736, -0.34298256017023731612, + 3.52518428863269894791, -5.78887431712776923121, + 3.20620454070704408167, 12.68466665716173658041, + 5.06168515273315211545, 0.06310918287990170683, + 0.19469648953063750652, 0.07562841616499595132, + -0.08842253917188380719, 0.02762675339324764667, + 0.02768848989353560330, -0.05416117766964752972, + 0.05316093922412389733, -0.03556402800945593357, + 0.01221519304144080310, 0.00830809685677904100, + -0.02175157135000937644, 0.02648845395188651614, + -0.02377588944763609630, 0.01553214620068133975, + -0.00469848555368042840, -0.00656071388950411893, + 0.01602204701007869936, -0.02274259908317575324, + 0.02588108169394642485, -0.02577511938416600368, + 0.02262499865795428861, -0.01748997517874278235, + 0.01097775292024970491, -0.00426190785984659377, + -0.00215849981085811755, 0.00738734076318990976, + -0.01129261375294194139, 0.01338848253869651464, + -0.01393560044512568222, 0.01280049925775047885, + -0.01052026090300418708, 0.00716321358886128079, + -0.00337885871214540449, -0.00072321400643012847, + 0.00452557570985201267, -0.00799747125831708379, + 0.01064470007666748486, -0.01257621453599424600, + 0.01345282696573058163, -0.01352893096216050209, + 0.01260428577842185802, -0.01104575124435405210, + 0.00874722054988898157, -0.00613624031452956499, + 0.00314650356346127171, -0.00021311682637478789, + -0.00273932449965241407, 0.00531058331285912209, + -0.00761963832154687742, 0.00932686601043700506, + -0.01061166071862554988, 0.01120329776827460114, + -0.01134205945409766554, 0.01081981993211846363, + -0.00992590135915539726, 0.00849870429387933855, + -0.00685762631779296850, 0.00486702132341688791, + -0.00285535290875584512, 0.00069251493078124177, + 0.00130292226966039187, -0.00327234996031242975, + 0.00492129178000170944, -0.00641368502579733012, + 0.00748732409944671915, -0.00833378493711959580, + 0.00872527314895934179, -0.00888042351388902175, + 0.00860286969191913047, -0.00813328831675926879, + 0.00730009903275663421, -0.00635817216134022898, + 0.00515207901318512872, -0.00394186027490506501, + 0.00257919709292301182, -0.00132056607670090758, + 0.00001661410101259186, 0.00108707253609253832, + -0.00214721099436407338, 0.00293431682330548517, + -0.00361648944253089178, 0.00398314732249211399, + -0.00421537086493291562, 0.00412193378671063624, + -0.00389628670447791925, 0.00336499697553560529, + -0.00273150022970995764, 0.00183709251308330091, + -0.00089159689269264586, -0.00025293940431404620, + 0.00138451721441869096, -0.00264464044339711522, + 0.00382339822411475192, -0.00505995255577937168, + 0.00615032950024715919, -0.00723485139317358444, + 0.00811856969110467605, -0.00894558822093661013, + 0.00953210465455761255, -0.01002760466894556460, + 0.01026051055445166039, -0.01038625529396512183, + 0.01024556291721807726, -0.00999943434394384191, + 0.00950010329179523313, -0.00891298129057562470, + 0.00810034473599182195, -0.00723029470025773630, + 0.00617323540791399426, -0.00509790597848475396, + 0.00388070909149846937, -0.00268886772389875621, + 0.00140265635777726350, -0.00018572752138019881, + -0.00107971195538784123, 0.00223537072784941180, + -0.00339872093024317637, 0.00441824261362330686, + -0.00541227768011322535, 0.00623703947351734057, + -0.00701246618268415445, 0.00760299723038224129, + -0.00813043006934962079, 0.00846747438072744003, + -0.00873762453849252600, 0.00882150975609156084, + -0.00884380047946238708, 0.00869237731310110867, + -0.00849229314158548958, 0.00813778595549178967, + -0.00775331972442211761, 0.00723846634154904668, + -0.00671604746180153554, 0.00608990903427329699, + -0.00548018386643031596, 0.00479397903900471902, + -0.00414777530591513201, 0.00345104354305655978, + -0.00281579270204328344, 0.00215312678304569035, + -0.00156994836374146018, 0.00097846282026090394, + -0.00048003983636642932, -0.00001233292115075334, + 0.00040303212667976948, -0.00077839744993016952, + 0.00104856310897200413, -0.00129911390240376561, + 0.00144577417379714501, -0.00157312869094035856, + 0.00160217911693155213, -0.00161613873879354266, + 0.00154086756932510487, -0.00145775059525227527, + 0.00129702282918979484, -0.00113774062520653296, + 0.00091400745879783446, -0.00070204706054099563, + 0.00043933955400869126, -0.00019880382786149431, + -0.00007914794267091590, 0.00032531297284683073, + -0.00059671884039241569, 0.00082820742706243833, + -0.00107452730699164893, 0.00127479716542084395, + -0.00148166757190621324, 0.00163866402061965915, + -0.00179641797690825982, 0.00190289143548202813, + -0.00200667882084551615, 0.00206011644187390798, + -0.00210965821377636503, 0.00211187453628582014, + -0.00211090583649699032, 0.00206735617561565593, + -0.00202282926339804239, 0.00194172249250480051, + -0.00186285034537253015, 0.00175414457565687527, + -0.00165136983730902699, 0.00152573540879310642, + -0.00140970745973931395, 0.00127753709085447653, + -0.00115817296753399678, 0.00102870958391048013, + -0.00091440309701364933, 0.00079504268256380022, + -0.00069207136562715566, 0.00058788218820656401, + -0.00050004472330669465, 0.00041352659052791075, + -0.00034202522962347250, 0.00027311414817503092, + -0.00021667848382345297, 0.00016298431050081286, + -0.00011821559483380890, 0.00007546397955739889, + -0.00003736398981447760, 0.03631793980831531099, + -0.07765027337356482373, 0.07116461046615653319, + -0.07479286799057842383, 0.06694976001581696978, + -0.06926085674795802449, 0.06015858965012855358, + -0.06127922098357398845, 0.05107172016929985292, + -0.05118154164488178393, 0.04007243149761637729, + -0.03939697691128403456, 0.02763140742773517386, + -0.02643288467989566085, 0.01428736799008203939, + -0.01285361845766914979, 0.00062420381729476999, + 0.00074380391335542864, -0.01275460452329934755, + 0.01375629452576311411, -0.02525334013543111683, + 0.02560253695017628700, -0.03631209237973705151, + 0.03575092941265174684, -0.04543428889303084695, + 0.04374638518505744728, -0.05221243805635425450, + 0.04923468822797985589, -0.05635076981646341271, + 0.05198309590071352460, -0.05768348575785894189, + 0.05189593491433835970, -0.05618741696691833404, + 0.04902405924886384103, -0.05198804693667022359, + 0.04356723447059206167, -0.04535808985713152275, + 0.03586878320795926223, -0.03670812144839404739, + 0.02640216848430878768, -0.02656913453261868299, + 0.01574959701511691526, -0.01556732386841212616, + 0.00457317963439896665, -0.00439187763150936192, + -0.00642032897522229039, 0.00624295627158918173, + -0.01651969949756997708, 0.01563978014573293510, + -0.02505233068068314292, 0.02316174570391102069, + -0.03142790653536981643, 0.02827549573553880466, + -0.03517992225435484510, 0.03059055681950170746, + -0.03600221950882043220, 0.02989229767110182165, + -0.03377766525110919432, 0.02616565569370147420, + -0.02859629666527732650, 0.01960712812853175960, + -0.02076065736487215166, 0.01062303695583281804, + -0.01077667281234008512, -0.00018719253044623016, + 0.00067075281965968934, -0.01206306857883535956, + 0.01275721761100228127, -0.02412962001154317360, + 0.02457202396785689372, -0.03545656731859627570, + 0.03518251854302397591, -0.04512688094797168842, + 0.04370577538885474234, -0.05231036344846141939, + 0.04938273312684451216, -0.05633689753358159941, + 0.05164903115522156279, -0.05676329414990443495, + 0.05019626820263562578, -0.05342736656858110278, + 0.04501733766771998796, -0.04648304980845818085, + 0.03642996921753535039, -0.03641115687583110910, + 0.02507368583837465623, -0.02400175517217327179, + 0.01187708758410004756, -0.01030614942914626075, + -0.00200533989037952106, 0.00344099732292583310, + -0.01528492478956629090, 0.01592592344904504575, + -0.02665397129796062692, 0.02587978251558537696, + -0.03491619621912318838, 0.03221272153967886381, + -0.03912135249136296233, 0.03414568742916233163, + -0.03869065131249571632, 0.03132576553317863166, + -0.03351826995284256511, 0.02391015608829810332, + -0.02403424618642273705, 0.01260469668529751869, + -0.01121571535639981701, -0.00135460469167840761, + 0.00346306667882667098, -0.01628413656917340746, + 0.01814612779418169758, -0.03020024676289197879, + 0.03077381797906333580, -0.04102501222685589477, + 0.03931247340617097241, -0.04683486461722753680, + 0.04201600654272136942, -0.04612815226355859027, + 0.03769156022974325809, -0.03808027051186615303, + 0.02593495665632528438, -0.02274996729139621907, + 0.00729837178160303371, -0.00119918953526146560, + -0.01664620310119152916, 0.02450738265664192950, + -0.04337749281180810351, 0.05144727284097729697, + -0.06964643737881591468, 0.07613788464629420161, + -0.09184680299531439163, 0.09497369269097051536, + -0.10650931453599780940, 0.10476432491274392800, + -0.11086739518524059422, 0.10330856000219824919, + -0.10341726640637771695, 0.08991614043053029748, + -0.08437555040283487018, 0.06577458707987463016, + -0.05592912133465337277, 0.03405752862313927987, + -0.02218032222465946002, -0.00031036767594219575, + 0.01127964818233756668, -0.03127540874013248762, + 0.03818320256913326771, -0.05264282716595358042, + 0.05272385574618933951, -0.05932632116121904636, + 0.05086870193165649728, -0.04866326336934539976, + 0.03160629499032626549, -0.02151738207724541302, + -0.00217863152692303113, 0.01715830362602113746, + -0.04353416597880189337, 0.05861333150798791330, + -0.08225130795704284348, 0.09166125813452689897, + -0.10678075427312169743, 0.10511988204129621427, + -0.10712296055559972219, 0.09103138126339899161, + -0.07821013277687964560, 0.04799014890519779503, + -0.02292059977299357870, -0.01644975044819159751, + 0.04643367829307379346, -0.08551907461360432061, + 0.10936787153162456920, -0.13623403477978063281, + 0.14208961076497741982, -0.14611071351975285504, + 0.12586393578848417696, -0.10275971253260338112, + 0.05716387054359083758, -0.01365103497855491878, + -0.04415025573241838919, 0.08870592718091323270, + -0.13418746052422259041, 0.15216866558753439076, + -0.15775517369432828785, 0.12575721527068647876, + -0.07707308599672778315, -0.00517722555714505376, + 0.08983143647356656158, -0.18273535931196074888, + 0.24293524261643695272, -0.27055665247118215744, + 0.22659485441294904828, -0.12467079765214192366, + -0.04587988494576868831, 0.22732264239898053448, + -0.37473643621592983566, 0.37764078813887796970, + -0.17274466826308160217, -0.27465334968668181359, + 0.75391771877883873021, -0.65625092957854314069, + -1.51363405938251371907, -2.08975872423347208695, + -4.58161424075617329521, -1.90409522205926040606, + 2.21005748887198372188, -0.74876248984935878106, + -0.58000061255369483870, 1.21761354137765498429, + -1.19487031577035307528, 0.77485019706792535032, + -0.21577148212460778298, -0.27447811654560594352, + 0.59583024277373541899, -0.70723439227435014320, + 0.64087449544504326848, -0.44080160635154885806, + 0.17959666395283174767, 0.09276224348311190582, + -0.32094461040431199184, 0.48426716915745232628, + -0.56059217633618629861, 0.55994905204000400278, + -0.48521987102208635756, 0.36373298518602925622, + -0.20817054913246707537, 0.04858440855949413412, + 0.10492864972584374506, -0.22899568965320366010, + 0.32230725124187215025, -0.37135763584191294751, + 0.38423901686813199952, -0.35592276085761653803, + 0.30111327853515651443, -0.21964532705527550771, + 0.12889937657542699379, -0.02972079428573671037, + -0.06130164453348044273, 0.14519419990175064239, + -0.20834746425511771473, 0.25512019606707619923, + -0.27564511215347786699, 0.27775099119492535626, + -0.25492700903652543154, 0.21768047086579048188, + -0.16178141234898521517, 0.09917285993172166025, + -0.02660159923997999429, -0.04382876862220525666, + 0.11556834073922021833, -0.17737134810243751493, + 0.23371229991916891988, -0.27482122119090973689, + 0.30660132259408529043, -0.32095736916391831572, + 0.32523269883315725215, -0.31285571301464715210, + 0.29232560850313138445, -0.25820877627121985309, + 0.21970520593088202488, -0.17202560981647588290, + 0.12456661851601050217, -0.07269342321380749261, + 0.02554433942415287873, 0.02176469455957997373, + -0.06069443732694711907, 0.09664840342732350376, + -0.12188261884949089242, 0.14244222101585707341, + -0.15142983374017454645, 0.15551825910059896563, + -0.14858509216380627604, 0.13781035852633369276, + -0.11768719376500363927, 0.09571446725826526780, + -0.06679361983226078658, 0.03852579074912367008, + -0.00600371986194907486, -0.02327881515730110401, + 0.05423322728989378450, -0.07964892603243896307, + 0.10459337624589176707, -0.12226423903030436691, + 0.13798144528870812109, -0.14541811327889347938, + 0.15018497871132796551, -0.14644144553074947557, + 0.14007435868712861393, -0.12569189568387537093, + 0.10939972292947217070, -0.08618119358431841626, + 0.06227440581718092505, -0.03294238458908917838, + 0.00445453572249635346, 0.02774974694459429042, + -0.05747215044792476635, 0.08919552932575232351, + -0.11688508798789397358, 0.14503003529467245469, + -0.16783327489583485526, 0.18985333082972183361, + -0.20558176485409457301, 0.21968487810888065459, + -0.22696883095159287036, 0.23222132522729310722, + -0.23056502846144627528, 0.22689998959290874625, + -0.21664642985350848758, 0.20478901854978018293, + -0.18701037558278169048, 0.16833853134154105891, + -0.14467259802747164943, 0.12103477421295325001, + -0.09348960571208332626, 0.06700179784867221766, + -0.03775033248464241403, 0.01059315319219051796, + 0.01822283151466618650, -0.04398938723339784751, + 0.07043031764407481354, -0.09302091727336539440, + 0.11548425374276592714, -0.13350221577087414970, + 0.15081454906855035203, -0.16332154831648404425, + 0.17478593176170151291, -0.18132745044285616953, + 0.18672788719804511715, -0.18731802722513862802, + 0.18688621104479105628, -0.18195822286485816011, + 0.17630991220241903905, -0.16664061122259038461, + 0.15669036928583165991, -0.14330751255436768865, + 0.13017101651656559635, -0.11425277892891877451, + 0.09914559671375984540, -0.08192064687938230283, + 0.06606144677240954888, -0.04871693794860821464, + 0.03324170357821584765, -0.01684493813854627542, + 0.00273708326593534836, 0.01182514847438026484, + -0.02378566857028384385, 0.03584787511311805092, + -0.04511512892121883472, 0.05425353880190454670, + -0.06052615486580106147, 0.06655979146428958604, + -0.06977314041127101463, 0.07274780487591613054, + -0.07305058090718304087, 0.07320891258080362840, + -0.07092761468766348165, 0.06866897568248005179, + -0.06426419885456373382, 0.06009837690904373808, + -0.05411691571392544808, 0.04861558542893729823, + -0.04164216314051700368, 0.03539173374139142209, + -0.02800374902975858935, 0.02156271076724695576, + -0.01429079792178605812, 0.00815401827926042974, + -0.00145050617454989283, -0.00397781868981644544, + 0.00976123000832482615, -0.01418503634264718823, + 0.01880982968107562311, -0.02204887652666418646, + 0.02539267039464854214, -0.02738095720811087666, + 0.02943165940356826105, -0.03020764768113494078, + 0.03105012938461845437, -0.03074029710647357277, + 0.03053728987766025915, -0.02933485837395841470, + 0.02830401416885677118, -0.02644485156595319589, + 0.02483399821795308215, -0.02257172562591397771, + 0.02063430471656243353, -0.01821652188944827833, + 0.01618902691524121487, -0.01383635045055345292, + 0.01191931035437952639, -0.00980860139556665421, + 0.00815230141392810949, -0.00640507618854742420, + 0.00510080048521225921, -0.00377739242502391371, + 0.00285453803079736878, -0.00195414156700466583, + 0.00138311730213742890, -0.00084941669009575623, + 0.00054982912602153722, -0.00028152483131873153, + 0.00013478861363643130, -0.24892604313593230669, + 0.55070215055372750967, -0.48676198961813937904, + 0.52878960622783732770, -0.45424585817582013858, + 0.48591137576003240461, -0.40146614544826825233, + 0.42370883887769628107, -0.33053159803503667780, + 0.34474121959334025345, -0.24442973056323447079, + 0.25239692607298103155, -0.14691737882278660399, + 0.15076388652877176222, -0.04237161586350889075, + 0.04446207589480478256, 0.06439484457524521921, + -0.06155670150470049506, 0.16834774947833766601, + -0.16223483155876067263, 0.26446705731484970725, + -0.25265197547109519149, 0.34799476569142573368, + -0.32827487158260898470, 0.41468376440178761344, + -0.38520218786111670717, 0.46103553609282532655, + -0.42039185293472786098, 0.48451386965238707472, + -0.43185791314461452473, 0.48372167397823706558, + -0.41882421275890979739, 0.45852857805439600769, + -0.38182315958282536661, 0.41013834954507855102, + -0.32272957558491516261, 0.34108729748335175902, + -0.24472216081380984698, 0.25516774179629309049, + -0.15216839124035563824, 0.15727427972439528281, + -0.05043264595351347468, 0.05317484652881588475, + 0.05438812349118683082, -0.05078671479463467420, + 0.15579200901397294299, -0.14804492258161125462, + 0.24724893090900240677, -0.23220723970369219757, + 0.32260775736099006616, -0.29746797030623878255, + 0.37651078139312976756, -0.33901675302948119928, + 0.40478938211852111273, -0.35341435157114198251, + 0.40481281980426248035, -0.33890735738916266673, + 0.37576189982159124980, -0.29565414856154653700, + 0.31880097507338178708, -0.22583723777754433071, + 0.23712563441180728452, -0.13364212717327214608, + 0.13586951533655547419, -0.02508996331689766421, + 0.02186189638446658923, 0.09227952241461205574, + -0.09676219981981543095, 0.20986746001341105572, + -0.21108619363157199444, 0.31859841888265977294, + -0.31204503288738572042, 0.40959461751356396331, + -0.39112972056092926154, 0.47489864161559841582, + -0.44111491709598049660, 0.50819162364682046729, + -0.45675260377030818537, 0.50544676006579891681, + -0.43536957068169190865, 0.46545494793056196858, + -0.37730578227603389641, 0.39016122596313917992, + -0.28613538740884247868, 0.28475838443127993171, + -0.16862288993768612122, 0.15749797362176054527, + -0.03438395871156484096, 0.01919890934006330055, + 0.10475684030562452953, -0.11754074171595738085, + 0.23569148464538561272, -0.23939378609657901986, + 0.34518649332186601697, -0.33354934520867507430, + 0.42119150937536165014, -0.38905676085223717120, + 0.45418756743364474548, -0.39814461173622905932, + 0.43844120466236835565, -0.35737295127871610001, + 0.37301738548627966230, -0.26846995090307795850, + 0.26240440068136439145, -0.13871220438014600362, + 0.11662049627017984088, 0.01926644711306814417, + -0.04929310442079244681, 0.18830842890932314448, + -0.21643465844654177777, 0.34821697700710046997, + -0.36383163397442574993, 0.47782354246035402268, + -0.47074734384377409091, 0.55748425491219910644, + -0.51930719817848192132, 0.57176596697473780484, + -0.49716567398442984560, 0.51200792338136591475, + -0.39987104249429616942, 0.37839486363049090745, + -0.23255191007534806169, 0.18116497606040476986, + -0.01056096377303906639, -0.05938604012101093149, + 0.24122207799789727178, -0.31434657492031492509, + 0.49059822295593974451, -0.54915920643738080908, + 0.70174924664112192652, -0.72798716449983702503, + 0.84017421496216382337, -0.81909101054558197674, + 0.87834340829338708456, -0.80056581881089439179, + 0.80129721074024873317, -0.66555787856143922010, + 0.61122138484887633680, -0.42593276064831325778, + 0.32994616259222103727, -0.11335983368595288490, + -0.00159973787643288802, 0.22303597622915408150, + -0.32765221200521038591, 0.52289072849282469679, + -0.58573233149910297612, 0.72447638128371460997, + -0.71801619023541007891, 0.77719070529551226301, + -0.68445380328163940575, 0.65470314771866533476, + -0.47524137321570425474, 0.36597483589678186933, + -0.11956144975966648270, -0.03911930382863518935, + 0.31271447041279804013, -0.47271651802373809703, + 0.71913440317275201252, -0.82258844310978873615, + 0.98384132656850242782, -0.97655088085993446700, + 1.00648125735587656848, -0.85467251491186491119, + 0.73603035329365984474, -0.44256026585637775472, + 0.20094541816273628343, 0.18455961470114951029, + -0.47595476211059267735, 0.85928053670513915296, + -1.09009141930582953428, 1.35201661824122032485, + -1.40377421815429692664, 1.43814236935668837702, + -1.22984665226680234262, 0.99393550708594780030, + -0.53318857030201249891, 0.09422300047126874745, + 0.48749293536822480011, -0.93582091723120175430, + 1.39323144436611867647, -1.57473840051608027224, + 1.63209232528822001385, -1.31274458452386433294, + 0.82631075462194825132, -0.00341286152750289260, + -0.84375550758438644383, 1.77415756366738608385, + -2.37774725378083351401, 2.65621295385104971842, + -2.21906145395730991510, 1.20286308650637829842, + 0.49940847231607321532, -2.31011817016962250904, + 3.78037444629038077437, -3.80515362590391026387, + 1.75179972611158052409, 2.72685046354992843831, + -7.52425239698525682996, 6.55251073439715447932, + 15.14136800650187097972, 10.52114460979744592350, + 15.21911583691113278860, 6.39328678795770333210, + -7.41011180789404999558, 2.53239353046181792095, + 1.89997011468264598300, -4.03211079373534264647, + 3.95948143261477669697, -2.56613291921550068508, + 0.70567301299961449068, 0.92189152649360672775, + -1.99004520307769516840, 2.35497733792939101249, + -2.13093891673292334943, 1.45786296077691401862, + -0.58458244299576245240, -0.32914117618479610261, + 1.09205127582772809625, -1.64196428390098714267, + 1.89834118993075984250, -1.90130264214295885417, + 1.65378421918737950058, -1.25349834069664534120, + 0.73612280128129647938, -0.20837703281842834269, + -0.30260372847880728786, 0.71243438485591581433, + -1.02319543968765080955, 1.18346392458882387899, + -1.22658378924620303785, 1.12946035541972400473, + -0.94740308180195964560, 0.67360009642812412878, + -0.37220585253240795476, 0.03984880747310132892, + 0.26203066774266553507, -0.54297109512606245296, + 0.75153830190566361935, -0.90830719106667090479, + 0.97439216444670484485, -0.98186272576789634936, + 0.90309613902206942182, -0.77901799702086282906, + 0.58968292214119222283, -0.38072970323915927837, + 0.13554310699301685972, 0.09977558518740162197, + -0.34242375698663823913, 0.54923254085773898225, + -0.74074008907576838201, 0.87877003727208169437, + -0.98854912211655687759, 1.03755684793826774559, + -1.05574680113225793932, 1.01575088086706899482, + -0.95130213322205736670, 0.83889955801219684428, + -0.71453893482129404724, 0.55694098646817702392, + -0.40268386767241776125, 0.23107738465042826359, + -0.07776568008901044160, -0.07869797608855501336, + 0.20473920000220752202, -0.32346178913142709099, + 0.40401499695541082113, -0.47156680482878715610, + 0.49816112435228793176, -0.51098349554888367052, + 0.48473367122981220190, -0.44821320133819947396, + 0.37824620161964511711, -0.30462224077819455292, + 0.20559898993506980913, -0.11123208420112820627, + 0.00048939136838098093, 0.09700617916370998794, + -0.20222805569632520961, 0.28657214230070643390, + -0.37145946291103920656, 0.42972160198810321896, + -0.48354851297556766809, 0.50743144889387870045, + -0.52445702716831366086, 0.51081221970766510498, + -0.49043124799692355831, 0.44107170474478413214, + -0.38732436984004525726, 0.30827206154428765661, + -0.22887405610282010593, 0.12921997271399962570, + -0.03430039899403965892, -0.07513267417005277393, + 0.17439879391046470003, -0.28241241393704713536, + 0.37511141357571664567, -0.47135714053504468302, + 0.54795319780702955725, -0.62391779524201285145, + 0.67709024209558787977, -0.72677391605658414608, + 0.75193042009483201937, -0.77219381006011145185, + 0.76765446152624772225, -0.75824702559641032895, + 0.72512758560489010140, -0.68843905734490706827, + 0.63028615681805300053, -0.57088262017610569288, + 0.49312887699507468309, -0.41714558767805420825, + 0.32645879457507126498, -0.24092395038637881566, + 0.14452280493582114751, -0.05668143943991451467, + -0.03831764255470238023, 0.12162083376040949689, + -0.20877360511826736911, 0.28160750966241454574, + -0.35559110744117350400, 0.41331795972296492270, + -0.47023771530942876096, 0.50974529002267632283, + -0.54729236587931584523, 0.56707869842696045914, + -0.58454494984790283940, 0.58466763527417953128, + -0.58283469108620811205, 0.56474594512201969909, + -0.54567310605526375689, 0.51196782393473438955, + -0.47870788582312689963, 0.43281493936504489284, + -0.38908861657813875734, 0.33493585158562327875, + -0.28479445969482147794, 0.22647572487084036141, + -0.17397867061964356061, 0.11544725974131554713, + -0.06437624369352540343, 0.00918394268989449099, + 0.03718981402334868569, -0.08609474250839763143, + 0.12517992831798951947, -0.16558849303140441012, + 0.19557537424421861383, -0.22608570282573045573, + 0.24598101508777894808, -0.26600170198572814506, + 0.27560235127572135783, -0.28529882505267295523, + 0.28511358117761886888, -0.28530805972459727382, + 0.27643891371935142010, -0.26847644000729531388, + 0.25247266340686536079, -0.23806653923132489736, + 0.21676479007934959520, -0.19783454496424515701, + 0.17319773455557191388, -0.15171172693402698584, + 0.12567795717664628774, -0.10351098460664354128, + 0.07786187882016040729, -0.05667597056016079188, + 0.03293135102568308520, -0.01408543019169738834, + -0.00657125899438328141, 0.02207973409034850662, + -0.03884341766405001450, 0.05040422049219203671, + -0.06285815531255829758, 0.07024312477191040072, + -0.07833950753882547302, 0.08167003645663367672, + -0.08568565426151310283, 0.08537792814399740304, + -0.08585052602415998990, 0.08254464378237437450, + -0.08019647624725073642, 0.07467613351919169529, + -0.07033147513594018019, 0.06344096453411947334, + -0.05794420329665193187, 0.05050912149898040271, + -0.04464949565199197862, 0.03740680204115004459, + -0.03185493190011407655, 0.02539695009949701973, + -0.02065713965596042631, 0.01539281483409480136, + -0.01177373994949019141, 0.00790904974579188270, + -0.00551400015504532968, 0.00305195514280329292, + -0.00178834490301122188, 0.00054759225118903936, + -0.00015408139683603656, -0.00019617717370635178, + 0.00010782263200077746, 0.44508977767265794911, + -1.02283642518225370566, 0.86918644300515546242, + -0.98043424984515759046, 0.80582597081430007435, + -0.89641200980738777737, 0.70209200249851866360, + -0.77375813198465459575, 0.56195449672983155409, + -0.61739933237842847813, 0.39126026894587634386, + -0.43405397648071875061, 0.19753891743428092509, + -0.23199108019583383755, -0.01028402428243826820, + -0.02069927807289547242, -0.22226003674869992954, + 0.18952516670081778760, -0.42786515741247727052, + 0.38805736595635603736, -0.61650576414995328367, + 0.56447112398487075957, -0.77806164874165384404, + 0.70909149970148388498, -0.90344136294076049509, + 0.81354585601541551387, -0.98512158582068076740, + 0.87128393542528359550, -1.01764016259535483577, + 0.87803607906462255439, -0.99801178766455622693, + 0.83217883553499616411, -0.92603629563372968914, + 0.73497910576850611353, -0.80447237014111272480, + 0.59069178852439963023, -0.63905428452332102562, + 0.40649168086700682156, -0.43833604829652444979, + 0.19222808665926299776, -0.21335592236169098612, + -0.04000000097176021480, 0.02287558175594005955, + -0.27643948837801968210, 0.25604979949221468027, + -0.50242920735126272991, 0.47136979108452703446, + -0.70326410213127488191, 0.65445788468614429778, + -0.86513384837223727963, 0.79231187507204814402, + -0.97608205961025640285, 0.87425175871021543195, + -1.02692436151335542149, 0.89279247163738129078, + -1.01205888149139489052, 0.84437525583171280097, + -0.93010194770200338432, 0.72989178870264892485, + -0.78428571312150208161, 0.55494166475983985887, + -0.58256349249644101551, 0.32977555311532286142, + -0.33738299690160766797, 0.06889336434538356757, + -0.06510717099636585681, -0.20971136776021689907, + 0.21491365607795850923, -0.48564382270671191399, + 0.48158721802245962884, -0.73749138849298456755, + 0.71358211988198094744, -0.94442346597576520839, + 0.89099890600147335640, -1.08790490478177281908, + 0.99709414264366835745, -1.15339661116074188030, + 1.01992154207313201475, -1.13189988949188813372, + 0.95374161132707369060, -1.02119362945030145440, + 0.80004956813747651889, -0.82661797220606092473, + 0.56808252224225408433, -0.56127645114627966461, + 0.27469264082477956590, -0.24556179443725112410, + -0.05648636454350901975, 0.09404159676015234892, + -0.39659746610162882607, 0.42686466533875466745, + -0.71379511647374616068, 0.72058586722700201932, + -0.97603487581200143453, 0.94422894723330297317, + -1.15422098682962581684, 1.07139354066481118366, + -1.22544570024831478428, 1.08342256741639886286, + -1.17599919491195348265, 0.97216599555611649119, + -1.00379737939842161865, 0.74198401731305607676, + -0.71987540131364835538, 0.41065212837538395130, + -0.34863458849935630157, 0.00889211516269770678, + 0.07338561749279438884, -0.42164072153183529412, + 0.50031081911219266178, -0.83193453767660230369, + 0.88124177484173149555, -1.17059805362829072450, + 1.16580612062963928643, -1.38986821636076873787, + 1.31047776066340460055, -1.45207321268915867662, + 1.28499411301834043364, -1.33579689832859460630, + 1.07804767891441644068, -1.04087016849643032579, + 0.70134927041213379617, -0.59128509209787705192, + 0.19118747404542044133, -0.03521848564395468895, + -0.39323116488816245440, 0.55841561353847446458, + -0.97506929640861383923, 1.10708362374665369998, + -1.46872925484800886942, 1.52510331025546297390, + -1.79169311425600730203, 1.73654126707801204077, + -1.87808662428867778615, 1.68897775042304720827, + -1.69211322954374066008, 1.36602453515527955119, + -1.23903357926540702572, 0.79612819151533209538, + -0.57116431082005891806, 0.05517491324822112325, + 0.21342932570563363792, -0.73914131355627210596, + 0.98116003882915203693, -1.44223266548667838904, + 1.58240126446767348511, -1.90630990863539029334, + 1.87876670063590101023, -2.01034942142341366278, + 1.77458627847272842892, -1.69163332518996711862, + 1.24682916384219910633, -0.97218662380089604369, + 0.36606890358495725035, 0.02774125125270622202, + -0.69944211368106601334, 1.09671072624372123450, + -1.70324502315363512928, 1.96479751531745150395, + -2.36670765670708904693, 2.36218809871275814416, + -2.44841580741782172126, 2.09649232940916441237, + -1.82536971262108904668, 1.13263942002057937941, + -0.56535604680004902800, -0.34931705282391056766, + 1.03732694091078969656, -1.94804329037403989311, + 2.49210531635967313946, -3.11291944040401924454, + 3.22887791400330526059, -3.30516772571822237126, + 2.79875883152573790014, -2.22810942503660314173, + 1.11767841786991750652, -0.06151102322973400066, + -1.33732222168263281681, 2.41410344726619019440, + -3.51265636488364885182, 3.94720656360043520294, + -4.08369099671833168941, 3.31436323338834437635, + -2.14387721384825846727, 0.16427378813282544900, + 1.87376540043128136936, -4.11302687139543277084, + 5.56814317288179250198, -6.24426467914412963722, + 5.20311161002846311874, -2.77337529830885731741, + -1.30274178390884065593, 5.63816777817953163066, + -9.15633456552399138673, 9.20461134800343927509, + -4.26523156874811615324, -6.49539784294017064070, + 18.02112718256827506025, -15.70123760175066252032, + -36.35173179781369157126, -16.89168135610492527121, + -12.15843617939687071328, -5.12715083004321847682, + 5.93928745676061176084, -2.03274557675847056259, + -1.51451009252370027980, 3.22457972631658007501, + -3.16784045871479191803, 2.05746726843837457466, + -0.57042250337407318650, -0.72741459330420699114, + 1.58069397183810012031, -1.86855356052987997550, + 1.68819483339611720041, -1.14581087658173763622, + 0.44620696081727234672, 0.28850096967280602911, + -0.89963063118378705507, 1.34306835529483636904, + -1.54876794465888689700, 1.55439912431969551321, + -1.35675743862027275988, 1.03952607928391715930, + -0.62575648606060352286, 0.20627752262105078507, + 0.20263126292798566697, -0.52806841865235820688, + 0.77706481974853802708, -0.90314868717861751524, + 0.93829948971635723787, -0.85876809208591531331, + 0.71404422866290240268, -0.49346507903884456736, + 0.25353426903233855505, 0.01359861582978253575, + -0.25366326835885133484, 0.47938345867846576809, + -0.64455582752186413309, 0.77067292565377065738, + -0.82163216900163649203, 0.82806135946382519730, + -0.76293003598903885720, 0.66389032989737928325, + -0.51011541151129768945, 0.34296730962854332647, + -0.14434496157897311330, -0.04408038983469282635, + 0.24081397165276860473, -0.40659137416184176761, + 0.56252897969290927005, -0.67341740450394871331, + 0.76406253412745739340, -0.80384082239861698316, + 0.82127836286434341417, -0.78993478321866505976, + 0.74129856130747628917, -0.65208437343666902919, + 0.55552978353206972084, -0.43018831796383921739, + 0.30970241597886155605, -0.17315843824168436482, + 0.05339065771050366394, 0.07105813907723647349, + -0.16907038339904245650, 0.26336720973583410688, + -0.32507080628234136244, 0.37849185362108217490, + -0.39712907310076922540, 0.40684533343248008297, + -0.38332480530026880050, 0.35366125923260804953, + -0.29529911254294649581, 0.23606060786948154795, + -0.15459775318311497205, 0.07888367497645414061, + 0.01180071505173149737, -0.08989045648726076698, + 0.17599691846628615077, -0.24343218337725786027, + 0.31310492203661655086, -0.35953775050177311234, + 0.40419368103845898510, -0.42298504269968256741, + 0.43803134159363332767, -0.42666344101943859402, + 0.41161805073163254542, -0.37154446380390043769, + 0.32964370862663666673, -0.26568715973627915483, + 0.20310966070746494516, -0.12254989053802764487, + 0.04740670179176879884, 0.04108950702610858485, + -0.11984909290199109722, 0.20731303569443726431, + -0.28094752401685890719, 0.35908932278526367599, + -0.41995843106375413400, 0.48195542190018864082, + -0.52419015712949301733, 0.56522971152364476222, + -0.58514314559338431732, 0.60270049273036974125, + -0.59893526003181163375, 0.59279642060213533217, + -0.56623153911126877791, 0.53829470936551315763, + -0.49175395372846436581, 0.44565857401070207988, + -0.38347477186873413224, 0.32411597970872840779, + -0.25161055081227234886, 0.18459837826565755892, + -0.10753409130926362691, 0.03865274404790749324, + 0.03728867755777333370, -0.10257441363210667573, + 0.17224806543860243790, -0.22920329467451441841, + 0.28836034827747436537, -0.33328377121196645083, + 0.37881682809333583339, -0.40922641281965271842, + 0.43929554114256019748, -0.45399623791761062330, + 0.46804081107410278051, -0.46708395142408032363, + 0.46573388328452991480, -0.45028521013336758605, + 0.43519126547796882498, -0.40732938218323239132, + 0.38093584726485024694, -0.34340527704596701675, + 0.30868952957031164930, -0.26463275381757944693, + 0.22483545827655807003, -0.17752659732684564209, + 0.13589376266994146469, -0.08849340288106841146, + 0.04804782517726757796, -0.00339434389327539394, + -0.03325051867275744671, 0.07280246605507072200, + -0.10357793254215029444, 0.13626590148467246366, + -0.15972928895170029895, 0.18443720607400271305, + -0.19979962175756529885, 0.21606033940638000312, + -0.22316551550288299399, 0.23111777785399506557, + -0.23037929736043874507, 0.23068757493357563981, + -0.22299382771604786546, 0.21674101642871304585, + -0.20333831788591938405, 0.19190195856637828897, + -0.17426650869157830903, 0.15918903864789502034, + -0.13889789449805403643, 0.12176061058916207158, + -0.10037072175734530755, 0.08267975799183877039, + -0.06162252488344940188, 0.04471338467642767267, + -0.02521030363106748634, 0.01017549780234287826, + 0.00682158687747107424, -0.01917930755427830689, + 0.03302187067440456869, -0.04221019742720863444, + 0.05256106553945804477, -0.05839405398980666156, + 0.06521194037313553238, -0.06778404336239164663, + 0.07128810362273466095, -0.07093039044267017423, + 0.07154933782044707591, -0.06877280508032773687, + 0.06708375899342401694, -0.06251507767311374753, + 0.05917756571622239531, -0.05349266811634876412, + 0.04918308083873165065, -0.04304369979832527171, + 0.03839504732452599794, -0.03239272408625110122, + 0.02794381651458949581, -0.02255505110132232510, + 0.01871228337707497164, -0.01426747871965153985, + 0.01128131444118630165, -0.00794903362503778660, + 0.00590612271123511397, -0.00369300928781135214, + 0.00252371248590957170, -0.00128928610250669015, + 0.00078928191888214243, -0.00027377956112764460, + 0.00013745678214764474, -0.23249802019049525814, + 0.55668432602463802095, -0.45277644659753341072, + 0.53227667388444865892, -0.41646559088030182805, + 0.48410919882651337609, -0.35702099710292029000, + 0.41372938347107485191, -0.27657840016169321640, + 0.32385217851643899323, -0.17841540196981037214, + 0.21829363599935833196, -0.06685464660059371733, + 0.10184355768585891255, 0.05289373869542800255, + -0.01992154638487689949, 0.17494752373961047764, + -0.14088060594728027408, 0.29301928959008227693, + -0.25465724063285333223, 0.40072516412370157157, + -0.35494472455217668250, 0.49192237407030009466, + -0.43585212667231387762, 0.56105965134165336483, + -0.49225437845539110615, 0.60352212277915839866, + -0.52012696611060593721, 0.61595066521120656056, + -0.51684475470838298072, 0.59651502206544870788, + -0.48142431369625737769, 0.54512042668539428814, + -0.41469018178352029524, 0.46352919163130396063, + -0.31934788749870390845, 0.35538177570247242443, + -0.19995026876170843289, 0.22610623224930581632, + -0.06274867069642647843, 0.08271058998739976020, + 0.08457318400193283847, -0.06654055660008792450, + 0.23327769032583739461, -0.21255644266570117296, + 0.37405146632101893278, -0.34594075530512552463, + 0.49756231478263895918, -0.45757780837496675463, + 0.59506659037574294313, -0.53925225964505396625, + 0.65903169545877504643, -0.58426419648931160467, + 0.68373308001578303461, -0.58799703653658164093, + 0.66578185778210152712, -0.54839368427394841188, + 0.60453853445714778037, -0.46629727562312661693, + 0.50237084339164350677, -0.34561703157152673382, + 0.36471962033213478627, -0.19328745599833005442, + 0.19994614147177608432, -0.01900035195891265974, + 0.01894726699931936764, 0.16529637785622486312, + -0.16545934737458653507, 0.34612201679824061706, + -0.33935952682642145373, 0.50937834376351087684, + -0.48873652006309969975, 0.64140742491236812928, + -0.60057558300622737590, 0.73012382585966328907, + -0.66400277392209905436, 0.76613734476702155529, + -0.67136772101431207993, 0.74377105014993993848, + -0.61917175685685210684, 0.66187443007121460337, + -0.50874163681619344324, 0.52433445125493349792, + -0.34655653484700804645, 0.34019953566913097021, + -0.14415312032732482961, 0.12335354944294529833, + 0.08243944524205833180, -0.10829126349482874614, + 0.31374638473087118617, -0.33407297827000242973, + 0.52834377840283708316, -0.53227393565673764009, + 0.70472335017150644632, -0.68212347732269296152, + 0.82339424105844305490, -0.76595423777283011546, + 0.86904428603766847861, -0.77131464356629186874, + 0.83254672055102951767, -0.69281072420652067834, + 0.71257724936851318809, -0.53343935852775559159, + 0.51660680950423687463, -0.30518808232965344285, + 0.26106199117248585218, -0.02871762262365501472, + -0.02949900126613854215, 0.26798576972368098881, + -0.32426137500658586132, 0.55200160624196847881, + -0.58903412694209622558, 0.78880047965139576949, + -0.78995866053723073907, 0.94625680879519757926, + -0.89772946303161349491, 0.99896532383542746558, + -0.89188008612443037126, 0.93235845863283306478, + -0.76458520511195737779, 0.74604146986145192244, + -0.52337678975764856393, 0.45574231622054495183, + -0.19219060004345947523, 0.09333392025045668394, + 0.18973415403756116460, -0.29545835333512510124, + 0.57137415510868405644, -0.65579681678645496135, + 0.89583108978474323969, -0.93070797512477332347, + 1.10822142574585713604, -1.06967775178194091090, + 1.16471644697466381047, -1.03782596837726281969, + 1.04149670645637604238, -0.82425053762506783617, + 0.74207116686272567296, -0.44789628827578847892, + 0.30127686080923715695, 0.04070752541732942931, + -0.21559126309084297723, 0.56319989202063425182, + -0.71959573082966110658, 1.02332793845013436673, + -1.11114191895677394406, 1.32273837294594875935, + -1.29816055637428728886, 1.38095132572594869735, + -1.21708723822120790103, 1.15638237227452034261, + -0.85280612890078355548, 0.66396212407029731040, + -0.25262138332276629082, -0.01588156087054487173, + 0.47103214460002479358, -0.74191878211444906022, + 1.15357621088123707409, -1.33392696995948911720, + 1.60898370801269785524, -1.61176024477343982078, + 1.67604514943933424753, -1.44689670306257878174, + 1.27250508695763064893, -0.81570769242558494039, + 0.44331522042630361335, 0.16200059664830887551, + -0.61554413561604837124, 1.21887875133306655684, + -1.57721709077969185486, 1.98802629847347223091, + -2.06180081718462115958, 2.11040709353274413829, + -1.77017082919541035579, 1.38835124898718875741, + -0.64637925054535472214, -0.05821614859134709163, + 0.99148388396323927640, -1.70890149327622009601, + 2.44100171471338311946, -2.72934606745985108844, + 2.81909705268711041626, -2.30395644643577623967, + 1.52145222097855925547, -0.19859911842436586693, + -1.16316914557125250518, 2.65993486949186319634, + -3.63392014104135396835, 4.08932893875377878601, + -3.39988849689921490693, 1.78537626253131143095, + 0.92671190785142176782, -3.81113160563622876964, + 6.15069560943301762990, -6.17657310433698381047, + 2.87732978169126774048, 4.30305434876685755086, + -11.99351811772444698079, 10.45375514466154243109, + 24.24138724259919541737, 8.46571770181201621597, + 0.00052079753648296421, -0.00040190626729805321, + 0.00084679153485494555, -0.00001521000595557011, + 0.00027398548342579915, 0.00073512373866757206, + -0.00064260917193460180, 0.00180417053214422204, + -0.00184794280435666850, 0.00312747526494955123, + -0.00326900104639994736, 0.00462442772676165820, + -0.00481864772506705990, 0.00620253007552077924, + -0.00640026874402108495, 0.00776236406301094358, + -0.00791300503081062388, 0.00920302798065724542, + -0.00925732816257604681, 0.01042778261291689088, + -0.01034068588009001005, 0.01134962380524164732, + -0.01108292819341987964, 0.01189648836463305832, + -0.01142121994003524911, 0.01201580161974482794, + -0.01131415408743564020, 0.01167809054720951936, + -0.01074480307056118085, 0.01087941698956511501, + -0.00972248381559076384, 0.00964243162447692148, + -0.00828306593603950897, 0.00801591069205094889, + -0.00648772113564693564, 0.00607271279302288788, + -0.00442009333208929611, 0.00390617999497150674, + -0.00218196050828947793, 0.00162510252038028120, + 0.00011244329115171834, -0.00065253523439866138, + 0.00234317930148224144, -0.00280671343515757551, + 0.00439206963012703667, -0.00472303915390652387, + 0.00615043791840855312, -0.00630044005071912511, + 0.00752662557158520831, -0.00745836940641917811, + 0.00845275067140984805, -0.00814298508547042776, + 0.00889017667069237801, -0.00833178368691219612, + 0.00883319637826936697, -0.00803623003785731461, + 0.00831051656282966004, -0.00730202300180771754, + 0.00738424999615420238, -0.00620677998759457551, + 0.00614628188237804993, -0.00485509969866834701, + 0.00471206962961219934, -0.00337116686585749344, + 0.00321214817259697118, -0.00188928139938498345, + 0.00178183314632969275, -0.00054291145445845089, + 0.00054982347224758062, 0.00054693365706884323, + -0.00037341667177797705, 0.00128305968162900391, + -0.00090649000418338349, 0.00160212889649769897, + -0.00100605158723758494, 0.00148233154909979139, + -0.00067292207076228650, 0.00094771717591868353, + 0.00004555942976554221, 0.00006840643276674164, + 0.00105758677948408156, -0.00104379941506538786, + 0.00223364027472677980, -0.00224450217332825865, + 0.00341780756354929851, -0.00337010909935793425, + 0.00444304777039034038, -0.00425467550844754652, + 0.00514926784919342989, -0.00474881254646022499, + 0.00540260762998504094, -0.00473885126081148057, + 0.00511395021393009231, -0.00416414370591024294, + 0.00425444856961323861, -0.00303025510467323225, + 0.00286584487534922950, -0.00141591080922636955, + 0.00106360228953643701, 0.00052805504172830011, + -0.00096860472109906411, 0.00258883309394235695, + -0.00299368833279022592, 0.00451100320350257718, + -0.00474483148909560400, 0.00602413561108030952, + -0.00595644473049580792, 0.00687638514313882940, + -0.00639952971108802022, 0.00687061902247397636, + -0.00591744811328860035, 0.00589861045859683703, + -0.00445726125998958077, 0.00396822023559678747, + -0.00209146638737344945, 0.00121846382855522956, + 0.00097471559036164945, -0.00208192436083393020, + 0.00441422459554120360, -0.00555527890460705623, + 0.00780898852157403157, -0.00875564432325425489, + 0.01069975716812583341, -0.01122676212471061460, + 0.01265077333707491890, -0.01257153319225289695, + 0.01332173335505935398, -0.01252382586749448828, + 0.01253649862836290173, -0.01101093881195230537, + 0.01033605632644048027, -0.00819383159629856472, + 0.00700296224974998778, -0.00447305153869719408, + 0.00304652115755459432, -0.00045160667461188378, + -0.00085737124043553422, 0.00314795500060798070, + -0.00397051990250311612, 0.00560659413059132541, + -0.00563034642788333168, 0.00635639999264512104, + -0.00540084417981535284, 0.00512744995647752312, + -0.00320707557070130239, 0.00206115519590946384, + 0.00058154647792309667, -0.00224507645764156780, + 0.00515285741726696431, -0.00679182627396027975, + 0.00936228511767712643, -0.01034555263666990695, + 0.01195609413582931352, -0.01171113514484389481, + 0.01188295582045619317, -0.01006783606005928755, + 0.00863542771858391567, -0.00529363126244009313, + 0.00253149685355114539, 0.00182341364209510025, + -0.00517166853847011391, 0.00959446876349553598, + -0.01243111553036749771, 0.01574120805366409706, + -0.01689098479978232842, 0.01802117747482252785, + -0.01663593374186915150, 0.01506774136407418828, + -0.01105825775361300549, 0.00720798532964134989, + -0.00153584308046629992, -0.00309929208358993881, + 0.00847134758167176344, -0.01160106929956688376, + 0.01426273829567001328, -0.01362732547110028815, + 0.01178656293204145833, -0.00639679984755183329, + 0.00017938864620924985, 0.00848761545283332509, + -0.01615447360741881222, 0.02382485401649431234, + -0.02768419044057904982, 0.02877889482690323963, + -0.02388652121203021714, 0.01528668148022546171, + -0.00162605046423334163, -0.01247162704983761396, + 0.02591476189131122418, -0.03216820142540192939, + 0.02965907221571128030, -0.01387770969262426199, + -0.01120582373395884700, 0.04061182280895620639, + -0.05804583552485841069, 0.04766045066510570666, + 0.00609982014281321323, -0.08652217626112333748, + 0.10806696084114807144, 0.17843682378793163101, + 0.47842391227520308927, 1.45825968300747077500, + 0.83132576462511231785, -0.66723464476680049984, + 0.02171225490928733667, 0.39983948041083283709, + -0.48482075607189756283, 0.33661416896385221165, + -0.10308126766582198508, -0.10646053626150528415, + 0.23111198299028817837, -0.26012796714001290566, + 0.20854516714871929040, -0.10993948511887567665, + -0.00442714422254985186, 0.10485121032524796769, + -0.17534029023886726906, 0.20577192002948105354, + -0.19888456998144313226, 0.15953007320330386820, + -0.10028989920355950438, 0.03077376583883944042, + 0.03611794005561586723, -0.09367360270626558238, + 0.13396250518739630242, -0.15607999855204812700, + 0.15789287799136256241, -0.14351370195760165815, + 0.11471653327137916467, -0.07813411900576229530, + 0.03676690214936276929, 0.00276866973258433876, + -0.03841030208840185561, 0.06521766778617724136, + -0.08317036886105894089, 0.08956488893820782615, + -0.08649968549226806636, 0.07318993624414650567, + -0.05324279800936745910, 0.02699531440582213226, + 0.00132165309775911948, -0.03113691091231646918, + 0.05841768735102845916, -0.08306412741099257480, + 0.10179846633630319774, -0.11538486902816166846, + 0.12152771681129140302, -0.12192700804063212605, + 0.11520460382167241331, -0.10381971930719761932, + 0.08705074567645035288, -0.06779917932192189300, + 0.04565426807492626443, -0.02361002725863552143, + 0.00123380427684040544, 0.01868674362974351993, + -0.03685871199989134567, 0.05089898879580927182, + -0.06192902668022819829, 0.06805168864205138335, + -0.07082860426314291358, 0.06882420201087424694, + -0.06397283198100886525, 0.05519838554790969937, + -0.04468016158978715263, 0.03155715396892788682, + -0.01810135001716836611, 0.00351467629417575363, + 0.00998329693407704055, -0.02325992673822114415, + 0.03426286202690650290, -0.04402288716346459962, + 0.05072640928538115629, -0.05561579631937920570, + 0.05714130427647745591, -0.05676012609673805609, + 0.05316975604513151515, -0.04800830648407070772, + 0.04017229934495260973, -0.03142146096117826720, + 0.02078426272328487423, -0.01007044534691206410, + -0.00163258327056630239, 0.01253667084173202585, + -0.02356315685522314407, 0.03300714531932495699, + -0.04185267825881714560, 0.04852311877943987078, + -0.05410043289906278641, 0.05716128899052499296, + -0.05890041673672323508, 0.05805275664568804173, + -0.05592150673830462854, 0.05138719967417147011, + -0.04584148761603049765, 0.03828435709523574093, + -0.03016492982784246130, 0.02056815127266224327, + -0.01096391735668368964, 0.00048451971329553195, + 0.00941671836057298220, -0.01959614628087994956, + 0.02865069659845986480, -0.03745592224784768942, + 0.04468581116984651075, -0.05125765643928380244, + 0.05594045290343658411, -0.05970641467132457164, + 0.06142793153630356912, -0.06213582749630253144, + 0.06080510679390057488, -0.05852026852608673696, + 0.05435025914140383801, -0.04942130980750284591, + 0.04288162708705998277, -0.03588229904051512542, + 0.02763230013509173841, -0.01928802423607477168, + 0.01009916180967428308, -0.00120737372579644993, + -0.00811646882546787109, 0.01676404233889371501, + -0.02546058023191905689, 0.03314674869729266476, + -0.04055763846009657198, 0.04669456975554708844, + -0.05231192631998033554, 0.05647882444788344253, + -0.05997376795302732100, 0.06193622755687495235, + -0.06316919791166732134, 0.06288082470258132828, + -0.06189502429793660582, 0.05948336225225251545, + -0.05648394959275879895, 0.05222381617578929908, + -0.04754632465088382692, 0.04182429617700739177, + -0.03589618562986157668, 0.02917020836262408309, + -0.02246950185519454996, 0.01522747475251815322, + -0.00824214562196991761, 0.00096289448101352724, + 0.00584587611215306446, -0.01272645609502361455, + 0.01895475032382373803, -0.02507038161175876093, + 0.03039415433526109975, -0.03546651785664508422, + 0.03965557738318532810, -0.04350393592484021188, + 0.04642730018850034501, -0.04896975704422644460, + 0.05059305500231987135, -0.05184039928865975810, + 0.05221651202074010373, -0.05226004765821485459, + 0.05151454705813745399, -0.05050958239010484158, + 0.04882272232034112758, -0.04696951332129573747, + 0.04455656647453761637, -0.04208047188872044569, + 0.03917210366348460732, -0.03630454766671697281, + 0.03312870199818018085, -0.03009027767856921332, + 0.02685674954158559849, -0.02384346650123089772, + 0.02073198419508247986, -0.01790529836345496062, + 0.01505756760715391829, -0.01253846175160943342, + 0.01005426234393985360, -0.00792129909982936149, + 0.00585839848527716124, -0.00414936650725931076, + 0.00252674276792745709, -0.00124327763165168179, + 0.00004694098072166665, 0.00083866354093232347, + -0.00164808909656975278, 0.00218475214209726048, + -0.00266357493118084482, 0.00291286660203342795, + -0.00312586467152849807, 0.00315383686998405542, + -0.00316655972895409739, 0.00303667664035412767, + -0.00290914022684913816, 0.00267684946513049166, + -0.00245906966329445574, 0.00216835792784213135, + -0.00189796130886759826, 0.00158002644754376854, + -0.00128196380477484020, 0.00095592498008923203, + -0.00064410984095413209, 0.00031948461989576708, + -0.09419183791622472157, 0.16219207470702579066, + -0.18109788647452668142, 0.14836637606707658854, + -0.16091014325272201546, 0.12210923450313082572, + -0.12894225774183351585, 0.08489676637148219074, + -0.08700764785635747844, 0.03885804175843953628, + -0.03752493321563430545, -0.01332907757463144480, + 0.01660299069074136491, -0.06857441453678440879, + 0.07213955163058374809, -0.12353856397261292477, + 0.12568824453328605872, -0.17481527755941253521, + 0.17388147303792808596, -0.21912442723832967206, + 0.21357517074023837922, -0.25350571489091411337, + 0.24203895137914635538, -0.27550256607430989586, + 0.25713103216051491628, -0.28332538635573212282, + 0.25744718035071145756, -0.27598364740745778834, + 0.24243351959784947836, -0.25337716610357485791, + 0.21245424684345662336, -0.21633847717697315960, + 0.16880717103897560638, -0.16662037858669298540, + 0.11368247159462982476, -0.10682550778657684543, + 0.05006312410541545466, -0.04027809937051191752, + -0.01843105832304905989, 0.02915825659654877611, + -0.08775002952089905328, 0.09730917696317065158, + -0.15366115158002130459, 0.15995287176078451519, + -0.21202456530303329107, 0.21310334887417931027, + -0.25907973695716435270, 0.25329552495976326298, + -0.29172413520090229033, 0.27785232424115402505, + -0.30776354394729010799, 0.28511302351074147010, + -0.30611337911601727013, 0.27460270229655803220, + -0.28693175976927054460, 0.24712485385584279096, + -0.25166811432168029183, 0.20476308116486363620, + -0.20301579817081033541, 0.15078329643671972704, + -0.14476344537522831124, 0.08943477496731323806, + -0.08154730971172040321, 0.02565644196391832915, + -0.01851524872183305317, -0.03529660370612033166, + 0.03907830424062719993, -0.08828274400090191376, + 0.08631875459822523078, -0.12872831048133981380, + 0.11908445253999626334, -0.15306935414123079564, + 0.13446677678816776336, -0.15913952001926670587, + 0.13111532814901485922, -0.14646238117988374938, + 0.10946777492025722145, -0.11640998136179148137, + 0.07182936252213231731, -0.07219693208631236536, + 0.02227682719819008839, -0.01869122241396221559, + -0.03362475033563452897, 0.03796148078121317632, + -0.08928639320896114562, 0.09088472284329200679, + -0.13771570562104640256, 0.13315393935027808325, + -0.17224791641598369285, 0.15855973639142134646, + -0.18732320444871192189, 0.16237931504535094152, + -0.17923090771171648616, 0.14207124337469062558, + -0.14673226100722991383, 0.09780378271587643335, + -0.09147280331005665233, 0.03273142877035532805, + -0.01810538211934932876, -0.04705028969683502926, + 0.06593420868468305440, -0.13291489838960521275, + 0.15102459861599404345, -0.21448564743899872775, + 0.22631287107797676272, -0.28074672579428372465, + 0.28096043373665602338, -0.32139498330508431412, + 0.30556579697376590188, -0.32829349201371776923, + 0.29360391875871078016, -0.29684794732289027097, + 0.24268844783687518185, -0.22710252572864050857, + 0.15544964164887253855, -0.12435084982652817864, + 0.03983391478452952272, 0.00091369880228362441, + -0.09132414030469050703, 0.13382247988322548693, + -0.22152824742672214131, 0.25675110088994401725, + -0.33260815976823798756, 0.35163376737968538022, + -0.40730190563858481578, 0.40273772891666154150, + -0.43213071903516508954, 0.39953267755793997473, + -0.40014514438697096343, 0.33918746992674847496, + -0.31304223024397875852, 0.22817866575470005519, + -0.18214309391913718894, 0.08252796933302683491, + -0.02780100050672203518, -0.07368151055532057292, + 0.12300316630063674872, -0.21161987716467769993, + 0.24082996183761201658, -0.30262942013516386242, + 0.29929471941645813260, -0.32412581807148205248, + 0.28110189462146828454, -0.26546842709083035006, + 0.18342067213847890184, -0.13248966423033042838, + 0.02121165254855078910, 0.05072314320592521963, + -0.17284182836902853286, 0.24399194249190370165, + -0.35275221468047901485, 0.39776819883882352791, + -0.46816216596921572668, 0.46403924066050589170, + -0.47681183480061528623, 0.40977106036587129800, + -0.35820223509060739042, 0.22988557541046383825, + -0.12486081019244382739, -0.04428069082373820020, + 0.17310507395712107503, -0.34534642645284396867, + 0.45414102149345608739, -0.58233352659798975903, + 0.62415825240054068068, -0.66567958056419251900, + 0.60666853525985742213, -0.54083398213240907459, + 0.37746753995665865977, -0.22097278910142387209, + -0.00824806697498515519, 0.19548239658498803295, + -0.41202175957256009786, 0.53836436893954719984, + -0.64579581587667023168, 0.62084920387408515374, + -0.54748798577726343062, 0.33168620047212088453, + -0.08257182800167067738, -0.26498716800997412779, + 0.57274777601593951371, -0.88108543958654017558, + 1.03718464414565181286, -1.08310523282786741461, + 0.88973728611944247202, -0.54844349442678685946, + 0.00489976384975119011, 0.55579083268681428454, + -1.09013459769530807186, 1.33659684865336592097, + -1.23241106475929940167, 0.59708655203207405826, + 0.41044747165573430836, -1.59108268626265614287, + 2.29293623293821990927, -1.88216758140411122291, + -0.26352538770605787866, 3.47559845024492375387, + -4.33252546942134841856, -7.13254219416824497557, + -6.49141135681125014401, -14.48210407128309462621, + -8.41552552066393388941, 6.77840318992035761880, + -0.32404965168956317845, -3.88862613590191497082, + 4.73850434131788489367, -3.25456620543992247718, + 0.92025138808756179465, 1.17606567785156568284, + -2.42062218037937038062, 2.71072155450642826580, + -2.19201416071106969241, 1.20496808485742645800, + -0.05753979178165068847, -0.94857227575248803664, + 1.65805354688819606146, -1.96506214068606910317, + 1.90153957235161619188, -1.51143344968107795623, + 0.92506286091367495583, -0.23400124633942939734, + -0.42829508581612146800, 0.99918623119938143606, + -1.39496404014389474568, 1.61101026959292115137, + -1.62164283976084222516, 1.47236704121828188008, + -1.17662390223455592952, 0.80507152505145451737, + -0.38346465853474942520, -0.01775118960966866333, + 0.38215333500056658522, -0.65610758005132852055, + 0.84356126264191499953, -0.91329887776869311811, + 0.89040781957481707209, -0.76291055358954518173, + 0.57093337685608169796, -0.31376884682981714958, + 0.03773258037574108575, 0.25548957559635876446, + -0.52161031361883158919, 0.76360507697375756830, + -0.94478377629955101469, 1.07670970628485540566, + -1.13256117926400512452, 1.13320728077494403685, + -1.06104791019800548391, 0.94449163804411129242, + -0.77255035855469589290, 0.57800268880176874919, + -0.35301574433026944311, 0.13124053808255145559, + 0.09532814918661973447, -0.29515565334935101038, + 0.47894488745768087901, -0.61925933192443838315, + 0.73089862125022020400, -0.79133855686032972265, + 0.81973353451292108041, -0.79822741747277925484, + 0.74965460121933513715, -0.65980578439358616993, + 0.55391741313183473494, -0.41998318470856293994, + 0.28411873201715714954, -0.13499879422983959709, + -0.00183314805317333655, 0.13834375646479440958, + -0.25071002516495843881, 0.35248174750733601845, + -0.42227209614256366876, 0.47569586233438115874, + -0.49405362305799721545, 0.49505788913645903948, + -0.46253085584447212186, 0.41594400318641494563, + -0.34115935467924413116, 0.25881460393925775909, + -0.15614112733157095581, 0.05422712396562852366, + 0.05905651330403000054, -0.16288683553625166178, + 0.26942999657958871529, -0.35874472288628511674, + 0.44357351161531971551, -0.50530656132607021380, + 0.55761469589132117708, -0.58346984113115962778, + 0.59761933925461641071, -0.58466633230750009176, + 0.56039155032747955953, -0.51090240037677359108, + 0.45281271022624325351, -0.37347264710018263090, + 0.29001917229517953922, -0.19070017146447676426, + 0.09280869769234598166, 0.01488583504266091651, + -0.11530780887415191527, 0.21952618711597920997, + -0.31101964891293892856, 0.40100116469521657203, + -0.47377170782685251726, 0.54091360029394275344, + -0.58772960031510435019, 0.62630314336408754450, + -0.64302260389691656695, 0.65050934915772640199, + -0.63622949347469548442, 0.61329289665702768630, + -0.57015659900895587775, 0.52029941267730994703, + -0.45302237397572864275, 0.38200436957537048377, + -0.29720538566674409298, 0.21230873307544101403, + -0.11773269245002145056, 0.02696446049856396007, + 0.06931488643312866405, -0.15800046782413165736, + 0.24832141794779907795, -0.32771185966134069867, + 0.40544882226610612364, -0.46962224224219423219, + 0.52965156028469362326, -0.57435411398715896514, + 0.61334018500482501146, -0.63618026129904436949, + 0.65267932939269202031, -0.65314439472330565462, + 0.64753960915280606159, -0.62685610066286956421, + 0.60115006118864744433, -0.56201733418422705757, + 0.51951685864140539906, -0.46575260323731171308, + 0.41068478811467745704, -0.34682166575057710167, + 0.28392075887842704862, -0.21479271334534374982, + 0.14889444570320994887, -0.07924688275289849815, + 0.01492145839185844876, 0.05092693846629482712, + -0.10967918845226522218, 0.16810298796157502332, + -0.21807738354786740387, 0.26632752461170006164, + -0.30525457959059110191, 0.34155436549345891128, + -0.36815313452097281344, 0.39171062942384149430, + -0.40566255638742060308, 0.41660889684148189049, + -0.41846410768034753014, 0.41773169719036118419, + -0.40876331387548586749, 0.39792066779035778490, + -0.37994468949857257423, 0.36100585689823200264, + -0.33618453781210960729, 0.31141068063306931446, + -0.28205631414172538385, 0.25376539607451137348, + -0.22215925130900179840, 0.19255716588353649632, + -0.16079532017461384275, 0.13183848745154888582, + -0.10171278219958229672, 0.07500859138456912600, + -0.04792722807365094179, 0.02467500740327805558, + -0.00162368786153293393, -0.01740458337350176202, + 0.03586333232041159780, -0.05030636675610298397, + 0.06400076207579481757, -0.07386154887722712337, + 0.08295212558099560041, -0.08852960304885280907, + 0.09343317969645040244, -0.09524072578368812658, + 0.09654564300247475694, -0.09522523130439242145, + 0.09360649974895952907, -0.08984678104345168725, + 0.08598887135027188933, -0.08045425057561707283, + 0.07498781507145624303, -0.06826393491059730423, + 0.06172091516942627282, -0.05427998539241363218, + 0.04706949290380223194, -0.03925678480645312940, + 0.03166201071910214326, -0.02370273376843754984, + 0.01589710956668752284, -0.00792095838999789040, + 0.59594546208995546888, -1.02661170966368020530, + 1.14183213901979496718, -0.94297974892419078596, + 1.02546852381067776783, -0.79547380963649105823, + 0.84858791349619566713, -0.59170238621918680444, + 0.62054306121954516673, -0.34266115016623388545, + 0.35384694783608749979, -0.06223150653749304206, + 0.06357856231681480175, 0.23350112310610132704, + -0.23337973683172666406, 0.52708300768967331074, + -0.51924190379460233302, 0.80064548582313654901, + -0.77631389183332855097, 1.03693055083504370728, + -0.98803582193427519353, 1.22033551327683165155, + -1.14001442569921329628, 1.33791805665859575569, + -1.22098527960456948449, 1.38030015271803740973, + -1.22364305871293077566, 1.34240969649256336460, + -1.14528022189260525465, 1.22400278361695891149, + -0.98818054709447700201, 1.02991754412551883568, + -0.75972392535603083807, 0.77002241743097221693, + -0.47217272149628791711, 0.45883749446250632342, + -0.14212746869743445033, 0.11482656760597757806, + 0.21033996724203551931, -0.24062098885702531970, + 0.56284530134581090000, -0.58447654879626487201, + 0.89208936180497877544, -0.89356202048784627578, + 1.17541860574063572464, -1.14615720626332739940, + 1.39245334814881771557, -1.32362116660913908817, + 1.52667315266327729972, -1.41191159316292225157, + 1.56683969421571545055, -1.40288075239193776866, + 1.50813602888856101991, -1.29522958048682990118, + 1.35290888727153202353, -1.09501405458531952952, + 1.11091813941862604942, -0.81562052073046564793, + 0.79902509837675950166, -0.47715897747393548611, + 0.44028817294636091173, -0.10526429313948137967, + 0.06247898686304124288, 0.27065705820776170265, + -0.30391805497865359564, 0.61964589403174730187, + -0.62810807223866838012, 0.91173492509435738462, + -0.88162588316120893417, 1.12063277119632864753, + -1.04100788922797304892, 1.22632442169384892061, + -1.09025957154256913917, 1.21734319511887378873, + -1.02286964910799538231, 1.09246658755612346958, + -0.84313039638407549781, 0.86160871325965571188, + -0.56655634591787440435, 0.54572749027856637394, + -0.21925180355369067176, 0.17563540459276325012, + 0.16383984106979235240, -0.21030384075507982389, + 0.54176895869301544550, -0.56949952057027741770, + 0.87134183687239907812, -0.85926546493849342845, + 1.11153848519968612152, -1.04142717756668057305, + 1.22819981548073187128, -1.08696933954639574083, + 1.19850755809518161321, -0.98021482029538664627, + 1.01472683234956706499, -0.72199662642491879705, + 0.68667854152368368315, -0.33131120109663397821, + 0.24246772283955500549, 0.15496599534566463108, + -0.27287915700108900108, 0.68456062765624736688, + -0.80102087199027471875, 1.19450852658901052195, + -1.27605293471864889021, 1.61785229975851607698, + -1.63201386280587645849, 1.89178413496812103389, + -1.81145545342826808088, 1.96640161282633418871, + -1.77411385056390713544, 1.81300138317088088691, + -1.50451827134787463613, 1.43068931289223355563, + -1.01729299727665067898, 0.85008000316661114226, + -0.35898741139987594417, 0.13303022396306027342, + 0.39446170136722619182, -0.63227946721442085387, + 1.14506221028463883727, -1.34103670478069414429, + 1.78466982659155459778, -1.88566239422755832500, + 2.21046270394766564138, -2.17244072441686997266, + 2.34217661277563138356, -2.13872342898469147698, + 2.13857172657293492790, -1.76790255497277448704, + 1.61013047349129578834, -1.09905859648358594782, + 0.82492198499789559651, -0.22838629480848812725, + -0.09494626795332089531, 0.69970272030800384488, + -0.98774874967487080735, 1.51245902049424030267, + -1.67714600436022731600, 2.03829755547225799361, + -2.00525168090596883630, 2.14219065285017329359, + -1.86882331174244820104, 1.76087352848056077903, + -1.25149893678793633356, 0.93000291128843637356, + -0.24373902611686773523, -0.20517044741272072450, + 0.95760444903433972197, -1.40280585920259759369, + 2.07581809220647039993, -2.36481303729198666375, + 2.80795235664042275303, -2.80230850719934698745, + 2.89964313014064600793, -2.51628982265111034167, + 2.22710876515388189745, -1.47551528591909075772, + 0.86475890885101291961, 0.13272933642650369679, + -0.88747074921238477963, 1.90483681361401990806, + -2.54090384771053257040, 3.29555538464906705443, + -3.53158915507848236714, 3.76805458670076154348, + -3.40110205541081889180, 2.99549478950535297272, + -2.00463851364444645142, 1.05731116522040458072, + 0.32628659398489212595, -1.45567634928894706903, + 2.76068872554192346058, -3.52226424987372288555, + 4.17006637937478963352, -4.02139871157654837930, + 3.58186027659860295458, -2.28555369724722989844, + 0.78893317191864598126, 1.30038217640409836662, + -3.15138048826258021506, 5.00775071800061777338, + -5.95117916248415568248, 6.23530949715347126983, + -5.08419550326378466565, 3.04714703702382205819, + 0.20293243902119373345, -3.55444083703427082810, + 6.74743234772333266847, -8.21186439954236213623, + 7.57201773140732470324, -3.74426195039061138203, + -2.31708522851970011303, 9.41791281928177070881, + -13.64631968199630485117, 11.19965524443965598778, + 1.65635779690326345737, -20.91020683117760015080, + 26.03305923876658312111, 42.77627972726131133641, + 23.62141028976840928522, 34.59473447854172434290, + 20.36008057906158796868, -16.43693196389389399314, + 0.94566325588572230920, 9.16022411797918323373, + -11.20211904851593232024, 7.63757220513639190074, + -2.03878559446375229314, -2.99403072467878050844, + 5.97602871333167051660, -6.67250921809408392704, + 5.42134508160879935446, -3.05131595742217776035, + 0.28995821799422477616, 2.12711247522451163405, + -3.83857191375248252285, 4.57897762829465282408, + -4.43629222746750606632, 3.50468613962361885683, + -2.10810102934615528625, 0.45512819759455463986, + 1.12288775131990314904, -2.48667632640009461653, + 3.42441411754898927811, -3.93596210869791152120, + 3.94888427051623169817, -3.58321670262247282679, + 2.86054283847402235352, -1.96114330768593925214, + 0.93627767442539810983, 0.03440671380709783844, + -0.92192482566467448546, 1.58710031975151877326, + -2.04971453849526863422, 2.22452062697169727912, + -2.18191507545940055479, 1.88294748891086882736, + -1.43398736886198685525, 0.82325851135583494322, + -0.17186499083017323097, -0.52609896665472355437, + 1.15451654094260569572, -1.73035358398192351537, + 2.15584551174039207311, -2.46844160456404715376, + 2.59418004392504331079, -2.59271628632356199162, + 2.41233870228056934693, -2.13066957428842052025, + 1.71198430967401749037, -1.24426523903340480182, + 0.69947850795137256341, -0.16757209603251380092, + -0.37978320337840398846, 0.85784670165983745171, + -1.30130369333990869585, 1.63537696348195704665, + -1.90446535844221331857, 2.04570895973179034399, + -2.11383918888976696238, 2.05732693440798408702, + -1.93961643080185330845, 1.71805810374398371110, + -1.46174153429627340373, 1.13343110046541473146, + -0.80420642236649475532, 0.43859271602229243925, + -0.10617595632135151673, -0.22993211569114901938, + 0.50439564206826659198, -0.75777698459736042569, + 0.93070860707935598732, -1.06858394068754125605, + 1.11860723788013061153, -1.13108202405408198032, + 1.05938697914394119870, -0.95792321144921610543, + 0.78508804966032030848, -0.59795804994145063116, + 0.35834055068005482569, -0.12427031614449363106, + -0.14078643348877301067, 0.37955410495548802530, + -0.62853089739395284763, 0.83267940571488818779, + -1.02975614392061487479, 1.16804103998510178108, + -1.28739330549026376183, 1.34001048693201019191, + -1.36820981849903078320, 1.32822495541751317560, + -1.26472735182833617706, 1.13768185148310552179, + -0.99363319020487661515, 0.79564959885506558734, + -0.59140498730173640674, 0.34624273181756731743, + -0.10808487138836303521, -0.15635302197788250589, + 0.39979734146094475511, -0.65502413898177291873, + 0.87621675759377337656, -1.09637638521843316930, + 1.27178651229876726880, -1.43621424639951356106, + 1.54847396437243256528, -1.64341483827312129229, + 1.68258324842818796085, -1.70199867389824266439, + 1.66592048061360364919, -1.61141964519639313558, + 1.50526001864662073437, -1.38527699316095054272, + 1.22038609713516654764, -1.04878162017739451350, + 0.84108645723863806332, -0.63538400133367367584, + 0.40352272077932299643, -0.18299356965190169411, + -0.05359884330210062942, 0.26980315145635513918, + -0.49267406813641173580, 0.68717613577266678515, + -0.88035408693209971087, 1.03886899473168159425, + -1.18998270807216055545, 1.30222491855499833413, + -1.40319107961495470605, 1.46334157447410095898, + -1.51061498761098111920, 1.51736274357076861286, + -1.51178150879691042263, 1.46798826060976628227, + -1.41427688232698089976, 1.32633957428221926911, + -1.23235335618675678759, 1.10935406755853760430, + -0.98515855412424691018, 0.83789729151172553934, + -0.69477759395182259183, 0.53478023445404165859, + -0.38426818755087166490, 0.22285163286710321651, + -0.07584565532180281844, -0.07669316516795707250, + 0.21065789609261695303, -0.34568113281144102755, + 0.45897402513528229306, -0.56994190875928163464, + 0.65717141697286585167, -0.73987224415102481601, + 0.79801354244172839625, -0.85059310801532339585, + 0.87892504676118954343, -0.90173835093180687572, + 0.90161835735890283328, -0.89693710800826031981, + 0.87145141161982675460, -0.84306755937702682058, + 0.79659884841895967078, -0.74936717395026342103, + 0.68712270874117875596, -0.62648464979459084212, + 0.55402541112470915508, -0.48555240998093884830, + 0.40835866725473357608, -0.33734702351296103062, + 0.26044850150444404102, -0.19158979502449896559, + 0.11928017942995142175, -0.05642256322132005453, + -0.00793082055545252761, 0.06192402790723060269, + -0.11597319843796023708, 0.15926951055136737145, + -0.20168714545659927051, 0.23344461438735283898, + -0.26384588853222484817, 0.28410137206187141556, + -0.30290339221377365897, 0.31240821778425303945, + -0.32064718367112177155, 0.32067116452056093623, + -0.31979857603679462397, 0.31192361694828479868, + -0.30360225792447242954, 0.28952537749767742747, + -0.27544363662302234763, 0.25680637599078076638, + -0.23852600224016765051, 0.21678320871068362807, + -0.19563119253029118139, 0.17196743330577979325, + -0.14897774394598053971, 0.12427451706924270980, + -0.10018031091345634687, 0.07503217485380180019, + -0.05030420737395071423, 0.02507732079515363408, + -1.05304232181506862709, 1.78248314316877376484, + -2.00022415174272660821, 1.62217553515942336517, + -1.78670814948464018457, 1.35824693173348087782, + -1.47511982927362961249, 1.00326591284843025242, + -1.08090467513331800475, 0.57540376242883051194, + -0.62476665006335319053, 0.09766317223780254797, + -0.13173419226644192404, -0.40321128548393392332, + 0.37007521610616872509, -0.89810244204745925956, + 0.85094374141717443738, -1.35711186985325427123, + 1.28122821063017644505, -1.75129754201333742714, + 1.63313752515699861512, -2.05446647064039877861, + 1.88251462628095800333, -2.24491904147726462071, + 2.01051552342192918488, -2.30703471901082535211, + 2.00507372458052302022, -2.23258774836795437224, + 1.86204070675827071391, -2.02168731081959585083, + 1.58590256990351430311, -1.68324986526860653768, + 1.18999010358701573509, -1.23493228464079041196, + 0.69612407960252653538, -0.70248253585943198907, + 0.13366905612956631044, -0.11849916050449799121, + -0.46199384791623132607, 0.47936979516708794202, + -1.05152365860942653697, 1.05071555068224520291, + -1.59411152599226824123, 1.55502981366007908548, + -2.05027239548463313668, 1.95458366382836645769, + -2.38476392083297472624, 2.21733596700286472725, + -2.56943121528453666258, 2.31965947257777038715, + -2.58575837985762113647, 2.24866191871924314682, + -2.42690445153374279030, 2.00388432518996539855, + -2.09901493390754856350, 1.59818122358823888618, + -1.62163193380095238538, 1.05762880447415774654, + -1.02707642332749804481, 0.42036642600765594668, + -0.35874407728327079026, -0.26564739546248006263, + 0.33166138418192103732, -0.94589527194213174344, + 0.98784104010158857445, -1.56341322639465496458, + 1.55334758207843148803, -2.06349587863073136162, + 1.97646228790027866928, -2.39864931604363285089, + 2.21512001199879371427, -2.53337825268688021652, + 2.24144438397759593329, -2.44835321907601377589, + 2.04543151772865217097, -2.14349859067751769004, + 1.63733628368546235698, -1.63958010906371653981, + 1.04837616478630901717, -0.97795521499430937418, + 0.32947614191233354219, -0.21828119142354443505, + -0.45206813745430268758, 0.56584972983730819074, + -1.21793961612903012259, 1.29317238852041960229, + -1.88587460298239051326, 1.88250798971069421839, + -2.37795104960209080502, 2.26140026851844400113, + -2.62936853302029449608, 2.37481569751986620886, + -2.59682988967909977873, 2.19295770511747889486, + -2.26553508443648699000, 1.71718983407227177018, + -1.65379313677724071319, 0.98311348143237164976, + -0.81436830761841783044, 0.06001886092670512263, + 0.16808617039850423658, -0.95377126997431049826, + 1.18379100130678627245, -1.93972570630370988454, + 2.10861390201412435275, -2.77164476281974492267, + 2.81812321913489194358, -3.33090399383155100210, + 3.20363110325769229192, -3.52284482322003533739, + 3.18842668077215973810, -3.29230360998578497345, + 2.74202653686693631485, -2.63599775658306034742, + 1.89011823338498308189, -1.60947692480251447478, + 0.71802051170243030853, -0.32666798463289847820, + -0.63401306105107502198, 1.04926736371086759547, + -1.98444429039785852353, 2.32399045682179261618, + -3.13263844758762788345, 3.29783872895244023482, + -3.88772464884614787906, 3.79684582165981243662, + -4.10074862065371270603, 3.70483969879491770172, + -3.69539725908263028131, 2.99138142551730634722, + -2.69169391635898325177, 1.72977061383190933164, + -1.21694386085421335508, 0.09970820807623341497, + 0.50088534734295586670, -1.62930535526084874220, + 2.16007269973959292741, -3.13506648519954111975, + 3.43180470864680797760, -4.09772375957571455274, + 4.02188331290644729421, -4.26582602714857817006, + 3.73826172491818198296, -3.52201782745096991789, + 2.55119685396635809127, -1.93371199079191313785, + 0.63045001902191832865, 0.22701308498089001198, + -1.65554254929179367473, 2.50771301166483429057, + -3.78921782625700442892, 4.35090455418745580829, + -5.20401140495916347817, 5.21627541090531643420, + -5.42404838673919531544, 4.73129934670989449330, + -4.21722698862222511451, 2.83663327698185518955, + -1.72144233093284615421, -0.11909860463002801267, + 1.50437022299179967710, -3.38340538719017080993, + 4.54888500442019161341, -5.93931155326802073802, + 6.36017531763175192339, -6.78546760604093623925, + 6.08319860084922670040, -5.31240355980904510602, + 3.44823015099854046639, -1.66891862042765048990, + -0.92543913261400534420, 3.04171813135196345002, + -5.48629139503767682129, 6.91297221273139950171, + -8.12756134231140237034, 7.85203920774844288388, + -7.03369245284395105955, 4.61281535712008317063, + -1.81802985061357791352, -2.08618390213284010670, + 5.54562472199520950511, -9.01796652731561287908, + 10.78630725689564506808, -11.32661620837851224053, + 9.18800748237369546700, -5.39807482045303821394, + -0.65595035078980734600, 6.89714678965865690685, + -12.84220496205862005468, 15.55873156060332540562, + -14.34703968493254855332, 7.18298772061204715556, + 4.15064370356489753533, -17.42593124767797618802, + 25.33954131359026362702, -20.79399688972382875818, + -3.18220042145033410463, 39.10036818257688651101, + -48.64059426903086347238, -79.82626654488079509520, + -31.70922585325089926300, -22.99454959415861665661, + -13.64090114499016159755, 11.02827978225523430922, + -0.69908640621871831478, -6.03600186409964756251, + 7.39955226680020228258, -5.02167019234559042218, + 1.29204395843568287106, 2.06403361396678608486, + -4.04853112556231486963, 4.51308173006980961617, + -3.67488876786167395494, 2.09448978292673437807, + -0.24895110790718327776, -1.36338076244347550237, + 2.50949386369697835519, -3.00457250505300166310, + 2.91504246820919110661, -2.29591233169649955315, + 1.37084076188051540157, -0.27119961739905473763, + -0.77450328688884373385, 1.68102688228130547898, + -2.29962993299706930372, 2.63774220267862169464, + -2.63963278513808674575, 2.39276429494418430011, + -1.90417049897296775107, 1.30139273060600935139, + -0.61133350094058303004, -0.03897274638886345094, + 0.63738889480601623738, -1.08394625869783167715, + 1.39893468856534775036, -1.51842394139987679758, + 1.49636367223030375406, -1.29977373363774306725, + 1.00650245303739249714, -0.60177190494787646813, + 0.17317038890536393114, 0.29008003636579243745, + -0.70379876258557494406, 1.08605052158366643944, + -1.36497220277576403191, 1.57219737289482841547, + -1.65181396565431160006, 1.65017273470991421291, + -1.52627751023468394287, 1.33836989619639945559, + -1.05619413045886845204, 0.74481142193066784962, + -0.37917553880694304658, 0.02557101079545057859, + 0.34116289467293925419, -0.65830026485477577403, + 0.95515675542169597989, -1.17573579887776347164, + 1.35574617901093419370, -1.44722312684968446028, + 1.49268109919032876398, -1.45179600570296862827, + 1.37280796789696113436, -1.22139923939319761104, + 1.04949043640020245327, -0.82645958789252838006, + 0.60547071930837625953, -0.35716202710243055707, + 0.13361825885008993264, 0.09537864377186887344, + -0.28066110247796471899, 0.45481074007562721784, + -0.57272286938888983254, 0.67011421974234997023, + -0.70634556232765532968, 0.72032164951019306276, + -0.67560405927530309267, 0.61374412437399872289, + -0.50173396228806710351, 0.38282362215230508751, + -0.22636357907095003283, 0.07615798904280611514, + 0.09725150066670469606, -0.25065134181221099263, + 0.41339069656109178608, -0.54383244607142045002, + 0.67207895643266890584, -0.75878879572066137982, + 0.83538027200236408820, -0.86520767753402361144, + 0.88124198251699503714, -0.84961206474555439616, + 0.80477221350051064697, -0.71542250192954903731, + 0.61717979443270065687, -0.48089673797478099670, + 0.34285660522734084932, -0.17551239168926222045, + 0.01522634341175772149, 0.16455020312877954858, + -0.32797378439464075495, 0.50117062119194166758, + -0.64935507002826875489, 0.79871991365449246381, + -0.91596613095507017910, 1.02771356484948683807, + -1.10243695937964614195, 1.16739393715382666628, + -1.19296704972598144323, 1.20711046605409078047, + -1.18210181344429043904, 1.14651252297869343799, + -1.07437622849111868994, 0.99469014288705681626, + -0.88300861878103720226, 0.76848420074642087574, + -0.62789565857235829505, 0.49023755742355695775, + -0.33319178474154309555, 0.18527377469489159090, + -0.02475546541876378140, -0.12062506849122385522, + 0.27228293042252832423, -0.40350842016824906011, + 0.53562426817348918195, -0.64313636565632759101, + 0.74742659054969884380, -0.82433128697236557336, + 0.89536926130472449525, -0.93774882749979260321, + 0.97313219164631137303, -0.98007333578265287688, + 0.98032128311775257323, -0.95369215199242640679, + 0.92191465129050653715, -0.86594027055358580025, + 0.80733478989614171351, -0.72803079526918956788, + 0.64926902985635037702, -0.55379728046166021294, + 0.46236510576943740114, -0.35837269873396476738, + 0.26192197684056911511, -0.15691836715908458189, + 0.06268051895649144611, 0.03650283204805003512, + -0.12220308325924553183, 0.20983850525117325736, + -0.28194377498134587379, 0.35369982065923960546, + -0.40864282221001496653, 0.46173739569470850785, + -0.49752587981413032292, 0.53074570170673951441, + -0.54692029032001121536, 0.56052191739635692791, + -0.55800593744443627298, 0.55352068234024032201, + -0.53438691848391828287, 0.51435649260289018070, + -0.48153892763662964338, 0.44921048478240205304, + -0.40618970936080694978, 0.36519841271489306145, + -0.31568775402860277390, 0.26975238432591580606, + -0.21740834086019306115, 0.17006126634650109430, + -0.11823703189822321047, 0.07260458052658518013, + -0.02415981483963245205, -0.01719675418889884261, + 0.06002268794645377464, -0.09520132960300257963, + 0.13085122030609727672, -0.15863962853866464542, + 0.18623914732408547446, -0.20608774052570294488, + 0.22539317594484778451, -0.23734044708570134485, + 0.24864482958099815013, -0.25320762011995662233, + 0.25721865772538737849, -0.25526132749422258961, + 0.25296536762607335636, -0.24556202053811373998, + 0.23808785960476611110, -0.22639084445259075040, + 0.21488576020745875361, -0.20001176090371464156, + 0.18553983339155410981, -0.16848220846782169247, + 0.15195205777724277163, -0.13352493317164462749, + 0.11565069474123583493, -0.09646692169440558573, + 0.07776286936016266194, -0.05824459522587526611, + 0.03905056721320371987, -0.01946808025364927391, + 0.55726968327496284594, -0.92136501082776733895, + 1.04741414735739213349, -0.82682006702067090131, + 0.92599615650539990330, -0.68007807372916950772, + 0.75524923949731759265, -0.48763002842814989757, + 0.54314417396365832769, -0.25885645279113261852, + 0.30037859255168575245, -0.00565725335717889247, + 0.03991837533840957020, 0.25809239353168844655, + -0.22362761420206500595, 0.51724268656870020511, + -0.47477638554052292719, 0.75619772712765498390, + -0.69804916192056465363, 0.95983257369706032058, + -0.87891490775358560583, 1.11444998492301938775, + -1.00474616146486339652, 1.20872051907212485489, + -1.06572807418756920761, 1.23454489392468746978, + -1.05565841414792460640, 1.18777614820783972149, + -0.97257684796714405362, 1.06874172656580568308, + -0.81916651072561741387, 0.88251249217167837546, + -0.60287997021683559229, 0.63887697132022858160, + -0.33575515536312644516, 0.35199468102544734238, + -0.03390432377630763633, 0.03972168727738099175, + 0.28331997851355406048, -0.27737625254639780570, + 0.59445477461503715144, -0.57728367731176566391, + 0.87730088903238800935, -0.83800509187747240780, + 1.11046647956273702995, -1.03915823252750283423, + 1.27498363167124373341, -1.16358564913380457817, + 1.35588505085826138696, -1.19886555187884757956, + 1.34361754176944803163, -1.13859639535385093190, + 1.23516676680129400268, -0.98333211380951857095, + 1.03477515207898984606, -0.74105745575706183370, + 0.75415264445861351916, -0.42711605180875755750, + 0.41210850432103907082, -0.06353746023083443883, + 0.03357077459962517357, 0.32224767255337938288, + -0.35199313842873847236, 0.69926516418794026908, + -0.71268885001898363285, 1.03533435903940418399, + -1.01671987417975695500, 1.29973755161886694864, + -1.23515238753009226613, 1.46602558465820531630, + -1.34470266236615376698, 1.51472460040637324497, + -1.33029823889691378724, 1.43568564359344197356, + -1.18715029848005171331, 1.22981601166215082088, + -0.92208369177710036713, 0.90995284266425835451, + -0.55390586090018090193, 0.50068773693295098859, + -0.11265775831288575570, 0.03702634267358934084, + 0.36232237104634262836, -0.43813378714794715130, + 0.82548189443689123923, -0.87760577535661909998, + 1.22911875130090941788, -1.23436735544411790855, + 1.52813538274254212546, -1.46651123289155194129, + 1.68506885611937473612, -1.54222717064858017011, + 1.67488844237171163876, -1.44427287095592782329, + 1.48899529708733124878, -1.17335943961268052149, + 1.13785633235258432094, -0.74990634530350175346, + 0.65176758002910695211, -0.21371977184761556390, + 0.07937793823860138376, 0.37867968968942827823, + -0.51618855072980374121, 0.95911405508071989612, + -1.06350472926260364304, 1.45493077652877289552, + -1.49088907895112288138, 1.79773237015494391500, + -1.73559282475892961983, 1.93276254436524252966, + -1.75309640013692780158, 1.82780046973048815317, + -1.52527309254717580167, 1.48025891057240066573, + -1.06609110754009717148, 0.92117596370487675461, + -0.42360987578106601426, 0.21497339065576601125, + 0.32268601312859646058, -0.54575093073113056796, + 1.06967124309564787232, -1.25052717222091835936, + 1.70324520053547412424, -1.78577444271563900990, + 2.11481256721327914860, -2.05251678604932807914, + 2.21964784815725213463, -1.98471779316039809160, + 1.97444641251239283442, -1.56524108107771198206, + 1.39086141806681240496, -0.83613715514274722374, + 0.54175764032462092601, 0.09983451318482489123, + -0.44256952402754162756, 1.08868949828662575641, + -1.38976673501460878946, 1.94641153621238238713, + -2.11208040859559087465, 2.49040614803733539873, + -2.44161103973209359097, 2.57723437516514675139, + -2.26889645527385575008, 2.14014381577880108409, + -1.57727495905030057344, 1.21801434203132252776, + -0.46413251979778796796, -0.03328262108377205014, + 0.85958197772193445374, -1.35478040223766682537, + 2.09768079047627953315, -2.42747196050428826197, + 2.92596251655157635341, -2.94215454762496042562, + 3.07204573118592749736, -2.68550548471611216783, + 2.40285498919306350629, -1.62317549163251517719, + 0.99675757269624798429, 0.04604053128235353898, + -0.82726093843860371013, 1.89253923309131755204, + -2.54881827467386612440, 3.33554934088187682306, + -3.56715207716575788410, 3.80318958562926834333, + -3.39396382983750743989, 2.94746652354281879482, + -1.87537736894353157524, 0.85363699626047395697, + 0.63452208318242830920, -1.84767920231994509095, + 3.24899721609168379288, -4.06690288959991441686, + 4.76407603257667044971, -4.60806441627179719234, + 4.14224076505826754868, -2.75907182089754643428, + 1.16253695232186227138, 1.06948007061075900381, + -3.04711126098918994032, 5.03353611873531381349, + -6.04607174589918994201, 6.35818488599151354634, + -5.13935930554428210826, 2.97810888080858715554, + 0.47700055658448387019, -4.03800578980502233861, + 7.42985227912494661240, -8.97590151082268938865, + 8.27729586860347943400, -4.17656317813288424645, + -2.30676069396751604046, 9.90023167412110005614, + -14.42987212522328199782, 11.84047156695057978482, + 1.85216705390699476474, -22.36846972643856901186, + 27.81166647443846784427, 45.60648937414401871138, + 14.15913729160488898629, -0.04871781051682610303, + -0.16002328393803855189, -0.13537913801945850034, + 0.07879247241836200011, 0.01538798775479608902, + -0.05736548281823933976, 0.04852250746841647866, + -0.01511816258567089122, -0.01853305159720643192, + 0.03910472884456690085, -0.04297926442468165409, + 0.03353667939461649899, -0.01666854222539099206, + -0.00122800979452782392, 0.01563927546127095308, + -0.02377722949061266203, 0.02525737257600080971, + -0.02085909891007752676, 0.01266045085412395924, + -0.00268889324032930066, -0.00680355793110204009, + 0.01439732695756368482, -0.01891690664513026934, + 0.02018539900423417174, -0.01821257049601531647, + 0.01378514124332231271, -0.00758043586035123378, + 0.00072810184840870417, 0.00604192553764613342, + -0.01178966217493442395, 0.01613764967512094917, + -0.01859529509270027581, 0.01925544690060228964, + -0.01807116085517599877, 0.01550337873022971866, + -0.01178081366783835515, 0.00752896322805109153, + -0.00304002707098366149, -0.00109491240702263627, + 0.00468999380004739199, -0.00731923783408790305, + 0.00899015331335654630, -0.00948536311053301689, + 0.00900945103921586138, -0.00752383388365930692, + 0.00537463695208256591, -0.00262919464304143266, + -0.00030683047850212813, 0.00334384822100796579, + -0.00609565902739153589, 0.00851981967409491323, + -0.01030594068668097205, 0.01150000344831859055, + -0.01189295046356612408, 0.01162940572981994991, + -0.01059792786724472573, 0.00902617749294377762, + -0.00687531607317570532, 0.00442431601822311851, + -0.00167122187912683152, -0.00109082600069477587, + 0.00386316559357502290, -0.00637193567132411740, + 0.00864695778963337283, -0.01045731692065710559, + 0.01187889441984512143, -0.01273495771942903705, + 0.01315245522070686637, -0.01300803367543456809, + 0.01247375463381095347, -0.01146937798227882534, + 0.01019844890170444086, -0.00860784976735140712, + 0.00691525505595661991, -0.00507690116694243902, + 0.00330726973074844987, -0.00155582162274432354, + 0.00001951797781828090, 0.00137101658895176222, + -0.00244582075636396584, 0.00329983274880002323, + -0.00379403039280142842, 0.00405015171315332816, + -0.00395883837164784803, 0.00366511321397982410, + -0.00308386491541357607, 0.00237646181264656838, + -0.00147398200347354674, 0.00054537120991257095, + 0.00047118363623389366, -0.00140818121543369551, + 0.00232895255418576023, -0.00307538315170321000, + 0.00371934051784777054, -0.00411800840767834447, + 0.00435646646751737358, -0.00431056429604376266, + 0.00408063162032962310, -0.00356191983052277488, + 0.00286951120686593014, -0.00191643375550391111, + 0.00082990292854247933, 0.00046273358805491206, + -0.00182625166647053011, 0.00332359684569032534, + -0.00481645844103344763, 0.00636313050093501986, + -0.00782723906420198373, 0.00926726538742187779, + -0.01055329238636587390, 0.01174807483115537787, + -0.01273171257634547228, 0.01357419666492449585, + -0.01416796224329591909, 0.01459188446491193475, + -0.01475170725829913487, 0.01473550346560803873, + -0.01446201248506656656, 0.01402761158143573696, + -0.01336262300399029997, 0.01256986578888426818, + -0.01158900993736466933, 0.01052678968120862590, + -0.00932948873090863606, 0.00810489751279753340, + -0.00680301048407753843, 0.00552980281420850737, + -0.00423621018759056094, 0.00302378691690682530, + -0.00184202280776620659, 0.00078592714152683491, + 0.00019828153761354490, -0.00102364038958371157, + 0.00174836303138163011, -0.00229434712630361814, + 0.00272470714791168793, -0.00297033500653222197, + 0.00309906152012563328, -0.00305029390693377280, + 0.00289583413930594429, -0.00258262651128419486, + 0.00218526833018637800, -0.00165690589328417381, + 0.00107347604799200324, -0.00039278998031738271, + -0.00030945657847410152, 0.00107237481248034219, + -0.00182207012216788504, 0.00259607714158764441, + -0.00332371699047068854, 0.00404225131591349259, + -0.00468538969220993421, 0.00529114633392978751, + -0.00579848618077549987, 0.00624687628647837851, + -0.00658106726547914682, 0.00684233917402677153, + -0.00698142228472277242, 0.00704144397610438968, + -0.00697899876144982695, 0.00683880790321036124, + -0.00658295295783414922, 0.00625726332598277452, + -0.00582873016720392850, 0.00534363885047408043, + -0.00477318098282594316, 0.00416334884885096509, + -0.00348876265944094311, 0.00279434279070448020, + -0.00205736746486688028, 0.00132093622641824937, + -0.00056427045145840469, -0.00017202161583582712, + 0.00090739250487866603, -0.00160428209275844248, + 0.00228130795552947260, -0.00290438025343287822, + 0.00349163280870747484, -0.00401272626820126359, + 0.00448552099109852768, -0.00488357121835274102, + 0.00522454332521003241, -0.00548590582142089063, + 0.00568509827186768676, -0.00580342328774974790, + 0.00585797239228960480, -0.00583372672611612384, + 0.00574724635403585458, -0.00558698625047459544, + 0.00536875509038023217, -0.00508425231225559902, + 0.00474830144401054265, -0.00435561281380962735, + 0.00391979509749633675, -0.00343834673988302562, + 0.00292344786010588237, -0.00237518184705438158, + 0.00180410821069270115, -0.00121271430825954131, + 0.00060976835792473131, -0.03241441794379956026, + 0.06906526850833281939, -0.06154235889709713109, + 0.06375737392482952459, -0.05429395148698661772, + 0.05467946083112176087, -0.04353010401063512474, + 0.04239949815502891406, -0.02993160097754616472, + 0.02770055087432985244, -0.01437152783437350111, + 0.01153191449050729352, 0.00213977094721478625, + -0.00505130655950191895, 0.01851960479871079743, + -0.02095663374760239547, 0.03368385516086763731, + -0.03512652103782386293, 0.04661953387933413795, + -0.04661000183677825592, 0.05645434505185595309, + -0.05462899862190654515, 0.06251859938260564964, + -0.05863474092455030900, 0.06439509471167109700, + -0.05835014531824838507, 0.06195312801435155087, + -0.05379470465794202599, 0.05536363592717130633, + -0.04528939770522912023, 0.04509354849945145655, + -0.03344033089193910319, 0.03187874124847154406, + -0.01910120847241401562, 0.01667642118982597468, + -0.00331622369778651485, 0.00059930224730310390, + 0.01275351764100494251, -0.01516458289746976974, + 0.02791549274570881423, -0.02944123305808947488, + 0.04103738518587594225, -0.04116288745127288234, + 0.05113811207030585088, -0.04945605361074844469, + 0.05747101714654059140, -0.05371804667142363737, + 0.05959199029625773802, -0.05367501390491530300, + 0.05740585116683233347, -0.04941529907999622773, + 0.05118552095896355264, -0.04139348922947727605, + 0.04156028578935537510, -0.03040254002161648858, + 0.02947175862601813384, -0.01751389802248016353, + 0.01609884877515239607, -0.00398837442400688368, + 0.00275596630937342216, 0.00883653287893961664, + -0.00922840847896550139, 0.01967437674818574636, + -0.01864304378222148700, 0.02742170032649772146, + -0.02452337553585653626, 0.03128167675876711296, + -0.02626606023009312244, 0.03086629628712541165, + -0.02371562800460954440, 0.02626451328613060507, + -0.01721143544105846815, 0.01806568808376426277, + -0.00758573642031584380, 0.00733096419661796814, + 0.00389234618723815909, -0.00449020308611388242, + 0.01562704698166992451, -0.01569557814981552973, + 0.02585456333005015442, -0.02450881235397632529, + 0.03283801381942644954, -0.02928620830816616033, + 0.03508087688999443621, -0.02873114787411237825, + 0.03153628637666793660, -0.02209183641251618105, + 0.02178666992468709929, -0.00931632538881232292, + 0.00616788622604592073, 0.00886005764533409450, + -0.01418521285665476708, 0.03091529996348899023, + -0.03738872783703850455, 0.05464192681678774199, + -0.06096268230123363940, 0.07735059063587973460, + -0.08208239295638304622, 0.09616460993400409440, + -0.09790977642111854673, 0.10837989680948921511, + -0.10597210945053107956, 0.11185129287358271111, + -0.10454345466643620577, 0.10535567838178083733, + -0.09297550025753426040, 0.08887647779729163089, + -0.07192204180692809978, 0.06375533173555517075, + -0.04340651728797573911, 0.03266619289919222430, + -0.01069594309026239247, -0.00061451287604651940, + 0.02203274068131609240, -0.03164143649046552431, + 0.05021795377743232952, -0.05590477402142107061, + 0.06958020352084812177, -0.06953814026042637320, + 0.07684618713932836465, -0.07003077046832795194, + 0.07041855394115434374, -0.05682290476485533925, + 0.05086477919323426772, -0.03165719901350907972, + 0.02110284887229848388, 0.00142529467703848963, + -0.01381053463919100673, 0.03651528179168275767, + -0.04733011208953845361, 0.06669686041349671968, + -0.07247554299115674392, 0.08526157576281087613, + -0.08316312756045785015, 0.08710380989529802054, + -0.07560099337882814075, 0.07004394544169251224, + -0.04946311600111980011, 0.03577418439004274170, + -0.00852995798002847277, -0.00987631690050602869, + 0.03948060061828018857, -0.05758664312514394368, + 0.08405465304698291062, -0.09617525300735610405, + 0.11396626118276334538, -0.11506679133041688989, + 0.12002271129835855035, -0.10717790964550680255, + 0.09792268885775272380, -0.07155507646642962627, + 0.05046516036777711628, -0.01494165868707781133, + -0.01172827718314856799, 0.04852089267046150178, + -0.07166511633609608245, 0.09996588665610907365, + -0.10986243021343546078, 0.12077846436503213157, + -0.11020014926290634671, 0.09898993712400615264, + -0.06640953719792774823, 0.03531522630018872622, + 0.01295795443690724372, -0.05359734143405426449, + 0.10362998728071864951, -0.13715767756730964932, + 0.17087699005270456931, -0.17950302962182757005, + 0.18139225553865476193, -0.15399550673046849547, + 0.11936521791658059877, -0.05936864149753229986, + 0.00077709027216603464, 0.07006754251789269750, + -0.12285257449359410220, 0.16935793416325939376, + -0.17977965193230913132, 0.16934458007510724831, + -0.11490616489383315146, 0.04134431520945835298, + 0.06265368285315391084, -0.15976499229849661088, + 0.25055680778938860254, -0.29161190735299674648, + 0.28525738850214044096, -0.20054181814234484094, + 0.06443838725108715082, 0.11834457637015526055, + -0.27952077278492842849, 0.37830480524002996212, + -0.33261030190358770176, 0.13183680283794349530, + 0.21103193242417200848, -0.53951848442163619080, + 0.63369183198869560858, -0.20773406269398581037, + -0.72894411006221726534, 1.30161558460830550921, + 1.65692979180632704583, 2.37915312824182656470, + 6.46283572120655946946, 5.35486451750676906158, + -3.09406806106666776301, -0.67117261293819807655, + 2.34726284197367940365, -1.99124602525888216853, + 0.65178127664013552067, 0.69682383382084134293, + -1.52319905427068524872, 1.68092913372643559811, + -1.30688244050995194812, 0.63502761509055749567, + 0.07710033446633476895, -0.65063002712830464436, + 0.97240848481648023416, -1.02871451145268988370, + 0.84910901196386945333, -0.51835412566290695047, + 0.11595026554653574402, 0.26640022579242661482, + -0.57349620548792434871, 0.75671479803826535715, + -0.81054601915293444936, 0.73379738089924739786, + -0.55948796937553324504, 0.31314733841668818126, + -0.04149625625789748334, -0.22781136466495580106, + 0.45565652181329996395, -0.62846428721738556433, + 0.72510641460183689055, -0.75080006476035887619, + 0.70217798918155982513, -0.59916086136183321909, + 0.44942277973691047155, -0.27944645681278906801, + 0.09946056441259822078, 0.06544889915275907410, + -0.20929156235017484788, 0.31360552055410889638, + -0.38011981186937959798, 0.39873639830877832813, + -0.37905170438269930600, 0.31813899794293998280, + -0.23124049397494161884, 0.11968544602466484050, + -0.00108140137066104250, -0.12233317165183411890, + 0.23374571878408503811, -0.33278498776518578017, + 0.40568763359560477966, -0.45560106082415302575, + 0.47283235369331377829, -0.46445663618178900656, + 0.42470313467647030636, -0.36395079478292424735, + 0.27935079765422404785, -0.18331725192056483320, + 0.07449483544104321120, 0.03415261433113565143, + -0.14393723225018503764, 0.24268303421637998918, + -0.33282271864080442692, 0.40391456439090223096, + -0.46021461904986088465, 0.49346463180229327428, + -0.50994405911064111248, 0.50354578654783610503, + -0.48233432990749641744, 0.44194289331773967122, + -0.39167571667133055380, 0.32826656650882252153, + -0.26156511992148406831, 0.18869487848872454339, + -0.11935799925453004222, 0.05042249016998711503, + 0.00913014724144212142, -0.06316983310249479899, + 0.10381488228917386263, -0.13594217051253870698, + 0.15292735068286755773, -0.16070365806366515571, + 0.15385298165919553126, -0.13922420630144335951, + 0.11238865985826654303, -0.08083315947685656977, + 0.04079601231315436310, -0.00005106987312687438, + -0.04485978865773485730, 0.08623674833402210360, + -0.12757963696389282293, 0.16158059358221779633, + -0.19206212049594698077, 0.21234500579210782711, + -0.22676169345191798943, 0.22939657385261025269, + -0.22517380130865088939, 0.20897106354312103282, + -0.18628458010924292543, 0.15272058892970735711, + -0.11424285604170544839, 0.06704815016233828251, + -0.01740305648086630866, -0.03808938983569811615, + 0.09305642491016612172, -0.15069071695617761164, + 0.20471402250355860697, -0.25830803362007792590, + 0.30546961703018421508, -0.34953273087552322318, + 0.38491155716557839961, -0.41521064096211179884, + 0.43535403803797600997, -0.44928262736219776174, + 0.45246912648489917563, -0.44920314997688570724, + 0.43549341894922660723, -0.41594243816506565325, + 0.38703832905076435145, -0.35362189351346773325, + 0.31257117890546992633, -0.26886416262442525138, + 0.21965941425707516399, -0.16995769653783593389, + 0.11708196915102719871, -0.06594092018789593501, + 0.01391113281769839997, 0.03429497799937369917, + -0.08134264884086253589, 0.12280065308146689840, + -0.16144899585299532507, 0.19319761874616406261, + -0.22098764115260602359, 0.24110263596702724564, + -0.25666347259256616642, 0.26433258485168570351, + -0.26740308011070385019, 0.26289695710055416278, + -0.25424960499108190115, 0.23880330394555487894, + -0.22008852928136096727, 0.19571427251155151805, + -0.16924768891514097024, 0.13850281946324494164, + -0.10702009013631869072, 0.07275491648355768282, + -0.03915840586600366491, 0.00426711641198488419, + 0.02861393809426932694, -0.06141938964156737346, + 0.09103741876529426735, -0.11941505844181576901, + 0.14366854836514231231, -0.16578551783557929356, + 0.18313166087701676643, -0.19774978728281319973, + 0.20726297940464580294, -0.21377076867752858869, + 0.21514917325603552523, -0.21354446551306066615, + 0.20707066305010607410, -0.19790149262203310387, + 0.18436601067240487861, -0.16863943945999976259, + 0.14923762882659780127, -0.12830744544750455338, + 0.10452076196973053568, -0.07996502936698082764, + 0.05343740377211279174, -0.02693603719866297791, + -0.00064516028704845779, 0.02742410061710473523, + -0.05443475764250420290, 0.07993334666674013766, + -0.10490134710558596254, 0.12775015121441962718, + -0.14942278851479234847, 0.16849704386798608491, + -0.18588592540734838465, 0.20033936245444239344, + -0.21274355760941310312, 0.22202145860678565437, + -0.22903120521036665624, 0.23286562237831348599, + -0.23435001161660945490, 0.23274093517127514286, + -0.22882361031998910139, 0.22201024784621090080, + -0.21303728970142599142, 0.20146353411915401965, + -0.18796741746507805715, 0.17224510909803228409, + -0.15490798373755917949, 0.13578080872210812613, + -0.11539949129869482569, 0.09370941682406264128, + -0.07116349353975917613, 0.04782063983803242629, + -0.02404409431655461782, 0.41377127153716281027, + -0.88412867315645071731, 0.75213774557369283968, + -0.78229367680224171089, 0.62530027825703982103, + -0.63220525829168960907, 0.45421226115501828202, + -0.44263723153972334146, 0.24911519763653014459, + -0.22514931563714624119, 0.02271398554392903280, + 0.00660271036779400307, -0.21059759696353513858, + 0.23771551282454367326, -0.43564733053022874909, + 0.45299727256758148819, -0.63747785905740361745, + 0.63797991635380546516, -0.80236182332747962853, + 0.77992062769622483298, -0.91877295714186946185, + 0.86872571749992100187, -0.97824616291041466276, + 0.89773084558284177437, -0.97606260554082613368, + 0.86427677564922600340, -0.91170325405230634441, + 0.77002943380273602969, -0.78902604840710988121, + 0.62100687641759333424, -0.61613768122984713393, + 0.42729341092896505616, -0.40495025610396867544, + 0.20244178760728184785, -0.17043488947088500374, + -0.03741299351407464946, 0.07039257614139256269, + -0.27468152016183700059, 0.29969569590871780740, + -0.49162056926535824264, 0.50017238462707946933, + -0.67171829719394393621, 0.65644453847799810742, + -0.80106123620601143998, 0.75637454433641548857, + -0.86957215025988032764, 0.79219655057275906174, + -0.87200759463668309213, 0.76135458716720871841, + -0.80861287018890837253, 0.66695323394684791207, + -0.68535048343526450143, 0.51774971439873085366, + -0.51364600606274612993, 0.32764841477727024710, + -0.30963131251169051517, 0.11469838383799146886, + -0.09290759319990773979, -0.10036106842958182617, + 0.11510357700153683869, -0.29591527596932837296, + 0.29310716760811045267, -0.45151424937025103068, + 0.42202450994663492922, -0.54996527610767420580, + 0.48703885399981811100, -0.57927977551506382170, + 0.47939114425656531582, -0.53426611807068014048, + 0.39771980792917288605, -0.41756947398954791240, + 0.24875831559461838993, -0.23999069109619175499, + 0.04724629177022648258, -0.01996914599993051403, + -0.18502662560465474306, 0.21781234918553743496, + -0.42104320697013980501, 0.44465351126326985165, + -0.63115189024884188473, 0.63074844014408015802, + -0.78623642996764175894, 0.74854087771525912309, + -0.86117429174460291552, 0.77619445860460145603, + -0.83822054298769788083, 0.70078732555763967316, + -0.70990815974777921049, 0.52081386034628784909, + -0.48105081286974654686, 0.24759536958245478844, + -0.16947892696119115641, -0.09472695663769489793, + 0.19476155398953814979, -0.47081806624907446279, + 0.57186728364898720134, -0.83742094886013473953, + 0.91631752679929800998, -1.14809066685138860819, + 1.18219947020286109129, -1.35898025074805595125, + 1.32929774019053326128, -1.43505336226480006978, + 1.32923006628242612592, -1.35592808343574811047, + 1.17077557941929222274, -1.12046432267975926145, + 0.86350193477722148039, -0.74922573015214388725, + 0.43888045530118396931, -0.28409892157906163623, + -0.05169839219917708728, 0.21535290726185146726, + -0.54223414563560767832, 0.67879938702708619847, + -0.96049562632181562094, 1.03479151486533260673, + -1.23866807345911622562, 1.22206968232563584209, + -1.32492347896734474766, 1.20094630483326381132, + -1.19412691751064259371, 0.96282484381258337525, + -0.85565411377051980857, 0.53582063098383103661, + -0.35636324132079683080, -0.01530010255002104205, + 0.22278806216344021474, -0.59599471477612964154, + 0.77713517688475264311, -1.09571831092283233922, + 1.19514835726277923733, -1.40733330090307307003, + 1.37972360582631736747, -1.44941780163021549654, + 1.27048688222132466485, -1.18741674823182075116, + 0.86255840757192447921, -0.64875466541430193423, + 0.21678246570408490901, 0.07294248475366132967, + -0.54299771228691529057, 0.82818993485966529988, + -1.24822102816342606069, 1.43776021930122333004, + -1.71896941724820062625, 1.73216799576933411231, + -1.80790649408061931958, 1.59785634042201829530, + -1.44602002543888596975, 1.01941181780033218729, + -0.67797251176626538438, 0.10464457142580545213, + 0.32633615001670124300, -0.92018936428584041654, + 1.29499457805108164621, -1.75315367747142536459, + 1.91616955169604818998, -2.09626835625405760766, + 1.93176344125758925330, -1.75782560374168883577, + 1.24123774319546931189, -0.74899811394291349043, + -0.01887479659051526440, 0.66415265913905408013, + -1.46054648408821452499, 1.99252944327273584513, + -2.52845908377913497489, 2.66269009712670934320, + -2.69007033637099812751, 2.24879271378680467564, + -1.69277096460217069129, 0.73092519858386872933, + 0.20740037586918530499, -1.34162859800865175153, + 2.18582663063734194964, -2.92930527447384525530, + 3.09434588693566103856, -2.92535024374963414928, + 2.05119439752482790595, -0.87067032775732089434, + -0.79792748123490842005, 2.35677810984443958375, + -3.81558114658910207950, 4.47906297222962823668, + -4.38500372410592209604, 3.03763976769098187347, + -0.86901091781329609098, -2.04603266553322837851, + 4.61451881195373569966, -6.18430603611464135838, + 5.44169763988206245386, -2.21745198051902070446, + -3.28092998845522565432, 8.54950419995711641263, + -10.06953930730828794538, 3.26770517819365657886, + 11.70533442159868720012, -20.85412591729067699475, + -26.49671458239266286228, -18.82739495481999725257, + -38.91644413559397719382, -31.99139406785222305984, + 18.43437305642810031259, 4.15398660120642926330, + -14.20146871442127256557, 12.06102802033701593132, + -4.01408680045897447997, -4.08291679590703449065, + 9.05217953344549464134, -10.00472056710649937372, + 7.77205603951482970615, -3.74761369033722901989, + -0.51320101487476710300, 3.94743679073962239201, + -5.86608904309801193477, 6.19699865490217582931, + -5.10755124703302421096, 3.11637700613403989536, + -0.69060383635098476773, -1.60960921942201373724, + 3.46282619434532490388, -4.56747871769414448551, + 4.90017547764081751183, -4.44404562525792012906, + 3.40677116926663225982, -1.93192982990867156978, + 0.30931358704846684260, 1.30463647044206854098, + -2.66583832907225382058, 3.70220692799024275743, + -4.27770365452509793158, 4.43287768343311316954, + -4.13835498727229644800, 3.52278734626565093180, + -2.62314739102970495566, 1.60734073089834472725, + -0.52776622569792430717, -0.45616891011490973140, + 1.31739639489224669155, -1.93637117626583843411, + 2.33224156714770858301, -2.43576260992835891273, + 2.31318624899947566931, -1.93841137910872229888, + 1.41146301717472910653, -0.73189096492892380397, + 0.01380944651661288394, 0.73766259832992397971, + -1.41328491048921844886, 2.01902923069207451690, + -2.46405585702604756904, 2.77533714802767583762, + -2.88656261781416523249, 2.84816094087396010082, + -2.61746247792430031254, 2.26461015493253592368, + -1.76457539327862988898, 1.19960471266677792812, + -0.55374114269138363653, -0.08757656968749016890, + 0.73993441530653725202, -1.32272575388873780966, + 1.85814696514303734354, -2.27610091550422222184, + 2.60961006230063485845, -2.80178108551300475426, + 2.89766198241714345585, -2.85336844182151105898, + 2.72454315084576359496, -2.47784524747695611424, + 2.17623949822537099408, -1.79308945816534648365, + 1.39451581366938448525, -0.95632124028641840585, + 0.54362432731516685536, -0.13079533129505507838, + -0.22148817683080568308, 0.54318297007497540196, + -0.78032740741592554468, 0.96881930117169956507, + -1.06235786008483223952, 1.10307805233865630079, + -1.05203296723662043100, 0.95675001975038176383, + -0.78433490235112779398, 0.58604059442515554768, + -0.33309001700307860894, 0.07835563186825623971, + 0.20500358012237837602, -0.46466289411940586707, + 0.72759976021933092660, -0.94394557122160438478, + 1.14250090365859935382, -1.27727437894005602104, + 1.38001424899361491150, -1.40941706955850976080, + 1.40067036257349775141, -1.31733780175456716144, + 1.19792930921110452047, -1.01048821553416701136, + 0.79622073091745149132, -0.52682273857453298938, + 0.24520935525441248104, 0.07437558395407291301, + -0.38848695080974193772, 0.72154383506769326218, + -1.03077439415692784230, 1.34041968120513321772, + -1.60946384511314999344, 1.86294854273530030575, + -2.06246638912758362139, 2.23456884006255984687, + -2.34401165967529045986, 2.41924994771064305610, + -2.42843477443892830081, 2.40199875794782169436, + -2.31141185832754825213, 2.18886871094508039803, + -2.00881818836809777906, 1.80476906769572198463, + -1.55361204210158909689, 1.28956309680464653589, + -0.99129819149219466912, 0.69305408877125862510, + -0.37459520306225452257, 0.06948993704291904494, + 0.24207334817316200626, -0.52781966907060495764, + 0.80770917906192307711, -1.05126956903863533199, + 1.27904690067853810120, -1.46273108462076528724, + 1.62373177199531548709, -1.73609544743327703920, + 1.82220668726440315766, -1.85849942200940798642, + 1.86828752571234835145, -1.83027602100665420792, + 1.76852772122590673476, -1.66378240131381605060, + 1.54056796307512922084, -1.38133682417176451018, + 1.21073081683060457259, -1.01254430238319925728, + 0.81115183462212592236, -0.59130691475279173464, + 0.37674050838550920961, -0.15280309511366033104, + -0.05775937992349042954, 0.26931422766138946034, + -0.46038390754179159270, 0.64530155078014217462, + -0.80406797593012979686, 0.95115205178671990982, + -1.06816206760899912176, 1.16979085034013174926, + -1.23930246941276300809, 1.29162363283684245019, + -1.31164813604658414548, 1.31447731138490619962, + -1.28654567004512099260, 1.24301402018977369401, + -1.17172037229457415286, 1.08772976406155308382, + -0.98011471233554525728, 0.86366581484548343717, + -0.72850587798358412694, 0.58896506076315990885, + -0.43603235241116244936, 0.28339845663255086583, + -0.12274761644543241701, -0.03302930855081235434, + 0.19170048358327465565, -0.34130821214413153974, + 0.48919071686394310916, -0.62442467236606402636, + 0.75400262956904728906, -0.86810297830761895543, + 0.97342325576016086597, -1.06127821025424795565, + 1.13808982846891537655, -1.19631467246258971215, + 1.24209188075218457392, -1.26900126926626888313, + 1.28287079595020858669, -1.27836704948255275305, + 1.26096372052761718230, -1.22636606233799239085, + 1.17964180403114871076, -1.11748098090324732290, + 1.04449048797306054404, -0.95829038143098188574, + 0.86297294434687632503, -0.75703619706315694593, + 0.64400797601629211631, -0.52321700540526117074, + 0.39758211965423639889, -0.26722088531717180793, + 0.13440376974497617035, -1.45078723680037557919, + 3.11721823576199019712, -2.53496093392958465884, + 2.65688405212235201347, -1.98727936204582444901, + 2.02902793019107408057, -1.28854647349114914689, + 1.26930109259468792970, -0.47957187674779061526, + 0.42310186651855830053, 0.39031394181853007463, + -0.45704235192982117786, 1.26619093856512665575, + -1.31468107455681937346, 2.09098598051487583049, + -2.09305843271324443222, 2.80921802186196423179, + -2.73892815420362278900, 3.37082206817512508579, + -3.20632337612473250488, 3.73480027585739549068, + -3.46002401811274085119, 3.87244116781648717307, + -3.47846507017862238698, 3.76985699711166111214, + -3.25584693979656858431, 3.42961601899812151828, + -2.80324473515343974839, 2.87129108808723110258, + -2.14856670694475271333, 2.13080763323822797162, + -1.33528142842129993184, 1.25855039849061589585, + -0.41991568943230311861, 0.31627570398451587685, + 0.53158384231045407997, -0.62703064519806772648, + 1.44843802862202197801, -1.50011651303246873468, + 2.26029415306300940358, -2.23492855409569290970, + 2.90279944437709591654, -2.77218941388452311259, + 3.32307198118949287391, -3.06664898183652034902, + 3.48461761056997598729, -3.09155318900273190508, + 3.37124009164467874911, -2.84189067046439314268, + 2.98952766105579836875, -2.33603333913965238722, + 2.36957490299456940974, -1.61548237966157004486, + 1.56371342819947267699, -0.74256387748410057625, + 0.64317410692019461038, 0.20391796209665777329, + -0.30722067916210926697, 1.13487733929235501407, + -1.19604603518457097699, 1.95860848917446439543, + -1.93346659319177005543, 2.58934529680052527567, + -2.43998262942400012676, 2.95599759667818950959, + -2.65494856288630742824, 3.01023636828382423758, + -2.54400647965069959255, 2.73305944877231432599, + -2.10457556995473193950, 2.13900960682958807269, + -1.36862295912671805276, 1.27734728678246955980, + -0.40211823206691110766, 0.22970285442400142917, + 0.69915970292622675597, -0.89595984067934208994, + 1.81745168824385316952, -1.97486352196810477366, + 2.82407546761985139838, -2.87780566333425902315, + 3.59288813103618309697, -3.48539076471178743688, + 4.01494071798507778936, -3.70272295122238981335, + 4.01279550235721238494, -3.47291505740905082078, + 3.55278525381434207020, -2.78765981811164520465, + 2.65347464010217359842, -1.69319021081391340999, + 1.38877302551514780760, -0.29025738746321860795, + -0.11543665705241926145, 1.27271749094690966864, + -1.69165317523679448186, 2.81342799997950931967, + -3.14777855732067601835, 4.13562874175104244756, + -4.28955664946554371397, 5.05351623170740893443, + -4.94623603090193864062, 5.41791475049709259082, + -4.99643708666048347311, 5.14092104852690301442, + -4.39063404601989759612, 4.21527593936048727841, + -3.16649362017945312786, 2.72480826679766829912, + -1.45366073896746539340, 0.84293505229565646175, + 0.53448064776234127660, -1.18256194173300399619, + 2.52301977416904632534, -3.05847532949257416846, + 4.21063805852546302333, -4.48662892618942343859, + 5.31426737417739492031, -5.21131946002627621795, + 5.61764139290455766229, -5.06708766448879543987, + 5.01623441686568138920, -4.01867861921873181785, + 3.55008373754151707047, -2.18464576809365640386, + 1.41627550665860613144, 0.16289337017111191197, + -1.04524488747567101399, 2.62710442258052578879, + -3.39528935122955521919, 4.74424997279335691758, + -5.16612000968157314418, 6.06516218442623689100, + -5.95081931423771948175, 6.24888310422845183467, + -5.49690994510171027088, 5.15143940786679799260, + -3.78510346696595068039, 2.88925375623662317182, + -1.07220298066099006817, -0.14318557187814920373, + 2.12040350900231056031, -3.31682333077302438085, + 5.08358113471417194518, -5.87777986406966501676, + 7.06061578695816383089, -7.11323569358228358084, + 7.43180087886269369335, -6.54545418506899334687, + 5.90659143745354242583, -4.10911577911485537129, + 2.67210251916335694844, -0.25667523501161615407, + -1.55831194954809038045, 4.06169425571345676929, + -5.64260284835291514582, 7.57771669479651777124, + -8.27080753119881428859, 9.03949702161374091247, + -8.35842593265752675791, 7.64126741780711249419, + -5.48250317848085355621, 3.42916983687516818691, + -0.21561195849971301342, -2.48027447721748872667, + 5.81353019205663823499, -8.03390703508036807534, + 10.27367693787363300828, -10.82438989782770022430, + 10.92928703256117195508, -9.06432876927887143381, + 6.72053698257571241470, -2.67121048127142346473, + -1.27612245100174570567, 6.04692466937513994907, + -9.59630243824288520216, 12.72297424732798809544, + -13.41685737738026062971, 12.70778284649778733240, + -9.03368090685816760299, 4.07255527862316135668, + 2.94178815341866117805, -9.49568779707162669013, + 15.63259266590402063457, -18.42980204148660661190, + 18.04838208626823714553, -12.40383582048256272401, + 3.31279901024596368231, 8.91238493359957395512, + -19.67948422887858583863, 26.25126776469848266515, + -23.10877845353307336040, 9.54269774590775377021, + 13.57658668370296339845, -35.73128369134857251765, + 42.14352722011870611141, -13.60437919081657831555, + -49.25287314917318326479, 87.64799692914529316567, + 111.25581852923345138606, 52.34329433415701515742, + 72.77519597923077299129, 59.58379242852243606876, + -34.28638115088899240845, -7.87883279330940844432, + 26.62328908487570089392, -22.62628214010191740613, + 7.59292797404809327588, 7.52450796541970756692, + -16.81411625347310945244, 18.59641878029975003983, + -14.44335568511853651330, 6.93614771564211896049, + 1.00221577499725378324, -7.40719809374264137602, + 10.97329995037856420481, -11.58525557739049638428, + 9.53636683128140560939, -5.81396448552304878632, + 1.27107316501664469044, 3.02766820900722732901, + -6.50099152381929723532, 8.56717486060964006356, + -9.20110021227024077461, 8.35269724326997398123, + -6.42798649544372757703, 3.67661936382564169534, + -0.65769133871825413706, -2.35491559824543195134, + 4.88762721086148044236, -6.82380622036772521710, + 7.89175469261823536726, -8.18486544380783698216, + 7.63074267961369923086, -6.48701666317832348341, + 4.80533355697226127745, -2.91637673434872901623, + 0.90078310616187851068, 0.92684797866077517359, + -2.53296768129609173315, 3.67760574114305427429, + -4.41328779652427627411, 4.59415592173535181075, + -4.36046496467685251730, 3.64710989146974950970, + -2.65718976744274604229, 1.37369763296997482449, + -0.02583209665964924726, -1.39280317397682806835, + 2.66230954640478101325, -3.80957265214310369927, + 4.64924517077734922310, -5.24720226114080467994, + 5.46408983487653010513, -5.40935826687132692570, + 4.98799018788580994510, -4.34602772183359853386, + 3.42159237621308598420, -2.38311314635170745646, + 1.18585580810819735120, -0.00400328915535480816, + -1.20627392601748661960, 2.28001622659916991509, + -3.27317881334230209589, 4.04062183137274733014, + -4.65829410537069321663, 5.00590369306666449489, + -5.18163086232281422383, 5.08966691095933132516, + -4.84775164123963264728, 4.37995637143829164017, + -3.81747077937805290304, 3.09707937613122608056, + -2.35564431003541008280, 1.53470097791322168668, + -0.76902201004394377115, -0.00233338771951805118, + 0.65310156245481620907, -1.25210276003403842005, + 1.68582873252405462949, -2.03399177409655562698, + 2.19760261255832212157, -2.26781792003484028442, + 2.15959391714905768467, -1.97395425605825192150, + 1.63737094603194965892, -1.25762232778011417977, + 0.76908268531506573940, -0.28235276596594838239, + -0.26436334262375033033, 0.76168902143263006455, + -1.27146010428507416634, 1.68908757720426727644, + -2.07959686542847954627, 2.34584054982420520119, + -2.55813404852031700543, 2.62828616253115354695, + -2.63282123647902732699, 2.49284010940259648237, + -2.29085920782006269292, 1.95654949897635765943, + -1.57725205896522413518, 1.08966539145010243850, + -0.58411339452069510614, 0.00226148540709405566, + 0.56478298312824004590, -1.17264674398680335266, + 1.73168397604603829798, -2.29697594013191119799, + 2.78235831631753471882, -3.24419262428308741164, + 3.60138635380675875552, -3.91290416190117129602, + 4.10375989659333839654, -4.23625570203148704707, + 4.24194441455319015688, -4.18660287210238823974, + 4.00817966483189369598, -3.77552350709859130262, + 3.43234367352462266254, -3.04972432058720288595, + 2.57613254070344899205, -2.08375474135221949723, + 1.52459012121276105134, -0.97064590482607049360, + 0.37615268821247788145, 0.18834782364712310265, + -0.76763389906009360519, 1.29379593168489659405, + -1.81168935373945516609, 2.25698693066633948590, + -2.67543729849030142987, 3.00696627918736414387, + -3.29873349814399796642, 3.49528004232212596847, + -3.64538368740736506979, 3.69825771901309430234, + -3.70421212541152078401, 3.61691440866103564034, + -3.48786924721688640361, 3.27475632301514885114, + -3.02974422414476673993, 2.71392260675625518473, + -2.37946749077561170438, 1.99018555059973145660, + -1.59754762395450611301, 1.16736181780503800454, + -0.74969029310808132927, 0.31166551771787437408, + 0.09869742387434943254, -0.51353031107935065425, + 0.88739517313764160189, -1.25215205237257620752, + 1.56533303957304670284, -1.85884461821995583541, + 2.09343094634194715198, -2.30121058475752260364, + 2.44623088491589912863, -2.56084191094961255430, + 2.61234646032955675210, -2.63321632451117348950, + 2.59384440869183929834, -2.52661004688242796234, + 2.40474084563943657500, -2.26023456059724958678, + 2.06883868532179659994, -1.86183645760434002270, + 1.61715192628703507971, -1.36500708872878973033, + 1.08515931744365978773, -0.80643557298241919096, + 0.51010780834868829636, -0.22330881193398569029, + -0.07145030706534763465, 0.34897965052249918516, + -0.62574846761912572557, 0.87869864193355862181, + -1.12343710375230942944, 1.33916331006060818076, + -1.54071656363129316780, 1.70961875583010680657, + -1.85997813296877523292, 1.97564950457527266359, + -2.06999678342791870733, 2.12917345504834898406, + -2.16574665676073463416, 2.16810095097179766910, + -2.14792680954273373928, 2.09575065759746603788, + -2.02229042952510607023, 1.92011450063973776459, + -1.79886653966356235834, 1.65305539064501783031, + -1.49115083880236687364, 1.30950582475451859921, + -1.11532404941113760799, 0.90671518143909601850, + -0.68953453670258491037, 0.46357126005523829892, + -0.23325970393871503505, 1.92468723153853704666, + -4.16557884586680948757, 3.25303453804637143776, + -3.44593915400415351513, 2.42024085261724497542, + -2.51059425211679210221, 1.39633750910705844994, + -1.41227712419989126502, 0.24077264987316682188, + -0.21635012272708684100, -0.97609674436860727198, + 1.00286253986970308461, -2.17710148200595954293, + 2.16654878775715520334, -3.28305163467396976529, + 3.19645017117429830478, -4.21795373141096519021, + 4.02017447848396880516, -4.91433354370990649329, + 4.57643964819134030364, -5.31830956357111439559, + 4.81988414009709575936, -5.39404798681811303851, + 4.72507622841490615428, -5.12723964000470999736, + 4.28937719762757474484, -4.52727508672753664598, + 3.53436268365069850006, -3.62785683786929924466, + 2.50558224204713830829, -2.48587605042674120170, + 1.27053751301306783184, -1.17849215214929192719, + -0.08512016543339800956, 0.20151786467518834067, + -1.46303757982109172708, 1.55193562603328105709, + -2.75897816524675665306, 2.76845959671729646701, + -3.87060165311105119912, 3.75277363264557228817, + -4.70567649474727733860, 4.42074783946404181734, + -5.19010577379704685086, 4.71012099875255962900, + -5.27509553026956989896, 4.58698543709133677027, + -4.94279163159603740496, 4.05041986262195674584, + -4.20976482579639199599, 3.13469896564698879970, + -3.12783702341426295135, 1.90865188794124329696, + -1.78191415743805259275, 0.47194136236269401685, + -0.28471573652628529016, -1.05171790430428768737, + 1.23144381773637157096, -2.52410437294831924149, + 2.62537981789432883772, -3.80421131234295195611, + 3.75953964378753813236, -4.76128240619947717960, + 4.51329668906607128775, -5.28806612309917145609, + 4.79584969386778858791, -5.31303329543622115949, + 4.55742766119164244287, -4.81024200632645282383, + 3.79749916388380759358, -3.80559624026143561437, + 2.56881459491101882264, -2.37844417449188538782, + 0.97637974841924124458, -0.65780125171516634630, + -0.82913504565950180147, 1.18704926452319448060, + -2.66352363670196368162, 2.96125737287175416768, + -4.32608112569619240872, 4.46346364270478712655, + -5.62028856008388277843, 5.50764595337416285048, + -6.37629091890339161353, 5.94564198143230004945, + -6.47283338003897235069, 5.68783887705599688900, + -5.85603090539181092566, 4.71935458041359900960, + -4.55231847622045560087, 3.10916073113229707303, + -2.67321884544175647491, 1.01005774049347274435, + -0.41019899124178882399, -1.35178179764649097905, + 1.98114461320103640851, -3.69786685740301690473, + 4.20708425629564519710, -5.72785416278806192025, + 5.97003500602199377312, -7.15679088124056050901, + 7.00775869785931604383, -7.75512195272662108181, + 7.13289072797736700693, -7.38635817968199415162, + 6.26731534068739826182, -6.03671323074506815942, + 4.46565740043136294446, -3.83113591417826748753, + 1.92269051942133595290, -1.03113711574222244316, + -1.03910963432896275016, 1.98830461874451480675, + -4.00331522763892699857, 4.78275019197742867760, + -6.51297768748295791141, 6.89987313732664730992, + -8.13861149765103775167, 7.95169364363339425950, + -8.55212817140574443897, 7.68733284519164161708, + -7.59528408284325884381, 6.05388375030120506892, + -5.32968375296342777858, 3.23237664139415503683, + -2.05581216692100499088, -0.36257842186951094732, + 1.70856463162221894336, -4.12671873520352150422, + 5.29482515454085689299, -7.35418195438492094951, + 7.99116484998637677251, -9.36159940300958126613, + 9.17871907868791581109, -9.63072213146775268910, + 8.47415493139560460634, -7.94362721984439179579, + 5.84959799958932080699, -4.47927247834593611486, + 1.69793549090732676099, 0.15965027300752046568, + -3.18478840132444007693, 5.01306776539790543978, + -7.71652550890289035124, 8.93081549379503591979, + -10.74287235476374569032, 10.82547010407843224300, + -11.31839661109590622345, 9.96804949342500101750, + -8.99948463819900545957, 6.25827221389928034512, + -4.07065488271934139419, 0.38512606003966842749, + 2.38139899880042937852, -6.20368110393074356779, + 8.61643998734032834363, -11.57542119487015419566, + 12.63807501598311944235, -13.82204686500391233039, + 12.79320217105296109139, -11.71506520779714577429, + 8.43654467472561009345, -5.32390480643869334898, + 0.43961241802833672665, 3.65113847554864934253, + -8.71688557521706997022, 12.08265265933888699124, + -15.48183591660465729944, 16.30361365115074434584, + -16.45002500793392030687, 13.59171003025828561306, + -10.00781886027137623785, 3.82252735112360175762, + 2.20318504465545617066, -9.48567013465880748413, + 14.90272091654494523993, -19.67711811231995255866, + 20.74017759976966601698, -19.66641966434980304257, + 14.07032861307924598293, -6.51368852901310013692, + -4.17576794760975023024, 14.16329834367089723912, + -23.51935633305844675078, 27.78632500927433923721, + -27.21339519338856760555, 18.62063555219167199084, + -4.77952069574062132773, -13.83712910260980066823, + 30.22884728823828481836, -40.22732139168714127209, + 35.42041732704110756913, -14.72954694341913217670, + -20.52079756438108759653, 54.30165974703549380820, + -64.09572187213066740696, 20.63081185725096133865, + 75.12719825943990770156, -133.60939683556816248711, + -169.50737144934362277127, -59.48433955333090494833, + -41.63904512849007488740, -33.99231401054399270834, + 19.54080797462349394777, 4.55502829849072021773, + -15.26117612129312206548, 12.97777918779591033172, + -4.38161720143158106566, -4.25701440147834819783, + 9.57161442668551210033, -10.59074149413601162451, + 8.22425561888591261095, -3.93551997564432465282, + -0.59370052425162889165, 4.25231302764825969120, + -6.28295485383557483772, 6.63113776496695006557, + -5.45322092404674041433, 3.32464860860422728450, + -0.72174179537998761624, -1.73600276622615212752, + 3.72743418815548643863, -4.90913278589302759514, + 5.27762917881411297572, -4.79342985877045535403, + 3.69931246402335478507, -2.12717898344685396594, + 0.40716115481260672926, 1.31486650739087851392, + -2.75775841592583503825, 3.86536728993510170227, + -4.47202198976235720806, 4.64146528060607099775, + -4.32202935651763553437, 3.67117967066754946615, + -2.70824590474662896256, 1.63231086955569804076, + -0.47938686375067485201, -0.56076131477905943878, + 1.47891213073261185151, -2.12807286467000489338, + 2.54809034284746172005, -2.64587684032847691995, + 2.51129265429602321902, -2.09752062090623825341, + 1.53021396994055591811, -0.79016565313862696662, + 0.01782425772482717011, 0.79982916520908431401, + -1.52777964579206115836, 2.19063008943328085820, + -2.67322919924064095198, 3.02233610023077803319, + -3.14920215486500643109, 3.12536382300724291383, + -2.88752930281527486756, 2.52802255896745631247, + -2.00261060574737204121, 1.41628854711359730700, + -0.73474316150517171575, 0.06613683269867334791, + 0.62320295862315566726, -1.23050434390276075547, + 1.79624444392047655228, -2.22909643671861124048, + 2.58083743625210493278, -2.77445838998999194658, + 2.87431465786761730641, -2.81750613892182055764, + 2.67943921313475463819, -2.40869196929474282953, + 2.08823023903227200648, -1.67401470819087916375, + 1.25212618399791075774, -0.78135788804567496424, + 0.34647002877269694743, 0.09504147401617690782, + -0.46340533305202302738, 0.80551049590822643154, + -1.04900109572744959507, 1.24687233037410738490, + -1.33519138989903529691, 1.37337515387613695594, + -1.30558596407717164567, 1.19676074700220591573, + -0.99776831700801149605, 0.77728685867111679819, + -0.49082644856614821016, 0.20855911059356316284, + 0.11169134801791683054, -0.40057182512454353462, + 0.70015651007021295626, -0.94394799546326590978, + 1.17571877487340503698, -1.33334423676399360659, + 1.46349593470744543389, -1.50928811310242139143, + 1.52081703631328757353, -1.44662827430008245067, + 1.34011944582467523723, -1.15485550349734777953, + 0.94686886965187611054, -0.67386296859152894356, + 0.39345309523237803617, -0.06630420019528697473, + -0.24964180933781424110, 0.59204882237304268244, + -0.90393067744921606899, 1.22251525424021401101, + -1.49292595163198793529, 1.75299746308000492512, + -1.95087108654695273735, 2.12574385640498420003, + -2.22936578206585656048, 2.30271551767697424395, + -2.30139869882997150086, 2.26825371194373959227, + -2.16265972775240644665, 2.02908445392619007919, + -1.83031751931261355004, 1.61197782461515704000, + -1.33969227404366431067, 1.05958332281437939137, + -0.73941469259667325087, 0.42508010949271729517, + -0.08573686336920882667, -0.23368506985916576157, + 0.56334347730314737746, -0.85993865931544666292, + 1.15355380075085678371, -1.40306234169566979020, + 1.63893898008094884844, -1.82261333889625243287, + 1.98524726049448907439, -2.09103327073781963819, + 2.17193843983594758740, -2.19495042784403082692, + 2.19279208859516039354, -2.13512131262470017390, + 2.05522349364857603859, -1.92517378376399994622, + 1.77851640906494634642, -1.58939926139562182072, + 1.39124984075851809706, -1.15989237858786520263, + 0.92822999525679505961, -0.67335391614435835539, + 0.42724042918907328970, -0.16786040866833609742, + -0.07410194924083186863, 0.32013291647182384736, + -0.54114372345734851333, 0.75834338179222204879, + -0.94446353697409390904, 1.12061818577059857382, + -1.26149810880578239214, 1.38821734834325427599, + -1.47747830175773553485, 1.55040654453367743315, + -1.58568918912120992992, 1.60440097318669594451, + -1.58711959590678031162, 1.55474689021980583270, + -1.48960550996303919824, 1.41225945797069551979, + -1.30659672321418773855, 1.19265347258985410228, + -1.05568707180035192827, 0.91500792573222911042, + -0.75704682984927684775, 0.60019784096280848207, + -0.43188318301938188881, 0.26940973700598153107, + -0.10103385877493661904, -0.05716681331738498323, + 0.21622718922519248985, -0.36140680255428325740, + 0.50312173808986693224, -0.62804062257029935612, + 0.74601488413363170604, -0.84515939411641261003, + 0.93478192847318342107, -1.00444972820381295264, + 1.06291948259806057209, -1.10119141383965923886, + 1.12744135344740170623, -1.13406409667194973956, + 1.12860920190047031575, -1.10481531618038042453, + 1.06955121381055628937, -1.01784259371584329124, + 0.95581962191674607610, -0.87973738345246554893, + 0.79493084675791947369, -0.69882976314208455904, + 0.59592157689506852769, -0.48476115234862016123, + 0.36894175992122868468, -0.24809962142074662439, + 0.12489275394198096070, -0.85780827449441809929, + 1.87311135815871554477, -1.40838964617257844658, + 1.51177330515780683484, -0.99819347485982323764, + 1.05784841870849533052, -0.50747983332533763701, + 0.53701836782916634316, 0.03515625425156850004, + -0.01958264392830722650, 0.59646954782771133274, + -0.57707569418250370674, 1.14046822460767693919, + -1.09891348545263389802, 1.63063587025018597032, + -1.54921720273101470866, 2.03234901936288192559, + -1.89523754379765452249, 2.31534194103619794802, + -2.10978152453728418081, 2.45605233636000264141, + -2.17343321962911106837, 2.43967327697667801800, + -2.07639382788092863308, 2.26173990559339310735, + -1.81977592374179253376, 1.92909539899777526806, + -1.41620936898234117685, 1.46010995330698256645, + -0.88965215790011287211, 0.88406865636163978195, + -0.27434751260641593307, 0.23969758860449907889, + 0.38707318844511401368, -0.42714022949747076918, + 1.04627669175666393464, -1.06647999374421464935, + 1.65257006860975330653, -1.62785434758215363793, + 2.15669926350085283673, -2.06422649348368292266, + 2.51484582334094231015, -2.33597443519399039502, + 2.69251859555245420808, -2.41460749404885000047, + 2.66801136586207343626, -2.28588196314601921344, + 2.43509577132545906863, -1.95199470173242173310, + 2.00464505489753097578, -1.43257446865560900129, + 1.40494018730467207234, -0.76426160869441739365, + 0.68049511586879374292, 0.00123442695606782024, + -0.11065074693540660755, 0.80058792341807583082, + -0.90109327923956672457, 1.56367006680671272179, + -1.61945564791642437896, 2.21942855837988206602, + -2.19664754902769399081, 2.70240304689617705236, + -2.57249974687655136307, 2.95933029642088785138, + -2.70218270891704470671, 2.95521357734111900228, + -2.56176201377990286900, 2.67820118059230916074, + -2.15224301550462726595, 2.14265054817842415247, + -1.50152244741964424612, 1.38985446423221148393, + -0.66379972140869081265, 0.48607545398525398017, + 0.28379641335707150862, -0.48223176779533366565, + 1.24734915997572115565, -1.41584609513250203605, + 2.12474506029864507184, -2.21237845027716373281, + 2.81608240133038556507, -2.77725694698999969745, + 3.23496724231648480341, -3.03503998360083082630, + 3.31952785645927539449, -2.93980156225781152912, + 3.04183396255613835990, -2.48325019944946179251, + 2.41439383249833383616, -1.69930609927331621734, + 1.49254767036226332344, -0.66409209398160262694, + 0.37189332009631109743, 0.50930286450736328430, + -0.81963473024248156840, 1.68136930431824160870, + -1.93478793241133373293, 2.70143811420589274874, + -2.82417238408201676236, 3.42633704446697207047, + -3.35588896499030386877, 3.74043501951139623074, + -3.43533939724581305342, 3.57452036928739946831, + -3.02245910744027179717, 2.92066509752646119580, + -2.14350895444062006234, 1.84028647864847472171, + -0.89482393420570593978, 0.46310393387632242668, + 0.56336838130760025223, -1.02436837438441696868, + 2.02378529626559799937, -2.40079020822687994041, + 3.25877267922739788375, -3.44075290845240600035, + 4.05427119825817428023, -3.95087416588613837831, + 4.24676459902850300665, -3.80616006419662511462, + 3.75749216065801716624, -2.98043272692543714797, + 2.61744612953490563001, -1.56431234847746858385, + 0.97689064952889437254, 0.23495547119555709736, + -0.90542870272534381471, 2.11545108151931193774, + -2.69548274454682879053, 3.72458975879092957229, + -4.03777504989926061540, 4.72114648584837492962, + -4.62337978488568079882, 4.84654382750967194227, + -4.26121124425948316627, 3.99242777829729877936, + -2.93795928890069291128, 2.24891680607976507389, + -0.85071251929934832425, -0.08199969576345185474, + 1.60187176569509603929, -2.51966469929374348169, + 3.87817012841315111871, -4.48842352034151659268, + 5.40044080607088172741, -5.44406191014984397469, + 5.69550708319509180200, -5.02167434231604570272, + 4.54119726028438996934, -3.17080776703337274824, + 2.07951317135702717920, -0.23575542432270046866, + -1.14634107652135908140, 3.05971292687276674727, + -4.26627257252743330440, 5.74920081827091955518, + -6.28199543916729918891, 6.87853996202356565703, + -6.36676099678099127743, 5.83323571970965737421, + -4.19763530741292623105, 2.64766298494007656927, + -0.20999396108836054786, -1.82844539669973205065, + 4.35625482986863321599, -6.03185618623979191710, + 7.72604861288495836646, -8.12956796039805240639, + 8.19730238541001199337, -6.76095271771287187335, + 4.96372751166680181711, -1.86432702668585648098, + -1.15336316764613067143, 4.80067756449165372601, + -7.51335681582440262360, 9.90572301763357287996, + -10.44052035142463452644, 9.90771576476919335619, + -7.11188150283440201349, 3.33639304322946816939, + 2.00730798404884636099, -6.99958912648036690740, + 11.67785575660025187972, -13.81125972418755942783, + 13.52632834426499641722, -9.23127753746672041757, + 2.31352987610601390500, 6.99210139750832038175, + -15.18394391708127422191, 20.17921613415559889404, + -17.77065719241926089467, 7.42012437818138437251, + 10.21108605923605416876, -27.10756935805689593622, + 32.01137420331927074812, -10.28571466942930534572, + -37.58600600492959387111, 66.81980314062600712077, + 84.74613000143813223985, 23.68169873246636214503 + ] + + ESERK5ConstantCache{eltype(Bᵢ), typeof(zprev)}(ms, Cᵤ, Cₑ, zprev, Bᵢ, 1, 0, 0) +end + +function ESERK4ConstantCache(zprev) + ms = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, + 250, 300, 350, 400, 450, 500, 600, + 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, + 3200, 3400, 3600, 3800, 4000] + Cᵤ = [-1, 24, -81, 64] + Cₑ = [-1, 12, -27, 16] + Bᵢ = [0.12903031034899166767, 0.49462625286801110977, + 0.37634343678299722256, -0.25248538379384922845, + 0.0065129464125214976767, 0.077186857588232424888, + 0.55518167170340454810, 0.61360390808969075779, + 0.026821833388298651543, -0.23844614933200639399, + -0.76943611658030427733, -0.052379853152861735529, + 0.014179167753833524172, 0.92215895856320626202, + 1.0971021593598339691, 0.25456740224713096152, + 0.046650908225896002831, 0.14338240606715926211, + -0.92613081680893540712, -1.9465727592802500489, + -0.22144586882206719459, -0.11306492247477732176, + 1.7563236328818076488, 2.0062900179640360971, + -0.066728473228038671792, 0.25232940302011953164, + 1.1618884569876829303, 0.30350571523961683903, + 0.50164054491810920617, -2.7931536927570665119, + -4.5295780253657152091, -0.67188363351729623860, + -0.38028484476745363464, 3.5211542882361179678, + 3.7011102612339237911, -0.22431641894434376622, + -0.095212294131596456968, -0.39596847648837331130, + 1.5284841107814154297, 3.8039868210217295398, + 1.2748002881339524556, 1.4157736944833311983, + -7.5764772925210534979, -10.058311860474665258, + -1.8033764221743628045, -0.91352231639864554315, + 7.1873465915995468184, 6.8567935751130651961, + 0.089633515403911625246, -0.28058971818545412769, + -1.3824512672524968206, -0.77303175201857023245, + -1.5054660351670404849, 6.1730354661466545938, + 10.754498058418705882, 4.3754431703836324144, + 3.4971707874515048441, -19.298377373880449908, + -21.679197201200411906, -4.5191317892538197684, + -1.9184207257501124480, 14.733353242310913785, + 12.733531622593032552, 0.18247485290633446391, + 0.15274956187126426045, 0.64305376735887396864, + -2.2301480378809042523, -5.5912992223215940830, + -3.8785240908687354398, -4.5794572425185702147, + 20.708131963663656349, 27.955189820169577510, + 13.320032683463520330, 7.8389594854218088941, + -47.067374517798599568, -45.775942402086720154, + -10.813302946259980633, -3.7039215919752813971, + 30.157452498885583404, 23.681925417969766563, + -0.097496630081181789625, 0.29986310469645080236, + 1.4037890194877929136, 1.5019213232893944033, + 2.7814662532429699717, -11.031104364448240771, + -18.653182893706351952, -15.410792988965120823, + -12.002012749248651095, 62.249447374437296304, + 68.829893077389427609, 37.401422569058439149, + 16.180781599286180762, -111.13869336487127875, + -95.226922191927817420, -25.004904139630761658, + -6.6651890801149859487, 61.495029689806802999, + 44.086684392299635293, -0.13498139344748607042, + -0.21525311823596157527, -0.80567432398268767083, + 2.9079063658764704467, 6.7344997071883137943, + 8.7901999385692458306, 9.2101568948499024988, + -43.467787907851503104, -55.663043205814981634, + -53.099690977542503108, -27.875819065008162801, + 173.86926246376423709, 163.22159290197214870, + 99.026615560070335116, 30.755338538621012402, + -255.88882993067805104, -195.89303206890559761, + -56.298488281187615457, -11.121564850970185422, + 124.82065890461286859, 82.127933848100201016, + 0.043661038580818492087, -0.11786144997441083010, + 0.066386010208599287316, -0.076031148164367425586, + 0.0052073294838449464829, -0.00090264731399954452596, + -0.068664542746013045468, 0.038528424050786266651, + -0.0059497960280323823689, -0.25252424104948956848, + -0.30428563069431871063, -0.45243252339670828448, + 0.0082359241356843848668, 0.17761473004016235521, + -0.17473299903356992805, 0.15389866793915295439, + -0.089825185246879795782, 0.059183329009329878301, + -0.022928853429258550581, 0.011338764099281519687, + -0.038106847893825768972, 0.23171435974630057980, + -0.012156947119830843975, 0.10138743758292338331, + 0.17465860724959391537, -0.14081481729919138403, + 0.40256253304157394824, -0.23821006074928638615, + 0.086102816990992092245, 0.98271355984740181501, + 0.45223415813273663023, 0.045126524529024613632, + 0.26532915906216275550, 0.021996861793286128399, + -0.057924147207390446201, 0.0036025716824696587915, + 0.047794359220200454054, -0.082438375281827787654, + 0.085428722842394614821, -0.070149538603092456705, + 0.037984626965922970693, 0.0089719536494690109650, + -0.16938529603171254393, 0.086234986094373699425, + -0.19219663363769314414, 0.014768163740566478942, + 0.027350525216641316773, -0.36049818709633101646, + 0.44618625032688013779, -0.41087886857608662477, + -0.88684200934889911614, -0.57436812706206905531, + -0.92322606997908771585, -0.19096592046570434732, + 0.32522610362398168380, -0.079907821998929081122, + -0.13345588758970735217, 0.29254598461201388601, + -0.31111715730037505533, 0.26408092781038014398, + -0.14244690306068336834, -0.014621171471783154388, + 0.42560595231126846861, -0.28909101750218811759, + 0.55771112076481983847, -0.20054726266246856720, + 0.12994038256869652244, 0.56656407029191771199, + -0.75764426376035423645, 0.73279682411458706243, + 1.8224461324063977122, 0.64001245500892831739, + 0.038052648234856607741, -0.044321552854625486335, + 0.036759293575924242929, 0.021638976333106757962, + -0.029607181060972415309, 0.049767461395665631648, + 0.021491890615943510621, -0.091133124345637497598, + 0.14848740798617794488, 0.19943272338152142865, + 0.36922567826266850194, 0.53468296617079583066, + 0.72757858122436401090, -0.54482189889790310681, + 0.095679020051970023882, 0.18707872333802013766, + -0.30107687800164710254, 0.27363745032144109830, + -0.19800713494168156727, 0.097681109738867545069, + -0.31723563869336503622, 0.17488524716122272656, + -0.10649298429435073539, -0.55820268523458204139, + 0.56963908478467942015, -0.74849711940129085841, + -0.17770294528892852776, 1.0512407040783360836, + -1.7702141811878387219, -2.3968091958953177048, + -1.1980393329125246040, -1.2681616813537686847, + -1.2537867100643880103, 0.91573716979804367089, + -0.028561801260277730442, -0.50492821674189015384, + 0.71396631202785057692, -0.62713589792147916293, + 0.45239831858058406800, -0.22208580437388315058, + 0.36847664003587996149, -0.032694306609767816928, + -0.050086483467717252837, 0.93841953628338926484, + -0.89763044227540880222, 1.1087000572263507359, + 0.17774834420006183100, -1.3621389330867151409, + 2.3469848594281749937, 3.2028114069644841802, + 0.90717051896558052528, -0.020937207317833042916, + -0.18661372016576769395, -0.14837449674528272515, + 0.038300517688266335547, 0.070951435480468235945, + -0.091587946654389934797, 0.060889794336791781784, + -0.017975856504789689924, -0.0072533252693753219880, + 0.011174540519950900819, 0.20812895083308917918, + -0.25822851502078122257, 0.18315738347493590128, + 0.22761726432838561219, -0.47092452233887866545, + 0.80572420189185267918, -0.54511272214878742694, + -0.059404659403390539173, 0.92891799178328743317, + 1.1007121540031790127, 0.62538786625326614661, + 1.8874563453408684709, 2.1739081736028039828, + -0.88692368818718521813, -0.43379522048823197649, + 0.70245161246825304813, -0.38958663060921019490, + -0.060557513665329318711, 0.27695094218973119868, + -0.23268054744366943739, -1.0245085382418911152, + 1.4299238910225628602, -1.3607180619764338504, + -0.57842981992513343847, 1.6684423311294805399, + -3.3921852156794308158, 2.0216871483551435973, + 1.0613379342021630488, -5.4994023512861555633, + -5.5880193280784486217, -1.8473539699157203483, + -2.3571581981966831796, -3.0784438414008425315, + 1.3952774572484910056, 0.37181481497965500845, + -0.73075378810697960191, 0.34452125867081311531, + 0.22709981269828911095, -0.46831706462041556022, + 0.36292152758019850258, 0.89212885902758811743, + -1.3121292335609404276, 1.4786291885711844863, + 0.29678358896898207101, -1.2323863307540546761, + 2.9087884880870858024, -1.5284650120279793125, + -1.4776734088594752184, 5.8102725713723866302, + 5.4277031336486863248, 1.2868395548356465294, + -0.056307630242085303209, 0.097441998035576688022, + -0.10633670710218261078, 0.065481397938070623105, + -0.026221982616274855694, -0.056815934333390229138, + 0.067754973442493919643, 0.012746461705035643469, + -0.21230180106214326443, -0.13169795500987530823, + -0.046192489084262949056, -1.0315317947641572664, + -0.94547523544243892545, -0.085392665045559095633, + 0.56155459074786879526, -0.28092969801988681360, + -0.20808688051766335869, 0.54588760642725054374, + -0.58090114419366229813, 0.36290129567795729907, + 0.52240121081785670072, -1.0504167946987250665, + 1.5906283325637067331, -0.81124643437939964392, + -0.0018638282010046069496, 1.9345602288283783190, + -2.1344237711117083821, 0.12965432919981787068, + 4.7769121625257998365, 3.3318734749418295733, + 0.87711916175098196914, 5.2930907574060846157, + 5.1950447250632452869, 0.34406243717933832353, + -2.9549503311957482008, 1.4968730918040657404, + 1.0691295876398909726, -2.8639436114911444283, + 3.0504512753165604453, -1.9097556296383605374, + -1.0474668307623036951, 2.7776194551991842181, + -5.1414278225405123923, 2.7813171610075487451, + -0.15987479946101608092, -6.3805440968268381604, + 7.1379394685096326552, -0.55516442215642614386, + -15.793172752658111882, -11.195992795004662664, + -2.5492878261433182807, -5.1176468306842580906, + -5.3365095473557842626, -0.21749022657986753366, + 2.8775783602844326754, -1.4417029899301244385, + -1.0882046011347799282, 2.8728653687249711469, + -3.0460001946558585938, 1.9076037850947974539, + 0.62097258506297200415, -2.1278949271655345495, + 4.3198338817855761727, -2.5270075351889032013, + 0.45870568214516334964, 4.8672520305505719359, + -5.5525625150759414626, 0.38454542260786770364, + 12.652431236716354708, 8.9623014076268047458, + 1.8262080871462270909, 0.029113672461206734028, + 0.081262788144708430462, 0.21658125274946897269, + 0.025050190208787392397, -0.074789407421538908046, + -0.012597738304713382070, 0.10074130604319421562, + -0.13490080932566635455, 0.11487428100252660293, + -0.063851858313901752962, 0.29454575058294632794, + -0.48555596552115794090, -0.027475352066268696579, + 0.27692218060686177692, -0.39327948516586911012, + -0.16581301274777770328, 0.57914611202333955196, + -0.22601798594821496751, -1.7963574619346681011, + -0.79060836590483398736, -0.50806825113776160695, + -2.7603114089981720661, -4.2947303404447698636, + -1.5380770210530633881, 2.7269624985257094658, + -0.56080314759172762275, -1.6620979848231786007, + 2.6374840683322741653, -2.3376620862865713717, + 1.3185466927407968210, -1.7807202985705074149, + 2.1982036992984382965, 2.6785671839975290948, + -4.4458571850504558332, 4.7709428185382019040, + 1.6123239793517732485, -6.2704792794667881071, + 2.9862972637232770709, 17.298257983937644971, + 8.3011865110856435916, 2.6536916239607696125, + 9.7873065691458365064, 13.382789066239211852, + 6.2591756381095051375, -10.354839927217740923, + 3.1117577077562450955, 4.3945353532160950313, + -7.8597848435976983442, 7.1247842976197589277, + -4.0528299681271817531, 3.1580902781604476961, + -2.7154361450134741171, -8.5114902763910447567, + 11.557114594496802007, -11.084386386352944641, + -5.3677744067211420097, 17.153641006574680317, + -9.3952997098367147036, -39.719282943103817992, + -20.931759781172247500, -4.7044735383267948236, + -8.0465504526754255824, -10.277373387477163187, + -5.5523864573835356659, 8.9209652426098193264, + -3.1213397137346455623, -2.9212551283486649952, + 5.8038950393328438625, -5.3493921322424453216, + 3.0630578611685191506, -1.6798799178562976837, + 0.87425831260165095593, 6.3578473904727334951, + -7.7872474367177595341, 6.8871468969976558150, + 4.6081961500097273622, -12.707906152910633393, + 7.5460709401672719374, 25.472778833997237969, + 14.514274007312107133, 2.5923561079817314448, + -0.066207106658877628658, 0.11466977728832572234, + -0.025813439439691998773, -0.052680049566782933529, + 0.11297772235162983459, -0.059610187931520232177, + -0.038508881316853777916, 0.062000543438360774423, + 0.22036642016719285207, 0.074617499846513312241, + 0.14592550711729774696, 0.64291802270178023385, + 1.3714946446745417992, 1.0445907862682713904, + -1.1595314275421143944, 0.33876200332621371767, + 0.13709778672664356189, -0.13324516837985938985, + -0.036230767761918766905, 0.089056555794696388380, + 1.9153434822670838853, -3.4746716705851267042, + 0.52922558877594604751, 1.9621084048719772656, + -3.8908674306298948576, 1.4851183140025747189, + 2.4819203371704929235, -3.3038725968666416886, + -8.2221777905364356941, -3.2932732607160788503, + -2.5880905383251399760, -5.1270291010827632600, + -14.973312011308216458, -9.1450494297472823293, + 10.281752294524574766, -2.0789354347265762128, + -2.5745271751627137585, 2.3550599374734819926, + -0.37518953446534346775, -0.50019139117256183225, + -8.8485063007791113403, 16.598798519658586377, + -0.96527359336531700389, -11.689973021992133538, + 21.573524306119239145, -6.1633827245666136708, + -17.791618508409600473, 22.363638490701106869, + 47.527644910520362097, 20.696294684432481384, + 8.4317313625159904514, 12.073614992905736151, + 36.188813057837232591, 21.464966591923659075, + -24.005451034315451833, 4.1105534429513096347, + 7.1051454292433483133, -6.5339420958906209689, + 1.5688467642872354015, 0.83109100025294680485, + 13.016240506692427329, -25.314307826988322405, + -1.3035678621193625698, 21.967173103836166505, + -38.291844312909620117, 8.2650538519121496095, + 36.630740169747190368, -44.747656655509670721, + -86.606738551185793425, -39.727947580245115160, + -9.6717994226627911595, -8.2522426208222859283, + -23.933426687233445504, -14.363811719301784808, + 15.947221209813236054, -2.5435295919457214015, + -4.9907947770132689360, 4.6362958739153537064, + -1.2675683952842345073, -0.42567227382451010295, + -6.0097395375595266907, 12.182036371576814092, + 1.9780620248922157087, -12.541980466264417849, + 21.010924247193087008, -3.3326984655211367989, + -22.369790101446614618, 26.827803948836133496, + 48.615250192862273199, 23.155214314304374043, + 3.6805935233606113951, -0.061119324324496025825, + 0.035510019253791296778, -0.25082502030462415313, + -0.081028526613284937786, 0.046260580225037895882, + 0.043616644534111595622, -0.032663875678288390526, + -0.035913203906372958772, 0.081411206949691416882, + -0.064126662399823968799, -0.21888710479227883349, + 0.46583120285547371892, 0.048668561864545275720, + -0.60115170788842922226, 1.2076960222835286483, + -0.74901132516988570132, -0.59048168748914027424, + 1.5375632322028743498, 1.5681406827159542751, + 0.82683362130972237217, 1.4893391829977418502, + 0.49414494062351399620, 8.4010057856347229696, + 4.5396551398316383506, -2.8344431330440804558, + -1.0466568716453825182, 0.83394803054184489277, + 1.7318502805784921270, -3.4263882583820437163, + 2.6404133302964093971, 3.6625964146313102847, + -9.7366154823440887798, 2.9467421782122569713, + 5.4377968039685816291, -15.751648789628294590, + 9.6095163263792998889, 10.488345349085048645, + -24.651030245083102249, -25.513102557896811310, + -12.864980602852338448, -7.8494937992843459278, + -6.1224168943570893786, -48.430511291810859433, + -27.975304848027608921, 16.774655895561049373, + 7.2315047299943392082, -6.2773455488135672548, + -9.0894077038874956971, 19.535534114215343990, + -15.275549454158758681, -13.912915921233138145, + 43.298386583243155361, -18.708614471905227938, + -15.225018939402041220, 60.250445224012715867, + -37.629713796668452678, -43.371643850874185244, + 100.68657390940036251, 110.50565532059060350, + 51.880135237880854316, 16.670043729464257785, + 13.400050756667063833, 90.071051612840430971, + 50.892436085204187095, -28.820254519808114592, + -16.762634720701346644, 15.110447583960215185, + 13.886156816914703371, -34.179544126300223788, + 27.284397571718240872, 18.913073782603210101, + -66.847204368461193771, 33.279700700507669704, + 17.251041211734068217, -87.951941748308210055, + 56.970030167526146587, 62.845408382239392985, + -148.19185276131460293, -173.62033572306802226, + -75.878764071490308276, -15.447805232439449909, + -8.1104381363146287785, -51.746862802359092390, + -28.063963826375837271, 14.969220747560510476, + 11.385685891674647971, -10.437656280535716964, + -6.3313992395705999118, 18.356924159484519957, + -14.962877857728955145, -8.4371996034516584442, + 33.305275503825160719, -17.847786351110604768, + -7.0491857990885746485, 43.271751303451556655, + -29.101988272414327231, -29.467700402997980153, + 71.503517666883489260, 89.241605848026521890, + 36.501489519284942902, 5.2263211502600324763, + 0.0075286732088466998943, -0.030646730143694697776, + -0.059078611860741873448, -0.17820949212822602617, + -0.099474352329214606300, 0.014719457502387433776, + 0.11881352260383411422, -0.098058399524044510300, + 0.013944262941279636874, 0.020633362449683068153, + 0.013973579201790970176, -0.064548388992045056858, + 0.084296894935715211032, -0.058064903667750927507, + 0.0066549780890076398112, 0.043330286936655411569, + -0.070188747831695645534, 0.070887321077826310957, + -0.051528021073056585563, 0.025637743365987380180, + -0.0025980775496840571386, -0.011228814973464285786, + 0.016079110654982612561, -0.013753569436572633657, + 0.0076997156264075854517, -0.13637538054645350918, + 0.26176951595364546079, -0.088333369955398597961, + -0.029626638023304619367, 0.20556301130680517106, + -0.21338012375191200483, 0.20068945966542469338, + -0.015381259174897907559, -0.10464230734780934480, + 0.24267198904381930020, -0.15994050169336385990, + 0.032367457721279517542, 0.21198190452596731609, + -0.24496833767077867046, 0.13198152897185014285, + 0.22078546993051027309, -0.35378812496691022693, + 0.14362953140390331962, 0.46679109469113889010, + -0.60148921689871591006, -0.10618732188955635914, + 0.63313649353916942999, 1.0892147373891730654, + 0.39407757747649586329, 0.16267406334603935361, + 0.066158765056913552860, 0.023848129334144905428, + 1.0938092253737599548, 1.7120464320402468047, + 1.6413555965235810921, -0.63858946757041453770, + -0.97326649544775402494, 0.74259560647069983642, + 0.22675732844796953269, -0.59564345694047353179, + 0.11885834861233112979, 0.54972637319903599494, + -0.85591200345465700730, 0.60404956623582261113, + -0.050029495383104831793, -0.49838352959886647877, + 0.77492239922566173599, -0.75187391968791794712, + 0.49679114610674006758, -0.17782096728883109234, + -0.097886012076364332999, 0.25083711518564797882, + -0.28878502468584513357, 0.23255032767952485642, + -0.12755834279049995614, 0.50133751979305251166, + -0.93142408401033263745, 0.086728928589900049881, + 0.36280603294031617007, -1.1173179252127307726, + 0.97945329210013408278, -0.81055954543068107249, + -0.22304028460301962815, 0.82224851921510104249, + -1.4849055385878845401, 0.93435411967189133708, + -0.16757949702578802343, -1.2029858747034084316, + 1.3868737448748370759, -0.75302845365880140335, + -1.2143552746285320253, 2.0297427027018526456, + -1.0338810802016312792, -2.1146914251959071355, + 2.7483848356975678072, 1.0616603724345426017, + -3.8615307909242469377, -5.3907000222319117479, + -2.4106301521725460065, -0.70449713854939188314, + -0.13534070943747305808, 0.0075849880869912446075, + -1.5184086946370381263, -2.1932740289597756391, + -2.2892373537437719137, 0.96655645652713100718, + 1.1883052992493206095, -0.88561951858998118472, + -0.38361849361199167870, 0.85415957014633222823, + -0.18318152430226861807, -0.73855116022995988552, + 1.1854376432843320418, -0.87978189149902899350, + 0.17422377112787568690, 0.53503897154526152696, + -0.88297835760745738407, 0.84382199002698670683, + -0.49891898735839364175, 0.080612581232995433943, + 0.27562085067348275554, -0.45855819723331665786, + 0.48442206773065841867, -0.37844800951802347166, + 0.20535242435482938339, -0.38233748308248169463, + 0.66550159866599672501, 0.16110935140741973101, + -0.52099252271484876117, 1.1908109188384035655, + -0.95861732920468356496, 0.74826133611197682452, + 0.30499023668399369379, -0.86730356820739139599, + 1.4842655274128539390, -0.86228520217743419249, + 0.047224381615038309221, 1.3641620404086166742, + -1.5453997748287009416, 0.88912529164513761593, + 1.1397544100201969039, -2.0251790940364384516, + 1.1154686569912852367, 1.9608709332301626637, + -2.5322984621397710974, -1.3080847245679454211, + 4.1127875730839603861, 5.1699446234055372616, + 2.5762503550424518713, 0.61670156704450183152, + 0.058986994514378562890, 0.001374595157980362071951954087454071760518, + -0.005449887205661835443417305896439392716977, + 0.03769832969629001208043243390487314599155, + 0.06295068655775774656476073121491496474155, + 0.1805842413137708421680974964621087581030, + 0.07715736541494716561839915053649968862227, + 0.005322966420107040454280022509571150364440, + -0.1290684503456855007735040144000997128047, + 0.07070439799488369619790611076407046842941, + 0.02976179694283137033132868193812600718519, + -0.03867275502705727902805855636306048945491, + -0.02160538551817135731535773815913547299989, + 0.06271126916808847785772940017781223146772, + -0.04737285283839379054575256952984048570212, + 0.001033149556232193392246355620233027572017, + 0.02968973445714201034601962885113667390054, + -0.02467743137030225086454725239422412790029, + -0.004364614221753008275870422238048384411582, + 0.02818901253875964833280110788437030757738, + -0.02631462304433054127111888183844939680147, + -0.003391109709922805496827507450709920730795, + 0.04434081342467520820277711403644938415376, + -0.07443770123871164955105064621489802125564, + 0.07672116842581836694434143886602003120168, + -0.04828171526189606557069137361192937836501, + -0.03949978224772771430513993620593278148876, + 0.06710054476727671655145644294912259717490, + -0.08267184375275475568036894456908488225254, + -0.05630193336084654544187365280641995170684, + 0.1523852004380723256940511104032266951938, + -0.3026953924247076508582482362926922973723, + 0.2445343662645598120024262239977541583610, + -0.1013023042060589090243508401817636618114, + -0.2351436460866744127567109343648245777521, + 0.4162668162647115785111474075620060600344, + -0.4118141806940108653809920323006799923523, + -0.0004666579610381427017309630278900052464528, + 0.4300870714950427161667785959147056349716, + -0.6428786435961094141810220608167809633700, + 0.2380464824980563795461649582977111604353, + 0.3015164039313257475069899927028057453815, + -0.4252536645211220857617794939543129640713, + -0.2611504859768792389433899664666889088690, + 0.5423757337657242783248121080705944588953, + 0.4913071914827518513531593974745081145726, + -1.220199367049860514444566435191892031437, + -0.9316553593105186946770230686908862283099, + -0.9639384790452847747788831376877770483134, + -0.01992334377969484563579907329711409764965, + -0.1440587277448973393836961092795527980738, + 0.2038497346596323393848071831869507174297, + -0.2503035301762253556360238902984731019069, + -0.5772763196985143780566266291292304806365, + -1.818399349501747708867707687616691673972, + -4.002370936504193915976331337365371826430, + -2.229026913751350178809799661219617610891, + 0.3160756432681814068130971297601627677382, + 2.592636303900343675084557062868280093744, + -1.138444240140453233871488226718236211630, + -1.296822285684466009218222423307239461294, + 1.508407027516344291033916049885991564963, + -0.02103262294901591957761003619407621587255, + -1.033944969417914017731675310511779998434, + 0.7646051802624564529933795907145862852991, + 0.2345753328723829459254214577098073338491, + -0.8479370398463334176865104151447543753377, + 0.6097476883046892614663057342445629225074, + 0.1948468022750944604801629739201670015444, + -0.8502916602092754826204884303424647052047, + 0.8635274855644252399785683667753596758886, + -0.1760392929460893724290675153519072703671, + -0.8111636517442665985306513685757624791589, + 1.568158395242528623823247853422091684049, + -1.680894095878941304547816948656529591043, + 1.074198604230884499415801474803832852255, + 0.5832076420386863744672819037099468424104, + -1.652302463261540227161936277976572286683, + 2.226917830390356463247114830688173891317, + -0.8821241734224879992846971600974799998627, + -0.3556255640307227132584845938268598832479, + 2.369689930738876588962931792185868942700, + -2.309708727709781913808557349287728926056, + 1.280631533952475649326065315042784714781, + 1.933681043009270581750963991327215605699, + -3.825220059563309530299861636215498968631, + 4.057525713603896665318878979799422673486, + -0.2655735445161826488388530353647351901677, + -3.738868470281588696136711606218218391161, + 5.737065899481649242855069959359538961316, + -1.747936001788707694935907136316955560568, + -3.378417670224283574676730633620877754688, + 4.203777936732313808885201167405037098509, + 3.155778476930495768881174119047501389522, + -6.440969656668893213534895765872973454390, + -3.514598415454170758498341594057518144304, + 10.59051897892115733838753946600127207624, + 10.94738366234978094972073805124990385594, + 8.197081118707526180939995175970654704761, + 1.275045920305737709396325217403113252925, + 0.8675016479831829420804221049718669531312, + -0.5780625176749898190158597928682006651735, + 0.5418073975607787588843141490443580656127, + 2.241757763442687108361987860207558849572, + 5.774330156204059731388738575331409749528, + 13.50392476154269112620835109543983859990, + 7.419974954252019594269116523796850250731, + -1.240460555744341920035784701674846130917, + -8.284345535389162155571878381782064499892, + 3.280336130442322791761769326152702519783, + 4.921352854834183627733956050590790961828, + -5.659772341697525428399937312811076102333, + 0.6471512094020651534916033190877850248333, + 2.976479542231288533207460179721343215796, + -2.254002828428936457302713513788179739252, + -0.8777061892908624285745156770062968036253, + 2.697057555649664045769949512005423961052, + -1.696201873154822699860658965513092171239, + -1.173593262561515758141234388115231495003, + 3.491747418662219651477265626698102917638, + -3.618052654535361335938262764169378248942, + 1.336909459316819885805779565383029648714, + 2.004102006517489269365429616963959970723, + -4.643010144074325109944026665786135608035, + 5.181969174335671268693029612561139636615, + -3.361234830461234505831439682164801103691, + -1.332881013403466861225341669711112042314, + 4.637428219347438100086944609761411294217, + -6.580151987807011825475251084467146268605, + 3.342186859650684157808356206627505013366, + 0.08520729140389140770163150380632778384509, + -5.716637166092238462602452073945601003836, + 6.320011602025798560192236876812615066393, + -4.379097969748772518216182489709220652929, + -3.264883213134573784062176970712813493680, + 8.116859046434390134435930806267978514979, + -9.332808885975439799692747529711033261377, + 0.9706465390532275530395946382681489951000, + 7.956469285647627163057416658111447898799, + -12.35400618082036212334663624782504732915, + 2.697912287418887984986370444064969547249, + 9.310286084270187440494285657141583993815, + -10.73911387518296649273635574523497082538, + -7.658118138222396352650186889253876169456, + 16.27629336036623422969598736310429290232, + 6.981949705624756627338186085765832572412, + -23.56368332976018141264329293225206727299, + -28.25805515731000678909755669418007522305, + -17.86353682578845552533253643003301417276, + -4.436400815354400756889905563875732288763, + -1.342180698903920713881155859959291789301, + 0.3436678629850024076102505805298958434874, + -0.2306513568929483995956154830386102095701, + -1.986936545095129759362142616572756534290, + -4.455779931040966772639615366451876023318, + -10.88235591484529452194430148004798934234, + -5.947135603436423784913671417258917616056, + 1.121083872417487858536861644928123592271, + 6.403825630672772356330269735367213620718, + -2.310265011695732939496809511227656814235, + -4.295000650187657522253198870100236094919, + 4.905362688088153818370158732760096718903, + -0.8616179896064762750646750778427704108114, + -2.095780217755426353239485274888164769320, + 1.617688732118253158298216973730835101157, + 0.7784750234524995030358388337842196617599, + -2.107148571991450820974501703150100401765, + 1.192738982187645402816068607786886993586, + 1.209015723815499117743665027068585446870, + -3.137247305276093240030479380015846359428, + 3.286140998152077974088212158804384010617, + -1.468129138944516856167280515942084744163, + -1.229453832328854469281633597985698557227, + 3.402141035039686851571966047682398434401, + -3.919900630310387460274061804341526174604, + 2.571440055194347138885307162464656958841, + 0.7998814250045190790435082197606179851636, + -3.251153440411029735903540036415859364393, + 4.788430816116559695261683665705647668759, + -2.597253016869723996589543871632549227526, + 0.09120822937541322276678628448040151785211, + 4.044098532845943618024953280299397608639, + -4.779823081072629497678265559011204356386, + 3.713143774450664974127326623200775562468, + 1.393496952061635975615254678198990256952, + -4.819927015139068671279345955654083977477, + 6.000428262651025195785093719192325355167, + -0.8277693249494475532603131240740117996669, + -4.741496855444318844990944537789295637090, + 7.437631004296951046566977249467765175998, + -0.9152756441657564135001204855257549640801, + -6.981323268579185847472261585664922208959, + 7.697837088922673605591948735093369409598, + 4.905520985273643065870293645461929411358, + -10.99652165336250718213352535393226514367, + -4.195358644910016332042394635314193114494, + 15.04033902449239598819874178335054312367, + 19.60086970698343665619602826593173032719, + 11.19286675917265020837059368079980316853, + 3.512786021828323432693035336593149126350, + 0.5939791784659484745106540737148525144669, + 0.04264072481737340063817366839218979494743, + 0.007333436981452604849459205432387011357761, + -0.008877754741741476887453286949279127038190, + -0.001868751019268655836940417879991266979926, + -0.02880775145013251455334308261140386565995, + -0.1006226837084563422481902080693471680358, + -0.1327078540698960948287270116646899462776, + -0.1120472122941965250180340590170541867929, + 0.02939712041820967677790640740553768317628, + 0.1047141578161624432921981249398663425791, + -0.04646648397452598740130070328150152198192, + -0.03290751658656670521673503991134287931713, + 0.001319226859261412340274197886766514074334, + 0.07126090053626846272447533426993405494841, + -0.07986028182868423600013915864252159352410, + 0.02332962319534810987660826185260467857008, + 0.02829822404793372348314648670391188399178, + -0.02269799465252243581386604692040925346461, + -0.02999219505623682253689137573997069944409, + 0.08327180614617397073909785719262661640319, + -0.09762685849606553526757807939966176852105, + 0.06744707354280168639356939157800203545979, + -0.01469255635129400991088319433578365077927, + -0.03015911746815203354462516779942274620246, + 0.04718548668109410882793587422655661205632, + -0.03323590487712064211994735978880143512284, + 0.1095914998683546769583243666915126690242, + -0.02408504844710162605249587994971082457942, + -0.2126557018891825409944204554635595968617, + 0.4363524011671252752446400839716573603869, + -0.3027320883045196606257703505210495995100, + 0.002104446950736410805027040999898037306020, + 0.4076491149754769794857688196783464451541, + -0.4855100728873807232469776992737857484810, + 0.3300187828704264679433138477258035016276, + -0.01656114085879245676525672140155154723594, + 0.08504713947684088271191703211700165032136, + -0.4404423908412334112625128107590784268835, + 0.7886541296106687416924179978801402663729, + -0.3522851070731328963347287824327852109700, + -0.5766586741178211263025305505567265325602, + 1.051769612074908061937888495426752723674, + -0.1714496967230236925979651078217329905186, + -0.5396678159430047049132002496890022334118, + -0.5126365891240923345897048157216546900376, + 1.141873230320942948783355292623769689805, + 1.529120580019986128948464359100022236159, + 0.7702549957647846512125860385002977147507, + 0.5459908661457536395164007842909234953722, + -0.09315521186569865047543407852419652287231, + 0.1107976058038429012863283409252045101909, + -0.2303458892936581239574648308960962388879, + 0.1336976815396849647700106370933470216654, + 0.3516834549159677728954213463146698303277, + 0.8544863452454205450101854710929814193548, + 4.306837072489053392755188348358403284416, + 5.048616064108021516127553412765615848267, + 4.725979840391034728125945136745110231074, + -1.441749528872697574288752608330713541040, + -3.859752517437705740676557384214684898744, + 1.414036519211360333304198301176944384744, + 1.913282096802459688714638899695203034685, + -0.8299356663858061560521695924289713825740, + -1.894410073964523931927940649338699308139, + 2.076708574758634943505894849749840384163, + 0.3029186122622356075365549527114142725517, + -2.435297448526528517064822282183113914952, + 2.215983163613681742983403012993460188261, + -0.05698468495074608087006640169831872367319, + -2.177877614135855407659807279719985157678, + 2.891826400742211253120813155624396559924, + -1.849764078390246929875675892493106503688, + -0.08571609964506862432828236233754155067712, + 1.703193173519907258692970732580926038376, + -2.213317801574607662387175305887834426308, + 1.490188713680464403274345693120396664182, + -1.980006986622130609300443063546912181650, + 0.1031951524792276885836945707989465970021, + 3.704078116681343015738913749367372688199, + -6.895477995753734954703559967840518892923, + 4.418099993578122874449903178507937912964, + 0.2207519219615603225249880179764497742627, + -6.006882279945595997676347495961556365601, + 6.047063248254987828757880666039719288536, + -2.366479282848661642222324291283940898646, + -3.428635131199396739756893266248856925253, + 2.382497348618584927462927031347597528260, + 3.999840683526275674454490967626280128605, + -10.85482836944743442724054575005519299933, + 5.382541340155622750758168587366225772214, + 8.088063981304541979759585968790947985777, + -14.72984054402136713174677423817379738861, + 0.2479947253218442575259061594056309280992, + 10.95181428854250434407230107358525254477, + 6.483711533402544525380316052916367036812, + -17.37200248618687849526022011489138135236, + -24.56093938905708604139671470991696630624, + -12.83863442821655895387590380937713431395, + -7.925565086342176411341628412377050173964, + 0.7149354525548635707743855305924922534041, + -1.308551895032837824954361791021518575835, + 1.687270002699222374598948549078791859532, + -0.9230593203909039134126667841313765903936, + -2.245225203074972495734182170704058977237, + -4.934259737676585098776816087825313276190, + -25.86011166281817308116455529920347245339, + -30.52692739223138457321835125598129647444, + -27.82446056415316291009207878218453345196, + 7.938135417014829548969046927931521525596, + 23.92607366238149255792992561901562408754, + -9.098286233937027048925174860406454624125, + -11.16240786139081519053284285218194667976, + 5.101974970962042634771294362937261303153, + 10.77753717851956202328053966423151478005, + -11.41192525491219905866377540848073949191, + -3.212300689101438743620311795097983538688, + 16.23057659545102621333881816570375691511, + -14.96532326093300163827332524839284186307, + 1.927944080091714309870786523120945914958, + 11.69286619061190191277726362638522992367, + -16.24661527248653321684612280878032720773, + 10.29312863737262230284016693884919368501, + 1.052671721203960484087936353487073653273, + -10.53729535113503455259711906575645481708, + 13.44609802691065340071433134329323904703, + -9.007528504929813244080057107338726596465, + 8.753775117692102608893831173707151540377, + 0.6784591426379441260763149859604200202351, + -16.30288441246489605846271649168158795902, + 28.03089055825994991971682238720169416638, + -16.01785898055625343717347853360157278444, + -3.494709261303948396802080761813281716597, + 25.97216013967591776396895357154747437496, + -22.85287041301876441482319082344052378653, + 4.002083722334224763594518825134124589030, + 22.69255121130057364100236439181030183524, + -18.61929364499574342668720817272057919559, + -9.928058133630087642542506967373551315221, + 42.11821508931314435588362564639796092179, + -23.11429151940795775261127378824467834724, + -29.85388132134973573339040769097274494118, + 55.44171342796918729290879049396835618307, + 6.065251268057741083266404135430870257445, + -52.13973584743567571345516671661999386381, + -23.19171456193456675067675562972747178236, + 71.56913330389692608286681085323929287897, + 102.0983629371847083657865184573980623430, + 56.72618012451507063293783364621281685505, + 29.80030454647425351459861174505878377035, + 0.08519053380809866209181644209447246418297, + 3.706098979702364131756304479751879031478, + -3.171426684714422014122965502451108647724, + 0.9998727300915549261944541870414796310385, + 5.324583627103725256623810804019721592822, + 7.968694179652239274899337555624894189221, + 49.23482083658057402957187512301591791101, + 56.44687156329497865533601709235422720869, + 51.92344534391675148050118025219402694105, + -14.37648650132761462817043731163198810825, + -45.41166974544581704770977677073660103062, + 17.76978638920387976827482692197195772478, + 20.18095313634870227013176876995596972367, + -9.206584033317215530067108800251448265937, + -20.05759299558143293530618760285066664283, + 20.83503275919983079610492912019591731872, + 6.745329158185525769483323964957630605443, + -31.21859072212384021512532483100173157793, + 28.83847945030346512450946237100454454569, + -4.365683691248344345598867961006943160606, + -21.32104758100881190714053177206337178422, + 30.10216038472674520537001859850746682516, + -19.26499751236375927381640913957995069110, + -1.728174263931246651628575137093895490951, + 19.34266597694578868745981261862939005647, + -24.80469997890297543101019746457081633978, + 16.63900313058331669143239683594411779349, + -13.23069307687320700133886705236845230537, + -3.235948692267462635302089013584123512732, + 26.17523856498530302365284036423098170412, + -41.64642378546361569687200937316934267752, + 20.96094224919490845125734512837520534453, + 9.275840262454352481406193004490332499553, + -41.86318372990487230750574954840208888815, + 33.61891661821661637248083405141899229898, + -1.170966887011866803663182576213259088023, + -42.22620310917620447208025449949379895294, + 36.53147063744150280507974825276649994630, + 8.661013210031818585904151169217487028763, + -61.22620498114692295214456003953339808293, + 36.36062008966861294908069881986570021058, + 40.68597946963229585630900272201245632228, + -77.50030003018366548358410395867147088411, + -16.61274241310021385072441044069995532233, + 85.38984921533318849319211306071956581894, + 32.01798828298550467286837174247515531445, + -108.8740818233222197937018720907394976686, + -152.9753602908055119370618796866974503705, + -90.92081951166009476278339159889067100997, + -40.37338393914419942663925821453084699784, + -4.409330975687005920855000113940713875391, + -3.212830959582371383649104148210451669216, + 1.688551563889187687265712875899692395530, + -0.002168855803858633905871785246788999527309, + -3.813918337973024237849497586508863031290, + -3.714226936218825751939026842311176261839, + -28.84874819496520287755072298049528852846, + -31.73472001955263757463865132703890546653, + -29.91871580996499407000909183641478268077, + 8.240851345554634274252188673184899636660, + 26.11473672247428548355413323199532877847, + -10.39327667455286968275102113274042655886, + -11.27927536908780244613329665005178883153, + 5.090084341640631704439019363327482368142, + 11.53742413766144144931648924022419119463, + -11.86242875034992408175795739479806730222, + -3.966283563261356917104840895010554667213, + 17.98832083047477491990407022213835696545, + -16.59120689065045443651939309911432743379, + 2.536329055281422748338666238049635555409, + 12.25612475975827704288467829539005750822, + -17.38022945743433809103255741432283650059, + 11.28233124417786529285296261660224612827, + 0.6711074668428672675326837171229408323048, + -10.74229085222780845658493979791184178347, + 13.93039441196139115919300914951349969979, + -9.372754883423299178839518881079825327040, + 6.388538712326769816976224905986892510306, + 2.752780466181332114261087993209530123455, + -13.74252161275012563840251934747267040378, + 20.40397973442212692126683153374324990523, + -8.975457753954933655765987442688720605290, + -6.468547586143977285083698042831969578645, + 22.23428678799504673922470356292996151124, + -16.82160418468611907299603152952487477561, + -0.8114045022097949510854281705392337688990, + 23.58699957234646797587413790207501057786, + -20.98727366331272888530211597893479155343, + -2.170428225553633040082994972829395865702, + 29.70720453919633043734461207721365935720, + -18.72703511847588077458905031652415841062, + -18.50455321108190095064551571772984701251, + 36.20208495369191125928959982817205521087, + 10.89298186317370913170112134008651716099, + -44.62987978464048130800098889945932090091, + -15.14941176382770129858793910650811011034, + 54.82670390568974995225365712103903542152, + 75.02562897282795832768156971691346216487, + 47.61157435226746550232288078851569620518, + 17.89383737204522183296020959622988385780, + 4.106812602122547032480277287127803262527, + 0.5367059636456148830893148773550436180916, + 0.03083356446024644842839695373699042672601, + 0.01926245671799036559594116135330739251713, + -0.04093706416863719091863271651159608393332, + 0.03603414579857355879470697525993357653900, + -0.01957912928100743012429162401407974104663, + 0.06052761697176553940170708700315079495059, + 0.08578315908831385965098365565055088064151, + 0.1387090880040799536756949204814839067259, + 0.1021358327590869989495276176577315379104, + -0.03883049546728450166408405636007578726685, + -0.08574750446832493213043882913567387687132, + 0.01416790345110810579134746686301466187816, + 0.05710062713389428236392730049603612845790, + -0.002614742264474623565574318977387946343200, + -0.06558064639799391072743975994451411794582, + 0.03951038124942991553073663436241010675136, + 0.04130577250137878331858396353065011173833, + -0.07951052775128688204616510875804871581848, + 0.04011547567119140007216930313886407046998, + 0.03259156737558297733186380853780802869483, + -0.07970553022475701414117406605749326256763, + 0.07948179458077646489714727900727823231348, + -0.05013520793548702255481432796499583746211, + 0.01960782740485777722928370232451138768854, + -0.002735505924891401655321104846736097287133, + -0.001565611114356034847946434656554811816092, + 0.3387859510269453974663350728583122622036, + -0.4313275324644830749600692728225717562346, + -0.2510862279586766246051345788306592539714, + 0.7017877803178205929190469707490871083381, + -0.6949231136287568284117564935403327575977, + 0.1055074167217583494700605481233049872882, + 0.4096914822517235799529721865626017281181, + -0.5003289360012294698246742394266349832747, + -0.02048997212588170815955670853478644942162, + 0.3908091237037226948815763978243270783347, + -0.1870461264477557967405658960297285914295, + -0.5255954323585247174393164515182773280727, + 0.5934952850234174200618542699167793883974, + 0.1764942198907756725790580896743888916499, + -0.6755349276288384754020599338270782100081, + -0.5086096989911953873331143374686368014380, + 1.550864430958942705780289795973978881152, + -0.1554431206669765458383459911568270489730, + -0.8065825229260486336329051803632947213910, + -1.797606874273262165699060240868125728478, + -1.342978133870493344091596317828023824484, + -0.1023041503385690440379276059907139764029, + -0.6464291871202002951787396153511361413132, + 0.4303250100600841008093352666682766298354, + -0.2711577113333218800864745354193813634074, + -0.3370294823341204018214548801361780524254, + 1.120529321790224987983406717431107951291, + -1.104721413416273072137477082900818176502, + 0.3258388762588230084750527659747377249345, + -2.889733867090635582971548853814573708303, + -5.861398697902637465782251259129944582180, + -7.583987935193414002447676996747427136759, + -6.888605827863210246165649264272229029192, + 3.079456826426404468513133266700857341789, + 4.466533558137654644068447573876056447659, + -0.2932418617390640287164038968090778779084, + -3.828666771037650130867629785414200138331, + 0.4163355050821710820947544003764991706374, + 3.773678333538794681628390580166953181415, + -2.226375046106693579924132729526603643366, + -2.695964934274135800090114798445161389691, + 5.149139474772767829947585346636339729001, + -3.001958623445675639739639895570195626877, + -1.127448865928038650061162047298824941271, + 3.757538527207512481382728463219373804162, + -3.627229713490148390130757357940211148014, + 1.866131489188361341908192610351284944579, + -0.1643483732549584225451637287726618292002, + -0.5928435201307155201001346158494472972372, + 0.4990753913097120179827644724211461818359, + -7.405520221290172617518719234023197936237, + 9.555818887166782019757197347606557567781, + 4.473831453257422620601589097368610181295, + -12.99706762770345903220857274679976956207, + 12.04383079883808738406630791057620585999, + 0.8994477476231565143984543912905824476554, + -10.93553423218564107574840433743507905593, + 10.88507747641473012089850784401659393471, + 2.795176289243352055472917124797648987462, + -11.95589270508672233532276168447569614547, + 6.992021447426104440064945196240307767472, + 10.01738552915899516153413215274302399944, + -11.56317524198565279263500218837691900214, + -7.078076561333905552206425228355857122645, + 19.88012418026049115099834448843789472715, + 6.624293090524122043572076302757490087850, + -30.40042735459230882518639395658797851373, + -1.704152003479916852759937068111766817682, + 22.65687759096684435698192936971029941457, + 40.34561740772849987077680275001542354646, + 30.53864755097470270195322157201414443474, + 5.104523968664841283219072338305623837645, + 11.44175574097841069340393613105998737038, + -6.684164377304978995881329321331098328953, + 4.334337195191339439943306596352686309757, + 1.509197907358256349967229559837275617628, + -9.094135130920697398802209319957409438726, + 10.55687073949645810566917315637891471719, + -4.358546763925999122034880560206909022218, + 28.62501101277979007338666817226411535871, + 53.23999501293720588523523449084822240538, + 71.72766440398147878392451039257403603995, + 63.80390170963406173269094694254383994826, + -28.44643548224858258171354518412661914828, + -42.25532542157760893339578293565124193379, + 3.948672363837943814122333095111029022686, + 33.61666371714049403472305190926677910860, + -0.9262678814494056411679816270607740797692, + -38.73174747541936061482566948562076416700, + 24.27475068916056262041094210629761526518, + 22.30999583074919293219253567683628592914, + -46.48344573982306563624055170335117038360, + 28.13894487166162825913506419253276252831, + 8.533394098534989985786722606772893556129, + -31.39916625890929779654133344658977529345, + 28.97346251243714212655229998958933717258, + -12.05626473784179435390147575547051095512, + -3.485361816313652385544121403755600214476, + 9.407572119251017344592724326343564458672, + -6.767320001999154238638652609189314064942, + 42.21204936193729609190152016356092074940, + -51.97162378633267598216993737827070403176, + -29.39071149799753034984874991621828074693, + 74.26395637569638599172742991505617424089, + -63.46358103964252805627063496903112723885, + -17.22332765337711403798867522934145576210, + 74.32313398287304863104032677845963668084, + -66.53051541748692526469335539066340960764, + -25.22693537224378138242842730712735769959, + 83.24012540596427947086044003839273727435, + -47.70012909449156306007958193971644699235, + -65.23386230183291297193757902747695109292, + 76.45544711069658585295352913909843442048, + 45.33987558424641741827155505831678257236, + -132.8851909335668038675236818390569726063, + -30.60185675673064867874135568212908844846, + 178.8470687629174782772972952608219318198, + 26.11724884886177784861478908192438818128, + -154.9216555448301403876239212978640195537, + -257.1626863785012722570682579850836708812, + -186.7357052033486924995992348160192105936, + -49.11040173003882054402304582930449883979, + -53.55073706057818714168284866821373573795, + 25.38523252853581707890382448153013121273, + -17.59479457014464061195039324413638277100, + -2.460777997813837159289753442070860953412, + 28.15231446075092505324794933704768969876, + -35.77778821410029394316525603539823547084, + 17.62017602791965380505408059800330804159, + -95.20934403157045508954049667940277677078, + -167.9205555173239453392094239686435156824, + -230.1448460526832898146040350605691554104, + -204.9927158808469261981885161582439091121, + 92.49004922433822114284029657757845420969, + 134.4599525502109197370238078524909754214, + -13.61693579879681836200762117027870770821, + -104.0640558273257808901345059381016417458, + -2.989008007790546265851510073910768738792, + 131.7129501096507055820369391491546175188, + -85.89416102459094027406767546038257176317, + -64.25185134543152692958801807804908452534, + 144.2854977060169422624843055372638535976, + -89.33874618689391860477818881195612389830, + -23.72449263268665455488714242725914531313, + 92.95760210513844100680439381590923823362, + -82.27135944763600293897445212788799678733, + 26.86965677261158260029114553577912705918, + 22.25248555938068386648383475741702592414, + -38.72923018711476698903654416894444774130, + 26.36950679337530713263432507461043920151, + -95.41898644089449641797170363994582621580, + 108.0693097538529931081470848473932317239, + 85.56191365121084112689886362919894720162, + -182.0136398928969284652136174771612412383, + 144.4285506266343020151809800369221936117, + 60.17668586474842003891933724523087161666, + -194.9008053794934161115277195842367821732, + 162.7358742704998584429409434402822297569, + 78.60583751697982170334692735991554069189, + -223.5410162344553047183576749746168827698, + 122.0554812763219927608630803128385228779, + 178.4469850468450444081226532639650021472, + -211.0227042525917349176125464352214915145, + -106.9363022979711776013170017790473382587, + 343.9705901784739534176312707111113744275, + 62.77732863401634965877323371208500327236, + -434.2358246482179835157428665988520525067, + -93.90215787216924091565864563338379569475, + 416.6169817600372344804082867802290225326, + 658.9867044559173890996955095849264713762, + 464.2728562231383160137016093004771594383, + 156.9264274797675260009783785314053858171, + 100.7132556306529885749622664728947195470, + -32.41339592556741652042495075918928594969, + 26.02919189559404110018518451297108585521, + 1.528624971519443520348460163931437710943, + -36.02052921707365838425947791905568086353, + 48.01863457766457287802855500784309031019, + -25.66933544286765662663360410722097695068, + 124.7150976188244514558662878981072534480, + 215.2392767731274769841822168872674775825, + 294.3574530146522396652483530825396476891, + 266.7039759343749244042428019288496622341, + -122.7281265996173851502251534289159950286, + -169.9326240833110241605458186792808931271, + 16.56618720250124246505223294820028163926, + 131.8112061203857549585585517830621001769, + 8.708837281080399232702264452577907509069, + -176.5219147842173790533055277403260208188, + 118.5166080148576239015399213931427693445, + 75.15858374018291031337513600059487608781, + -180.3793783823811456499879567280119005817, + 113.1979288970638124912088035883075312917, + 28.05766851850850943065513196202172400794, + -113.2223446139548587297329896331127570743, + 96.53295033706875021689208069929082726687, + -23.92587810278609923784040861106537497724, + -38.81924070330880049401317431049834271915, + 57.78670371490173912446383608215135416554, + -38.29085541929684560121199022270680042637, + 93.47057244566000979911092277815013868696, + -94.61991721042752333167800141414298733521, + -107.5045362924072197806162942458613364343, + 198.1890300932121867032468876487379397128, + -147.6464693380346698306692576952122078438, + -77.79520733755483590681288773464377453415, + 217.7600007818116227075370225498460774640, + -172.6650251476747361455320373146058673184, + -98.80263401182677639635145410762295096852, + 254.5887305502502600901775908280267590066, + -131.6948576439512355520465912576339292536, + -211.9771007564573790156042548053615200161, + 251.7148769056319917379368852323147205645, + 106.0616226309121474542225912120477222813, + -380.8123856742203039187983393994974001131, + -57.87493249312426253718809069918246922937, + 460.5539451152509437466798867677128213273, + 128.6367435682642848411880342444660661053, + -480.9611521894714919831675046973767155223, + -727.3534771813135870622362927532616321596, + -505.1403298423341312543591924029444406552, + -198.0768435970432659985313901932861546467, + -82.18999969501284636284395645012202986656, + 9.175063275037883304407504452941400436214, + -13.11329561288108709180110629971279726271, + -0.2835037190066810892685886921330001536248, + 16.08895382098771690703449353681762725211, + -21.99585393567653078980413453605076418927, + 12.24190490594652410405391293138353695705, + -55.84137958135804135086594577267792018039, + -95.94678368893261646764118597550708217267, + -129.6735419544329461492216821750625434019, + -120.2751996896923397243522678562455396188, + 56.51113374809279307140077110370336920464, + 73.94001489089317825388480308968825236488, + -6.583217809806672294570259742082293608490, + -58.18852954391493934503634953607738654072, + -5.426180281538654994245900299195369471654, + 80.98441262213414535062059699144103848875, + -55.66303010180299453577646031868286502272, + -30.50763767699490971712308065783154275963, + 77.99735908772365914241132239254598298729, + -49.29141390138763148155621256802554411935, + -12.06769623338889907542725563637538650921, + 48.56344697670210448585064773018528376163, + -40.07301792028663265452001129109456998630, + 7.264164708201138833579793624986585628051, + 20.55490165571172306399693613663337664984, + -28.29330795514650698704383954604527213397, + 18.45924100535055221229458877003113261652, + -33.20977857678365242002442049799828819695, + 29.18687766792200515897973524192549918398, + 47.58691952133334507108356491692012718255, + -78.53770057096211513054587451637802103257, + 55.44572930192769629876907535827733333009, + 34.25404392419700821744807965775594192616, + -87.26798188666453101898630835055214551656, + 66.47434607440409112861020801382356658869, + 42.89362172275993078568518882081855860330, + -103.1860668496251505763598651861041574533, + 50.50327779525263138961355206973539819633, + 90.29308885291176250983021672940314500884, + -107.3281639644464689644993382514020126874, + -37.37989858128467548216254231543407585385, + 151.2646471662979038072164971219666337358, + 19.54412530582633579866175561571356574603, + -176.9391327258328840442694144892432781588, + -59.88328887765582870328476235612563537872, + 199.1014604783690807643810271094376605592, + 288.3108089851766744844055715483817784572, + 199.7141219060402867904761970665122631629, + 85.84303170871729930845772456403999119485, + 24.15651649324571646118100646454492501730, + 4.373092858528383792977356103636033389461, + 0.4656974958153542592990950374794817325975, + 0.02229914413009590810626901885877261843349, + 0.01500915792362504153434533034469811980427, + -0.03243419386331095802572407835050001790879, + 0.04900635688289157924359405700501451432181, + -0.06516598731321023782479066778689037849726, + 0.05660977386090616051497407213622033131028, + -0.1107023830908712394540009610025626681767, + -0.05943259439796638092436585712490260968622, + -0.1380080463450663648254299689955461392133, + -0.1200037364148762874166636511329673833562, + 0.09364494357242659329857631261146255769083, + 0.01744164650948180717622125325208971489854, + 0.05377265544584219678170235758697096812410, + -0.09483518437574528718357443561806585222054, + -0.005621567548558017759437101874769462790636, + 0.09306172453890293593022780621234983425053, + -0.05830110480220834747369544474259016305824, + -0.02594254399961326391718122521575175474085, + 0.05276561216111141777028436839094705105098, + -0.01356747446089236604895255816436087576070, + -0.02710727865820064872829848871544966275762, + 0.02493200144550438085597304607881172231589, + 0.008318938283221342116676152515951727213554, + -0.03631080634222177163795051366830810309914, + 0.03979884204028649184935722192749765709925, + -0.02366020131417242010008412988834972809054, + 0.5052214381841702117521107873541929928838, + -0.5232443148677475061799590806315318198721, + -0.3362460567892470831604244679797336752178, + 0.9130160073526636669996196939445781953159, + -0.5089212645330699279924600539024182635593, + -0.4006981029077735047692517969463395869868, + 1.059897094247874485675010517498418682832, + -0.6829668126822002676824546443034838360350, + -0.1128843979596499220336888905921576367167, + 0.4184169330213614293767779975744912679252, + 0.1984283824626849398875046169397319636446, + -0.4061855776386196035278772736182893127072, + -0.5268546005354924863048192125782766671676, + 1.390995676863145680196664412878932021183, + -0.1479229635121786063663232628810524418482, + -1.180145151115398900977234472754945296180, + -0.3521402627862860632496369042228113434885, + 1.139711152633523816379058591667296527972, + 1.969902082893067104142760661245093971275, + 1.335068788454505508563767472575222063240, + 0.8052768314309843793120429419650137526828, + 0.02705344084309376976373803534750769715396, + 0.2895823170317758992902953347872592715290, + -0.2167493595480997512314600925735417738521, + 0.1368369283311672432620376933374890344229, + 0.4459355561282920809670637666378016187678, + -0.8139122501360880532978652371429688906340, + -0.5571088524444644946348920072299948946038, + 2.074105049484266126801616921634442253560, + -1.762542676363650380495628397463505611727, + 6.954618585033343572767101566391670218703, + 6.503123615437872323926728234823761664219, + 10.97812421955106026968183313401467271464, + 9.865785797394145442025248543461351718762, + -7.018947657488056239099931003200261314352, + -2.676975089910337019231876029348382039672, + -3.230904916170260170784406243724478695784, + 6.846669970510397750061702157128483759825, + 1.269025201165505341004906373948299336297, + -8.249240384057447798173989800259720975220, + 5.019401549057413918730144948517408874185, + 2.237908658074977231872813585849502987324, + -4.520052642850188965355454580519802668726, + 1.119987314582866642704323848905732712307, + 2.483957104389509116157713953132177213438, + -2.499331373697577618123281105063861994728, + -0.1561298184969393780924890730613247028929, + 2.477793224239989733586192341311823239219, + -2.868019276303031882643552724046772998717, + 1.718392138023938547497043440526788828134, + -13.18401609504877621848395997300050949621, + 11.44247224551115539484315144473912783047, + 13.27379901536442699618801130300376533362, + -29.51247487007577729026836372559003125229, + 16.70421442029693130845175616485308904218, + 10.12232176301109154350312723270177248274, + -28.62450016587793708541246494884379344971, + 15.58298492175363714665570192217779025736, + 8.365945523256885323510542504254788994042, + -14.78521041395186060220458321816297807751, + -8.641584802159564803379692267982969038531, + 17.77236157493757143504453427624295895816, + 11.50630172581082641699410920369520358605, + -40.27676857771893651468082574042465202554, + 2.431357647751457538533341858048438538194, + 38.21578270513954397843348069745628142554, + 12.03111417799967609520670101171899574546, + -37.81315813197116956506316708686990202745, + -61.43130760969329656055444363044004969490, + -44.65613724400413837282149624074681101193, + -23.31727022273426474576428569745558375494, + -3.863459773750509830921548675078642254227, + -6.061054064450096248788574020921026316205, + 4.167674185806559733821621091978908136996, + -2.763248967497495942547592733059683714318, + -10.68922293892529884542469009585273955490, + 21.58866184642058807650318131701908393079, + -4.368608552176944895530316783768245438753, + -15.78242273842237568746379674397295111245, + 13.35673298627123028144910413126483217177, + -86.19146726280215924936004750245059489513, + -88.09381149365887112687330095186695034289, + -150.6394298980959643944474615847083739614, + -122.2059647255146539041041053246372512408, + 80.89347456974786874554891621768920359780, + 49.46256256574090698435368141490481830193, + 30.66386285023793785707349983600873452630, + -82.09857166432132386333917100435482004426, + -21.84167133759027983428208698376044577894, + 110.7141905974213475893588381394216818587, + -64.40725350979281601383652049053277594960, + -33.97865636780882670664847215630608629020, + 64.29297221462806237972864299293663369238, + -17.34856748785051555395855811688709907725, + -33.14814462588518490060384399364800993172, + 35.88146337527219176604522243125723041036, + -2.321481231661553568350596876946850661888, + -27.96099149039846636191347148216559359209, + 33.85726294976038492762326276042832839043, + -20.38414015193817213061037432887967673408, + 106.6383968008399471638534931484811764279, + -85.35867514736581699002639399929932649465, + -116.3388731020738461121207486428715424409, + 246.7685471220399136676315881229629443172, + -133.3522235448942191426445870118240569189, + -89.83016726427573971465229938150539259319, + 234.9285868857134596837238991860856838714, + -106.7419272118482116969496062452394738312, + -102.2426507944072892985732540413395057712, + 140.2829524867118167885019239179133375592, + 93.38543681566582139416981804815120907462, + -190.9533580170260090741778225143788674047, + -69.31767246850137723323699872491304921390, + 335.8262251335982899652817582493779340879, + -7.574027316331669434499223934003139636068, + -347.0509960872070922755107594934419078411, + -111.6185273312939473731291273165675268650, + 345.7469918762934250288204633171370205865, + 547.2477665534149269267354836422874224138, + 408.7759424939188405349259423114521800189, + 199.7513117110263899445756146388367190668, + 49.03737655248800836186848929106213634417, + 37.82483002383763748702723350250875778465, + -22.27455479634060225664692811770104617029, + 15.73726490085100540375052428020830196894, + 57.47776173029691404610684241529905613121, + -120.3680239527814286547730341192659988577, + 42.95187138482444666909497901723277133868, + 50.64452082802736642636122897253817603816, + -41.42585111924403671239077446181065109905, + 399.5260403108575452852899740721987209784, + 423.1848052383440638522629662753803292092, + 738.3869633266183860907064072221823893310, + 557.3151535671357216220852180520084548699, + -350.7696058437641860962789377768316347185, + -275.7403832713350277707811146849584352551, + -116.0291858064277872108898775344761759951, + 375.8299548190998682225477952041891693295, + 107.3447189025387426652124868607135380414, + -519.4447961436039547458882507783452674445, + 286.9323479124784449107909538281787379567, + 189.0297091948826321359260714187780751201, + -331.6158961861542907046766169538385669595, + 97.82825405797184555252894375080571846219, + 155.8183230212511085490955914780605609134, + -180.0979487584645689829031172706503217523, + 27.09529591697682084992745526064062950823, + 115.0631623857314242346424122275702613596, + -145.7355946468449330621664230247060098060, + 88.10712305849400816041420721569009012455, + -372.6885079681054168664590246182775484234, + 282.3394745761241249210535422925441400841, + 418.6787734453806273426358950198785819831, + -865.6077508989549595503828360661348431161, + 439.6035394471884905853367943924316632175, + 351.7016170126744462854540347164854476737, + -833.7248898953612617289302716693003967098, + 305.3726922982044030403639719683826740758, + 478.1223975614940714413618197920624754500, + -569.6589373641546206357831099413340499887, + -385.0851312699881080768926923058386930608, + 800.8803539559476484598360471974033265414, + 180.8944975077724268061925923674676943075, + -1217.027142060263925252019748341897452448, + -0.1068191210084680888625531873127503375003, + 1322.478590468941729503907298667372217598, + 438.3255022731069927489622004307965967217, + -1330.764870450737782609792891166204100204, + -2075.480429655785438450572866767223795474, + -1566.768349397488267310299893960056691267, + -743.4215574697325010227485743346847650985, + -217.0128743878056817569741353955159873192, + -104.7677253418692543704364511187426407750, + 47.01979991406266423368971334845559427850, + -36.68026553084685684478759335545720518562, + -124.5378326797966039031405108301817455050, + 267.6437995158561336867156969563814571868, + -111.7290702855005594533544987443134580578, + -80.77574080438665993882230058383890508195, + 61.32373569721802475589332713095243133872, + -838.3994973557967691215407527028073785890, + -905.9064216507142279237288920086429411907, + -1604.908897034832444026942510897935320698, + -1152.086582630796540428680144525409658052, + 698.9048827469667999242098428385784210887, + 642.7475097535611329473778646755606054482, + 210.0249420100343197954337737660333696173, + -788.4666120766674561902653361505672842273, + -221.4409097393731735284525573669471280148, + 1082.180679457656518411499085890342715271, + -569.4305029870325680144179908443697400322, + -453.5034278917709612265765631002200311585, + 750.8519614314107281090128624457986600530, + -232.5833440197425117335126948585719295387, + -332.3364171483944716323901224581817943757, + 404.7717483761513447128076633363624164605, + -91.10976935660187202167033590761332644707, + -208.5455735545108020444473710806482429899, + 279.6122925743633741866675967216979831429, + -170.0061796803579412628766558350431605067, + 631.7903716735201877525169980589388872999, + -458.5876564739174499477193156424646267294, + -718.6151513180480855945067550829194219217, + 1458.675631602281645140899305250088418264, + -685.3115485214202763088735243445062197348, + -674.7754961059583774793329116939872279077, + 1447.334504455607131961524842079068382432, + -411.3051080666953874345355270588941972692, + -1014.073995899328009163073252401506814200, + 1109.421407164801569712161451898733346191, + 732.1017306508133296785066168701981983318, + -1557.167136222843508300612011587859019647, + -228.4969323603667465235677427059867832566, + 2157.084560107180820517389849494971232176, + 29.03544602594045745373788776519845671255, + -2416.657787114783712238841879082212414669, + -824.8066523362980534270886682670124379552, + 2455.179555618772899072342802188617889622, + 3801.746391749613204035682796807882613415, + 2872.208739356368638921324954913926435277, + 1353.095153187593813305337279841161544424, + 426.8814399752122761166400583203639994406, + 147.2782568411351315720556205984878370628, + -39.88363652520721774453124243082223192321, + 37.86798155952000660547211599125591896982, + 118.5572750124143171731648295054234466838, + -260.5823819234382431707906120205904799443, + 116.6706889941490388769445486264038499164, + 63.59687321621354201157047224397546078749, + -42.75136408312207488696782623900824766918, + 807.7322421532983825300531750284978837728, + 885.5378197206312645028372540681079414135, + 1584.270835413462149008729003358785331222, + 1097.951731202106870314653055616382254546, + -647.9502905216451020246203230975147179673, + -662.4416629054782506363414935652195993564, + -182.0270573147688604801375151021297811048, + 764.1984972255998400738435752897224956602, + 204.2708746809500331388298513887199463635, + -1029.932543784051413801099576998396199586, + 519.0920063352676031194894715241006372849, + 481.3135150886154175215947010691093261185, + -763.5246706816606191812775458851944873519, + 241.3039665586577149350381374049650752812, + 329.2393672892513029936710193791234854857, + -416.8602024526780913623748572310748974653, + 121.3180945275811369732549187577525674564, + 168.5116910974764285057148431385742093197, + -243.6193773804171417461701783499108351357, + 149.2722726207764082902905596799181595045, + -512.3229604072919752269069263562185330143, + 359.4588818837522886056836000562045679768, + 584.2456488482032149436686224893839441184, + -1168.985345093500725629770043688281234881, + 497.9726541455819096187654624340480479062, + 622.3127714452864807274016306738427058805, + -1213.156630135865811986317545518064557544, + 255.8278929340721856788071251830952077981, + 984.7418864609214977257527584081643465177, + -1019.888412908829897440585459685608340674, + -649.9406781303639908661298775462135217640, + 1413.262736949897336197608195227225084834, + 135.3865854880656764379125870463805352192, + -1838.751016411155475387709560382359563462, + -38.54678258820981153167676155390422289556, + 2098.769273077639284498607802064791047570, + 736.1065265915558173327460299914810489030, + -2151.221757354712800972565301568205517735, + -3321.308190843114754885808374078075064089, + -2498.529434192357000696770403773225530748, + -1182.831186173200396915353167098490711201, + -384.6335037196594817160106157152963997185, + -103.8447307794074056183425653136907631513, + 6.924799824080262148442430870639226957085, + -14.76051869809097351903290122487178139465, + -41.30744951016546920186846981771378250179, + 92.72146353080616032821080612788785653971, + -43.13658169026437029564809487243819406119, + -19.62556153081898699322074177843755960149, + 11.01437470882489001144463588589344308719, + -290.1612767473127474131288792507505342137, + -322.4312110011765998334343467466654950377, + -579.6023070911439293490281347109804565242, + -392.0787536126383755816864791905830165709, + 226.6490938504332178294315506639823112644, + 249.3337052710761474669754839702005950603, + 60.89342206788991559559938251765917603893, + -277.3370789435772794311176176185604268639, + -69.48241554457338772544897248878999811209, + 365.4181796683046133358070326915261370760, + -177.3426128704142151744927765298837015083, + -185.9343207579091970792847384006520001738, + 285.4811706606338376030364839460364359836, + -90.50012011039540945566181535758233765813, + -122.7160072536035693990812479069797702335, + 159.7489753832193612900078551945558987930, + -55.55869241010217895676076061749202258507, + -49.12753443442322747907103975828543777795, + 78.53627370407570614803916607002745605453, + -48.60196721711442241183342858551554164294, + 159.3106633456406308211285709010293980666, + -108.8627115255185443639938542663377575907, + -180.7344643216157806290808493371840979654, + 357.4693690214119836625809481188427933039, + -134.4076253919065221580782924581977196402, + -220.0879884420806009328479487805126822830, + 392.9590070265182477662001528624789113578, + -57.87308409057537810674466486746656349062, + -355.8060788293902788994142791797770367799, + 355.1259974557849596369267730297061818353, + 218.2300076510138938126026092887949434954, + -484.1994077846391391090989251824938590592, + -29.52498112974613811826726172017563278068, + 602.9402160531685031298832323883338990038, + 14.64251433361501911644145794621818009744, + -695.3953383173081220475964722305124748560, + -250.4450900528669916049812349807275727465, + 719.1859994312066252583014264157328277252, + 1109.060245334728924289477935758947351603, + 829.0591886411996873650991304128207368271, + 396.6055955212695316065003597384150058448, + 129.8182365626874096142491817237458006056, + 29.24844856513813115021075714268342666546, + 4.372930367766226055167418569362967229234, + 0.3929210116138107956218163392448791580185, + 0.01612834966122454714630419727427763330186, + -0.007980396110788104591529267382230513749611, + 0.01339124700254699188129376493434687668248, + -0.01533733961282137145446276863466286588070, + 0.009402257210309715336041894324052082026979, + 0.003751571642232546238188088815875052674646, + 0.005485528455809003629715368718380518117558, + 0.07870131167221057171389573202474345226189, + 0.07167106768846340606641616853060329419664, + 0.1552707417786302884242821692042695181006, + 0.06304819878714979084893351970935205173721, + -0.03273113513472047287817555068205189153625, + -0.08117612508866003608606823289907198289055, + -0.001350306927783572334726829221263469444500, + 0.05418480633862990385599678492652282661347, + 0.03168469718939466376329606362059318335049, + -0.08237291444152656634282786061452381577087, + 0.009910773905164309925712033799908128250009, + 0.07208790806813183920491558238854773038988, + -0.05617143158684640671000130352105768685837, + -0.02755360162975794000541556401692596485796, + 0.08657528522042188768906991754029840706530, + -0.08182468535375644401839358684633129103004, + 0.04238430376400515042468239257265697043808, + -0.009771510072790894677147656249559838056609, + -0.001722459993356310132263035387473457274826, + 0.9396248174663051193082448414156831868600, + -1.292390734019956594611888427114530477694, + -0.006402415139389588713810626396404753855509, + 0.6253604569773466186288945197470757091740, + -0.2064730359104136665649474244986460392821, + -0.6377362767356569315644139816438854819768, + 0.5351758867410236420820028543033186512638, + 0.4083906391961104710200001245180726688889, + -1.041128200779796667777560003882640407040, + 0.3309135788993437900356856923025877191739, + 0.3756130299128932197383800533914959336745, + 0.2669856702948992757757811865615593654649, + -1.136266355502587207343154574583622501716, + -0.3287494701187913914403455955856266898130, + 1.824878993211624020919631160489707602507, + 0.2291686643378286306463851103370940273462, + -1.356816600325333789278115628782391113884, + -1.606853737109137618044218387484505137241, + -2.295030696489482038181618196878206770989, + -0.3972877259075385434166211194003330990181, + -0.3971697140181584019286687203067266817805, + -0.4713130357916703871883827324718957194115, + 0.6886640476928349064942908638283338455698, + -0.7385544407539529284539922073229210861660, + 0.4644193185385252300796612806834864375432, + 0.5968994031939656482242607239992820426691, + -1.422675590814355917021474913034218763718, + 2.086168416824710189842699742751155047462, + -1.689678190221731005845464692487880000930, + 0.3200278449805864428146424301182284130470, + -1.365730651738501090648327488606742104888, + -8.038289563472913253146135281604808050654, + -8.901970268728774881048736825883419655341, + -16.33225481601988188125971956982977050850, + -8.328229889074789470360299850945403201528, + 5.091075707581019102857626684699366437762, + 7.632623019800912588396435236113580701502, + 1.502332017118397182963643419239360525025, + -7.202941973789271843995595125891290130505, + -2.649395816132437393428108235129904345525, + 8.478583930783545294979313929749016103569, + -0.3440008868536672033801760731984845393392, + -9.057874390179420712218679291185169118252, + 7.657719738076581775233379576186042995641, + 1.275742085746525292116862883116769255150, + -7.516726392563546732938305540635119510952, + 6.827944903165686453956585575896295406337, + -2.561392170887037829827594713465441050460, + -0.6047107497472636213320421163811614295178, + 1.123163946290714740571130595477636002132, + -27.50122874259026581724838291496535176392, + 32.93766849918798913860128492423745262131, + 13.68473881062348098631516788920996209088, + -31.63562923291933634551714527168010016436, + 9.822416596282543571109461864298838701078, + 26.09082531217638063529768812030138979417, + -21.26948105355129851927013369202995719309, + -17.13899046768276278691411525697771288457, + 40.44078439476268291508449359808803967649, + -7.136497260525928482416299267681068760752, + -23.82301417489071589925423358857945285622, + -5.013268134217818795644621479897996484258, + 45.45593042517679697356278011645833059629, + 12.42144693931746033091313585587006724591, + -73.94618269428155775696855446318202934994, + -10.66563740713000223195899962054041044272, + 54.54840823572241931168314863873754314454, + 73.09810659565606700332474770996420214190, + 89.89461035918267996180498274528704073472, + 21.01975358546221443532668057713932642665, + 16.82222817170874694563217961984229302445, + 14.75636509539958261959015845560480986146, + -20.67594825850517862006773240295807581754, + 22.68045439823900787366651060754213515613, + -14.31719279781784549741804876285359733626, + -5.226769565077133594047709881195391597777, + 20.95979488029132597723997158683838162013, + -37.86351014738786177544912607430851521383, + 32.92500100236995529083038999653136888567, + -8.103315679933199659864497841208979952281, + 25.53622828596536138620252906066879651735, + 144.7163209554581283130556247455599188841, + 160.5045196736677445235906946693507517022, + 291.9633757665708389057775400991179569165, + 154.2170098065942625666315811784150961299, + -97.65801841142477460276938335290470310252, + -131.3910524543673231409381041991221725551, + -30.98492522396127340260657397087943576214, + 129.9202942261225749334269909511246124846, + 51.41633233031178388271146991891623939869, + -159.1883120023007559308117743852857254729, + 13.09918569117980890058990085262639180905, + 158.8460858768165250166304491961039011026, + -139.0845557109969382911863580361453476677, + -14.85803089081957449039181425597801941175, + 120.7005348608005604111579327803667560628, + -104.0699426400220230897157761190469575130, + 26.64456042225550013048117842332140865892, + 26.87245168933932436135413516436151456566, + -29.22344029854788693277275642261921193680, + 263.6515722726362595417235907630369617045, + -278.6245613178778975824286563701132857446, + -217.8710862763005229292160917102045047180, + 371.4431254745124945387414424173546358937, + -85.05644186472218450339307089530067124306, + -335.4890415549486062343695458660148028019, + 259.8003070645435641228952836136701975048, + 199.9216670136710632766398442672109246255, + -456.4533824530228856228408030071300530921, + 29.75599954323654079744149130490136718821, + 349.3849290001684671602668240085963359532, + 17.66433085686804659341630508605493256410, + -542.7619473441959657634776051785136652120, + -115.9937801627551073529425014683107249002, + 842.3109247878282175981353801308736916707, + 155.1067554302114873729860149892080654563, + -645.1053572257162009702629094434337248499, + -921.2321410821818284648662588516903886871, + -1021.657769796446048257432810666433741920, + -292.8877023290694398631061485929549945252, + -200.6450337797298931368913460807929009116, + -133.5419432260832596957568208293775289552, + 174.4767827983766455733188606415302263635, + -196.8483717192273918376988417720696568333, + 124.7012307447431389137819085906742557430, + 15.94220467680877266872675960071636613462, + -132.6001060561808714383645158908369953971, + 267.3285862290751249490312931503618595000, + -241.1366049995822634978451162591859401618, + 70.06368265335551199825538599940486350765, + -174.8508096801567961322640980361377824033, + -968.1907951797263568115370068121693942530, + -1066.573986868262185038632792925463663212, + -1940.975427026011730748453382808017143845, + -1046.067189466094467464460034714218067172, + 678.7766784041112262598580820084560498859, + 847.9670736047218538459764661612271107868, + 223.3541842950949681028352863401731731811, + -862.0702478524192031451102086575365473849, + -370.3871871295326131339193641061688722211, + 1107.234750788001511722518558160867665598, + -138.7656295813266564312378002414847887134, + -1018.258388561836904614617394127391252372, + 912.4028492447434936603819747500100078539, + 79.30856784053405292445396763721222430138, + -750.6554153797142828675057506475904329710, + 615.7074233011679427599515997433277362349, + -92.72875449025295281304811382216913760995, + -250.7177452382962523238630417081581023177, + 235.6602450609839129689453788925960138950, + -1168.157052864719630852959778326989261018, + 1080.547051348270748449421987060316184437, + 1281.866495115508407665886364283671072357, + -1855.976621933974211527556204881098819464, + 283.5345812664982643474120947620853376676, + 1847.057897949353251014830900208536479321, + -1353.385851108238430826025684701805938290, + -1063.046653575419558603836774012236638199, + 2315.486497799073853427033612009343449303, + 32.32747027243239029607443503262969350026, + -2050.290895944104225579581681297525413788, + 38.66031693802674342090117575981654663444, + 2880.257005644043171968731167233464668372, + 420.7247240988313935123365128558419691345, + -4179.342774441035785325985932245576027848, + -960.4954819863749367034483393204826173593, + 3360.175750286676582962374250044775229630, + 5004.648609409653740421671363870496089218, + 5104.136657171502652307622991980089753993, + 1722.612118377725409153230816630424985532, + 1022.987817931230401533718415562578246842, + 540.0890707000040323365696781200622773532, + -624.8545938473979533731095089559802211384, + 729.3175166619328957321790003059196638076, + -462.8859341514310824778175520145295025129, + -13.21163875844473975306608604806315058302, + 416.1933556186380649646980249367690557849, + -889.2285943870349021678101642155238205779, + 816.3621990393115960545746180365054084241, + -257.4714569893396235750536719058966199270, + 552.1002285082944606726162313320678978352, + 3063.529886544248272697388965914414869046, + 3331.193507804645951485316989108102795372, + 6095.785230723774219247915095578356921826, + 3328.043040123165542494837163446363961055, + -2203.422223942596543521644003367203205942, + -2590.382925672627895091462967014446506687, + -750.4136650237460825905835106649428054901, + 2704.364403700845716331395834800890423301, + 1231.784514747248478606373255418038092753, + -3599.432072211049013686967419294033364038, + 575.8929600429247540707524244018057777122, + 3080.987975783229250951081678146959730418, + -2808.282756763201883263119412444206728890, + -224.8073544300379892591376667527994885148, + 2249.311974067226157436993980970359120424, + -1762.977926086488704783316034034608835472, + 98.25087303215647901094267057456482356401, + 953.3401342217131846076622627188934282972, + -835.7290928677909307807503514581612014321, + 2721.834613825508775351748713198774348582, + -2165.645932099460289444541028067918593911, + -3650.100834779396526578602680682313114172, + 4716.252280169158999942302846343482502267, + -404.4169894792527993255747017098821028867, + -5085.745259695341712285369162432551503332, + 3534.238834870488151930774211504253289720, + 2935.354189966899877399816926135068292629, + -6071.733495502419746976637870337598486997, + -445.3204579724679229482281035076160039482, + 5904.290458330655363309836157623297054695, + -348.7308486051016976805678865379490215711, + -7804.167565710939464685133972035449137316, + -671.1785494536528319418239196327952098125, + 10598.30624616454453477473879280409872707, + 2910.541733343045702480030281103259675490, + -8926.525969057985689764373305336633577176, + -13750.87004889382735530432532177803652403, + -13038.04473934872817696271227565379119511, + -5050.651715578763076819084756384111393351, + -2616.659153801104980801265517973944974235, + -1139.495384911588260725590545901572606383, + 1073.878477518989820770254618157249567389, + -1312.899217251684849391443428264914863230, + 832.5330064890660303304716913231684447049, + -21.37932851264146554951627667246775284703, + -674.4979460528740975680147894123030334405, + 1492.090832541069545892649319180639649744, + -1381.667524820377367454681406893655878967, + 453.7527799100994147566684372060119584959, + -874.8809585663998223929212288354247540507, + -4942.242584073805227898244131360855500712, + -5290.161061344953816984911302787119005863, + -9755.349793853033104936382442226430595079, + -5375.950952816632438259996722097304275107, + 3622.232871004376284345053425515955820835, + 4036.656540306651346058147114976659928825, + 1277.406409130771981184665077522900570987, + -4333.536538942463043399172720223636537286, + -2049.399762064460667104613093896931137389, + 5911.064485361076414484665441393404432752, + -1106.507202437165090995421404294935675140, + -4764.488914488264549264556922826368458503, + 4401.003577283561813756063918058167862062, + 346.3240656004203419569912814862331218999, + -3475.254532927981997211167226965738031025, + 2614.998690960992072983502802377043394552, + 79.05335811612573681406964998986211148232, + -1729.733806564980038010910946687898704799, + 1455.303302683969769238541888571846123955, + -3443.944081689379416091971459315301947326, + 2294.968916810113190209516254116172437754, + 5410.120181181537974960574801182874233351, + -6401.592338840325707860529525942291614350, + 175.6034484162850570641693840807726570906, + 7360.940451094347106051242258662862808320, + -4869.596292653531668931380399677797104144, + -4334.820892083988735088057571560625506254, + 8531.462207616772819462045554954422539647, + 1028.545111554718232921543175711834675792, + -8872.284358982776986623506066988264023736, + 770.5180744852323276671050349004373889319, + 11231.73059330391465593255135616439850695, + 396.8491555469152258440523008889572811216, + -14361.70540518244888997060082235477263383, + -4555.546916441163880678800112908203400966, + 12620.80205491338427465755206519736195728, + 19995.58348561132734218611566809453874596, + 17782.60828003206085297066144333888547914, + 7743.294702321973536983728818139078081886, + 3536.247121206383126868055534823341779386, + 1300.201297055685545279025485607140242405, + -854.4024096130166109880305136841020604190, + 1136.541143450538770188917527915039715746, + -716.4820762784167869557393077095957578623, + 42.57065747740309648416062621620492654166, + 541.1743478466330904279455728857868713313, + -1223.820173612915713127948375852388095253, + 1138.123324807476772780784578865900599026, + -382.2607162723790113603595297376783088198, + 678.7246690909798756341960780991399921234, + 3926.224397219409129268482575168770886076, + 4136.963405536115564731275687250847385634, + 7689.798486182364931144789331122655700932, + 4270.043013500053466638370339811553339887, + -2922.020069144877523453367612199456153918, + -3102.092046385043602330945469809231679714, + -1065.925903399650953664166508913461257561, + 3427.499848241240410741584894697134428680, + 1659.026964219120893256771702809352456158, + -4752.877760535503214329035354725745056608, + 992.8731644028296110887188718099143692185, + 3642.040084773347086150856593198289765254, + -3400.308186167725752810080662153373605374, + -272.9599181961668906023867311665235071850, + 2666.762902116265158377134115147202014133, + -1934.877513283561065554100288645827814692, + -209.1045611948613193616667090903762957329, + 1490.954462928046536944812732386249586894, + -1220.988007894856537469822442896058804691, + 2238.198416405963238662915527221605442485, + -1200.164312294140352097279371504718988923, + -4014.790671495517826748975712040210064027, + 4422.081860037589975220354132844546493534, + 103.6010806148909859553074875177691110922, + -5354.377971124788340266826031977478540754, + 3385.182889928917911060286149720912695149, + 3237.707673587044266250152361219578468524, + -6090.590180732657488541890583560932562384, + -974.6723405062365538342297761622406947225, + 6673.201837827242468894654955583045893191, + -721.8871521936733650674777584637027922582, + -8165.880668014195930079902581641989670825, + 58.87286568044114905539807029929588687834, + 9895.631583512030977386794084179787219736, + 3538.185860832079582166288121867078336151, + -9040.367977299568323113856640436777909434, + -14660.36368828644149988413131083861503447, + -12326.45885251682989072680886026482999411, + -5926.913395783197501792114057133198783336, + -2416.653203938641625609455449236785399203, + -756.3007965004546833382683678872716369156, + 218.6896395687741098743648261705544647841, + -382.8723022078268725410794579777336281805, + 236.0713933496544388586468818347926371812, + -19.31570774659655939721004789353493034898, + -170.1423319908662876772613470288840163153, + 390.0428910377344311849094415094475842880, + -363.4886574304160012204875540796821377862, + 123.9365362619098915311661749470596697550, + -205.4431507601081275518452701152654967875, + -1217.293156310476182758639724793476012827, + -1264.129088041152122252695448441214076216, + -2367.267590442168218386825943565620409399, + -1323.274590887415938797321848163477057377, + 918.0156561424633966842952317580548334155, + 932.3761772199973644018819733766878975269, + 345.4946181197540882816783269226660065507, + -1059.968690227937897632957351225808000183, + -520.5136316475785056724470447016872769327, + 1486.561261116493642701808345357412739042, + -337.0794232725418025568828875093535081155, + -1090.601139872344955960923706145152176533, + 1027.151166901393531180931879749663336200, + 86.12657530798745395561910273575920968934, + -804.2853347575566600990925956195096710388, + 564.9394324172934079274648014042036397637, + 100.6499692396157823128742989832816777955, + -490.7202620813642779152173313692253603536, + 394.3252498871811676140832863114420501745, + -585.0271975026229527514759103024670894224, + 236.8337383667054621784632092383059330092, + 1177.812898078049673332329100384715619008, + -1221.509823669277662466012439261539732634, + -83.27839654925446990149366438253042517913, + 1543.071811944869462056511189641508417311, + -935.9074950905521658044958851106209775494, + -958.8482566078100908306487837095391299127, + 1732.967358077742115704633119132648111690, + 336.9937526249140440151347168197218191633, + -1982.588209461372278159858231314522030934, + 249.1863801704568892855771007085850195586, + 2357.579012684552118172617372656666422392, + -101.7805909806475058339307361029958683958, + -2723.844319113718922194987154357954785501, + -1078.306247783772756856787609603289000263, + 2579.149396086198308427802366975077237679, + 4263.155997142915307793600290100357364481, + 3412.955765443745304190557307989509145215, + 1785.235680587451934558988845584495865252, + 658.5129162515001763953672603970390536958, + 174.5446977414379928438082746886999828540, + 32.81609847478195285317972884842638088166, + 4.179408702049141274404928947159079052693, + 0.3247817317585186406053000815075063633357, + 0.01166581120969192897637727706816775916242, + 0.024565685163243036854, -0.032574638612603788680, + -0.00030206563527581736163, 0.041387053863600343778, + -0.064234661858143896050, 0.054449175213825859756, + -0.056651344370358974026, -0.062255233143239019617, + -0.073488571605263780419, -0.16445048944280008170, + -0.035411253716312187729, 0.014781492472753049962, + 0.10475475323348915076, -0.029976184301257110626, + -0.012533008290122724336, -0.075571181866696932635, + 0.10099029501670491973, 0.0013980319542156658736, + -0.082641288491036659173, 0.046840954829980273679, + 0.032126522253757847316, -0.045826181265562722811, + -0.013496388471134254999, 0.070973397451746017269, + -0.064544792203601823494, 0.31858590318362132687, + 0.0096483360529826514221, -0.83684622597429579882, + 0.73757871172316217933, 0.43827122779287384149, + -1.1122933065671463143, 0.59488302137684947865, + 0.23540413219688128909, 0.097024125438710419624, + -0.47950510719199458693, -0.69732001370986825658, + 2.0805468128125273810, -0.36691752129129595965, + -1.8156648146892041666, 0.059716954028533755567, + 0.55218657484258488207, 2.7179385249718269546, + 1.7062263232856603361, 1.1532705383134074165, + 0.34931764425669882151, 0.33545543457135221638, + -0.27884794000358962264, 0.34458565703307031504, + -0.28185308450757339828, 0.15759594179989181430, + -3.6100549847226604891, 4.9225443437397421943, + -0.67798100311241820601, -4.6353188085119708298, + 7.5381180982398797623, -6.2099287084065998886, + 7.1384730440409961355, 8.9510233669927127913, + 11.810922371400916928, 21.308451617815811470, + 8.3419205730975387504, -5.8791483550329945658, + -11.186150867856834971, 0.55663185212383692130, + 5.2205975036043698267, 7.9466865585414239160, + -12.189599486123676456, -1.8936470792210137486, + 12.880335587407730786, -7.0186397621295454045, + -4.9715829849217717929, 7.3793515165037263851, + 0.98628989318575969732, -9.3718161745095487438, + 8.7994681627378261766, -16.685226439259672551, + -4.2691757681599151668, 45.736474106225339233, + -37.791980185898938829, -22.514815862203530988, + 52.034104812471101085, -19.831927780366028939, + -22.449168773831544898, -3.5577231914666531321, + 33.417199929820103474, 24.434903233760559358, + -100.44804904051613952, 16.694287044312723404, + 90.854147956690290926, 9.0602392830240345244, + -43.965371205069902730, -131.19786511409182934, + -103.05532526258864156, -50.510696527081056429, + -29.601415859225172573, -6.5768275020602076943, + 3.7792453763545411291, -8.6659928984532717082, + 7.8757162561625706023, -4.6324788392257136633, + 78.475946597555515195, -107.30070417909195831, + 20.512131443486300787, 88.308802683637141958, + -144.05354724137775100, 109.03181210678786164, + -135.91424290149904596, -226.76569597673223712, + -273.83413073210063977, -483.61754475772538251, + -219.40098052937759406, 167.73551933897359549, + 229.70813074462308542, 15.544319334716098361, + -145.52126387892768407, -167.49223527858201935, + 272.95749467282087624, 48.514565928715548647, + -297.05222392239410860, 152.40007086375023385, + 134.17988853685514200, -194.54715534311978374, + -0.36564883237165127296, 200.21599271804234787, + -194.94903252062047583, 255.37300739637030020, + 99.134373839318828911, -694.35103202293655957, + 530.60937356181612465, 371.89874233708670575, + -744.56348053952154979, 185.18583642975818886, + 448.98820900443529513, 47.476298581938925168, + -620.88173971804830218, -208.58341317467757524, + 1401.4000466364368358, -195.30851499179605314, + -1366.9851123090939706, -230.21361276237130571, + 776.14720889466868150, 1948.1166581257985245, + 1626.0789850788625624, 757.28063001449087193, + 478.30770047449407216, 65.477121403317159288, + -10.282012089042785905, 83.525332613366536319, + -80.986129428526966430, 49.189955792694296521, + -617.05700601994215666, 824.30791140501985235, + -149.00912181155033661, -696.65064911616320414, + 1094.0115130015396945, -745.42793920478439111, + 1003.4831157797820413, 2116.0305531870534922, + 2383.6945184061343660, 4193.1683115883758577, + 2054.5233020667253922, -1627.0132637993420893, + -1873.4768174808307704, -263.74601027224258110, + 1378.8723147703256504, 1404.8654087626602393, + -2362.6919595707485735, -433.94687046190739196, + 2583.5251601993317053, -1269.9940334670174235, + -1289.3679700561338961, 1844.8854613917087799, + -131.95128219726556870, -1651.1348797644061702, + 1653.0690380369679510, -1723.5104105484267229, + -878.64129971319622356, 4678.8284147904723961, + -3293.0080426115372943, -2756.9251241334748557, + 4834.0767396929412384, -605.93515423378854491, + -3689.4273026343953676, -216.96633511687701351, + 4760.1459878810244648, 594.86630252933868951, + -8894.8554835049454023, 1070.8344273823108533, + 9157.7855915308235022, 2063.9116603464262296, + -5789.2351805516327439, -13102.030888552010774, + -11175.165049765117504, -5294.2808382340756416, + -3188.7510145799460927, -446.17468912656798607, + -32.367099041839090273, -419.40256927764852429, + 413.98595735202650857, -255.31243713819248409, + 2346.4220594195420875, -3016.5949235598130057, + 421.93280187296231973, 2814.4353662169116189, + -4186.3391600964029203, 2537.3776564666118765, + -3694.7577133813177701, -9454.5811096945104806, + -10120.941964357567217, -17797.426325941006234, + -9151.5955045751696948, 7381.8354622513155415, + 7650.5368127408686094, 1432.7962795560043670, + -6126.3949423690461814, -5875.1455945445848860, + 10042.099843785042405, 1877.5933526675217671, + -11003.495101427600166, 5268.4968404800861799, + 5808.3054282220776458, -8266.8963579363263649, + 942.83120558819957426, 6761.2673748184154128, + -6904.9626180349254185, 6116.7824792901653826, + 3778.4780734816355377, -16575.975615070498395, + 10710.683727811881026, 10740.840971178066217, + -16762.832721285862833, 233.78482781500729640, + 15210.334228490905699, 324.86625685459135552, + -18507.434482384119260, 134.19114359172008210, + 30209.043181252961341, -3268.4751632790923464, + -32280.733955748066796, -8949.3001499150249936, + 22229.729331182717255, 46729.853294195580139, + 40166.733297420482523, 19717.330435288349311, + 10959.448548161161099, 1841.7087114265302165, + 244.84554056081459393, 1177.0393567203520564, + -1143.6334989404480109, 709.15595349448288835, + -4830.2986348967562553, 5904.7058022765955328, + -452.77400031701761136, -6304.6856090198933596, + 8848.3248374781424693, -4734.3337375396207621, + 7484.7543878496517847, 22520.940417388131377, + 23225.697592759037318, 40842.289699857104229, + 21711.239826808781545, -17690.466077091909390, + -17141.393017886904686, -3698.9867687335609701, + 14403.555676429070898, 13422.912715649418326, + -23107.473909746801026, -4386.8275783976144594, + 25380.763826100225083, -11979.599265355910115, + -13793.798257903353064, 19616.755738609606899, + -2740.4879953016991097, -15143.955208604291997, + 15679.025966796464703, -12227.495130685957418, + -8792.5363393632058905, 33156.371928537305465, + -19628.680857018503707, -23416.643262494970607, + 33094.494526806595900, 2825.6499301964874201, + -34266.547586071206147, 260.88951608143151875, + 39755.969344190762994, -3959.5587587696603254, + -58484.066359095353189, 5857.4819855565306325, + 64215.445167495181400, 20850.139817291683150, + -47471.583089583705142, -94342.253942884549615, + -81217.313504365390864, -41446.731344452743542, + -21137.565313050696163, -4302.1409861736795834, + -637.34188414997395851, -1841.0332804557600798, + 1718.8753250098718281, -1067.7363327699828293, + 5514.9242451471710070, -6336.0914761516419861, + -54.723520403533131512, 7910.3986915670835957, + -10491.972223603518459, 4934.5783010139234145, + -8502.2771759885207334, -29304.197572541995255, + -29416.099940945342543, -51690.712590401246776, + -28157.824477554580583, 23067.158978943355360, + 21393.493088933365596, 4958.9281486860951010, + -18446.036252743786403, -17024.990963807076457, + 29352.027076144813917, 5648.6917831285327495, + -32326.188812603333931, 15162.733372692522527, + 17795.708558319295631, -25350.411658893661286, + 3941.9577946005756677, 18868.602683747847591, + -19715.471044275146996, 13824.446552570237561, + 11335.395846274421029, -37689.822218708403401, + 20427.436341938497587, 28657.822193221403751, + -37254.470264926760308, -6479.5890117874761099, + 42813.721729793222758, -1285.1559262570712551, + -47805.563258446639536, 8078.6927616831647312, + 64626.867615403678854, -6095.5582350493234005, + -72511.389178758989301, -26662.435578549746106, + 56883.082294013512912, 108183.57107186780883, + 92980.954166600127395, 49249.051186330724403, + 23128.779678266690673, 5538.1596696870039015, + 902.93854484924302284, 1510.2872746104489208, + -1312.9673849309909209, 818.18437519709302224, + -3287.6504386440702048, 3506.4764454334733185, + 419.65461227760361926, -5198.0562722931847137, + 6542.2845438993624429, -2701.7736889648730315, + 5087.1930564182371852, 19637.510528429657527, + 19337.797599134589271, 33920.793340321737444, + 18830.604898818030520, -15464.629130807981759, + -13940.198146405023179, -3332.6619091497865060, + 12154.600433554911805, 11245.585989700538132, + -19347.196228067871871, -3765.9465577404981927, + 21361.727803767630831, -10009.132484921383091, + -11794.564045367585165, 16852.594621414568484, + -2784.2945913585944242, -12265.662595634561474, + 12892.754318190067307, -8239.8398650707461691, + -7610.5867902060339349, 22711.183280087724344, + -11274.863523542263826, -18362.994406855349715, + 22246.197210502774737, 5633.5014533588416238, + -27829.504529280523420, 1320.8465780740651133, + 30131.894835757552492, -6745.1263494733443398, + -37918.646072761755510, 3393.2891942139780930, + 43348.990669655525311, 17613.693453787797250, + -35745.645495936029538, -65642.848041524484069, + -56228.782992245277434, -30814.242223057685112, + -13419.262995137465137, -3657.9874251671266573, + -686.31346559571483737, -537.54882974026393607, + 393.83047384294417268, -249.58704438992123603, + 798.79674383223591693, -780.08490072791655626, + -205.43679932270060240, 1391.5391003035658415, + -1670.3424869744325556, 606.97955722134349406, + -1250.0293483017952489, -5298.9598977326117509, + -5149.7023550024908686, -9007.6439947373433177, + -5077.4069233468996004, 4172.4006316884572335, + 3693.4882226854329858, 887.56935480778108373, + -3224.7987432360074357, -3014.6611221529343143, + 5163.8586065844184662, 1014.0833418814618230, + -5713.7029007406580842, 2682.9940709776852454, + 3145.0415897020941003, -4510.6636085245521310, + 771.37805187413419534, 3240.9056340974565734, + -3419.1319538053109043, 2010.6732278805723056, + 2073.9163499939131977, -5632.0618903784602392, + 2564.9084584203527316, 4789.0473281982162854, + -5464.3838757676127965, -1774.2587815563586635, + 7336.3180336893150700, -448.70174878712939530, + -7748.6290783694185880, 2082.9195749069025483, + 9159.1762553513399228, -778.46343664594945840, + -10653.358535491945457, -4696.0346334271118317, + 9162.5651819712177900, 16356.189707564698516, + 13950.686857647472042, 7882.1212089803902689, + 3208.8335948240586474, 966.96544901655435102, + 215.63839331099369456, 34.799699271116436644, + 3.8604823887216160406, 0.26427960164765866260, + 0.0084383098153366066481, 0.00024015344719524130475, + 0.0036846128915942964145, -0.019793209860850345997, + 0.026554367554468987303, -0.019361073884423807366, + -0.010765418554725923397, 0.064635186195494500643, + -0.064952074398733343823, 0.16535984496292741679, + 0.035733740608079186417, 0.13217007714296656301, + 0.10390359180160970564, -0.11294312347310644894, + -0.018302207777156739523, -0.035012304937071563122, + 0.063617191259302492930, 0.025005827164503896320, + -0.037969727341254891291, -0.056841770837240721710, + 0.091773433694621251225, -0.014297874065841030063, + -0.046836722349716478608, -0.0026801204240225377121, + 0.093761333555834519759, -0.099921187622905241315, + 0.17492964903468022024, -0.010196462272847124719, + -0.38416740510674628950, 0.13351893439221068091, + -0.0013764549195786469271, 0.46429023625395843005, + -0.75493248307795305974, -0.51170807017013172897, + 1.7393705807381524506, -0.54340982755080407711, + -1.5628171613042401865, 0.25790179803682061052, + 1.7892102385970541862, 0.39329610644422309126, + -0.94933518776247698297, -2.3740233003459860435, + -2.3706022248443140954, -1.1726580451851588449, + -0.42652223934000913495, -0.61231678536452545873, + 0.39759956917360292422, -0.21160018548253635984, + -0.14825404045104537209, 0.35711084907529548149, + -0.28758542593175517478, -0.19552207721962273629, + -0.16521073051446920695, 3.3344360815409478589, + -5.4462898651676470790, 5.5912597124479223960, + -1.7869500536816395462, -6.6149286665962969514, + 6.1591331985042370383, -24.713758522540839585, + -10.098286868511493517, -22.050943178431698874, + -18.443931019818388680, 18.424372499085442290, + 6.2618990267987208399, 2.8706836691146929402, + -7.9783442729485033177, -7.8422124320665227598, + 10.095262442237394690, 6.8939362141193973965, + -12.976305175996275993, -1.1594332265910948167, + 12.152895829507299348, -2.8700329778192581228, + -14.319252441907142274, 16.597760454859345313, + -11.038279296796389270, -8.3689772737987569731, + 29.813773790754480090, -2.5121555218019707391, + -10.784968935740622606, -26.020220110744704353, + 56.265606175021845472, 20.596475782514458165, + -102.59541637677386427, 28.492621701274524857, + 107.91701710472169289, -23.810741956155055406, + -107.20880102881954111, -38.612622011840602848, + 72.796140029313159967, 151.53647324087428330, + 157.94094666445627292, 75.783736061334462220, + 33.065486562008348807, 32.072945228971833524, + -17.312503425939443686, 8.0132986588157290635, + 11.098789635097477829, -21.537793147816926150, + 16.714344453315151514, 24.808101671156959809, + -40.603222080025693110, -54.200626626138667127, + 132.01332075586877469, -165.54401927129303560, + 89.115374202239922103, 127.22741237583303986, + -99.099133468898673793, 648.76646425931524357, + 348.77151842629788204, 628.01119770697143083, + 526.31403268341434590, -501.53145106939633910, + -233.04669547464454027, -37.456112409287151838, + 197.85251021046924749, 254.33518733838147233, + -313.04850577130092636, -185.44040833899049561, + 357.45454314738914984, 66.485074580855316712, + -396.35057748324423119, 125.28384401232183069, + 385.98145350552154868, -467.55590364151314856, + 200.51584309061019873, 299.50137198357649877, + -625.82884659448775426, -81.257611743521916828, + 419.62268097546069493, 376.50639359146958034, + -1121.6596486222222060, -261.41510836553520308, + 1867.9248572932999002, -538.41951045880015297, + -2026.4099356182331802, 436.83667073108146394, + 2013.4235314783679325, 821.16439612458484145, + -1448.5549237682524641, -2924.9161141457846134, + -2971.6041205038453764, -1502.9556675143545220, + -647.57245920652760672, -543.11407331283533900, + 246.09172128171967942, -109.97969029865760885, + -190.71988994938104160, 349.19446187383151105, + -267.74898050060130893, -424.60475691033991295, + 831.31906855241006087, 213.86729380374489891, + -1187.5124539169499239, 1787.4551829372557484, + -1216.4589264736123799, -955.19711437974340995, + 513.78475289580724093, -6711.1662722893467502, + -4269.5585363626781805, -6940.3592740011158597, + -5730.9349088576419704, 5288.1968072632888965, + 2976.9343445164582617, 130.63959963950539550, + -2069.0468801900841619, -2853.8916104176337896, + 3425.9162209399935126, 2161.3955882676891824, + -4018.1776090155249673, -838.00610002639572827, + 4632.3482097631181941, -1646.2161398072182307, + -4101.8600303572543117, 5105.6075500439036262, + -1561.0010369561347526, -3759.6084076234667144, + 5934.3550790870058022, 1546.0232957338573814, + -5088.2638773169067014, -2463.4464880841065766, + 10108.332771460588105, 1239.7117889031339860, + -15457.658697894046911, 4686.6621495054767086, + 17084.591878409599290, -3455.2028931338332284, + -17309.628446073107781, -7533.1083723528080320, + 12800.708008024655018, 25539.352815098429704, + 25273.038675975422347, 13387.307821333565760, + 5697.4346426360564493, 4198.5191134543139046, + -1549.6961538447440230, 703.45720775858939843, + 1408.3930128327549494, -2485.1039122259518329, + 1890.3800054250397434, 2833.7274951300393591, + -6020.9241938281523122, 406.63610599149909065, + 5323.6508587665654851, -9536.0668491917007077, + 7527.5827623256342773, 3512.8244818681507959, + -524.46493155947895190, 35246.279296971489837, + 25089.652948318638306, 38527.180294126397431, + 30999.349896406108973, -27907.620745841337202, + -18173.189008607110490, 366.88430563750626637, + 11195.763097285058329, 15506.021948912821440, + -18266.401295700299299, -12875.355272015588994, + 22858.526815677004179, 4757.5470204335683021, + -26430.960127942497000, 10098.065994912931950, + 21957.733527675211723, -27901.473118660919248, + 6418.0298291477340163, 22386.009615562963814, + -29856.884779598017920, -10449.199084809810702, + 29353.267824690725094, 8560.4652112996151955, + -49003.990099895267328, -1456.8729560336736600, + 69114.864117795951990, -22026.344190336303697, + -77582.793052180735893, 14458.686017469469802, + 80583.066946205725839, 36517.656502646598237, + -60546.715938329149961, -119975.61465825447444, + -116105.51755586457975, -63774.213745904731120, + -27061.834806260859031, -17501.179907810860769, + 4945.7621951510413241, -2425.2742814958310637, + -5402.9892145034887687, 9252.9408550746530657, + -6993.9275372603769279, -9557.8184586003170846, + 21559.785566926512609, -4922.2129320342481585, + -13360.253847830228878, 28406.077201829636339, + -24944.128173709065448, -6827.8548383002609851, + -3751.3379765680390265, -104786.07925426880374, + -80794.862714503635871, -120018.29280960646247, + -93680.495113979399323, 82653.351617226941287, + 60565.696351289231802, -3676.3298483005422216, + -34441.851222873168914, -46649.441366904604600, + 54114.612500973502644, 42746.302393844733528, + -72755.988237766848095, -14746.753489209772882, + 83685.327552791840148, -33755.852747597249904, + -65999.176884957319562, 85386.696316348439096, + -15293.747719904005533, -72502.002634439683249, + 86406.566292459433919, 36231.329191092424856, + -93211.025049034134463, -16714.871630101398653, + 138415.96146465425947, -6673.3137534320650862, + -181111.69269627097887, 60471.743013403389543, + 206208.24133143940931, -34990.468245487200461, + -219858.86309569442717, -102378.09175354575561, + 166833.00581360163035, 329026.82468835523421, + 312576.89621265294208, 176646.09101633233210, + 75236.604607309453582, 42637.737445873846205, + -8153.3223152391510196, 4851.7937001078279774, + 11602.256898000159821, -19345.730579938385983, + 14544.282353245206913, 17936.305590095295454, + -42613.616916145810035, 14006.219053051264616, + 19515.343890504558627, -49481.776188545677923, + 47186.706607383660109, 6790.6947085002278333, + 14342.377210324173892, 183772.03330549821400, + 150455.18288356283110, 218961.23966907712276, + 165770.88292015407473, -143789.06074054460382, + -116151.83430955208474, 10211.927669996520875, + 62536.034833922660618, 81801.814507558837405, + -93693.456443498199840, -82253.740482500501129, + 135027.16157394162803, 26688.004369958498936, + -154497.45826310020714, 65151.892522805411425, + 116262.29156704316942, -152959.71421885048664, + 21823.985414263374706, 135155.46409170898952, + -148473.31952921533983, -70975.281918804344774, + 171999.75501593073027, 18079.084115413752364, + -234406.90892021651863, 26707.918005242075165, + 286272.71569499339800, -99755.115125688763802, + -330420.08722546258669, 50572.456505924017707, + 361442.71275602444245, 171596.15157424332826, + -276071.63921699137015, -542423.57549007227544, + -507457.64666209580581, -293332.78161343887710, + -125894.49589449890016, -62496.920810499790275, + 5830.7129914518696784, -5783.3007028940359774, + -14064.178057938310303, 22844.831548892458501, + -17096.544631732130049, -19018.582683666108552, + 47409.099102858950773, -18994.420867524266430, + -16313.505442323583863, 50023.223157498951745, + -51029.215666170467849, -2582.6469260559949415, + -21407.131434329513402, -188247.13303961989711, + -161544.91408823803840, -231932.09424151663083, + -170641.82485493576400, 145868.95827737916394, + 127787.53154508498630, -13638.553679349192597, + -66283.452359188091604, -83186.107718773275629, + 94289.852724564110395, 91043.888094914917685, + -144938.42567547292447, -28178.540441525619527, + 165344.91844518867965, -72423.278024503016247, + -119034.47882864389375, 159158.14265090177115, + -18362.897674152583033, -144826.41352785849326, + 149435.75867852268715, 79305.168047785190208, + -183671.64178316991931, -9551.5298453935090836, + 234167.22187073135408, -39773.738698894576555, + -268448.35138931384776, 97249.009404645741601, + 314049.12683014787261, -43006.021639428502982, + -351966.75469741719132, -169549.08293553970314, + 270095.31121224656326, 528919.88417828512678, + 488534.75283231018165, 287585.73420654669237, + 124634.59628298833693, 54219.257931961577756, + 688.56386866362540799, 4046.0201549592968948, + 9015.6211582491674215, -14210.971144454467567, + 10596.145233929131733, 10670.195207686057411, + -27842.265354340227482, 12724.296997818548850, + 7130.1449143054886811, -27160.059219501806159, + 29345.613654487026260, -576.09997028119248070, + 15008.818858450740217, 104084.14327067155046, + 92803.454541357199798, 131955.41764525920312, + 94614.002607164337070, -79863.904461963296902, + -74873.809516053591941, 8976.7576708112770927, + 37884.507795251099809, 45458.614074690664931, + -51092.252743719521020, -53722.558996096100799, + 83311.754389473554645, 16090.838639234861453, + -95007.921368504239321, 43014.987035921445585, + 65543.074031782939804, -89030.790226622155026, + 8384.8861434421927527, 82858.515345531922791, + -81290.881764833318522, -47120.647197984328360, + 105209.96470035227183, 1243.4175216995165281, + -127077.60952699621743, 27687.591801234531293, + 137461.22814338655042, -51583.289792027549004, + -162991.62969402081809, 19818.592248418031476, + 186822.89200794771056, 91042.436650155504146, + -143889.43187750506396, -280888.48579318232750, + -256671.98640447646250, -153362.96749699059694, + -67175.744830644060584, -25629.358402130852500, + -3288.3227007828047337, -1540.2470012503363492, + -2415.1983804001896817, 3613.2331215708500566, + -2689.7010602493371173, -2463.8565922850036192, + 6717.9130711892917205, -3384.1662827341405402, + -1233.9354455815351551, 6121.0405592024350372, + -6957.6915267274050039, 517.78042765473424285, + -4089.7296922240625100, -23983.581343333760918, + -22079.561387031961609, -31161.392032845793844, + -21840.359753411227977, 18234.368119111484379, + 18096.945669200460299, -2336.8019882081211940, + -9012.8664240895096766, -10323.795659647739248, + 11525.100720696551350, 13079.862092174791730, + -19830.744647965719999, -3839.1746966974565769, + 22660.421641906310090, -10563.668108589254035, + -14999.656067517684626, 20693.645026580678273, + -1598.8492545147770474, -19604.208219856794160, + 18441.236576628632193, 11547.882714154383211, + -25003.285338155391404, 496.71454334694516429, + 28864.516724776031303, -7491.0986596382411721, + -29598.604570887957461, 11468.105648409381059, + 35573.704701654966554, -3811.2234731054357569, + -41622.972278087434821, -20479.949403049143239, + 32156.932832310581094, 62579.724803835293878, + 56668.553535551473223, 34280.522929521970989, + 15179.126016695390955, 5083.4828711366349760, + 1297.3750932960208735, 249.89055934076707023, + 35.332943880510378778, 3.4720980474669134410, + 0.21240145629815346475, 0.0061038919994897723186, + 0.00079324314619947192, 0.00039922868900573668, + 0.0016723685154457484, 0.00028631558282322703, + 0.0016573172483502839, 0.00026618271018770878, + -0.000033477264130101266, -0.0032289340713040208, + -0.015319476042498880, -0.034711019894679138, + -0.076929942342731116, -0.10441063733723121, + -0.11191888610304994, -0.038517803620271763, + 0.041553768639592104, 0.081205232259899629, + 0.0039432287403740846, -0.060723230090485227, + -0.029651096375257537, 0.052105382990758120, + 0.029664020370576070, -0.046392141578960012, + -0.022950456011878467, 0.049831525309103163, + 0.0023797507641524117, -0.038382277434360261, + 0.0028450678645806272, 0.048369024096740653, + -0.044301978084503076, -0.0019820426043429457, + 0.027002605777692219, -0.0029415841344385556, + -0.032822452173354679, 0.033655925572719357, + 0.0036892763418766306, -0.039624310403674176, + 0.041144685877544089, -0.012398800827359843, + -0.013285899270350580, 0.011864849143335127, + 0.011665096651960289, -0.029932420873144650, + 0.022658583172693165, 0.0077982126591344373, + -0.038760887714173754, 0.049519927026454547, + -0.035519208114419380, 0.011439175946759904, + 0.0041382979090184648, -0.0013784362549420867, + -0.013127195127149697, 0.024926279131737586, + -0.021580583849537581, 0.0031479986864443484, + 0.020253686884500257, -0.034266861149100724, + 0.031423959136014791, -0.013819012109096473, + -0.0073247284724935518, 0.020396380705774064, + -0.018525252364043129, 0.0042454628507971658, + 0.014357408276580446, -0.027356654399889173, + 0.029795735371719667, -0.022386147388273750, + 0.011564119137359849, -0.0040848967875794378, + 0.0044713311593481890, -0.011633698071141837, + 0.021051209943701391, -0.026356283170260593, + 0.023924989786367992, -0.013689473852803876, + 0.00021353676887971602, 0.010525891193112598, + -0.012960124595468376, 0.0054100158644992310, + 0.010069312077539163, -0.027658028756323721, + 0.040981363675245971, -0.044795318010671852, + 0.037710532299417995, -0.021858630728944315, + 0.0026850965412547244, 0.013759408922055224, + -0.022317112830945054, 0.020992072967176681, + -0.010889945807514358, -0.0038344046985925674, + 0.017977010743986728, -0.026589167057548937, + 0.026920778085653643, -0.018803906873574426, + 0.0048910213604799598, 0.010566950549652039, + -0.022820825991622357, 0.028262757826955334, + -0.025283874813708417, 0.014832174695578498, + -0.012520894617398729, 0.0087053801033163806, + 0.044907404512330299, -0.077100799065358355, + 0.11486864781179376, -0.10370439906080675, + 0.085012682894332637, -0.023960846974301808, + -0.020401043217222722, 0.073939018401771648, + -0.081059545302853145, 0.082414158480296864, + -0.043061103219956601, 0.021921131872039422, + 0.0076131407963630778, 0.0077627012151813316, + -0.023694636024023735, 0.070669854419907738, + -0.086512330875592538, 0.097484308183584373, + -0.054235624540303451, 0.0086821868400092281, + 0.060631122693843730, -0.084855987199134020, + 0.089080354485310605, -0.029889535120346641, + -0.029734872842272618, 0.099501806567833532, + -0.10418238457632179, 0.071763730279484920, + 0.028807414348610214, -0.11798828549248870, + 0.19267966475587160, -0.17617482568697916, + 0.10818786028256842, 0.022546748518733847, + -0.12000053280482699, 0.17882519688238989, + -0.13867821498687007, 0.066778357273359653, + 0.025879389323035046, -0.043804769285368687, + 0.011227791677143616, 0.084975977832303108, + -0.13961820026878093, 0.13996827369759457, + -0.034322518386777047, -0.084142896510445579, + 0.17635519237340451, -0.14094566356126198, + 0.031098858403940806, 0.11548577598407939, + -0.15772473173285701, 0.095441380150836691, + 0.061944824344428291, -0.15700426636530928, + 0.14445128101090357, 0.00056516277819880651, + -0.11532884132779256, 0.11815154278142473, + 0.044150361068223977, -0.19826676310857847, + 0.22372335828196296, -0.044399256157592229, + -0.14592648472276277, 0.18867035293861529, + -0.0059640745135155275, -0.16415189460586942, + 0.13667996019121068, 0.11134335205716330, + -0.25116979118508145, 0.10548406930983257, + 0.20340797485660179, -0.24374171717778963, + -0.020870932662655073, 0.21691788820953728, + 0.033152047302723301, -0.34670912658954563, + 0.19719477023889966, 0.24292857613700000, + -0.15357477883195366, -0.29484716190901781, + 0.13814554520557204, 0.44883495840391064, + -0.12398665707518786, -0.35592813126762555, + -0.37691874633108355, 0.36703885520372232, + 0.56225179731895604, 0.72365139211353566, + 0.40666672003145010, 0.24204507252333996, + 0.10224527551471071, -0.0067341583157509894, + 0.058944873435876237, -0.060090876693502670, + 0.062781556427501021, -0.055572694486867966, + 0.041450726375777506, -0.022120182297282063, + -0.0083265658891659749, 0.013935169893817717, + -0.059871584473771600, 0.050467994023902542, + -0.083870197828537324, 0.061442318085931914, + -0.059983360578505341, 0.086344327666317616, + 0.15161690454544369, 0.42844326233761335, + 0.92985065599252282, 1.2273863154058457, + 1.3813392882777654, 0.41468584255290123, + -0.45065719133823170, -1.0178695316490503, + -0.017243260132043871, 0.71569754298482540, + 0.34552745242549242, -0.59136586581801423, + -0.41555981888943524, 0.63814760674634056, + 0.17410914437149326, -0.48408299013313069, + -0.15041508803235394, 0.58168098671709423, + -0.14944794351558914, -0.47874999079054835, + 0.44673364844309731, 0.086879048974537725, + -0.36552934463111935, 0.053960457746289774, + 0.39417476580088821, -0.42092534999232582, + -0.017128131291882319, 0.44257796577257295, + -0.46279583466203611, 0.12433279638426902, + 0.17051324572381533, -0.13721270899001819, + -0.16583237994480746, 0.40574149119051335, + -0.34035838579962461, -0.0063846851035543310, + 0.36107647743049382, -0.47907344279234494, + 0.30394179881306184, -0.014937055792964119, + -0.16737271571466217, 0.12272908848484930, + 0.066741838193187255, -0.22914525689983227, + 0.21180671579584874, -0.016532439142481203, + -0.23874357302997927, 0.38070300041608951, + -0.32295354488924970, 0.089390620720922151, + 0.18258765219154934, -0.35526255790546802, + 0.34406603302146269, -0.18142314836047063, + -0.037206265756170246, 0.19039260350034194, + -0.21983358139980527, 0.13166302149145768, + -0.0041197326966822964, -0.084009918147082012, + 0.077409455788490928, 0.0088796098899681970, + -0.12183494346015900, 0.18349358718015952, + -0.15183131182875811, 0.024894815965947265, + 0.14089983822622384, -0.27464626906797975, + 0.30780711486058693, -0.22087585259489152, + 0.036899482969225979, 0.17365203619626001, + -0.33564516472793368, 0.38539935694523808, + -0.30725192771648417, 0.12584064927699272, + 0.092863400800443282, -0.27737397502206707, + 0.36550976165757943, -0.33453986949949853, + 0.19767194608571237, -0.0059533352309615029, + -0.17814300278416443, 0.29422023064029614, + -0.30930516382405797, 0.22067081948257540, + -0.060329668643805937, -0.12104517053764033, + 0.26608546466670187, -0.33145607260903099, + 0.29730720942840383, -0.17465793101980865, + 0.11615127270193094, -0.066416559310674357, + -0.25405372749772002, 0.40021694093496732, + -0.54193941230549605, 0.40423385244588039, + -0.25040062147572025, -0.091167736547233720, + 0.28202162431270182, -0.47498003897087358, + 0.38116417309922554, -0.25583199973691829, + -0.068909261321662682, 0.24530132204742186, + -0.41440882774496997, 0.28421830752475877, + -0.11640806360634987, -0.23894102854279354, + 0.41583227013060849, -0.54415684317830418, + 0.33994736774823395, -0.089606790361166588, + -0.32074673179871411, 0.49767494562450291, + -0.56520873931469473, 0.26644678559496604, + 0.063163986133126135, -0.48486156614766248, + 0.58037321234065189, -0.49260828583658373, + 0.029221973048929899, 0.39438271829800605, + -0.78251539968401973, 0.72311861976410623, + -0.43300934153613442, -0.16640371967283369, + 0.57096866286810669, -0.77777616029479258, + 0.47398609748961694, -0.037843213696624919, + -0.47335757363272684, 0.54403590644519805, + -0.31773443122749989, -0.27083808639769982, + 0.64007191526832126, -0.71570479915283181, + 0.20514779010269718, 0.39383598862122565, + -0.87982363173946789, 0.70171958869625063, + -0.14162900443048154, -0.61486771240079773, + 0.81860543550565966, -0.48161314786820857, + -0.34771784399201808, 0.82429300249050265, + -0.71589973660065650, -0.10853321730634721, + 0.76760326365770898, -0.82234507465885175, + -0.022712062843911774, 0.84251387409290903, + -0.99991449470741626, 0.081410695097170539, + 0.88102061652219394, -1.0540707250484035, + 0.027080142831274914, 0.91801222199227274, + -0.79223737258615059, -0.53417211752402529, + 1.3040620302604361, -0.57186542326324199, + -1.0201810954055938, 1.1745214870055734, + 0.29014543886556120, -1.3758947501333174, + 0.058712726130790017, 1.6224393713497055, + -0.86340100752915572, -1.4209189777697155, + 0.85962971663358606, 1.6278649525268526, + -0.89180023945922082, -2.1477613375973780, + 0.34031518682982726, 2.2684244382474201, + 1.6197418195470137, -1.5790120687925734, + -3.3362147146699707, -3.5886108100460390, + -2.3561964873031450, -1.1961459108520773, + -0.54950192114217587, -0.040083538827888108, + -0.17741861095558045, 0.14669206408383473, + -0.15173882973111858, 0.13057998331629263, + -0.096079976792444222, 0.050889514716654173, + 0.0061020676393416643, -0.028233862196265593, + 0.11042052062866240, -0.11186871541679599, + 0.16880889225488815, -0.14261404455021699, + 0.14205240334465655, -0.17042611922207870, + -0.15450939676037792, -0.60550266440404522, + -1.2170126365196081, -1.6452757167351951, + -1.8421778630507126, -0.54344217652350681, + 0.58904155342833946, 1.3701449469113203, + 0.015663770549447662, -0.95313325759728109, + -0.45042514647147541, 0.76834115668192793, + 0.58671194006761652, -0.89185725741420880, + -0.18275257289344134, 0.59384456478837307, + 0.25276786489333554, -0.82142566218415314, + 0.23701880892239325, 0.61488630535054978, + -0.58690260041097841, -0.10570657258264888, + 0.46027509586163284, -0.026349997714754502, + -0.58526991409577460, 0.63418008143941378, + -0.057091506943412355, -0.50551815488600427, + 0.53477705420661550, -0.088283846371215716, + -0.29372140454700751, 0.23679411817401895, + 0.18441695259153409, -0.52092501341516413, + 0.45274508268116222, -0.0067406284407529481, + -0.44966231467390807, 0.59492327561905846, + -0.35068011013727573, -0.039996555726775178, + 0.28649482646148154, -0.22504257951445832, + -0.031043346281938702, 0.25545354004273131, + -0.24061794939374424, -0.0085261119344309412, + 0.33871145004259635, -0.51644957385532177, + 0.43028770159119451, -0.10962810999728076, + -0.25899390141066047, 0.49458695712265665, + -0.48152098901105541, 0.26585436181404819, + 0.027572096702704220, -0.23390968515866997, + 0.27753509138744611, -0.16369882290306582, + -0.0013478903118949053, 0.11532176434864277, + -0.10257513778626762, -0.014356498514578950, + 0.16672578078188265, -0.24845381002500619, + 0.20554735364525595, -0.033624926780281015, + -0.18999591334670940, 0.37226038299013757, + -0.41971612849186107, 0.30765136255449250, + -0.064861473593201646, -0.21347794690552490, + 0.42888542331826758, -0.49523065249799569, + 0.39301976066859827, -0.15382665318599201, + -0.13332511960231121, 0.37444490744814396, + -0.48585880479936775, 0.43857739079090737, + -0.24966936878810131, -0.011576136486065086, + 0.26227394175559474, -0.42085798951043605, + 0.44373920777851539, -0.32651636992162669, + 0.11227872147023988, 0.13185438278466166, + -0.32892832037439422, 0.42128364589000212, + -0.38195244716950521, 0.22546536169872806, + -0.11147493944553761, 0.018806799066092861, + 0.31428198198816495, -0.43278397905082007, + 0.52796644524136519, -0.32933785409309133, + 0.13148376263077721, 0.23351928066502591, + -0.40745605969137525, 0.55684199885627942, + -0.39192735912860536, 0.19583526963980086, + 0.19343269009472593, -0.40316327510059881, + 0.57882274657622664, -0.41886317289365971, + 0.20467706621276024, 0.21097807663101808, + -0.43706240783045046, 0.60227998261753077, + -0.40597610630484789, 0.14511304831275424, + 0.29796732293017912, -0.50935580288410745, + 0.61125430044700145, -0.32700070563580838, + -0.0042233903659981375, 0.45366569082358714, + -0.58881383147221605, 0.55287001715713196, + -0.13343534709860943, -0.25550500762358254, + 0.63478117103824549, -0.58689689900963362, + 0.33566653001288162, 0.21209101832417671, + -0.55309119231777177, 0.70313469188837106, + -0.35093970206059874, -0.11016560475768706, + 0.62739007163841814, -0.67820623608513914, + 0.41827402044386473, 0.21800065808899045, + -0.63330878897782328, 0.75267042881562083, + -0.27026161440503028, -0.31257814491890829, + 0.80153643129699564, -0.63618369544929901, + 0.10043805972546640, 0.63242507699766687, + -0.81263971671946181, 0.46296834644318707, + 0.37172756146367026, -0.84021103344948056, + 0.71815858313866584, 0.12736380791777025, + -0.80459540737565064, 0.87519572472051016, + -0.034462611885036417, -0.78966887890028313, + 0.96536449231035195, -0.072340011721486691, + -0.85629844723011281, 0.99680885882429517, + 0.060679251471561032, -1.0248893712929456, + 0.90741140879434993, 0.42762848742208671, + -1.2188847455561119, 0.52242483049410633, + 1.0273766794283479, -1.1346601435940833, + -0.37247275979744643, 1.4938650429867743, + -0.19761718897589942, -1.4771797294931435, + 0.73038117869684133, 1.5271062688315590, + -0.92473908661013231, -1.6107647840596654, + 0.92644573848400036, 2.0660031094645463, + -0.21942052513040796, -2.4138554831230441, + -1.4653032283921187, 1.4339458469728741, + 3.4562811055134261, 3.5078711739416099, + 2.3891862520530704, 1.2152326261042365, + 0.48105866197994842, 0.15069250713652044, + 0.037467439718508385, 0.0073393022687736643, + 0.0011120265838380263, 0.00012606784099952664, + 0.000010086274737906889, 5.0874914405982561e-7, + 1.2184041231747859e-8, -0.86559000981780345046e-02, + 0.10041502567226924178e-01, 0.34445906468008923376e-02, + -0.23190998209551328541e-01, 0.35861550365359463888e-01, + -0.41748641693979390843e-01, 0.32944854385265606722e-01, + -0.18212696536742317699e-01, -0.22238626779184631800e-02, + 0.15096782548603684612e-01, -0.21159096488744595643e-01, + 0.13229749383200253496e-01, -0.74833601182328426688e-03, + -0.15830902938573806343e-01, 0.23745368266711100458e-01, + -0.24961809793816375214e-01, 0.13785558945551081717e-01, + -0.67829414326339894110e-03, -0.14058663189435721338e-01, + 0.19264045106455872369e-01, -0.19493086855097440518e-01, + 0.11478841523206370634e-01, -0.65645693559283771826e-02, + 0.34919985039709600799e-02, -0.96495496924741096245e-02, + 0.16008392392499494472e-01, -0.22897044269067943351e-01, + 0.19416302185060751312e-01, -0.10944988324243369246e-01, + -0.38590736569026704711e-02, 0.11172707296846166175e-01, + -0.10741098650191908265e-01, -0.38124470446038133224e-02, + 0.19599956478547210514e-01, -0.31793775899539106211e-01, + 0.25876147787575094067e-01, -0.75388012230448277554e-02, + -0.20120239488718088400e-01, 0.37231418607884175787e-01, + -0.39669723547834372102e-01, 0.21759583141990453126e-01, + -0.62530436231115083673e-03, -0.15156043833194979276e-01, + 0.11750956551330550559e-01, -0.11352687957607976021e-03, + -0.11620519422935215656e-01, 0.53477633181324597811e-02, + 0.12088605255706631747e-01, -0.31909575840434294125e-01, + 0.30420655966715864915e-01, -0.85874977111525790247e-02, + -0.25426189036355351103e-01, 0.42021674765598808488e-01, + -0.34283163921841351696e-01, 0.68222434415690464890e-02, + 0.80376676532282198551e-02, 0.12661615163076559397e-02, + -0.30874772459379216938e-01, 0.44984646870993585943e-01, + -0.30280419041860299340e-01, -0.46916014877602984015e-02, + 0.17196310233212223212e-01, 0.54533155256701647609e-02, + -0.44363170012545118104e-01, 0.49031017773581736519e-01, + -0.14967942031211576431e-01, -0.21790596036099486865e-01, + 0.10201234329098408243e-01, 0.28489875371672208210e-01, + -0.37450702128169505167e-01, -0.11820102800442953972e-01, + 0.51560898736909298312e-01, -0.25678931155098578404e-01, + -0.30038508913460094246e-01, 0.17562918337148378939e-01, + 0.40237668087045139198e-01, -0.33111147744735267007e-01, + -0.48017286023506959569e-01, 0.52098700030829371566e-01, + 0.25673855503207363565e-01, -0.99870098192541643251e-02, + -0.84073524995518858494e-01, 0.23109259682439362016e-01, + 0.55896172653117019713e-01, 0.62337232230403140376e-01, + -0.34261970916794476372e-01, -0.94669228718547673851e-01, + -0.10797463470121834717, -0.83141435032371230340e-01, + -0.48428240707032693679e-01, -0.15011104768187861352e-01, + -0.19773493826478867608e-01, 0.16231002477369558396e-01, + -0.24987396718631541687e-01, 0.28666609217507941360e-01, + -0.30724205228605763751e-01, 0.29726606638143963923e-01, + -0.25685511845910821704e-01, 0.18891930098528079279e-01, + -0.10005024649824906940e-01, -0.14446299589989863507e-01, + 0.47440785532733460717e-01, -0.40812686296160922972e-01, + 0.49844619766484590806e-01, -0.33389414729883049038e-01, + 0.33357404336853357929e-01, -0.10865226000935590545e-01, + 0.33160532620910496138e-02, 0.24753815395164207105e-02, + -0.61703471489486606816e-01, -0.96419933330778417879e-01, + -0.30009115446379608372, -0.47135618958453190386, + -0.65384775241069836849, -0.57975072922825698907, + -0.14472588097788333106, 0.28089365523672560343, + 0.47605145835348905425, -0.16489654270358665433e-01, + -0.33329241592890762602, -0.20550561655894983293, + 0.27385731015733461025, 0.25429335111055778595, + -0.27902857115173129721, -0.14022888153971416192, + 0.14711683269394251750, 0.23575261313167392152, + -0.30165170266738794425, -0.47708219971044206476e-01, + 0.26071197210406094058, -0.75393725161956914871e-01, + -0.14196738591378962879, 0.35665700028704470925e-01, + 0.25300527456728205689, -0.33631711019874793722, + 0.12372310911164781377, 0.11586080963883213513, + -0.11990409902136807407, -0.55205903519542465219e-01, + 0.15711049376856076054, -0.43140408019841244847e-01, + -0.16455539993022585965, 0.24709289861401076416, + -0.11776382147973302184, -0.95643092326521628177e-01, + 0.20550312306324630685, -0.13702645999618134898, + -0.11747233876114504883e-01, 0.91444257977999127140e-01, + -0.34702928599788955555e-01, -0.85552554883650058781e-01, + 0.14340181822733327754, -0.66830323226160184835e-01, + -0.96041924792727953464e-01, 0.23050991013802923923, + -0.24088254776914536093, 0.12837942428140536322, + 0.25504959713384761644e-01, -0.11680873030403957080, + 0.99917666292589024657e-01, -0.39131309342692746980e-02, + -0.90450944713537526076e-01, 0.11869787783803942283, + -0.67475963754500351000e-01, -0.16693809789885147299e-01, + 0.72165062864524398556e-01, -0.59855020629255469011e-01, + -0.56027678006055348092e-02, 0.74203865277587821581e-01, + -0.88926146842198433573e-01, 0.28516286883013022141e-01, + 0.84587688672237010268e-01, -0.19153296264882616051, + 0.23557440316167435612, -0.18760630888301121910, + 0.65924471792089198163e-01, 0.79055279245393919596e-01, + -0.18578145178635047108, 0.21533394604339969880, + -0.16316175585252590263, 0.62053814563568149287e-01, + 0.39870471382368967428e-01, -0.98131293367368255254e-01, + 0.94065700557075734856e-01, -0.36412656684465069534e-01, + -0.42670842943740058817e-01, 0.10685288919887249437, + -0.12831084982810561645, 0.10035950631262087474, + -0.34849665362175250016e-01, -0.42751378229681308296e-01, + 0.10684606558074420668, -0.13908109726886644375, + 0.13516502558019824476, -0.10227873812831908551, + 0.55807242243294502559e-01, -0.11678217525237948038e-01, + -0.17716328970144159388e-01, 0.27305540387113299422e-01, + -0.18874873084791417288e-01, 0.26743470568937760534, + -0.37336668335333111912, 0.12848861996552590758, + 0.23435339679324607154, -0.43153138530984769261, + 0.51458726713103730699, -0.31169733693275181174, + 0.37703984027690352898e-01, 0.32980240823442869003, + -0.50350628588228663052, 0.54290957650565652148, + -0.29560273340282516852, -0.14408346753546374432e-02, + 0.35624024557873146257, -0.48585594743642851467, + 0.47405440718603120143, -0.20471500043965881743, + -0.56020832872177461770e-01, 0.31228264306941833084, + -0.31327724774473070246, 0.20176101424973830190, + 0.77345583074276316737e-01, -0.22929053845735791750, + 0.28441438945617869560, -0.71679277433903745842e-01, + -0.16698151657321483321, 0.41832659857931986380, + -0.39487478816666005121, 0.21697847588524440954, + 0.15200585756391810088, -0.36550161694972005400, + 0.40250770500915722394, -0.85611032774603343376e-01, + -0.28880799791113648256, 0.61649540501198074605, + -0.54270486125702321889, 0.19492507582820622902, + 0.37509576085034396220, -0.70776358743074752056, + 0.72450154824426049593, -0.29509508992619215562, + -0.16678987755622803890, 0.46867498399895490824, + -0.29269424649748165823, -0.74746511615511601612e-01, + 0.42237222447329958452, -0.29895630486002333637, + -0.13423319380493234365, 0.66671438163549212597, + -0.71692140172919027741, 0.29594574593307748644, + 0.41923490040511174337, -0.72981274466410372970, + 0.48200001241116996464, 0.21253486603103005637, + -0.57796475689480641957, 0.34631203088467943374, + 0.38271747756524376882, -0.73815559093783589262, + 0.39580764383880351343, 0.44440913406196419499, + -0.75319282971685186379, 0.22286593710181368255, + 0.70284678844867798375, -0.81786523638151520377, + 0.22676606135002840697e-01, 0.81693858053223755711, + -0.47558898631709872751, -0.52914707746975919722, + 0.82572913868890907008, 0.28272685252961154978, + -0.11792712915633583037e+01, 0.52804457493522516387, + 0.80863985027862772537, -0.47643086024597569583, + -0.96973364387259941566, 0.87639727807691758521, + 0.98696746529272982862, -0.10060547744332590803e+01, + -0.92244528759364952109, 0.58438390360324743433, + 0.16627859932211390692e+01, -0.21517140482001090307, + -0.16443662889892161072e+01, -0.12407974230613278976e+01, + 0.61545759443295011692, 0.24412178757116169692e+01, + 0.24409927019319663799e+01, 0.21520809172580146473e+01, + 0.97400424714149858030, 0.60223760221499256229, + 0.16540156450190882098, -0.10314612340536257959e-01, + 0.16053633483570151075, -0.21072089843153071764, + 0.25392079863284272578, -0.26136376996763982516, + 0.23468930934304588209, -0.17671214063266341143, + 0.94759324358638805097e-01, 0.43660141741589969522e-01, + -0.23240844388009365695, 0.23777120574004828590, + -0.32244935961943732572, 0.25421722993488549136, + -0.26130646008149344128, 0.12832988573592601922, + -0.64233711683885572064e-01, -0.46410947250512327167e-02, + 0.35984634702030143805, 0.44170819146224243879, + 0.17041784109067350528e+01, 0.23874327181933794328e+01, + 0.36178447504688358016e+01, 0.29699462546614556757e+01, + 0.86673383678537596619, -0.15569844035442022001e+01, + -0.25268837089796556405e+01, 0.12135205226026410386, + 0.16993840726988964640e+01, 0.12064014052201283977e+01, + -0.15926112124752140886e+01, -0.12221125363346514447e+01, + 0.13662257160961754909e+01, 0.83821819124574747928, + -0.83277276539673716904, -0.12638032761711723850e+01, + 0.16713574741717589500e+01, 0.13383469729319114050, + -0.12206446932305534681e+01, 0.19052718288918035761, + 0.99437328486705478525, -0.44086826208018770057, + -0.11029648229004935800e+01, 0.15624889148484955026e+01, + -0.45745130412797174735, -0.78658694141085538920, + 0.76822915723484963557, 0.20290249423245002025, + -0.78244857298044123706, 0.20201384280422082784, + 0.88372860445256329331, -0.13125749397111881045e+01, + 0.61679083774308585131, 0.51912468118448007459, + -0.11013002365504949154e+01, 0.72915046323361620839, + 0.67382395836208322515e-01, -0.49344682671275913455, + 0.18377081637729322794, 0.46965308859696436317, + -0.79933914120475224596, 0.41639493125454385414, + 0.42045624252000679544, -0.11056993584164516164e+01, + 0.11282201602997981027e+01, -0.50122775940309982623, + -0.34123364200691175263, 0.83875416022716242637, + -0.74964500050588112057, 0.22481530593021062381, + 0.30172670169865523082, -0.48812427854422540952, + 0.25805254451917236658, 0.14023590978077807301, + -0.38425235641758792582, 0.26640847564557490479, + 0.12885149281787519615, -0.53415059247960350319, + 0.64001770629427523485, -0.33363006155231694772, + -0.26878993578418536314, 0.85101126544661598317, + -0.11116263476105849861e+01, 0.89124370751675774383, + -0.28677970757074200403, -0.43825470886291911787, + 0.95731290387580947332, -0.10684183534368658641e+01, + 0.74902177325234964300, -0.17874442399612733290, + -0.38505662010890534530, 0.70210837490050836962, + -0.67380010715561500234, 0.34578638121711863240, + 0.10773544138157650774, -0.49200573334341252130, + 0.65458541079239229710, -0.55752305640023991362, + 0.25942537543033988845, 0.10655568711602582399, + -0.40805956867841369773, 0.54928315550757134123, + -0.51017097843292036341, 0.32975815763576987738, + -0.91037492284624862982e-01, -0.12199413126331966339, + 0.24430113929977304021, -0.25133279765526261862, + 0.15528161377953753064, -0.75395662762892945441, + 0.94192732877716467410, -0.24310867402993757702, + -0.77573533365685276575, 0.12317741572182303589e+01, + -0.13919395709868904731e+01, 0.71090319999915918547, + 0.78412364019257052572e-01, -0.11127960785104997754e+01, + 0.14874949431841748559e+01, -0.14885186235460863280e+01, + 0.63731685276552962893, 0.25164414826654585289, + -0.12537303086940878583e+01, 0.14691501652002461054e+01, + -0.12606581434023804711e+01, 0.27846707984374197142, + 0.55083058491992964445, -0.12685479793161944517e+01, + 0.10650291723100953067e+01, -0.48908711944967464547, + -0.60245596985934091183, 0.11747614596176152446e+01, + -0.13340992198783847567e+01, 0.51474843397897485087, + 0.42244195165800663139, -0.13995751719397517832e+01, + 0.14030173342670382297e+01, -0.82471091949507790986, + -0.47010479438105129413, 0.12890277756641208562e+01, + -0.15366404509626776509e+01, 0.56637022487469579346, + 0.65454586935163761030, -0.18071235965151446479e+01, + 0.16902936147600300387e+01, -0.71509949114554727245, + -0.99765796253717820008, 0.19469333586596562213e+01, + -0.19183090139892049475e+01, 0.48640651441619503492, + 0.95810518309611247822, -0.18038174656307568444e+01, + 0.10136464237051787673e+01, 0.40682981668253481722, + -0.17262698727620557904e+01, 0.14026106986861708315e+01, + 0.28534912665375299079e-01, -0.18710896314077145597e+01, + 0.21575932178315149201e+01, -0.90641166751250290545, + -0.13328835824136477939e+01, 0.22483034378000232856e+01, + -0.13537064198477681831e+01, -0.98230996168509321365, + 0.21714349542361035539e+01, -0.13446073706437444706e+01, + -0.11540187129712258240e+01, 0.23934393255492092401e+01, + -0.12866372610820064892e+01, -0.15139072852348731679e+01, + 0.25663920216380673445e+01, -0.84145815598551521042, + -0.22053084943629488457e+01, 0.25637845136736299168e+01, + 0.76876495833090238707e-01, -0.28300856540636565306e+01, + 0.16059395958942661586e+01, 0.18540775311759134514e+01, + -0.29674380346986422019e+01, -0.61536080132290393863, + 0.35191618493685750124e+01, -0.13129221818026106661e+01, + -0.31254584604181161467e+01, 0.19432841720960105647e+01, + 0.29949494200956303658e+01, -0.28316395066531359070e+01, + -0.32287220003097316656e+01, 0.31575864784841654043e+01, + 0.33644985179465982661e+01, -0.22801455031603219403e+01, + -0.52284753925304103817e+01, 0.47378809558544560110, + 0.56111460129796615348e+01, 0.41389552779914602354e+01, + -0.21861011164817147900e+01, -0.78988913779563896256e+01, + -0.84346920273278236380e+01, -0.68751516707833513209e+01, + -0.34857228952737435712e+01, -0.18830658484647713191e+01, + -0.52336866698576112178, -0.16340990513790087935, + -0.17689395140007269092, 0.21636568021565455444, + -0.28676159959293767709, 0.30412430871514289921, + -0.27840123795957738562, 0.21198503138713131744, + -0.11432714081135339490, -0.25238202831238013696e-01, + 0.21872731824913202447, -0.24215066042061370033, + 0.34425890975989020815, -0.28191829068610074760, + 0.28981459482624660762, -0.14454439397483770380, + 0.64241208671869942659e-01, 0.29954102207385674417e-01, + -0.40852704340971746078, -0.36774868030867291502, + -0.17942596947215228020e+01, -0.22858553156504441972e+01, + -0.37170802260633233338e+01, -0.28802198434191561560e+01, + -0.93333808041404076050, 0.15959183806940515638e+01, + 0.25242539397645087362e+01, -0.15318979730578413667, + -0.16317676918291676991e+01, -0.13008929849873525075e+01, + 0.17089717414783101024e+01, 0.10973395359687587725e+01, + -0.12406936476658054769e+01, -0.95085470729503762666, + 0.92672317171174178885, 0.11982473702839573360e+01, + -0.16347968738782729936e+01, -0.13781366695393640343, + 0.11974714835574471472e+01, -0.14222076834111047061, + -0.10580946505864252671e+01, 0.51508316396352538113, + 0.10289548176884848463e+01, -0.14929961254600268017e+01, + 0.40084128850914407804, 0.82936979599456650547, + -0.79308406699560218822, -0.19261208334239970918, + 0.78665590365783710780, -0.21410994863412161071, + -0.86612558284203255976, 0.12969291844426922289e+01, + -0.60516938337160264272, -0.52096309860796075064, + 0.10938086247015155195e+01, -0.70989176613980664587, + -0.94567095602891768080e-01, 0.52762437080766277919, + -0.21846361516068973918, -0.43730100092489893049, + 0.77647265171467472200, -0.40552510853783407807, + -0.41383609760570239100, 0.10815473428870614470e+01, + -0.10844048804689723209e+01, 0.44130029559968908526, + 0.41561564087278585200, -0.92075589224481391160, + 0.83483290792925024526, -0.30468896667696176994, + -0.23230791910628081909, 0.43700002698953216429, + -0.22870019051636167329, -0.14283799382380443777, + 0.36012554070445385035, -0.21474641774668318250, + -0.20385429278767455696, 0.62914551460324075194, + -0.74734151506458679215, 0.44710932456307173055, + 0.15844321266142644133, -0.75058943161625601981, + 0.10296524842398877553e+01, -0.83274523971493541463, + 0.25732227358897918901, 0.43724261332393959956, + -0.92456224424587896138, 0.10068477421358408286e+01, + -0.66176632663577728000, 0.72535757846015153083e-01, + 0.50380853176648388025, -0.82449442372583814365, + 0.79215320387988885642, -0.45127097462754078849, + -0.21721938975875390576e-01, 0.43199768349454237271, + -0.62414223128593693257, 0.55928301133435254222, + -0.29279958304311420880, -0.43369801626203997869e-01, + 0.31975214865947021448, -0.44146795584096071297, + 0.39047526249876679527, -0.20599149416997553086, + -0.28190141359542321420e-01, 0.22883741508630922601, + -0.33138756268169827779, 0.31291339617674085449, + -0.18712414176436853452, 0.50835482452315550184, + -0.53444135021503402783, 0.27749125006112068670e-01, + 0.69629387644243867506, -0.95851178212459531292, + 0.10282441773528869788e+01, -0.47808550956251116837, + -0.91271868812275322447e-01, 0.82755723013989357373, + -0.10294772269818550647e+01, 0.97726357381142114900, + -0.29784145808889977980, -0.33981309028224998547, + 0.10279219262878651620e+01, -0.10656156141031249973e+01, + 0.79346329737694831774, 0.52674818195920493358e-01, + -0.70502132881177437262, 0.12157029622091790610e+01, + -0.94603610350820577235, 0.37862497150792684408, + 0.58402343765708431000, -0.10812457921605085343e+01, + 0.12048760556830091506e+01, -0.49966035899505878426, + -0.31293332188104533431, 0.11576123511315581371e+01, + -0.11903236817831199801e+01, 0.72457572671143188892, + 0.35777966664132221375, -0.10784137900258810028e+01, + 0.13511518321188205061e+01, -0.62506843332165173965, + -0.33321699803560073105, 0.12875745175188673119e+01, + -0.12632241718419130461e+01, 0.58507011636748407213, + 0.68191273081973224901, -0.13501584417654781678e+01, + 0.12775464992911402806e+01, -0.12532511150964911750, + -0.98373993655974689698, 0.15796481778297528642e+01, + -0.84100103465599129748, -0.39752852038038138938, + 0.15398333791605816057e+01, -0.13288528931398428945e+01, + 0.19512669653745720599, 0.13106816820095956722e+01, + -0.15964065487965009016e+01, 0.67012027614345093252, + 0.10525716633348642937e+01, -0.17280578785480484871e+01, + 0.98391054342774120212, 0.89010674591552063628, + -0.18198806962275375643e+01, 0.11260529930066975890e+01, + 0.91203971802431627047, -0.19320572853548667602e+01, + 0.10633266514549186699e+01, 0.11820062084462938934e+01, + -0.20423240115224601254e+01, 0.69423985747444816319, + 0.17127961889431841946e+01, -0.19742684091236351041e+01, + -0.14485969372145982015, 0.23365683718968153215e+01, + -0.13236519646533566608e+01, -0.14906037117425068317e+01, + 0.24368143638892143521e+01, 0.38015559206036064754, + -0.26658405705948946540e+01, 0.88840970341141944910, + 0.26498509395452716220e+01, -0.16627814334756845227e+01, + -0.23485634561245967156e+01, 0.22927883479848372161e+01, + 0.24822662849451697653e+01, -0.23624094454670632182e+01, + -0.28936174952078728140e+01, 0.20360544591333966657e+01, + 0.39951068567073138027e+01, -0.24397789827780000382, + -0.45476546063382974339e+01, -0.33383941805853147855e+01, + 0.18611676422282146248e+01, 0.61381497297711193895e+01, + 0.69725000253407118933e+01, 0.52655395555484147962e+01, + 0.29990860834769423882e+01, 0.13524082664925787256e+01, + 0.49367419649262489489, 0.14723889839422771297, + 0.35915784908828893296e-01, 0.71233308570503662063e-02, + 0.11338796264995772232e-02, 0.14168805326648085561e-03, + 0.13409149275074468800e-04, 0.90475804744233835905e-06, + 0.38823235341215134477e-07, 0.79697445282692847740e-09, + -0.41746260960424759132e-02, 0.51341911175195702188e-02, + -0.16423480681247348747e-02, -0.70677157694272940355e-02, + 0.13850615757978180370e-01, -0.23053540559283103306e-01, + 0.27458464846916153662e-01, -0.31766052045489420741e-01, + 0.30087502273629770227e-01, -0.26252428268257993471e-01, + 0.23327130475708803686e-01, -0.14095058540883587637e-02, + 0.31167884448448070212e-01, 0.57161084475287379791e-01, + 0.80681548381293932692e-01, 0.11336551388799806506, + 0.76442300866603835052e-01, 0.15011725576842384691e-01, + -0.54160248125865617652e-01, -0.76803500078538297635e-01, + 0.14503438183903741635e-01, 0.44032765737521968596e-01, + 0.46712447687227327819e-01, -0.53699905391084053197e-01, + -0.36993305638780463185e-01, 0.33432733472208299441e-01, + 0.31047319874314228960e-01, -0.91489815729011696871e-02, + -0.59841309701170110336e-01, 0.52273393045116849087e-01, + 0.81891186594369152346e-02, -0.15858695783984490951e-01, + -0.32157570873240400033e-01, 0.47932936226105553323e-01, + -0.39765350461229941048e-02, -0.34455890153221299665e-01, + 0.15579158984820344266e-01, 0.27240032447710102459e-01, + -0.33059566856806034407e-01, -0.37824274270982834872e-02, + 0.33513084778386277585e-01, -0.22054309138467443480e-01, + -0.99163252913878618955e-02, 0.17793693889594851959e-01, + 0.10463533112675152750e-01, -0.44276118210629454575e-01, + 0.47368981864250411795e-01, -0.17938690342705166519e-01, + -0.14188995047751390768e-01, 0.20487274337692377296e-01, + -0.23189544290055721931e-02, -0.15631801052186897888e-01, + 0.12078299441290425015e-01, 0.92906452280133531435e-02, + -0.26207742286737421150e-01, 0.19478765024327809180e-01, + 0.84411403290580513947e-02, -0.37147262802382799429e-01, + 0.45463835863614437960e-01, -0.29230608468351161611e-01, + 0.21867975480828073104e-02, 0.15673617536842699566e-01, + -0.14408865459832814054e-01, -0.79880461254095574703e-03, + 0.15297975279345966612e-01, -0.18207707317603249314e-01, + 0.96804725553798279258e-02, -0.10936466242981798141e-03, + 0.36120567301786980947e-03, -0.13663401834040023175e-01, + 0.32502473462951618488e-01, -0.44714040561642985627e-01, + 0.41518976886702904650e-01, -0.24146033981265021401e-01, + 0.25094911282589637581e-02, 0.10578559965146901167e-01, + -0.78307567460665500336e-02, -0.87881738773795542441e-02, + 0.28981326594487825249e-01, -0.40681133396251789591e-01, + 0.36308553329946091637e-01, -0.17028746962636145262e-01, + -0.87413993834505737679e-02, 0.29655903431866564163e-01, + -0.37556141553174868242e-01, 0.30691449542271653783e-01, + -0.14138687204949691376e-01, -0.36663025170193754183e-02, + 0.14925393028966902134e-01, -0.16145633758496369392e-01, + 0.88196230038882859198e-02, 0.17817866907901230671e-02, + -0.97207794075016163565e-02, 0.10939320853501443773e-01, + -0.49557354774080056639e-02, -0.54910072129570859992e-02, + 0.15786718870856166624e-01, -0.21573897245188190797e-01, + 0.20325904846484429966e-01, -0.12243210304014011044e-01, + 0.88323550570376829771e-01, -0.12965900349121572965, + -0.35206833928257694546e-02, 0.12217562204714599305, + -0.20638280009163864626, 0.17599174902804709530, + -0.79836087399173777390e-01, -0.77527450076180698391e-01, + 0.18726656356042301055, -0.23886735768263411828, + 0.17499657036052287951, -0.68925664756420854107e-01, + -0.62408099272813037650e-01, 0.11873111599412541906, + -0.11710945172904173306, 0.34011063528850658810e-01, + 0.35834179793047322982e-01, -0.80481080917768718641e-01, + 0.32256591567015033273e-01, 0.46619704896482691558e-01, + -0.14641693833269725511, 0.17200286888044316602, + -0.14740663620697724845, 0.58755500925813664015e-01, + -0.69940852430047193572e-02, -0.23381197633533419566e-02, + -0.74770045742478682960e-01, 0.14335275682657661056, + -0.17137450606503948358, 0.72373750745103951343e-01, + 0.85144838716366244569e-01, -0.25379945942613257870, + 0.29082482197671744029, -0.19807546743916742971, + -0.11591644633674081863e-01, 0.17285941262379755923, + -0.21967182830234913138, 0.94448808593877942030e-01, + 0.66092674413254975940e-01, -0.16857918627926224420, + 0.98778090338125706937e-01, 0.47071893264740309604e-01, + -0.17206614115120763553, 0.12650118772976193249, + 0.22021971103538862807e-01, -0.16996467181645624756, + 0.13557926900211261789, 0.33079369665204805262e-01, + -0.21329072015510430749, 0.18137786021417734439, + 0.35537893097770015260e-01, -0.29066916333470449452, + 0.31706361096820157019, -0.12692406230537248146, + -0.10971926288710046049, 0.11133010673434999560, + 0.72092677384440403965e-01, -0.21313713673454884323, + 0.43615912827615552216e-01, 0.27541892253435718008, + -0.41900025895164555445, 0.17261270890657057220, + 0.14030537261564091089, -0.15354103530402571365, + -0.14992800001736159010, 0.25369151046169813313, + 0.52203414438446373025e-01, -0.39468742817020102676, + 0.21047843956045117486, 0.22378468016220315340, + -0.23465574022251572961, -0.21622692351477498796, + 0.25049155075318163544, 0.26910384732158248999, + -0.40018275892020621631, -0.20866563125124071298, + 0.31932060179281368528, 0.30561064309298752173, + -0.19189824745740075018, -0.58360682934999341676, + 0.10576945904081591632, 0.41316750741218921661, + 0.56574706363408611143, -0.19468528735352921832, + -0.61498131105398712304, -0.86500741039323936210, + -0.72263562370053702200, -0.39825153485943004528, + -0.28517304865832676652, -0.19626369323786679172e-01, + -0.10329520157195515306, 0.55317976003197093238e-01, + -0.53836355868325892760e-01, 0.36363015189069147759e-01, + -0.22092144928861908587e-01, 0.95978842716089932119e-02, + -0.65577733016595606431e-03, -0.41682328516644039443e-02, + 0.52541932967237452851e-02, -0.34003898590073662958e-02, + 0.18452846973422198928, -0.29795874598803401279, + 0.24258898331103609380, -0.76541008354601813846e-01, + -0.31993081367522067937e-01, 0.19975421834154086231, + -0.25882989872778383589, 0.33335592304546435294, + -0.28369814919251157281, 0.20733796139259183522, + -0.17299721705117762638, -0.29797195975257051437, + -0.48037474419796566405, -0.15706714990694727874e+01, + -0.18001918337654341240e+01, -0.28034158744319919165e+01, + -0.17891714695695188908e+01, -0.38280461198522386379, + 0.13153037506709719384e+01, 0.18261659798724558801e+01, + -0.32304273118633541895, -0.10867751652341728352e+01, + -0.10917895562433670431e+01, 0.12730563206479144078e+01, + 0.87794832342129824898, -0.75222875971712821475, + -0.84450507314693212813, 0.37509139849799849609, + 0.12266101916026408425e+01, -0.99690290373520262790, + -0.48735542170736539935, 0.68748690952409885480, + 0.47146853150646472752, -0.87715864332051840524, + -0.12954078590536582949, 0.98911726755484663531, + -0.46194284500719229314, -0.64208830802511851488, + 0.85605575679240930587, -0.35631629479088204604e-01, + -0.62699800394565208261, 0.31917340180161396512, + 0.46424152765477549876, -0.65160185144608206986, + -0.41063206920429216884e-01, 0.87794062777178627499, + -0.98157360387509573485, 0.30598231199445646844, + 0.43931119139674640328, -0.57091942102461246122, + 0.12549186900077735629, 0.30590596511410728109, + -0.21124560418247526061, -0.31726662323229548601, + 0.74449732835825810362, -0.60518907114913533807, + -0.42665633947180196806e-01, 0.71319802298123202711, + -0.89786446038142908588, 0.49883037084520009952, + 0.15631473948285568021, -0.58754550507979041996, + 0.55970914592297638102, -0.19787833345094330006, + -0.14283706643044777329, 0.20111944420574701109, + 0.21549257448368837331e-01, -0.27430316895398948462, + 0.29651509353826049908, -0.74563253991016204339e-02, + -0.41410711426127266854, 0.68060520218750630850, + -0.58351361018802760938, 0.15643383725233855897, + 0.36135960523768873021, -0.65991337156361462579, + 0.56499314375737208493, -0.12372480999340622343, + -0.41377573971881503878, 0.75563847665617023264, + -0.71528756827750139546, 0.31721629882991997373, + 0.24157703144276707063, -0.69195337523330191498, + 0.84190027802966782566, -0.65086265122741238098, + 0.24215188465520653960, 0.18273787530322338490, + -0.43777446451125745508, 0.44229778675463299331, + -0.23516167656314876377, -0.52827411970591937884e-01, + 0.27557163180601695895, -0.33173291877920840776, + 0.20709699510295959124, 0.34837162114882157249e-01, + -0.28397570607620392646, 0.43557395072510113332, + -0.42738377660139598158, 0.26186778681205891139, + -0.71515624672094002534, 0.90875789272834006649, + 0.29968775868252789385, -0.12503341811929553629e+01, + 0.18776856997889646017e+01, -0.14813315163624238835e+01, + 0.61522000776754970364, 0.71297722758990067504, + -0.14976336214319785345e+01, 0.17662362527752819563e+01, + -0.10341765272920535601e+01, 0.85388855146649358940e-01, + 0.95337079975255312192, -0.11567188627262623424e+01, + 0.81426271405615158194, 0.23204737904055081077, + -0.98755606253604200084, 0.13656172882274550950e+01, + -0.74758274030700089252, -0.15048584303249520899, + 0.11752026164054376611e+01, -0.13423014222916755944e+01, + 0.92878842357085156234, 0.14749955507148440614, + -0.78773960889289851295, 0.88108898963310333663, + 0.48067618953478337407e-01, -0.10196847503377104438e+01, + 0.16599289270439763211e+01, -0.10117815663380151925e+01, + -0.31020517625712884513, 0.18922683053783821983e+01, + -0.23086865424817681891e+01, 0.15551155617255436603e+01, + 0.30879310770328666225, -0.16923352830526767754e+01, + 0.20021733456155867970e+01, -0.68689082974748993937, + -0.87992926483163746987, 0.18026916240171613204e+01, + -0.97884706013826361382, -0.57457527285462228761, + 0.18635809124032201023e+01, -0.13764468495199861930e+01, + -0.18574955969672607425, 0.17576313026802978801e+01, + -0.14719623024797103827e+01, -0.21918860780783566700, + 0.21107057091244931790e+01, -0.19499087052269175047e+01, + -0.18813599305156546160e-01, 0.23819959742688019411e+01, + -0.25150785257758068170e+01, 0.58627765016713451196, + 0.16908203514981978710e+01, -0.15026679547848629248e+01, + -0.61260544180565701389, 0.23358382339011738438e+01, + -0.92304518193182749641, -0.20607309520058891827e+01, + 0.34044786169342136084e+01, -0.96817391542167730023, + -0.20236303026828257323e+01, 0.19483787243688199808e+01, + 0.13220524197354099893e+01, -0.25713148623912096546e+01, + -0.33465456063267523534, 0.36916481312064939324e+01, + -0.18650302213685354680e+01, -0.23916808109123839365e+01, + 0.23787600663545163115e+01, 0.22536659170849300260e+01, + -0.26827405762651390653e+01, -0.24867505490970658322e+01, + 0.38463302111853692189e+01, 0.21254042991167199084e+01, + -0.30626549210226992059e+01, -0.33769556751370064518e+01, + 0.24213137962107684764e+01, 0.51942411888049440094e+01, + -0.33857422218442356776, -0.48517213216279566623e+01, + -0.50098342938045092865e+01, 0.14353079495821676748e+01, + 0.64838857334501662777e+01, 0.85124449106680746269e+01, + 0.71748242771187369371e+01, 0.41970671138487789520e+01, + 0.25162164407323666104e+01, 0.60543826370521780511, + 0.59826863081358805374, -0.13334467167786837050, + 0.16442204367880469684, -0.53453780385994860425e-01, + -0.18439237388978315518e-01, 0.76005109816813076762e-01, + -0.10748787138689111509, 0.11102728779709106210, + -0.89991804400502334316e-01, 0.49945994369515640809e-01, + -0.50639214340280558346, 0.75557824912382365312, + -0.60169574222105948191, 0.11030726334398849309, + 0.15765369601574436009, -0.62023608578135436264, + 0.72207620261320992761, -0.90416861067443765609, + 0.69893216758298293279, -0.44760571822209560544, + 0.36481936061561254236, 0.11411694047009284247e+01, + 0.15253183880226877100e+01, 0.52339780358230489909e+01, + 0.60601079993192961126e+01, 0.92463706683440349821e+01, + 0.60647414311530667419e+01, 0.11985151030675111894e+01, + -0.43620481356925884242e+01, -0.60429448014197371108e+01, + 0.95648688862617414763, 0.38041871684241512774e+01, + 0.34131299597221183006e+01, -0.40091772031134054188e+01, + -0.31380722372066549575e+01, 0.26556898975625871095e+01, + 0.27549882507945988586e+01, -0.13032083274588783794e+01, + -0.39208560117059882977e+01, 0.30427812832493641437e+01, + 0.19917793410727528958e+01, -0.27190511634455947210e+01, + -0.11269233624291883356e+01, 0.24981381710175076805e+01, + 0.79622942770971305571, -0.35736173493424234771e+01, + 0.17036736086390202871e+01, 0.20931029787067130243e+01, + -0.29226668880515216387e+01, 0.28416818440077906693, + 0.18493154666494167060e+01, -0.78247121710770672909, + -0.18413244932510330898e+01, 0.24443142763921481553e+01, + -0.92909926715987453671e-01, -0.27598951018640827115e+01, + 0.31729465079122554094e+01, -0.99119636004338518287, + -0.14352262196819047801e+01, 0.18273087537164331984e+01, + -0.31733932325631786231, -0.11305697454063032836e+01, + 0.80512111197402114193, 0.97585615254309920896, + -0.24294778927262528079e+01, 0.19929135228685661563e+01, + 0.13991588599050874819, -0.23595390346748028598e+01, + 0.29675289701834026701e+01, -0.16438264880709334559e+01, + -0.52666606447859276585, 0.19418145333830236776e+01, + -0.18275009518922309404e+01, 0.60056920256012891191, + 0.54552476608403666081, -0.74068070124467144666, + -0.17202899295098664917e-01, 0.88779021310732464389, + -0.10051497526331563126e+01, 0.92356653054532916736e-01, + 0.12556396019525299934e+01, -0.20904141423250397480e+01, + 0.17194096632457533946e+01, -0.26439250134990677221, + -0.14758389780641423261e+01, 0.24614853985892288790e+01, + -0.21141650824101705375e+01, 0.58907947005232252913, + 0.12733317174691105578e+01, -0.24975844776397391200e+01, + 0.24519333650565648952e+01, -0.12130040627388023466e+01, + -0.57283448216936494468, 0.20129355964762294384e+01, + -0.24750240826941047878e+01, 0.18251589869898598995e+01, + -0.47747542199776793481, -0.89974177036788582917, + 0.16884059301992435653e+01, -0.16271066996541843075e+01, + 0.85107794297449812504, 0.19428934989103469055, + -0.10153096413662558994e+01, 0.12659142217400347619e+01, + -0.89404839166358296421, 0.10687712647681675560, + 0.72916034823746100901, -0.12642934847212645710e+01, + 0.12869920328708595036e+01, -0.80022043800032038874, + 0.14941004088959275453e+01, -0.17111740114449949246e+01, + -0.93891966776334234712, 0.27904476610400950065e+01, + -0.39167535221544960145e+01, 0.27935174848388526492e+01, + -0.86955550132810255359, -0.19050385083929834984e+01, + 0.32383192010119832283e+01, -0.34196002210763696283e+01, + 0.14208818158414810995e+01, 0.78019287830366368386, + -0.29515450191054743989e+01, 0.29800377393422361472e+01, + -0.17537559984784514278e+01, -0.99879629791480939449, + 0.28112662301606325954e+01, -0.35420201525783530094e+01, + 0.17935733278367536059e+01, 0.55468194781000768057, + -0.30535495302419835006e+01, 0.32808514067570815342e+01, + -0.19715726045530346244e+01, -0.98543719331040957599, + 0.27968340812571170773e+01, -0.31108827681933233222e+01, + 0.71587033756093942927, 0.19844056552102400381e+01, + -0.40194192972426057153e+01, 0.29400658829378314429e+01, + -0.11850667123840782913, -0.35547771452492642474e+01, + 0.46536747914587932584e+01, -0.31396265750221736823e+01, + -0.95974669663569134315, 0.39168416043149005823e+01, + -0.44191723464560555001e+01, 0.11721693720763228796e+01, + 0.25135301973204597914e+01, -0.45589344675813281427e+01, + 0.23769884649018804268e+01, 0.14961929716616437780e+01, + -0.46410918328164374458e+01, 0.34001922634336656515e+01, + 0.49635478779872677091, -0.44478050184900581598e+01, + 0.38846983567390775960e+01, 0.15050011557409612162, + -0.48095457975422890584e+01, 0.46576598181186454894e+01, + -0.24643658131689202828, -0.51224485993957378227e+01, + 0.52154974270080769472e+01, -0.51523529360085795759, + -0.48490659128232040942e+01, 0.41213736850731761407e+01, + 0.13430600863972528280e+01, -0.59138598580312891073e+01, + 0.29047716302407109445e+01, 0.39925748197127517436e+01, + -0.71342908359486330028e+01, 0.13844845853327092389e+01, + 0.55326984704621757771e+01, -0.49933715459629173239e+01, + -0.32446040863118748021e+01, 0.65732518573685032592e+01, + 0.18087835204188035254, -0.81731177275654847136e+01, + 0.38722165528901455467e+01, 0.61329150281727633498e+01, + -0.58250992351153607629e+01, -0.55809213878220003124e+01, + 0.68403636751645162661e+01, 0.54329590962540104115e+01, + -0.86903563659381912743e+01, -0.55301213579867463110e+01, + 0.75689775922055329005e+01, 0.81452006036411628287e+01, + -0.61162261026860189617e+01, -0.11945423472262913123e+02, + 0.15481780713109133396, 0.12334624726992357679e+02, + 0.11399308305772963834e+02, -0.29745668963712197375e+01, + -0.15823895258801080388e+02, -0.20397975811847835814e+02, + -0.17037378678304822444e+02, -0.10428233337983627393e+02, + -0.55743926790215514444e+01, -0.19598516423060232672e+01, + -0.95291464119429014623, -0.89339190925036102153e-01, + -0.92521394477215246344e-01, -0.56093820304468230975e-01, + 0.11739247717412819305, -0.16775027295664204918, + 0.18658158742784736184, -0.17381132298734824904, + 0.13358823589097490458, -0.72253686824003515721e-01, + 0.33474309916512701157, -0.44021285430810347394, + 0.32306991250028999074, 0.48361150779289339974e-01, + -0.22092753755692046136, 0.54786884969425531100, + -0.58316293059779589214, 0.69757168459680840567, + -0.51209421167822388732, 0.31197862227423889259, + -0.25769614696010556543, -0.91847481645953255036, + -0.12438593656660448250e+01, -0.41315264357076770807e+01, + -0.49222072793508067079e+01, -0.73139705901002241006e+01, + -0.49222674418643981298e+01, -0.91327202296173137785, + 0.34873744811350682049e+01, 0.47895634695205551168e+01, + -0.66775263593180922417, -0.31826258187219313989e+01, + -0.25583829009567464752e+01, 0.30251231301473420210e+01, + 0.26858445446284862079e+01, -0.22680144196846487858e+01, + -0.21062264966241719399e+01, 0.10069813729144292402e+01, + 0.31087426029608504763e+01, -0.23412121931759992677e+01, + -0.17378473036279327157e+01, 0.23590867955713927806e+01, + 0.70185915335431048323, -0.18005666280686847269e+01, + -0.80934372271845511637, 0.29925747510467863854e+01, + -0.14429528789089915985e+01, -0.16497000088727982181e+01, + 0.23705148374034958891e+01, -0.30596277877630806419, + -0.13634683216669574168e+01, 0.49108939986549698942, + 0.16140048818988794732e+01, -0.20842680814914338328e+01, + 0.18190324580118494291, 0.21328923302167464016e+01, + -0.24964943874193363804e+01, 0.78623373152691478083, + 0.11276541716648342817e+01, -0.14191397572773936098e+01, + 0.20127258413863219344, 0.96007633703292571958, + -0.69167633354636559595, -0.74458371891795738229, + 0.19246248284783349369e+01, -0.15899009881152643686e+01, + -0.10238005492381757611, 0.18717674199219389575e+01, + -0.23560292874043273770e+01, 0.13039422790962478249e+01, + 0.42206726201923222552, -0.15377426573834169776e+01, + 0.14306768673494740796e+01, -0.43297177857934449063, + -0.49375453167958055500, 0.65517887790057061093, + -0.44291860991563042349e-01, -0.66326308976296877162, + 0.77771802614612361992, -0.72220390023209068975e-01, + -0.97642450829585702987, 0.16159994223838121119e+01, + -0.12925988909139323191e+01, 0.10994370599970000602, + 0.12933369433324175546e+01, -0.20807794507903691894e+01, + 0.17918707384674610328e+01, -0.54868891095529370716, + -0.97205364710899377911, 0.19896411638700042257e+01, + -0.19927795469336893053e+01, 0.10410946122244131296e+01, + 0.35436686368341741016, -0.14809474280526480072e+01, + 0.18374539494339920953e+01, -0.13165593554666188414e+01, + 0.25165728727069658355, 0.82513867191059819817, + -0.14200344608443060679e+01, 0.13284662569207084104e+01, + -0.66128687895707038980, -0.21975094477458509412, + 0.91650566502769736932, -0.11474146164057126285e+01, + 0.86870852488506400402, -0.24357080433603658931, + -0.43478484084158081080, 0.88622617428629002490, + -0.93905664496950957965, 0.59274985291410919874, + -0.88878639331104070109, 0.93970926692139067349, + 0.68461165844785631940, -0.16887319912149305612e+01, + 0.22395679073817493787e+01, -0.13909399704595528657e+01, + 0.17310860505636441187, 0.14849740788896410582e+01, + -0.21067808695571441646e+01, 0.19977227348878190405e+01, + -0.53152522097609322671, -0.92054473116278612288, + 0.22424301610557240139e+01, -0.20692058675056483885e+01, + 0.10886959544107994713e+01, 0.83617215888367713017, + -0.20195223379433033806e+01, 0.24053419055194260601e+01, + -0.10990655710219836561e+01, -0.56388599414103690588, + 0.22506565845780230894e+01, -0.23130283388604802042e+01, + 0.12803083258118537202e+01, 0.88469291639625513568, + -0.22390740241008861844e+01, 0.25111266847332105456e+01, + -0.85329898635365375448, -0.11037054413600098091e+01, + 0.26838362406686977479e+01, -0.21779769719806587602e+01, + 0.45715457900334449670, 0.19381928974623434669e+01, + -0.27175037260456158528e+01, 0.18465517572815230984e+01, + 0.71499623366778386480, -0.25197922995185337847e+01, + 0.27492633333175016119e+01, -0.54891639704350114748, + -0.18642571458128749384e+01, 0.31426623591587756756e+01, + -0.15863163507485704695e+01, -0.10643769661741249166e+01, + 0.31840126510114434844e+01, -0.23165975579869910739e+01, + -0.35764383003789029791, 0.30870793775421314642e+01, + -0.27790706910948865804e+01, 0.11103732225622381380, + 0.30435468789425605962e+01, -0.30454466998479263751e+01, + 0.24987799763274218257, 0.31878831403007659162e+01, + -0.31397032553179635705e+01, -0.32219389278428108014e-01, + 0.35701160787486676540e+01, -0.29649295690478130183e+01, + -0.84708429177802191390, 0.40853432690181223919e+01, + -0.22424790329847978931e+01, -0.22473397641434078587e+01, + 0.43196225082895693959e+01, -0.54685950373759162346, + -0.39269136610605661630e+01, 0.33891808436798402937e+01, + 0.22922191791129740146e+01, -0.46669796862298307261e+01, + 0.26373313405989229352, 0.50447883048691277708e+01, + -0.22312731140178887479e+01, -0.43195179297653680806e+01, + 0.39619854016661681939e+01, 0.38024192422819949044e+01, + -0.47741612841492653274e+01, -0.33214655288931131949e+01, + 0.54700164345106019326e+01, 0.39755049713763321861e+01, + -0.52482736489283281500e+01, -0.53411918291311293316e+01, + 0.41102981381865415500e+01, 0.78276980792907933093e+01, + 0.10438642259341171514, -0.84571648272750099551e+01, + -0.73808608114638785125e+01, 0.18183521745399287006e+01, + 0.10638005959904399234e+02, 0.13595490041589947339e+02, + 0.11284930752477881910e+02, 0.70833729773850171441e+01, + 0.35562907460791968184e+01, 0.14665625044341619176e+01, + 0.50336621143194004713, 0.14458887371963569102, + 0.34758437698520674997e-01, 0.69599648153372386042e-02, + 0.11496894990368417607e-02, 0.15423254526875698192e-03, + 0.16403810023698939410e-04, 0.13324999337728216601e-05, + 0.77733620146298893135e-07, 0.29022890712300697942e-08, + 0.52132560022006839452e-10, 0.10077978695169985401e-01, + -0.16114522272418340537e-01, 0.10330049463047032143e-01, + -0.20460552473494310506e-02, -0.32913267595104783985e-03, + 0.22838900399664124581e-03, 0.51965541535286185679e-02, + -0.78069474390122083757e-02, 0.97327347303859147731e-02, + -0.64939436177210178511e-02, 0.55552595340343114555e-02, + -0.54358420955741715980e-02, 0.11761721316202310150e-01, + -0.17352258557147750423e-01, 0.22359890894089504143e-01, + -0.18847874772091762624e-01, 0.12445138077027559365e-01, + -0.38038382665546801621e-02, 0.40659827083895788702e-02, + -0.11247216748125791336e-01, 0.25874335972975715664e-01, + -0.33740443880826871681e-01, 0.30541421561665782480e-01, + -0.99584697519749468958e-02, -0.14843915441527180329e-01, + 0.34062702367192776443e-01, -0.31742866791216288458e-01, + 0.12833484547255068556e-01, 0.14409683793310991071e-01, + -0.27636670943564815156e-01, 0.21320849647781907332e-01, + 0.42808486334239758894e-02, -0.27592820452279929327e-01, + 0.36974516707475049704e-01, -0.24589175407473289059e-01, + 0.74468179668653235875e-02, 0.19646496397479999707e-02, + 0.77586683504979846171e-02, -0.21701403538410806576e-01, + 0.26498138584765743714e-01, -0.93347957409756140978e-02, + -0.13455602386404764623e-01, 0.24180422684157709678e-01, + -0.67219910679277494400e-02, -0.20959082749090661435e-01, + 0.35443766673467498596e-01, -0.16158021586861207042e-01, + -0.17966850198803032551e-01, 0.39204033883956095063e-01, + -0.25333350889211007917e-01, -0.18741007425264731047e-02, + 0.13443810781641961707e-01, 0.60063419216679451995e-02, + -0.24081471214583791834e-01, 0.11259914112800469693e-01, + 0.32107729630609233018e-01, -0.56211370238690321066e-01, + 0.34180146275098570452e-01, 0.12513554494961862812e-01, + -0.24953391643421328483e-01, -0.68036538083342604222e-03, + 0.15728581437323693043e-01, 0.22682728260118894398e-01, + -0.67321033029287505323e-01, 0.55556670693905949032e-01, + 0.10775400428085075120e-03, -0.91158620500159590061e-02, + -0.37619858965711371057e-01, 0.51965723371207583892e-01, + 0.78599866163147225767e-02, -0.33799349658709600119e-01, + -0.26617298406466698146e-01, 0.57896125055536547255e-01, + 0.11937305795424938207e-01, -0.29391268809323488342e-01, + -0.51629248264827093395e-01, 0.39376331802460175224e-01, + 0.55981191011528291801e-01, 0.62171495804247385933e-02, + -0.56209236518189847898e-01, -0.68997965056944152162e-01, + 0.86682269649338058309e-02, 0.61388316643284403240e-01, + 0.10892560383020705173, 0.86377945879432607712e-01, + 0.67688931768730684069e-01, 0.31163673414011213575e-01, + 0.19127800855460477120e-01, 0.27845808452961521261e-02, + 0.54559555362500150588e-02, -0.27561117056127668913e-02, + 0.26772317243420810755e-02, -0.10666501314346196316e-02, + -0.92849422489788338824e-03, 0.31371837402116328590e-02, + -0.50542825267110048915e-02, 0.61802610354290592534e-02, + -0.61969873393454182400e-02, 0.49989996003497200877e-02, + -0.27897649225165281443e-02, -0.58496083502820921118e-01, + 0.96269465647171051370e-01, -0.72413991970242369556e-01, + 0.11884964815655436887e-01, 0.32110734715634983716e-01, + -0.87991532901216765183e-01, 0.10283615694895978376, + -0.11070654091046104595, 0.69061103315355421017e-01, + -0.22511199124181858339e-01, -0.51505492294042151680e-01, + 0.13024474884361214588, -0.12924608232929316043, + 0.32106184286999678301, 0.81682621686992751275e-01, + 0.64968483283338740453, 0.65248245679309113676, + 0.80497633673112523045, 0.63691019754023181498, + -0.15110666784620721548, -0.31730785450856935359, + -0.67263003641892071816, 0.19863510746978779720, + 0.38074795743219091992, 0.27239702756682449003, + -0.29514287078198642167, -0.41671827902055402770, + 0.27989854558551208186, 0.29397435451034215070, + -0.10414545742953831842, -0.33442759827998075339, + 0.79575944545025423249e-01, 0.39138985564691819441, + -0.24714261612718069205, -0.21238501544743412786, + 0.22394425795618499997, 0.12546249288972377567, + -0.17809072835219769138, -0.18633170546845068127, + 0.42010400677233028510, -0.19464097719636103134, + -0.16318828603090174134, 0.19180147872830963229, + 0.70846537664961115044e-01, -0.21651565471064423973, + 0.40928528492896507074e-01, 0.21254630298989776738, + -0.21207643384564592304, -0.49820130990383786063e-01, + 0.26483304033262300425, -0.19317834763514718510, + -0.82997362178448982895e-01, 0.27443670359144317628, + -0.21465505481200489180, 0.68960508784066528939e-02, + 0.11429102536292451431, -0.45341666517246533019e-01, + -0.10164857589928916193, 0.13152525986343777120, + 0.20784740071638340558e-01, -0.23169973301397162047, + 0.30492366991217850769, -0.15819949883499354049, + -0.11227926240448733719, 0.31462678269552257770, + -0.32469789828922085428, 0.16885719809569815775, + 0.12294822965012089724e-01, -0.91529499765104910258e-01, + 0.44688006794929735488e-01, 0.45267686655199708412e-01, + -0.75827449163078486372e-01, 0.77528184075002668993e-02, + 0.10581715465079849503, -0.17444343400639161779, + 0.14364436682185804939, -0.41749899173399822316e-01, + -0.47010319884251097755e-01, 0.45330385858438376756e-01, + 0.53972030222609469752e-01, -0.18263875341242705175, + 0.23966673932964843718, -0.16300629135671304559, + -0.29440520852132091856e-01, 0.24485963155295981108, + -0.37236058995477622213, 0.34563866021474359824, + -0.18288440686713489103, -0.26911813593597185001e-01, + 0.17305126714840124436, -0.18580591999849821461, + 0.70624309139907137656e-01, 0.96770880520805194203e-01, + -0.21540073753028876613, 0.21296841939399693833, + -0.84802397142562893628e-01, -0.10578799325605502124, + 0.26065349401694382081, -0.29849294338291465500, + 0.19597797759318918986, -0.19088177342656237334, + 0.48615423567496297841e-01, 0.22148583355927636829, + -0.44900681010530657522, 0.34894227590370002767, + -0.15678447799464739765, -0.15932685898217607834, + 0.23177252425546301939, -0.17354960859541554430, + -0.12829240062276195400, 0.29133078406520085402, + -0.32660321986940438199, 0.37737205324967315438e-02, + 0.34000671049045610994, -0.64470041546271861232, + 0.52967856564541770936, -0.20166310478154719776, + -0.29170040747044423401, 0.44070694829339285281, + -0.25842461233981894875, -0.32933779900130438767, + 0.76106425345150929829, -0.83566736005453756686, + 0.23695331143314768418, 0.56889146520876754387, + -0.12355682814441160122e+01, 0.11287645098360954421e+01, + -0.42097379738219709022, -0.61102166200907137572, + 0.11212402058878123690e+01, -0.92310078256589711554, + 0.24435534838544388514e-01, 0.73861793506249351360, + -0.95129099619690837830, 0.34548761701872721108, + 0.36448454568062038650, -0.67787796283137025100, + 0.15910730765058539449, 0.55163457623082590153, + -0.87869735015954120172, 0.27556758975586070903, + 0.61146303495436182818, -0.10634785781531279625e+01, + 0.40329875690926286769, 0.68246910757313539175, + -0.12847001608175785403e+01, 0.58509677671624005235, + 0.67089827592519057919, -0.14068901912937989973e+01, + 0.76848965220436005197, 0.34093127273118384313, + -0.75074242217643527564, -0.14820456490883340828, + 0.10293430413924460343e+01, -0.67192507875427198716, + -0.95567998711258594913, 0.18931292126758791916e+01, + -0.10828265720227210345e+01, -0.62493156947370587240, + 0.89844474494248571794, 0.37392260438298519087, + -0.12052962177251682618e+01, -0.15596016293665104779, + 0.18395062191140925112e+01, -0.13447125514900228893e+01, + -0.84284192403947688632, 0.11231225025426838648e+01, + 0.83889915758178557059, -0.14961302839980450408e+01, + -0.83798943146292559359, 0.18424014209249388596e+01, + 0.58808056966151567302, -0.18490468430454478632e+01, + -0.92420220052940660338, 0.15789673224735774060e+01, + 0.17323506308560610023e+01, -0.13376602484304231933e+01, + -0.23674604930221692101e+01, -0.23030909319705092364, + 0.23253791844507238906e+01, 0.26118192458797335753e+01, + -0.15768857500403574146, -0.26575038206071117663e+01, + -0.41643757250808492998e+01, -0.36262625232647835993e+01, + -0.25614728777566595497e+01, -0.13714333419821762572e+01, + -0.65539882159240725468, -0.21114263873310309960, + -0.12806839559043595167, 0.34114620649976119815e-01, + -0.53916816817535698214e-01, 0.21994994953224246415e-01, + 0.18165556835146451364e-01, -0.66129180104669088580e-01, + 0.10935030571578703562, -0.13570085277492699438, + 0.13741538266849834260, -0.11149915085393988234, + 0.62439718590176523927e-01, 0.48032619529352710286, + -0.80587241078080895651, 0.65139386368872986832, + -0.13206068875756582504, -0.23528870678889401979, + 0.76489158043592331282, -0.93302683588231560829, + 0.10920656005589362003e+01, -0.79977925673739092005, + 0.49166885150125860804, 0.91926540586001054267e-01, + -0.74353911047865361983, 0.65164450208406121678, + -0.25513926413358976042e+01, -0.14162738028048340588e+01, + -0.60227024454060735792e+01, -0.68162542666017209569e+01, + -0.79671873441218048484e+01, -0.62368014585319304643e+01, + 0.11920735405921432104e+01, 0.36360335800981227194e+01, + 0.61829690445557421441e+01, -0.14229951115794130523e+01, + -0.43292551714487457204e+01, -0.22848063510662206532e+01, + 0.26241936058528669840e+01, 0.43798144118132222857e+01, + -0.29053846286193381054e+01, -0.29119555666357395118e+01, + 0.10652207887591262914e+01, 0.33011984746080997866e+01, + -0.75192460321221399333, -0.39452472982507345023e+01, + 0.24961710904731342353e+01, 0.20941988275089618021e+01, + -0.21795107130398685413e+01, -0.13668926860809438306e+01, + 0.19699391286380505406e+01, 0.15875602129423889153e+01, + -0.38356421932369264560e+01, 0.15082222615897837859e+01, + 0.21180424116293945502e+01, -0.24118715038690070607e+01, + -0.24701759688239816048, 0.17803883645647007317e+01, + -0.13338448740460312480, -0.22674405435634521488e+01, + 0.21240426053670207196e+01, 0.62675929261629770295, + -0.28821300181571078980e+01, 0.22373929242466208400e+01, + 0.49673930118450110305, -0.24234460785170104380e+01, + 0.18764311409403573450e+01, 0.12694101848173824920, + -0.12511922081797435258e+01, 0.48015450204599174899, + 0.10548496573817365274e+01, -0.13871770150988804726e+01, + -0.13653837035803007005, 0.22849513340978435672e+01, + -0.30864388575503816092e+01, 0.17118448111207040796e+01, + 0.89414485042760749600, -0.28248875573835579011e+01, + 0.28574044978126709182e+01, -0.12649087243969392436e+01, + -0.53497779981141946326, 0.12698702606695078110e+01, + -0.69811265837247871158, -0.33930966551010233179, + 0.80673073293497288283, -0.29260624160834075580, + -0.68694457056626356817, 0.12470634600123335911e+01, + -0.85491488988769648305, -0.19390676224514680204, + 0.10547489629987418791e+01, -0.95384444456752626174, + -0.17145361327331953838, 0.16283797537784376885e+01, + -0.23893498712833749487e+01, 0.18179919984545505063e+01, + -0.74011998652478552807e-01, -0.19287495610921046030e+01, + 0.30953574741162315220e+01, -0.27693059757005138444e+01, + 0.11365003260666610707e+01, 0.91699146895313243810, + -0.22905492640669331550e+01, 0.22993081833901856115e+01, + -0.10107537454176125369e+01, -0.80211003740503550308, + 0.21159707963899041516e+01, -0.21950556934937193176e+01, + 0.98449122648641695932, 0.88762563202337763091, + -0.24392962041147834285e+01, 0.28532485215073219997e+01, + -0.18875491202501490928e+01, 0.92932878294951859477, + 0.75722361189360154476, -0.24731625474513236895e+01, + 0.33904570645018639041e+01, -0.20004203969881837466e+01, + 0.11792330961352050223, 0.21321594837977522197e+01, + -0.23744034555336552827e+01, 0.14158979101995599059e+01, + 0.11538834550140200097e+01, -0.26866578216087027009e+01, + 0.30556167956599700197e+01, -0.84394777623785310894, + -0.17196320759635546072e+01, 0.40160917214706080003e+01, + -0.34951089750465977879e+01, 0.13214656693717325986e+01, + 0.21523879769868381473e+01, -0.36179430419092502014e+01, + 0.29091680650170435030e+01, 0.62695326421294494956, + -0.36317401326990887966e+01, 0.47843967637092550405e+01, + -0.19254061658803249824e+01, -0.23796690134992468657e+01, + 0.62358411395254416121e+01, -0.58347489179174933938e+01, + 0.21020307062292657996e+01, 0.35380452161106510367e+01, + -0.62116548882048538971e+01, 0.49594998329652346669e+01, + 0.17374221083219257289, -0.42616669274489753505e+01, + 0.50181474455001930934e+01, -0.10070454686239487252e+01, + -0.33429045434585127339e+01, 0.50230179750629249114e+01, + -0.14877029645092170185e+01, -0.32528736847809502919e+01, + 0.55988554838849191597e+01, -0.21427464722448283929e+01, + -0.32480736163929098126e+01, 0.62099883933884658660e+01, + -0.25364937055417748901e+01, -0.37801250239130634867e+01, + 0.74028239921744942720e+01, -0.34342895062398031136e+01, + -0.36992455002014503762e+01, 0.76814972930513283345e+01, + -0.35273239592937160047e+01, -0.31990981723549780646e+01, + 0.54227340566574122604e+01, 0.49965233051800733710, + -0.64880546583338771782e+01, 0.50674511582485521899e+01, + 0.41366506072682458495e+01, -0.94870007564570908443e+01, + 0.47144547954980406956e+01, 0.51115319051744494416e+01, + -0.60885830759450696448e+01, -0.22944680933409316026e+01, + 0.79686341964088995837e+01, -0.28465006901361822322, + -0.95974849894728890831e+01, 0.66864602491489222302e+01, + 0.61730791493281769178e+01, -0.74718699351378718987e+01, + -0.46804050065213216314e+01, 0.89169294459158319199e+01, + 0.49435874209615766617e+01, -0.10972523818618578062e+02, + -0.34904791892644491114e+01, 0.10890919109146436128e+02, + 0.58959391220997172667e+01, -0.98898766812133320769e+01, + -0.10016880183867774790e+02, 0.77942509364169341168e+01, + 0.14223290635349265187e+02, 0.16005607062972351251e+01, + -0.14374948820006842709e+02, -0.15111490112310484335e+02, + 0.34060489555964518216, 0.16516536607779098489e+02, + 0.24508748061645540872e+02, 0.22120473151541837353e+02, + 0.15111604470500552111e+02, 0.84160302503119890360e+01, + 0.37761242268165418068e+01, 0.14239259038453373485e+01, + 0.60366249517437708949, -0.47772013846262000036e-01, + 0.21236484795788132529, -0.10914598999644180288, + -0.76341732981356881863e-02, 0.16029372942523875678, + -0.30304237078818746509, 0.39520628368921867368, + -0.41048526674013269266, 0.33755319565051955522, + -0.19038100411715910831, -0.10860316839664962973e+01, + 0.18714347403195781272e+01, -0.16339211513713594037e+01, + 0.52789297313182326210, 0.22373047599035728039, + -0.14320290572385916406e+01, 0.18432816885479887947e+01, + -0.23315487862397974439e+01, 0.18037532177919641807e+01, + -0.12977912469893702063e+01, 0.13126108275812950477, + 0.12207681636182154961e+01, -0.86888147224176004446, + 0.53848553861270831433e+01, 0.40632318116422041498e+01, + 0.13955532289044050742e+02, 0.16607344319918396991e+02, + 0.19153746832230126529e+02, 0.14648508991624590081e+02, + -0.23061115176189703746e+01, -0.94498875557175239237e+01, + -0.14050465722030576643e+02, 0.26503566339243600503e+01, + 0.11036720049074336458e+02, 0.50084978517083555971e+01, + -0.60328712768980619074e+01, -0.10578489079738570666e+02, + 0.68659183922264670485e+01, 0.72085829112846306899e+01, + -0.28352312678084130582e+01, -0.76522301362328120078e+01, + 0.15798627233061872666e+01, 0.96148525739476902174e+01, + -0.60644278888635261282e+01, -0.50126940134609840882e+01, + 0.52349712150478779904e+01, 0.32941074135402788059e+01, + -0.48059967821303084534e+01, -0.36460916125669511345e+01, + 0.89384632674711053113e+01, -0.32671986334261995388e+01, + -0.54968960854041819530e+01, 0.62100225359041765216e+01, + 0.21161922429311658123, -0.39919233153390920599e+01, + 0.17656419757656091618, 0.54162751691675650179e+01, + -0.49060312833205781402e+01, -0.18467366446805135727e+01, + 0.73620379312521890824e+01, -0.58642937946702753393e+01, + -0.71935795512772315874, 0.54234471131239336827e+01, + -0.42480815553404758234e+01, -0.39481886771398877478, + 0.29140794301524515220e+01, -0.90675409179244959024, + -0.28981692632275621868e+01, 0.37529775075022002717e+01, + -0.88930642058211328838e-01, -0.51484453668261940251e+01, + 0.72091527332092271152e+01, -0.40943221362931510043e+01, + -0.19611145423820892653e+01, 0.63997613921085170219e+01, + -0.63209186722786236956e+01, 0.23949327612576363222e+01, + 0.19525711319930045828e+01, -0.36683781863087912001e+01, + 0.21681110738552091810e+01, 0.51074554384478876301, + -0.18692944672319780075e+01, 0.88777455324495935240, + 0.12167941710300960168e+01, -0.23539621160136459110e+01, + 0.12622046106648157071e+01, 0.13268713170444224048e+01, + -0.33833985899973630929e+01, 0.30462474523687554928e+01, + -0.18013863173692881703, -0.35392236758970536670e+01, + 0.56176390366750323935e+01, -0.45056959031111887271e+01, + 0.55612300169131367866, 0.40576358698995793617e+01, + -0.67297213264157758061e+01, 0.58922660827299582209e+01, + -0.19976434069412103423e+01, -0.28358818168916766211e+01, + 0.59768948856258949931e+01, -0.58030714471207422989e+01, + 0.24966655538578939044e+01, 0.20611105969245078207e+01, + -0.53935993679147991031e+01, 0.57144158509800533352e+01, + -0.28801158416225862702e+01, -0.16092590942841273893e+01, + 0.53945166287138777150e+01, -0.65062567240814930258e+01, + 0.43482709701658537327e+01, -0.14149943000580651464e+01, + -0.27585870663870561970e+01, 0.59817300437679152836e+01, + -0.70228381668232717772e+01, 0.33240392904706030919e+01, + 0.11757823441402381892e+01, -0.58395464489491804017e+01, + 0.59987795007898165878e+01, -0.33547028349818810433e+01, + -0.25071255784208847928e+01, 0.61482695087988314953e+01, + -0.70799467675529248467e+01, 0.25913987748126068311e+01, + 0.28726358578164084001e+01, -0.78247935896055027527e+01, + 0.71328519949648150345e+01, -0.28771684727622361955e+01, + -0.42165733880662150668e+01, 0.76357522279975524881e+01, + -0.67667786717073692415e+01, 0.11027335881943567397, + 0.60587042639274297784e+01, -0.91295639557006040832e+01, + 0.47079075685965134923e+01, 0.27126328491192621684e+01, + -0.98451880609826716295e+01, 0.95584889857472195018e+01, + -0.34361069522724139169e+01, -0.62006703694277014449e+01, + 0.10523854355386456305e+02, -0.79777657820061493865e+01, + -0.13588779421640675427e+01, 0.83935271154595731957e+01, + -0.91352990405912173344e+01, 0.11225774048872896316e+01, + 0.71744676727384977255e+01, -0.10138316746233490662e+02, + 0.30900005915543062862e+01, 0.62596703194008576077e+01, + -0.11016458707966341635e+02, 0.46499016868085032428e+01, + 0.56157261349763256675e+01, -0.11568898882355073354e+02, + 0.51513779002946380459e+01, 0.63491011287090373116e+01, + -0.13136081960364945687e+02, 0.60739183126022080472e+01, + 0.66335565320128182520e+01, -0.13400366255194752441e+02, + 0.51096490902025317737e+01, 0.76432199009762475939e+01, + -0.11581502315660429758e+02, -0.96097184913165684117e-01, + 0.12146146223952602128e+02, -0.10427306255406161739e+02, + -0.60093663300848918496e+01, 0.15599502775750030636e+02, + -0.67506629159730433543e+01, -0.11120281403328093006e+02, + 0.12167454234624614173e+02, 0.43524530133998604597e+01, + -0.15727659704252962669e+02, 0.18958879621118094327e+01, + 0.16379721279216621355e+02, -0.11130344101309898264e+02, + -0.12437445421258692235e+02, 0.14293532095702758511e+02, + 0.89228219450848769156e+01, -0.17218643134541821382e+02, + -0.84977348431740225010e+01, 0.19815831828115669566e+02, + 0.69354723967636893178e+01, -0.20426714667936032299e+02, + -0.11221986186332033597e+02, 0.18885023904112514970e+02, + 0.18203998420956970961e+02, -0.14135326029497814915e+02, + -0.26783844201526786577e+02, -0.29838885078594707956e+01, + 0.27032204125743234613e+02, 0.27873594504317974696e+02, + -0.26667966501533851842, -0.31150053728372011363e+02, + -0.45542525316529655299e+02, -0.41377185775039549753e+02, + -0.28219928669459601878e+02, -0.15659963238603603841e+02, + -0.70805268101092364574e+01, -0.26903073704870861249e+01, + -0.10235094424725710294e+01, -0.60794104392649851720e-01, + -0.25835093465366598675, 0.14284152769565180985, + -0.61023169065113291865e-01, -0.62513921772917216413e-01, + 0.18069937480072459368, -0.26196651944337467910, + 0.28491892455722661603, -0.23961410964634349829, + 0.13667952675226013870, 0.68437702879206274709, + -0.11927875247546047000e+01, 0.10939917760172996886e+01, + -0.42044740777871025816, -0.16551071694432206716e-01, + 0.78965988308022183606, -0.10606965992895891482e+01, + 0.14309059229274114777e+01, -0.11528535477553860655e+01, + 0.92002781296692337509, -0.24578140839772352755, + -0.55920782889901188284, 0.26667263118798162358, + -0.32568331713208857892e+01, -0.30068951497806688522e+01, + -0.90792706181658893172e+01, -0.11182182691753128623e+02, + -0.12782602547502504464e+02, -0.96248743919708736883e+01, + 0.12971557651573946135e+01, 0.66094038053005563782e+01, + 0.90390148144067250513e+01, -0.14600130083522027125e+01, + -0.75985602700370851181e+01, -0.31855625123337008020e+01, + 0.39729585328587542215e+01, 0.70072928920989001611e+01, + -0.44515640046270590346e+01, -0.49778764688609573597e+01, + 0.20813380816543958218e+01, 0.49277783186249610736e+01, + -0.91594761897327070521, -0.64917105218870867489e+01, + 0.40724045771580481556e+01, 0.33608064801084815976e+01, + -0.35352399969235821509e+01, -0.21409854699111643406e+01, + 0.31647961493144665113e+01, 0.24427591478618473353e+01, + -0.59310856360676806887e+01, 0.21165017172807334411e+01, + 0.37536312322819691545e+01, -0.42337966088957879052e+01, + -0.60211567673912780307e-01, 0.26194200157724409905e+01, + -0.12788792757804076650, -0.35351634318207616481e+01, + 0.31344895623453514766e+01, 0.14202429605818416292e+01, + -0.51248844691006123497e+01, 0.41301420293127648620e+01, + 0.28964691143642934401, -0.34815690985436913429e+01, + 0.27802469596311087940e+01, 0.22331939002695172514, + -0.18066346978839751269e+01, 0.38725603858550061709, + 0.22107829565432424168e+01, -0.28070401153595736510e+01, + 0.35743000080178000122, 0.31806966350935321763e+01, + -0.46298387319076494961e+01, 0.26545771712828365452e+01, + 0.12728330214823362354e+01, -0.41218040328999734356e+01, + 0.39772619456409277205e+01, -0.12920659460338126401e+01, + -0.16366869779885417913e+01, 0.27747156880671153267e+01, + -0.17282767400278209458e+01, -0.13422215738099474436, + 0.11423337869704641712e+01, -0.59988834421187042789, + -0.69055676704915069930, 0.13523619611832560228e+01, + -0.55151500438663059178, -0.12123913412754458996e+01, + 0.25857624141375805671e+01, -0.23245199461318679646e+01, + 0.34634236050686251218, 0.22268272043779160363e+01, + -0.37183622797965902862e+01, 0.30861805569659361836e+01, + -0.55051550365259638298, -0.24477835260938571871e+01, + 0.41822441711913853624e+01, -0.36101566193976926122e+01, + 0.10363433981942979933e+01, 0.21319259760685547178e+01, + -0.41448528896827312451e+01, 0.39317785311717039498e+01, + -0.16234913966209054692e+01, -0.15130093836505322802e+01, + 0.38171965620027044075e+01, -0.40881409973686935189e+01, + 0.22251104091244005012e+01, 0.77538944107047902410, + -0.33389047776641271881e+01, 0.41485250628235341708e+01, + -0.27988573304610007142e+01, 0.66527966470311894476, + 0.21294185993074448149e+01, -0.39463624345173919927e+01, + 0.42328087517284940233e+01, -0.16315239886220489485e+01, + -0.13627287451286269615e+01, 0.42212085242892074533e+01, + -0.41702377806139638849e+01, 0.22753004057570569429e+01, + 0.15539455451635744154e+01, -0.39875199922154420662e+01, + 0.46425463005622615853e+01, -0.19326219108658209134e+01, + -0.14747671473760821659e+01, 0.45946763198297198016e+01, + -0.43277108656753613403e+01, 0.18276609980599101135e+01, + 0.24705247142490485146e+01, -0.46969975948332107762e+01, + 0.43801388997952610538e+01, -0.53904537753890735541, + -0.32298094170351352439e+01, 0.53773792171343952617e+01, + -0.32301790719074516822e+01, -0.76413999103373531074, + 0.48394829896291318150e+01, -0.49033335770793922137e+01, + 0.18020508881874985896e+01, 0.32911769003633430941e+01, + -0.54446753651466384127e+01, 0.38785841260018898424e+01, + 0.13673863718797245603e+01, -0.51347280619847674998e+01, + 0.52660679639696947874e+01, -0.44349925623510894068, + -0.43995504743876230336e+01, 0.60558458530345387061e+01, + -0.18753269903569951271e+01, -0.36372720319986986404e+01, + 0.64756851397483785604e+01, -0.28337320702454960042e+01, + -0.31506022381936964472e+01, 0.67590231636144135763e+01, + -0.32922145064657981628e+01, -0.31522658649346171345e+01, + 0.70520793549654356980e+01, -0.31842566284752855665e+01, + -0.37856197157536559672e+01, 0.73309967515004634819e+01, + -0.23216189837582170696e+01, -0.50915488768339454140e+01, + 0.72928735563603792613e+01, -0.38902680347838652919, + -0.68390946692216809666e+01, 0.62357417473652541062e+01, + 0.28509039522854928705e+01, -0.81621855489638903691e+01, + 0.31246838145695714495e+01, 0.69028653977592231428e+01, + -0.71917102759598146022e+01, -0.25911284246747281479e+01, + 0.93944259045956410858e+01, -0.16745140375455465076e+01, + -0.87281459736688979945e+01, 0.58386277757180700121e+01, + 0.74168844911049065516e+01, -0.82142711983109553131e+01, + -0.52913318110820712903e+01, 0.10202659883083640580e+02, + 0.44293557218527457309e+01, -0.10934047859387527879e+02, + -0.42300207812796033480e+01, 0.11780641727680638553e+02, + 0.64629838882282832913e+01, -0.10955612750110050868e+02, + -0.10182480386104151293e+02, 0.78691426053339741387e+01, + 0.15456610772906703488e+02, 0.16364915949840959097e+01, + -0.15453787511636463137e+02, -0.15868226696382407681e+02, + 0.78795319560063192821e-01, 0.17857320682504632003e+02, + 0.26006067004477042559e+02, 0.23623697821893031801e+02, + 0.16172114066993120929e+02, 0.89036762728116940480e+01, + 0.40649710338597460080e+01, 0.15640309325765273663e+01, + 0.51141453905055866969, 0.14259408813336410526, + 0.33886675304205436665e-01, 0.68370177950773484976e-02, + 0.11624784700723395526e-02, 0.16464010015032262821e-03, + 0.19092965438523148909e-04, 0.17678880214955933705e-05, + 0.12579667215294839461e-06, 0.64634863567973170360e-08, + 0.21357987585023239104e-09, 0.34102125024444080676e-11, + 0.12750631045355715829e-01, -0.22144729596657947157e-01, + 0.17254513495941165707e-01, -0.79138435316197242031e-02, + 0.98056624553090224010e-03, 0.58059755895780006812e-02, + -0.61363150425113041977e-02, 0.39016020668778436491e-02, + 0.48886756151666566420e-02, -0.13941949224919441067e-01, + 0.25227097045780643575e-01, -0.32035969776386258312e-01, + 0.34754351932103813572e-01, -0.34865789213776809952e-01, + 0.15361572382949970766e-01, -0.31330144169185975001e-01, + -0.44521852292861527345e-01, -0.53448809456819124097e-01, + -0.11936964560370165456, -0.65356733314175019522e-01, + -0.83217191586415564797e-01, 0.34758404990272759316e-01, + 0.52267703931528658456e-01, 0.59229205987848032589e-01, + -0.10295103818939959142e-01, -0.63714313212935788644e-01, + -0.23819449250028931070e-01, 0.39270953879317248292e-01, + 0.39689847586618420827e-01, -0.13102107640755639509e-01, + -0.55495605434794051392e-01, 0.16616585007991162976e-01, + 0.42637152394754483653e-01, -0.89271485334297111941e-02, + -0.34652007311978545723e-01, -0.23843057643236752891e-02, + 0.49079444018738788147e-01, -0.20143312422368057218e-01, + -0.33700063772558151720e-01, 0.27962985193788373467e-01, + 0.15559649611376357575e-01, -0.18631616387095470411e-01, + -0.23002396862503691338e-01, 0.42607178450533286784e-01, + -0.10353246400137959202e-01, -0.25473436656077586698e-01, + 0.14238833389838426516e-01, 0.28288189384193539871e-01, + -0.47532757551401939866e-01, 0.25174643349396560316e-01, + 0.36446169050756518394e-02, -0.16896371167336901153e-02, + -0.22601102029001562954e-01, 0.30743692541025154780e-01, + -0.41580628902168721359e-02, -0.32991941974927462000e-01, + 0.43253474970872431149e-01, -0.16947210704182220226e-01, + -0.19365326424875983768e-01, 0.33701344429896695765e-01, + -0.19978541439088160631e-01, -0.22753774263416085867e-03, + 0.44824285128843869772e-02, 0.77674535344907230661e-02, + -0.17013602359277700538e-01, 0.66892777549126536396e-02, + 0.19326902259354197811e-01, -0.39825524588054939112e-01, + 0.36950323374451490843e-01, -0.12395814947666897871e-01, + -0.13834819733220328139e-01, 0.21286775914961746092e-01, + -0.56513162101495427111e-02, -0.18228889380298075873e-01, + 0.29518231340474387209e-01, -0.17503671055133947915e-01, + -0.10827909424251486517e-01, 0.37659881978499190613e-01, + -0.47620378938659176093e-01, 0.38030670033522936957e-01, + -0.18217724902594958220e-01, 0.11674524940012811006e-02, + 0.61664401930250087661e-02, -0.58750431111141395227e-02, + 0.53547494291409760206e-02, -0.10002796165430887301e-01, + 0.19167051218794434880e-01, -0.27186380345256191265e-01, + 0.28683974511975865451e-01, -0.22857046882702181101e-01, + 0.14123947877135903384e-01, -0.83386670487236181498e-02, + 0.83020770894734717549e-02, -0.11569088256443744653e-01, + 0.12608392236155847865e-01, -0.71990383486966952678e-02, + -0.38919567221481978121e-02, 0.15016422885765974213e-01, + -0.19268513602872777007e-01, 0.13333677712458989750e-01, + 0.12364226311525428059, -0.16965200114875716997, + -0.75385687956433904133e-02, 0.21460104972784158073, + -0.28897597910723671344, 0.21607076135582059528, + 0.39897605917408344653e-02, -0.20728178221623091981, + 0.30527802027643330396, -0.19421600956092155421, + -0.33583591085856075165e-01, 0.28430585455537560335, + -0.37321673620301054619, 0.28350048335147315370, + -0.37278071478179589104e-01, -0.17224848555625876800, + 0.24701917181951910107, -0.10835689347320087705, + -0.10654539791011556626, 0.27751784570264376173, + -0.24498037449732146253, 0.63628845303394465649e-01, + 0.17581959835625285415, -0.27582240011684250325, + 0.21848043690647500625, -0.39517400186773278536e-01, + -0.69732242598216753748e-01, 0.58871250775130071209e-01, + 0.71121554983783238924e-01, -0.13896441244796403636, + 0.85292258382009572548e-01, 0.89147786502288675625e-01, + -0.17870839427982249115, 0.92918950410829551090e-01, + 0.16842697273998272212, -0.35448028574969114857, + 0.31160179472892507446, -0.93241557133313425487e-02, + -0.27492775926557405652, 0.33239067624431856141, + -0.99595475530256313834e-01, -0.14012380973629839920, + 0.16668617515467182288, 0.64638587004404293723e-01, + -0.24195988578255697710, 0.16722008676992247689, + 0.11817128161657103336, -0.23570487324119085426, + 0.39865559640656890450e-01, 0.28332718747296981032, + -0.28430358995891341634, -0.67897284045035505295e-01, + 0.41077660878263633215, -0.30313889095454676914, + -0.67326589166526479291e-01, 0.21870165366450700084, + 0.58199179549712556914e-01, -0.24371271333919347635, + -0.56985848583209257334e-01, 0.54869440002072855656, + -0.49451220683177193882, -0.19554944547433131263e-01, + 0.23268413687190758754, 0.15659233638755293283, + -0.30124964277885585284, -0.22872146721374317369, + 0.61158352211445143887, -0.10185629070311938427, + -0.32408229135830662893, -0.15553936765511000573, + 0.48470577790912955374, 0.23269905824635284119, + -0.45574726889151001563, -0.38946832429829097988, + 0.31975751184408307548, 0.51722799043254852336, + 0.23659392541139734334, -0.66193938973750787724, + -0.54025031385578625720, -0.19900578953358627476, + 0.58628905827818522667, 0.97702038597220197680, + 0.87860930039454177010, 0.79526167132471703436, + 0.31776616885878050667, 0.29979706709486031446, + 0.20500652062430797795e-01, 0.71291405468592597416e-01, + -0.12670437729723864340e-02, -0.74809863871092554741e-02, + 0.23420254687799908766e-01, -0.26307227696116798621e-01, + 0.22867653294119754531e-01, -0.15212779536751744672e-01, + 0.63585099072051729993e-02, 0.11287475130512944141e-02, + -0.60218866921108154394e-02, 0.77744341679011749399e-02, + -0.68395483080699566794e-02, 0.39135356146939434194e-02, + -0.27001394060616851212, 0.41494591343122416705, + -0.25450091186224332862, -0.72042892726213392240e-01, + 0.30261230603358918456, -0.54613148173312786593, + 0.55839033642267543733, -0.50175577156006512247, + 0.20846818751863047114, 0.80117649876040641921e-01, + -0.46434105285431664933, 0.69303051367450385634, + -0.80144335835221347519, 0.85626221669901525502, + -0.18091114747063807844, 0.96759380381767023938, + 0.18893182602072966514e+01, 0.22117101616306493739e+01, + 0.45335252839511754885e+01, 0.29864914394517514395e+01, + 0.28722402369935395861e+01, -0.90344343546882299734, + -0.25607917442825631760e+01, -0.19546032370258912270e+01, + 0.73583334786373438829e-01, 0.28037138673103489950e+01, + 0.77061178307967170831, -0.14440259063088625169e+01, + -0.16830355657849320750e+01, 0.60802069336125574850, + 0.21316569185236264872e+01, -0.56765168032053237024, + -0.18092811694157520108e+01, 0.45681618469034512842, + 0.13018325646120254557e+01, 0.15241695169065819226, + -0.19892932202888864435e+01, 0.80378310278648668064, + 0.13637387099051707651e+01, -0.11277712082502338031e+01, + -0.64652444088021576718, 0.82791431058592857006, + 0.75665539925070479654, -0.14486248853060783581e+01, + 0.64774644237557243986e-01, 0.14490630901739243175e+01, + -0.10580502529427577851e+01, -0.61676034374418042816, + 0.13940278955852734022e+01, -0.54084208978442338545, + -0.54529714184967104096, 0.38345172489699014262, + 0.67538924100736363876, -0.10817804275553375426e+01, + 0.81547900383917126810e-01, 0.13630611809285708702e+01, + -0.17566757848927707641e+01, 0.70749261188156287172, + 0.72759606982800650865, -0.12799206748866331917e+01, + 0.71470902988557138968, 0.95188809415528083391e-01, + -0.24802233238731907772, -0.28120214307220442462, + 0.70816534284707999269, -0.36450985172315386595, + -0.60562943863154083957, 0.13641332398275203275e+01, + -0.12088249490019569166e+01, 0.21530276564571967923, + 0.81011656075190041637, -0.10496745591462077751e+01, + 0.33450380993783590533, 0.73181117252494176650, + -0.13042702980891274223e+01, 0.93914716977401513365, + 0.97690978620500829033e-01, -0.11069661516430544523e+01, + 0.14822125029041248734e+01, -0.11215204887552803203e+01, + 0.39659347783121345898, 0.17829444294460947140, + -0.33582059269925179645, 0.17236368728206941103, + 0.84876801883073250792e-03, 0.46080944020370509517e-01, + -0.30012949133769423193, 0.54360491441978375793, + -0.56680011839137445229, 0.33749636413108924371, + -0.28662936084371280765e-01, -0.13366660582437314697, + 0.47423485756181590900e-01, 0.17801360938768084896, + -0.31079767290397664059, 0.17289843904902491012, + 0.21088989594159723850, -0.61727866312026002937, + 0.76871191900354973736, -0.52814390371693065163, + -0.18098960712682867769e+01, 0.28941509147144586223e+01, + -0.69778061143821756840, -0.22273457339022493251e+01, + 0.34872829362879653736e+01, -0.28181449542904744021e+01, + -0.60648151249622292425e-01, 0.28591673638945636071e+01, + -0.44039285317174954315e+01, 0.30267801457066640936e+01, + -0.19609889301040899813e-02, -0.34894956921153372775e+01, + 0.47225261166865504237e+01, -0.34965793681484313993e+01, + 0.13770341024591419357e-01, 0.28781104743698096016e+01, + -0.38507411862764460153e+01, 0.17260343233595907275e+01, + 0.13778377566493327233e+01, -0.37619409362685676257e+01, + 0.30924690787880129150e+01, -0.38587806986962369660, + -0.29443946523852919661e+01, 0.39006708405056991218e+01, + -0.24410607875793752797e+01, -0.68132718857705365512, + 0.23314875668037959855e+01, -0.17965124477977891804e+01, + -0.72735961176521446436, 0.21229805998622208740e+01, + -0.13131939556971723437e+01, -0.17082021887520169035e+01, + 0.35271075312979172089e+01, -0.25179378305126292048e+01, + -0.15080120600666970798e+01, 0.46246440037728504535e+01, + -0.43601277775699331940e+01, 0.93425587133049173283e-01, + 0.39055598235069068913e+01, -0.44622528192512769252e+01, + 0.63557531960310076347, 0.30518942176752963391e+01, + -0.31879974768460086487e+01, -0.81160308194953711958, + 0.38319690442126592700e+01, -0.26587315262837774021e+01, + -0.20240178260678769462e+01, 0.40626300780229094300e+01, + -0.10244852243391056046e+01, -0.42022160242540778086e+01, + 0.44340037380724757199e+01, 0.87847659957813883924, + -0.60580196700118733588e+01, 0.41713703044383025897e+01, + 0.16741933597296851932e+01, -0.37464328228577650215e+01, + -0.12487703965902507974e+01, 0.48612420693482505385e+01, + -0.61441642731150403201, -0.69246796415152687132e+01, + 0.60542250499669041375e+01, 0.18344050548922812283e+01, + -0.46467694730348361176e+01, -0.23103196086870791959e+01, + 0.53230311101863332368e+01, 0.26201936121797748669e+01, + -0.84567964641961328454e+01, 0.26487400138454580967, + 0.63852951775930151257e+01, 0.15518767715910279925e+01, + -0.70748573036602770969e+01, -0.42452074237383223831e+01, + 0.77926348816589321444e+01, 0.56210479775840074268e+01, + -0.43217676083794822617e+01, -0.92533571098733755633e+01, + -0.27053641981919849258e+01, 0.95404741456437527347e+01, + 0.95132988248543242094e+01, 0.26219560046890908467e+01, + -0.91997266978228697809e+01, -0.15430224873924089479e+02, + -0.14580224542485600736e+02, -0.11994234671908284184e+02, + -0.58908046995247724809e+01, -0.40376557362445177901e+01, + -0.94916174735181491062, -0.70601529402261731239, + -0.22486945704559457848, 0.20519555454592328103, + -0.35121933757895040795, 0.34144979886680354442, + -0.27596805469761670482, 0.17197504142190350729, + -0.61966741234123573490e-01, -0.27277984037540309314e-01, + 0.83656597262803292225e-01, -0.10189787613579752434, + 0.87854250361569352634e-01, -0.49878751172002071257e-01, + 0.14695972621590340790e+01, -0.22150811371669236749e+01, + 0.13915429692651410942e+01, 0.37928674956870112034, + -0.15694549807929412122e+01, 0.29166548485042773642e+01, + -0.29864823715133828053e+01, 0.27917650122221124853e+01, + -0.12924710246626327503e+01, -0.93319875356628501084e-01, + 0.20560421687119614376e+01, -0.31482773629852522923e+01, + 0.36657529517790861107e+01, -0.40325371284354618595e+01, + 0.21275209055667076985, -0.53127520554522078555e+01, + -0.11345033892795061803e+02, -0.13753302474171173131e+02, + -0.26282658210470611237e+02, -0.19131594291019059284e+02, + -0.15894959801030100977e+02, 0.41507890171271304425e+01, + 0.16409446289430707822e+02, 0.11031009932561218534e+02, + -0.13609420002179861697, -0.16745497303183984883e+02, + -0.50022075414083611022e+01, 0.92420344551745028383e+01, + 0.94490797556995804740e+01, -0.30282090227199049970e+01, + -0.13299051304339972290e+02, 0.37797356038575995463e+01, + 0.10611745518487339268e+02, -0.25740911718213173032e+01, + -0.79578094770701541805e+01, -0.71928293190096459497, + 0.11656164668786960448e+02, -0.44424132199417956102e+01, + -0.86302658657115500773e+01, 0.72279025799086760173e+01, + 0.34921592435718804559e+01, -0.47355747291657630527e+01, + -0.45378468076505820150e+01, 0.84179170868612516188e+01, + 0.16533847970255877158, -0.94820457667464239648e+01, + 0.72951655817338494359e+01, 0.27061777644622679873e+01, + -0.74326707084609546783e+01, 0.24871013150306806594e+01, + 0.37831428397488475746e+01, -0.25228340191564537776e+01, + -0.41064832042016261582e+01, 0.67740284767028970947e+01, + -0.91177016782142039641, -0.77157953370983758390e+01, + 0.10144803302405490442e+02, -0.39968569572191574579e+01, + -0.44119998268060358626e+01, 0.75208631862174692984e+01, + -0.39573494582362105376e+01, -0.99527787396102429529, + 0.19087415445648321377e+01, 0.13826746401770788619e+01, + -0.41549925671795522319e+01, 0.23768966151346031523e+01, + 0.31354174800698642045e+01, -0.73951788361720547371e+01, + 0.62440996851364412024e+01, -0.16970925178919896159, + -0.59578706136090557877e+01, 0.72304349282193616233e+01, + -0.26413573694646519385e+01, -0.41513416799209528207e+01, + 0.80375296350478944163e+01, -0.62956635477828664094e+01, + 0.47067352417047675361, 0.52957070964774253241e+01, + -0.73966294820580218428e+01, 0.52442435372442339769e+01, + -0.10640679698848074519e+01, -0.20741882707022853971e+01, + 0.26070020627839003424e+01, -0.11573878452353079105e+01, + -0.35005030017547289489, 0.48673015671492569911, + 0.71677232365705456640, -0.19828026009667032437e+01, + 0.20704148168029536947e+01, -0.78058358674832417634, + -0.86674654837444664590, 0.15512079086473720135e+01, + -0.70112816358019536267, -0.97997134603651381290, + 0.20599452019401263136e+01, -0.14353505405051951715e+01, + -0.76519048245285381515, 0.32088109349489450928e+01, + -0.42198340915840173437e+01, 0.29528441123810522662e+01, + 0.66643857151476160183e+01, -0.11622313104465733957e+02, + 0.41520090161860458977e+01, 0.70801031066854225315e+01, + -0.12614464173255617752e+02, 0.11266881758005876435e+02, + -0.10061811253563597290e+01, -0.95154188229068150662e+01, + 0.16089844073313091855e+02, -0.11647935740418413175e+02, + 0.92523469292419213694, 0.12108690403449903883e+02, + -0.16694842678740812403e+02, 0.12209521446769038278e+02, + 0.97783496664945823706, -0.11641194616170249532e+02, + 0.14960640242698747926e+02, -0.62430522693902883447e+01, + -0.58078571381251116179e+01, 0.14720493597026255372e+02, + -0.11325184144625552563e+02, 0.32378711206726890071, + 0.12467809989511808411e+02, -0.14919995801638451738e+02, + 0.75783219641545098710e+01, 0.58918574755330572756e+01, + -0.12123582957540142147e+02, 0.84471584962388988060e+01, + 0.37546887695964912268e+01, -0.10706944074699066505e+02, + 0.75023228935717352073e+01, 0.59532916089537968318e+01, + -0.14930601182654806180e+02, 0.12061673154622056359e+02, + 0.40375628167492871867e+01, -0.17158889954038478720e+02, + 0.16921509059604954217e+02, -0.33624501559583525045, + -0.15133954799209945463e+02, 0.16643143816613150676e+02, + -0.44083415146244542271, -0.14503597436865256043e+02, + 0.14190106473974898549e+02, 0.34640690486877661058e+01, + -0.16612023896108713217e+02, 0.11648427517651068541e+02, + 0.84744847582649374118e+01, -0.17588771317138998995e+02, + 0.51553387446549301387e+01, 0.16979589379315292774e+02, + -0.18670749808403733994e+02, -0.25460096202091055950e+01, + 0.23212650202067724337e+02, -0.14595565267890428629e+02, + -0.99138073009005989178e+01, 0.17759774351620354338e+02, + 0.47648328295414854594e+01, -0.21776709313419758018e+02, + 0.56201891668973766869e+01, 0.24987111510460429997e+02, + -0.21152026874192394246e+02, -0.11226882518927553178e+02, + 0.21585807044704150570e+02, 0.94177840014988554174e+01, + -0.23716553797808170856e+02, -0.85020556703405834043e+01, + 0.32610656082162847724e+02, 0.14764962951388123091e+01, + -0.28537625848123798988e+02, -0.58857363137688087917e+01, + 0.30061795305559275704e+02, 0.16897070043828797736e+02, + -0.31720177842572837790e+02, -0.24201146209018940425e+02, + 0.18020333450691918387e+02, 0.39792960893291294155e+02, + 0.98244381471039901044e+01, -0.38279946652941966079e+02, + -0.41557811610755891252e+02, -0.99768268422466892531e+01, + 0.38413980382512640688e+02, 0.64182882277671268412e+02, + 0.62569464638357587205e+02, 0.48621745742818347935e+02, + 0.26582132559752263745e+02, 0.15348055703275676365e+02, + 0.51478369903220020376e+01, 0.23537601769644256322e+01, + 0.10352622384259273502e+01, -0.54797141463172216458, + 0.92666040732920984535, -0.81683348039355263559, + 0.60895635147699866963, -0.31691344004228272357, + 0.25709370807547496374e-01, 0.19936953404296364756, + -0.33037996354164322899, 0.35544484186779728985, + -0.29172767097047386242, 0.16222583697510006839, + -0.26008831152044113999e+01, 0.38552663899128991609e+01, + -0.24944092757194837873e+01, -0.55895752784964081172, + 0.25023225299832132507e+01, -0.48385052192155404427e+01, + 0.49241734779407373424e+01, -0.47166698750980327048e+01, + 0.22243542194435272918e+01, -0.69481564778534760096e-01, + -0.31606303516965179590e+01, 0.48299966861277727759e+01, + -0.56107191481459013360e+01, 0.63154917868453086527e+01, + 0.54747612483849339426, 0.94167327021169597856e+01, + 0.21102216977000427534e+02, 0.26322636025065737186e+02, + 0.47910028615790437811e+02, 0.37174121534723880700e+02, + 0.28109699804197223472e+02, -0.63390204826273572891e+01, + -0.31701009219818583773e+02, -0.20008526756941510172e+02, + 0.19014089420749941128, 0.30833098671492891185e+02, + 0.10119376579678027284e+02, -0.18239839221893269894e+02, + -0.16633509873659601652e+02, 0.47707916670742864795e+01, + 0.25466763907416563484e+02, -0.74301337580909194713e+01, + -0.19690738186992682301e+02, 0.48572628913158935049e+01, + 0.14721582675234310855e+02, 0.14408628418375162283e+01, + -0.21754394512644179116e+02, 0.81375518946371325768e+01, + 0.16391555778014701872e+02, -0.13853405619372313851e+02, + -0.61798760096072280490e+01, 0.86136571220360540480e+01, + 0.84844828701238785840e+01, -0.15471448997223712141e+02, + -0.82317594911354241560, 0.18429712208347993396e+02, + -0.14479781576223071937e+02, -0.41915477486593530898e+01, + 0.13139700084593703977e+02, -0.41605001335624383074e+01, + -0.72212541983245044364e+01, 0.45103625096870603173e+01, + 0.81801138075044583786e+01, -0.13395439558002061986e+02, + 0.25496790306087819822e+01, 0.13598983191620042987e+02, + -0.18329218286530501558e+02, 0.71542341205305373109e+01, + 0.81701635473118514597e+01, -0.13608244274498497717e+02, + 0.66463325207288752594e+01, 0.27836684154996533813e+01, + -0.45269860934232761807e+01, -0.17527517754423118657e+01, + 0.72096949351758432556e+01, -0.42940393573214441503e+01, + -0.55411272236800126478e+01, 0.13041825312728963837e+02, + -0.10526180312165058339e+02, -0.10500782709005442861e+01, + 0.12545023211265675656e+02, -0.14793196273776031191e+02, + 0.59163232800582479243e+01, 0.72098110477432459930e+01, + -0.14999846152753482542e+02, 0.12294981037624786779e+02, + -0.19174640491778183193e+01, -0.84745066605187506781e+01, + 0.12187397686952328613e+02, -0.81581807353678073014e+01, + 0.53367522114754895046, 0.49728457178525715676e+01, + -0.54960456352742905750e+01, 0.22529815631796585862e+01, + 0.10893921627793370366e+01, -0.18048770994467469020e+01, + -0.11030157337909564375, 0.23033174629667612088e+01, + -0.24783626921849335467e+01, 0.25136617186941084823, + 0.24992556126696388041e+01, -0.33600337194693743470e+01, + 0.13185632278745837986e+01, 0.22473279443025524493e+01, + -0.46106277994290323363e+01, 0.36649031807297505203e+01, + 0.37411462928696226360, -0.50254783255127133401e+01, + 0.71438739536386766105e+01, -0.51169390944089974127e+01, + -0.91043607200213774178e+01, 0.16919432555387661665e+02, + -0.73655974954609755301e+01, -0.86795559271648823341e+01, + 0.17450841378328181719e+02, -0.17077619583014552518e+02, + 0.34771618953643139704e+01, 0.11234387544947445292e+02, + -0.21469689285193137351e+02, 0.16344103563842871552e+02, + -0.23703333480717074799e+01, -0.15569838722034141654e+02, + 0.21855489887308799268e+02, -0.15807267047259600190e+02, + -0.25842758543579700259e+01, 0.17045231043350504763e+02, + -0.21133428116818016917e+02, 0.79888842828122816897e+01, + 0.93090764041246902849e+01, -0.21660144063806015424e+02, + 0.15785594977170008590e+02, 0.64195890491968787828, + -0.18912497535972814688e+02, 0.21042255522306579252e+02, + -0.86882728696236526389e+01, -0.12026792610491852997e+02, + 0.20511174114019286918e+02, -0.13105350940906204116e+02, + -0.74429226020005510023e+01, 0.19333248289727784197e+02, + -0.14658562780193953756e+02, -0.68173888247453193756e+01, + 0.22181275438751914209e+02, -0.19588846791185968499e+02, + -0.37789847627282471265e+01, 0.23553344215368614556e+02, + -0.23954277948803440523e+02, -0.97683800033468611013e-03, + 0.22208419630548430490e+02, -0.23651466977178930762e+02, + -0.11732514125218422851e+01, 0.23374649472498518321e+02, + -0.22002664692831867654e+02, -0.57185303028844955975e+01, + 0.26087822187241847871e+02, -0.18286315713087368806e+02, + -0.13088071769470179362e+02, 0.27760325027721336255e+02, + -0.92985286099446202712e+01, -0.24593240692854756446e+02, + 0.28002115214546783761e+02, 0.29961701822805468787e+01, + -0.33115426055441552933e+02, 0.19014111540037600179e+02, + 0.18485435638230747202e+02, -0.29674172698598720643e+02, + -0.62179687911102510256e+01, 0.34071600598730540810e+02, + -0.11250933749157546515e+02, -0.34249816369752480227e+02, + 0.28201863302602806272e+02, 0.20336321192211851638e+02, + -0.34585799215342575508e+02, -0.14523587863735695436e+02, + 0.37976747649092963854e+02, 0.10047217031386072250e+02, + -0.46566058459569674710e+02, -0.47819350366441035760e+01, + 0.44818042693645281815e+02, 0.90408691623301091767e+01, + -0.47114174848889106784e+02, -0.23719345690403777382e+02, + 0.46221778997617121831e+02, 0.38454893525472137128e+02, + -0.28101001066029553499e+02, -0.61058934380126650865e+02, + -0.13674307393517835862e+02, 0.56550579254320382461e+02, + 0.65088749844607235673e+02, 0.13898435379113006860e+02, + -0.57991464899612857664e+02, -0.97514901743451517291e+02, + -0.96340744373161925296e+02, -0.72674902125944655040e+02, + -0.41998957680450558883e+02, -0.22144283854652979215e+02, + -0.86230505053764474610e+01, -0.33633020028911713162e+01, + -0.12988554757753307811e+01, 0.19575406764464498011, + -0.60968577452414318696, 0.46179714550717348986, + -0.30837724916772113470, 0.96848470425553043195e-01, + 0.10389585127672142095, -0.25130099125529875570, + 0.32744518259595090104, -0.32488501332071090255, + 0.25692682655236348532, -0.14050385965297410018, + 0.14095012828752153666e+01, -0.20346199289139783595e+01, + 0.13239123328649877731e+01, 0.31852986992727433391, + -0.13071640598112315157e+01, 0.25610005573593825901e+01, + -0.25797366843031070971e+01, 0.25172824484379145993e+01, + -0.12100213395883085976e+01, 0.15258858361662641645, + 0.15193524109963547630e+01, -0.23213689838269790933e+01, + 0.26934058884694342950e+01, -0.31033204027509198042e+01, + -0.70689629168524581448, -0.51679173995444704914e+01, + -0.12034800236612623436e+02, -0.15296883449626928808e+02, + -0.26919910331547097115e+02, -0.21818076372778726579e+02, + -0.15455026063648446666e+02, 0.30894246007418835198e+01, + 0.18499134098325967557e+02, 0.11258689025131545236e+02, + -0.14933215747031583498, -0.17378651114398341093e+02, + -0.61584959309399858185e+01, 0.10867874417795672315e+02, + 0.90770843544448016615e+01, -0.23752857917862817416e+01, + -0.14773842214590739985e+02, 0.43293353298177477129e+01, + 0.11300902394924902339e+02, -0.29139091688039764350e+01, + -0.82265055033519054462e+01, -0.99894995284424892290, + 0.12562716297553670586e+02, -0.47077595831137220017e+01, + -0.93772107354133549251e+01, 0.79828454980268501728e+01, + 0.34491999459176114762e+01, -0.48575419261605370380e+01, + -0.48530868985575148500e+01, 0.87694939251741743647e+01, + 0.62782041641130104104, -0.10751428483913681333e+02, + 0.85273298347352337601e+01, 0.21626099602389823318e+01, + -0.73411591112033205420e+01, 0.23243403524319181663e+01, + 0.40442251538333051641e+01, -0.23504428550155491706e+01, + -0.50194744761917817755e+01, 0.80790960796579032177e+01, + -0.18952812731504649069e+01, -0.73812915754828871684e+01, + 0.10201509849042171396e+02, -0.39770909834760517221e+01, + -0.45880560242547145933e+01, 0.75109204140396697014e+01, + -0.33746621902871272169e+01, -0.21119345891677459015e+01, + 0.31381777274741402550e+01, 0.50251612004540013867, + -0.37414914449837386456e+01, 0.22559963177486288544e+01, + 0.31563649101020798682e+01, -0.72297586934861799435e+01, + 0.56118905573073529780e+01, 0.11322437540447893856e+01, + -0.77536524753172155755e+01, 0.90138331283427532981e+01, + -0.38366983102465876954e+01, -0.38280455570445801605e+01, + 0.84859533586393283144e+01, -0.71549365646259497353e+01, + 0.14235960965796181643e+01, 0.43641317450629815156e+01, + -0.63985333503149783851e+01, 0.40881648371220560279e+01, + 0.20156578033006294914, -0.32114433517357117154e+01, + 0.33273547182397975597e+01, -0.12659446498805118075e+01, + -0.84555368437961420103, 0.14259228979152513972e+01, + -0.44721158397320165401, -0.75785454255066231344, + 0.88590214528974442487, 0.28964920527327392419, + -0.17065132536042502132e+01, 0.20087886450454068843e+01, + -0.64130114073616950598, -0.15802220591384095183e+01, + 0.30749385221364184950e+01, -0.26190360298360606528e+01, + 0.32613471443321701004, 0.23887121241201958455e+01, + -0.37196969552752765509e+01, 0.27299736093508291113e+01, + 0.41519132506008054051e+01, -0.81002332206035454476e+01, + 0.39824980276237607058e+01, 0.36643714419387531933e+01, + -0.81977914394659219255e+01, 0.86662553648256874794e+01, + -0.26370079591286565979e+01, -0.42335193201352829817e+01, + 0.94762907427256184434e+01, -0.75898170712569736907e+01, + 0.15603656294962613416e+01, 0.66388051628671709281e+01, + -0.94921452541188404695e+01, 0.67753073888723012175e+01, + 0.17488435967989695019e+01, -0.82612096690048240077e+01, + 0.99044561026595498987e+01, -0.33583653571674969562e+01, + -0.48953851780755845979e+01, 0.10606635457576304660e+02, + -0.73947018327408491345e+01, -0.69988472812242574772, + 0.93888278800466444807e+01, -0.98642304670666653976e+01, + 0.32795973427385138876e+01, 0.71075012384648861286e+01, + -0.10912381195410933543e+02, 0.64770565246210081156e+01, + 0.45782355057770836027e+01, -0.11027827422544721259e+02, + 0.87569854342732327268e+01, 0.23950941215584857780e+01, + -0.10780013078943133209e+02, 0.10238432470111877848e+02, + 0.92759669206364037120, -0.10661260220847912805e+02, + 0.11100443302278842239e+02, 0.41331231295871800890, + -0.11013809139350646760e+02, 0.11413052597165863844e+02, + 0.10656895766112985946e+01, -0.11975634238648080299e+02, + 0.10994054188674791561e+02, 0.31225182653990364301e+01, + -0.13363686098869727914e+02, 0.92981691938030532896e+01, + 0.67356709143180246713e+01, -0.14433381274063469490e+02, + 0.54347371195980089809e+01, 0.11551980170524677405e+02, + -0.13575693861777825333e+02, -0.13866500466999374108e+01, + 0.15877500982618300895e+02, -0.83969391508273609759e+01, + -0.10472521645791310618e+02, 0.15836602624725598432e+02, + 0.26544625416267977336e+01, -0.17270793291649084722e+02, + 0.65115719078479763482e+01, 0.15831987011938910115e+02, + -0.12745958561714132884e+02, -0.11209898742170835817e+02, + 0.17754722936180325377e+02, 0.74952643294777603344e+01, + -0.19825170749915653090e+02, -0.38203524563352528887e+01, + 0.22050251116823897490e+02, 0.33400748406418405700e+01, + -0.22842520148427649218e+02, -0.46716191005779981182e+01, + 0.24216667847918657230e+02, 0.10904951585131396286e+02, + -0.22121194183773415176e+02, -0.19995785960673320147e+02, + 0.14432295787388920161e+02, 0.30594390413795423456e+02, + 0.63942426482517422670e+01, -0.27601889863457230945e+02, + -0.33251131904041827170e+02, -0.63826939688622621460e+01, + 0.28694207368896275767e+02, 0.48758866904201617842e+02, + 0.48432029436523109212e+02, 0.35916467199136100419e+02, + 0.21457935508545741499e+02, 0.10695241834080455590e+02, + 0.45314692424798632686e+01, 0.16493207104785898576e+01, + 0.51856843252354645202, 0.14114010914176919331, + 0.33230370460571811986e-01, 0.67460267516357089873e-02, + 0.11738977767528271240e-02, 0.17354149297386779294e-03, + 0.21518958043835073352e-04, 0.21980971488110653872e-05, + 0.18022807140922190298e-06, 0.11409868907934252407e-07, + 0.52379231167933531723e-09, 0.15523579546090187169e-10, + 0.22307928733991027162e-12, -0.21252104566901156187e-02, + 0.47602122553875979988e-02, -0.23319606108781606654e-02, + 0.11768397851523221178e-02, 0.24395191980040244369e-02, + -0.41396947327879242765e-02, 0.75687212100309722573e-02, + -0.83475970702223331599e-02, 0.10207841402391585814e-01, + -0.89351572226610935512e-02, 0.84834164965337972852e-02, + -0.48991692635455526619e-02, 0.23677799310070218874e-02, + 0.27135547445318076998e-02, -0.64717301109431550274e-02, + 0.10659451280552517324e-01, -0.16971417451167515600e-01, + 0.11458394087556814447e-01, -0.35302921455879751611e-01, + -0.11086415388940878274e-01, -0.75527416611445574723e-01, + -0.61367174066608409788e-01, -0.11018257437864688308, + -0.63360783416535379486e-01, -0.39550425819924649173e-01, + 0.43616922375361903697e-01, 0.59902335345140181322e-01, + 0.45043342700586887217e-01, -0.29433566296546091051e-01, + -0.52472172215169601839e-01, -0.25652616216350371259e-01, + 0.47075954687693773171e-01, 0.34521019437932287666e-01, + -0.88893053138709085537e-02, -0.55797544522345858542e-01, + 0.95583715466866191190e-02, 0.35960944827956940750e-01, + 0.16063927637554816646e-01, -0.45952286918157392304e-01, + -0.88816701305783323644e-02, 0.37326400367320509976e-01, + 0.97411395498490319783e-02, -0.33985009575695480921e-01, + -0.10538330070682151371e-01, 0.41510181045428411195e-01, + -0.65143450534171686364e-02, -0.29620295998649778801e-01, + 0.70347730936937786714e-02, 0.32723706508838226736e-01, + -0.23420313866836944133e-01, -0.18230329281837914096e-01, + 0.27319685029818203265e-01, 0.78385729774184953467e-02, + -0.32808565083090102110e-01, 0.12862293992634254644e-01, + 0.20808771694197800151e-01, -0.19919354102434814330e-01, + -0.12275415140396319161e-01, 0.30624866169513601660e-01, + -0.99711353423985599198e-02, -0.23262987797499069115e-01, + 0.29851296154376306263e-01, -0.65270255840256868538e-02, + -0.12396071956596532715e-01, 0.75453705051479764282e-03, + 0.29675001756873195524e-01, -0.44533277734601993403e-01, + 0.28622092608952171694e-01, -0.42595662070896053416e-03, + -0.99799759062847819002e-02, -0.46173188462212862160e-02, + 0.23815205922583619624e-01, -0.22714672484254884444e-01, + -0.34249479864663991439e-03, 0.24184182022102613391e-01, + -0.26482415141286377164e-01, 0.67774649142295396997e-02, + 0.15599079332972831669e-01, -0.20550053189079986460e-01, + 0.71199206140426960984e-02, 0.82208827501868437376e-02, + -0.75722834470439053314e-02, -0.10485611953535957375e-01, + 0.31178898964759019230e-01, -0.36545824227925037542e-01, + 0.22257078731645979497e-01, 0.31731252919616907736e-03, + -0.13690987567534241773e-01, 0.10002228261296182768e-01, + 0.43049523079313218449e-02, -0.14172695439649633450e-01, + 0.99642779631679227054e-02, 0.57394342690901493237e-02, + -0.19931165813454075619e-01, 0.20950246898905556386e-01, + -0.67992860987144861096e-02, -0.12701184946166826223e-01, + 0.24554449426285498981e-01, -0.21349445835906203511e-01, + 0.70722001758675729494e-02, 0.73968344929492531661e-02, + -0.11691565619794407754e-01, 0.40698824861837498701e-02, + 0.88487782598107179305e-02, -0.16596021320167724661e-01, + 0.13371976169817362257e-01, -0.11528188484496667589e-02, + -0.11169692288418981568e-01, 0.14952691855655802014e-01, + -0.69054725847459740365e-02, -0.79810216463340744042e-02, + 0.20581829142970728408e-01, -0.22682493541005644550e-01, + 0.12747077010122887658e-01, 0.42592992229895524151e-02, + -0.19462420696131580572e-01, 0.26291805100786658222e-01, + -0.23355439194073606551e-01, 0.15415646938757885526e-01, + -0.91784786271629850707e-02, 0.96553674315550102464e-02, + -0.16422538483089471617e-01, 0.24796161296061554336e-01, + -0.28163252356785514058e-01, 0.22781504971281202332e-01, + -0.94141356893948195672e-02, -0.62952756987398545210e-02, + 0.17552894445802696283e-01, -0.19367135188568355975e-01, + 0.11782898580305321140e-01, 0.92944312074773815461e-03, + -0.11940270866985770726e-01, 0.15991319503711784455e-01, + -0.11251404494623735639e-01, 0.55803100886407598809e-03, + 0.10928968884649312848e-01, -0.17850115073577362684e-01, + 0.17830522115947596701e-01, -0.11774113908287961450e-01, + 0.36163556618637872180e-02, 0.25077284444097796764e-02, + -0.38748498133159871293e-02, 0.10008919715141571631e-02, + 0.33737356094295069611e-02, -0.53594224878799230638e-02, + 0.25886860093674358453e-02, 0.49711439486794829767e-02, + -0.14375291332359412672e-01, 0.21552449775387276520e-01, + -0.22733469066437455436e-01, 0.16751007409954082883e-01, + -0.52081690382424217223e-02, -0.76376124097290417139e-02, + 0.17085635251197568013e-01, -0.19475706326756068998e-01, + 0.14121546976601114659e-01, -0.31219844371610195807e-02, + -0.90895027037163431821e-02, 0.17939401600751473526e-01, + -0.20066541746998230872e-01, 0.14937585618971514420e-01, + -0.45277740558723649292e-02, -0.71754412608005880073e-02, + 0.16120198134598258399e-01, -0.19312004962230764488e-01, + 0.16149945896392042810e-01, -0.81055950556462360440e-02, + -0.16711087839011357688e-02, 0.99436799937837987151e-02, + -0.14235657634002588795e-01, 0.13898232693989268777e-01, + -0.98238578828972033391e-02, 0.41870457308884291223e-02, + 0.77690453029509627409e-03, -0.33418215241949379181e-02, + 0.30841878380406650279e-02, -0.60566182493274924037e-03, + -0.26412132796011086530e-02, 0.52656575362954064976e-02, + -0.62822545075435151651e-02, 0.56453855163302304673e-02, + -0.39479622784323355200e-02, 0.22571547526715959875e-02, + -0.14156783908222409646e-02, 0.18409284792721151893e-02, + -0.32049750246601243012e-02, 0.47681506013522948623e-02, + -0.55909361963158606124e-02, 0.51049781065244789410e-02, + -0.32571237024641226838e-02, 0.67346390882999792541e-03, + 0.16917844889734539541e-02, -0.28456402079619757400e-02, + 0.22609679144175529736e-02, -0.34794895347951371005e-04, + -0.30448530961532734203e-02, 0.58368242123408619129e-02, + -0.72160422367790830883e-02, 0.65418737941593894242e-02, + -0.38762849123602635334e-02, -0.70893556530817747330e-01, + 0.13398109649301190305, -0.85071480360113416186e-01, + 0.29752427136414381220e-01, 0.35440497172347575072e-01, + -0.71136624315624619186e-01, 0.87264077673286380432e-01, + -0.60188371776200587371e-01, 0.19996949997653060832e-01, + 0.38667957527460626588e-01, -0.75216937256910101905e-01, + 0.95796749477792750294e-01, -0.71918776555518773574e-01, + 0.29464078311709183955e-01, 0.38923272017097790276e-01, + -0.91761286403234887388e-01, 0.13162915042248535258, + -0.12501222009527257484, 0.92896021548972571025e-01, + -0.24770621004140493115e-01, -0.38395207161627815939e-01, + 0.96940218776524339495e-01, -0.11321657075153740424, + 0.10347531511695190476, -0.53319920999565145747e-01, + 0.15996685107783994474e-02, 0.52046774494811265388e-01, + -0.68375352072288619887e-01, 0.61234342513097790583e-01, + -0.14000989318293436889e-01, -0.35936645696454980192e-01, + 0.89389289504976501832e-01, -0.10680875136597309250, + 0.10130145170441941238, -0.55404239627933025980e-01, + 0.55637686976075552414e-02, 0.50141200578179820346e-01, + -0.73583618768017888812e-01, 0.79345925302487380071e-01, + -0.50962324436512322634e-01, 0.24513343672209364499e-01, + 0.42680506449474294589e-02, -0.16813938589938042488e-02, + -0.12123376656330843784e-01, 0.48562165269287985159e-01, + -0.69074734948808905188e-01, 0.79391943736777464968e-01, + -0.51360282651451177882e-01, 0.13118033409967106567e-01, + 0.39114458046614335174e-01, -0.62602887010111615829e-01, + 0.64225553181455993790e-01, -0.22127056356031786499e-01, + -0.26682412250668554460e-01, 0.78367550061814506002e-01, + -0.87466895829414470498e-01, 0.64491748662866957287e-01, + 0.37869681318754943970e-02, -0.70721320190845371467e-01, + 0.12642516950401305742, -0.12610194169684177390, + 0.87335029532095972971e-01, -0.67088506847544533696e-02, + -0.62130018256824487421e-01, 0.10944657424550746638, + -0.98474371324602072431e-01, 0.58719294365202803765e-01, + 0.42656765923852670713e-02, -0.37200387218424765812e-01, + 0.41953622921874059171e-01, -0.40523952082700695704e-03, + -0.41354226572143652774e-01, 0.72613856914738150738e-01, + -0.50919294608992804463e-01, 0.11812543724142581403e-02, + 0.70341863441854210470e-01, -0.10479418413573493574, + 0.97964564514589388966e-01, -0.30734872977222955220e-01, + -0.44210884679536426034e-01, 0.10427676950236117182, + -0.96134721495969965854e-01, 0.40855623271761627724e-01, + 0.50050734515688803661e-01, -0.10711873213213997380, + 0.11689979650837321878, -0.57753758875942633189e-01, + -0.13713243090348449169e-01, 0.69946727707522443618e-01, + -0.58220340120613361945e-01, 0.74608964258409214004e-02, + 0.61153443440093331607e-01, -0.76496388860153405331e-01, + 0.37763606276734779099e-01, 0.53151709296893827339e-01, + -0.11877891915528322742, 0.12856911970345152874, + -0.50367293405615874702e-01, -0.53447619468797641362e-01, + 0.13708396773752429265, -0.13193618805823623119, + 0.66423327792284547755e-01, 0.23257648132453241641e-01, + -0.49493322776255510576e-01, 0.94308247316405718896e-02, + 0.79510619559665304812e-01, -0.12186569824342373403, + 0.87691028629576645015e-01, 0.28622003387247206552e-01, + -0.13012375416984420240, 0.15995747653670661093, + -0.80108387972453745651e-01, -0.25774651905642865374e-01, + 0.85922368977866592221e-01, -0.33129449292496469803e-01, + -0.67815711514269974569e-01, 0.13971996304814027212, + -0.94236389756337704537e-01, -0.18591016420986140184e-01, + 0.11539413134691549334, -0.87555382891990551908e-01, + -0.28653248813840907078e-01, 0.14381162220291271447, + -0.13090012299192463341, 0.14865158938054335441e-01, + 0.10932267159037299675, -0.10286626165608045436, + -0.97935880831555126302e-02, 0.12124183866673587939, + -0.85662932354049967087e-01, -0.58712940335700493366e-01, + 0.18103987212720509814, -0.13178045747463498771, + -0.24807082198477766605e-01, 0.13218140577382270218, + -0.54870693152015405369e-01, -0.95351226409583100807e-01, + 0.13957180090307649833, 0.11882611023483535817e-01, + -0.17442169815390787257, 0.16211418411163480702, + 0.31086461487842404622e-01, -0.14711912730059148458, + 0.50075900258857101999e-01, 0.13472358632709369175, + -0.11605956234823398832, -0.98493936630772660479e-01, + 0.23917826823167684380, -0.92416308478260864034e-01, + -0.11179493745827330520, 0.70958122106552848352e-01, + 0.16912137005110366994, -0.19744199154928829265, + -0.59794394366290130882e-01, 0.22533668806621021119, + -0.22893214601229991412e-01, -0.16772274114127144751, + -0.16793250429639097754e-01, 0.28467002831888948977, + -0.11872900652642462416, -0.18014826681980303236, + 0.43059231713155017574e-01, 0.26209799161526831091, + -0.48329623352471845488e-01, -0.28204785322804676317, + 0.32207616357344460989e-01, 0.24211462319158141843, + 0.15232854831779185645, -0.29269506544534062975, + -0.20449841671004342913, 0.98973760334205782008e-01, + 0.35807881825401577380, 0.15458914422923661358, + -0.25268184421512684956, -0.36734335884921487381, + -0.24397298091591176905, 0.21439683256268493583, + 0.42621275451927714828, 0.59993004845803266090, + 0.45761751641518383371, 0.34921578302621686385, + 0.19235358739753199986, 0.83001128820574088252e-01, + 0.66489135144155858681e-01, -0.18734430099268103986e-01, + 0.45206262017559013799e-01, -0.39671807750387491631e-01, + 0.38505377932817781705e-01, -0.31035526540500235626e-01, + 0.21037147056250385391e-01, -0.90273203575737363813e-02, + -0.36324723405763616885e-02, 0.15505495501739617950e-01, + -0.25430700395911453454e-01, 0.32299365656893994081e-01, + -0.35498916485270030907e-01, 0.34678094267692430308e-01, + -0.30027120754342297854e-01, 0.22049609560914357892e-01, + -0.11665428086499958493e-01, 0.28369706985476278449e-01, + -0.53264399346570311111e-01, 0.17348305607486742830e-01, + -0.22828209142738810702e-02, -0.39295123972900754261e-01, + 0.53352757859294303033e-01, -0.87236860612480163213e-01, + 0.87728083075237064947e-01, -0.10364150730646809473, + 0.83811460130327863904e-01, -0.79352180839357813746e-01, + 0.41549200511351046250e-01, -0.23293230728166986615e-01, + -0.21044988257650727725e-01, 0.43535153010593859169e-01, + -0.68690636127771723118e-01, 0.11633099300993521297, + -0.23148647197768979639e-01, 0.28311895138420489770, + 0.29488727701595202069, 0.72733477944606250709, + 0.92516272699761537002, 0.11294579747686248616e+01, + 0.94918973325642497230, 0.29477261636601315153, + -0.35876318832150466687, -0.86562286705741875448, + -0.41462930888654148109, 0.24751586335639599867, + 0.71541159719618396817, 0.23839145174095358048, + -0.50917995365370238847, -0.46140606716690374389, + 0.14844122689066582832, 0.62841583726164551571, + -0.72159738555753388800e-01, -0.47831791806498230590, + -0.14208954439610191334, 0.49658396608155630503, + 0.16274421284057347115, -0.50349726974727848638, + -0.66338704424694000528e-01, 0.36508993856749566431, + 0.15686986460498977825, -0.51416554651553003641, + 0.76892899668045217032e-01, 0.37395177765101716982, + -0.12051967563330215349, -0.34184189946652748793, + 0.21782175850867560585, 0.28911080165482655469, + -0.40104045694667889155, -0.24453382684365556482e-01, + 0.33238353584156032916, -0.10734422698831092013, + -0.27889796801726363107, 0.24631100944345266091, + 0.16299467480684068366, -0.40745390619729476844, + 0.18202800490375484199, 0.19588064589972609131, + -0.25835437242928149804, -0.34620374080706090014e-01, + 0.26914950807448007053, -0.13278618895339391881, + -0.23450892869268405438, 0.41822654815762461133, + -0.23671182767062104446, -0.90866509401354725317e-01, + 0.20320354192823816830, -0.16470203487246853208e-01, + -0.22496919515016261526, 0.21988958817251227917, + 0.50746216823122872186e-01, -0.33475715413539403054, + 0.36277623978847622910, -0.13054020684872794100, + -0.13195061891290496559, 0.18278966448852237980, + -0.12835960096492635488e-01, -0.18075761595936168380, + 0.18082321595213499132, 0.29113816567791900997e-01, + -0.27386648451892225964, 0.33698512263050078852, + -0.16813446388845451618, -0.97642421858689029679e-01, + 0.24943842193276760666, -0.19477632816222079093, + 0.10355926512096061409e-01, 0.12097305914464337451, + -0.83985783813898443051e-01, -0.92528275849067254111e-01, + 0.25199673559576374338, -0.25642287723576046021, + 0.81036241413910442555e-01, 0.15483653018089910125, + -0.29649427604041178608, 0.25404596312927063551, + -0.77037586228784774023e-01, -0.10447819033950049572, + 0.16408319279447122763, -0.81137319755077930150e-01, + -0.67024525193215445107e-01, 0.15450325371254466922, + -0.11360757382220698641, -0.32489436910259218705e-01, + 0.17558819524614585617, -0.21294879819307935276, + 0.10410588989261153336, 0.89593074401016353780e-01, + -0.25912269943844701281, 0.30405553227923376447, + -0.20607394084931063283, 0.22697963240905970339e-01, + 0.13960327561981616951, -0.20400744501727571811, + 0.15371760961696770420, -0.47629818014551662808e-01, + -0.34201000310585934205e-01, 0.30336217859550696635e-01, + 0.53273869490940255200e-01, -0.16121095444425173615, + 0.21279802002844219744, -0.16344955399920058081, + 0.20647736540460315258e-01, 0.14788161972540478373, + -0.26246282523147546062, 0.26330876987041973436, + -0.15276753030620657259, -0.17902118856991500184e-01, + 0.16517398195587917886, -0.22620368551339506413, + 0.17782133491817381232, -0.54696000723155092926e-01, + -0.82025157451181010537e-01, 0.16704171904512232771, + -0.17224209498938700125, 0.10720033115485977371, + -0.19260224691222196935e-01, -0.43376843618535568248e-01, + 0.48025246245932372291e-01, -0.22770993138703592672e-02, + -0.61036863949831640652e-01, 0.94005072397579214627e-01, + -0.68447756007794846589e-01, -0.16996583537062480429e-01, + 0.12651397465457481228, -0.21191371297001898588, + 0.22723844518348940147, -0.15886809577822144646, + 0.25117416832612982081e-01, 0.12273383635679778469, + -0.22929764605322899840, 0.25055066306566298184, + -0.17926388340434748492, 0.40502495655629217053e-01, + 0.11163979264945952941, -0.22250736642962679057, + 0.25105633279340239250, -0.19126555331782846281, + 0.66334212947447443454e-01, 0.75355480244353331698e-01, + -0.18549837836842711369, 0.22751214828354349162, + -0.19436980084295882309, 0.10303034508001981950, + 0.85856607694709211748e-02, -0.10231961690566671042, + 0.14832619812451469654, -0.13941598018503922884, + 0.86112091634102203019e-01, -0.14982801871029082647e-01, + -0.47417977373104089334e-01, 0.80034183322444094055e-01, + -0.78132091599239159030e-01, 0.48703927288702951459e-01, + -0.95785623655194520459e-02, -0.22705420483264807108e-01, + 0.35917689547874546985e-01, -0.29629812014462932751e-01, + 0.10588571221982227485e-01, 0.82725329640415748433e-02, + -0.17138065831027480407e-01, 0.10837916078621449151e-01, + 0.64823678913211134345e-02, -0.26147546543213242426e-01, + 0.36755154921650989852e-01, -0.31711242051316888835e-01, + 0.10310194933935082004e-01, 0.19710665043937290047e-01, + -0.46939268558907870643e-01, 0.59270057986509749881e-01, + -0.50417808173701450514e-01, 0.21419080506647484446e-01, + 0.18205498117608017589e-01, -0.54812840506767004922e-01, + 0.74806804675653745806e-01, -0.70474916629457429185e-01, + 0.42444246373535915451e-01, 0.22170700758627553961, + -0.44990990909586736635, 0.26906169883844116564, + -0.68036427697527018799e-01, -0.20267454158390166286, + 0.34620425969158064028, -0.42871188628381001751, + 0.31255787727866563008, -0.14740734546052480791, + -0.12277683385625350054, 0.29579065988448399738, + -0.42213775508873291331, 0.34476673697422877130, + -0.19625379443187956907, -0.87541487117571953336e-01, + 0.30175102221444788375, -0.48389344812443102484, + 0.45920017911318722348, -0.34325726986490079362, + 0.62187928530564880181e-01, 0.17951578442524004919, + -0.41013173415392095711, 0.44070577277482103629, + -0.37218382845641695411, 0.12130899047182648609, + 0.10990638775628261414, -0.34498385849154972194, + 0.38693345637602660769, -0.32855818147853599331, + 0.82419254974115202517e-01, 0.14958397395666961360, + -0.38753837133313934205, 0.43117956343773644612, + -0.37187416356898389536, 0.12426136132067350237, + 0.10659132727107183125, -0.33870564379508472097, + 0.37456677531426718630, -0.31283324443321269825, + 0.78274965107287861055e-01, 0.11710795519422245725, + -0.29212514874658340736, 0.26137062154407703085, + -0.14383364041661111932, -0.11348699882099250180, + 0.28510033102744974931, -0.39211771388641808445, + 0.27000054443931587045, -0.70004347489698096063e-01, + -0.22913134275974259002, 0.38586689792176737113, + -0.42910689903364124254, 0.22554233548424859612, + 0.32253560569050557238e-01, -0.33218587477406996689, + 0.42514326865247936693, -0.36354584427326469553, + 0.60681459120820346875e-01, 0.24337997813503184363, + -0.51139822347591201712, 0.50719748019205079803, + -0.32991923515107357545, -0.47691357461994779432e-01, + 0.34524985249274742216, -0.52771580868459588842, + 0.40796222904055812197, -0.15806940103838054701, + -0.19012718083847035544, 0.34776755171584411430, + -0.33351537492425264997, 0.55817408433019265190e-01, + 0.22431501621116173295, -0.44241574375832470878, + 0.35934740025754186021, -0.10690523915720326342, + -0.28539700024182840243, 0.49544073346048861373, + -0.49660780275736227107, 0.17375570804079354392, + 0.19751986129398299563, -0.50705592208302086021, + 0.46988391643423038646, -0.20078473766776411269, + -0.24745300835513292514, 0.50866405799761249540, + -0.52355689550608797145, 0.18149162214095476697, + 0.20638542283108909925, -0.49426799072616406372, + 0.39939431335880998253, -0.84911115879330048561e-01, + -0.33130205458100348004, 0.45723998584584818472, + -0.28305144867400727771, -0.19097361242128793601, + 0.55164160250723937029, -0.63833242432135828270, + 0.27169336100321367367, 0.22030986694260851211, + -0.60609435277488299398, 0.52645760107999872712, + -0.14426270926392933958, -0.34488271447711338347, + 0.46880838157438248226, -0.21705289344021580500, + -0.31515419914404951829, 0.60816415005634594237, + -0.49632675536001025218, -0.61566474223606122707e-01, + 0.55260789531380616335, -0.68068165958334592158, + 0.24168046098608406136, 0.31725077165054066386, + -0.62013128976288822702, 0.31163430196910307801, + 0.25392358412999554984, -0.66185738754858114419, + 0.43448523503002145496, 0.16058535978660140597, + -0.68062501388281171355, 0.54121976159221285574, + 0.65949047932352400370e-01, -0.67116330328126672100, + 0.59912218474651746103, 0.11523512753313595175e-01, + -0.65512510750379449043, 0.58991848253499157284, + 0.48655890107459465188e-01, -0.68537453248528135141, + 0.53487906904093074356, 0.20237063473720556805, + -0.83536657991553397995, 0.56757944000596305401, + 0.25533294733023437217, -0.80200363406440955405, + 0.35166196780291619772, 0.49213423390994415207, + -0.77068464791282698112, -0.26384510773138619005e-02, + 0.84704428889092220345, -0.77657805980863225948, + -0.24128690452149068046, 0.82947197959228968767, + -0.26837660931711548873, -0.76984099696725316608, + 0.72351162052189377238, 0.37251026093914768600, + -0.10877888122491918832e+01, 0.28685185886085340368, + 0.79899568722627001272, -0.55742961742847985107, + -0.76669992278425613819, 0.97547631866999495731, + 0.32947094237748203449, -0.11448256910527827568e+01, + 0.30497871340851487841e-02, 0.10621656330580213634e+01, + -0.10941236888174374342, -0.13094914596611328950e+01, + 0.43553774046351739768, 0.11272350414067677793e+01, + -0.34997726411438007110, -0.13339713543531519502e+01, + 0.25281904895626772234, 0.14534347560065070670e+01, + -0.75634708722876475839e-01, -0.14185376228999859727e+01, + -0.67224106932379557033, 0.14259831136309744082e+01, + 0.12028969654275618595e+01, -0.60377173167034392520, + -0.18798501399971860870e+01, -0.80522039082030449908, + 0.12811008934403309567e+01, 0.20648330109748074257e+01, + 0.11681538796417076931e+01, -0.99849584888498266189, + -0.24141439590133644266e+01, -0.30784385239613758500e+01, + -0.25291879931924676761e+01, -0.18162164788367136659e+01, + -0.10255235138436646913e+01, -0.48947886259385153807, + -0.26703283313791065234, -0.19043374801970228138e-01, + -0.10373851266315631259, 0.70012178831407909096e-01, + -0.74312640392270923329e-01, 0.57887183807103018141e-01, + -0.38461338071051343057e-01, 0.14643638588107651607e-01, + 0.10395965890105392238e-01, -0.33813723071120758978e-01, + 0.53350734194313430281e-01, -0.66731798561500035860e-01, + 0.72792837180831515553e-01, -0.70786318723999097635e-01, + 0.61134487572283201240e-01, -0.44815263691894993703e-01, + 0.23691108807884515147e-01, -0.36637133608117142258e-01, + 0.62666065685787086803e-01, -0.10455770066929690604e-01, + -0.87091063041608799550e-02, 0.61469344305943619811e-01, + -0.73063668723008595718e-01, 0.11081667179152418501, + -0.10164160169471134210, 0.11510555181775132538, + -0.80942145502972406845e-01, 0.71530979237909256274e-01, + -0.19446946714571831938e-01, -0.12415569895699585246e-02, + 0.54574045553442515621e-01, -0.73922369767587384204e-01, + 0.95879899630696110990e-01, -0.14479831357573011430, + 0.72342113473081171016e-02, -0.33997513513084076653, + -0.44093441713555525663, -0.91334671380732668222, + -0.12934160909480101331e+01, -0.14451916649411467031e+01, + -0.13217364750386593197e+01, -0.34357087234329136693, + 0.43991130917866594352, 0.11811655122201123458e+01, + 0.53953129226393914397, -0.32862265976879856400, + -0.94329899508269587916, -0.33674183484683212209, + 0.70467235154954255272, 0.58714773716350887600, + -0.16930461917339409417, -0.86282892368711994191, + 0.11663667748795837620, 0.62468526226101761534, + 0.19601374182914171884, -0.66118312423625136276, + -0.22279486311615084859, 0.68140034374296420960, + 0.77904616293375583691e-01, -0.47709008345271286533, + -0.21407738732303135953, 0.68475656952785102227, + -0.93024087871587821108e-01, -0.51640707175640776505, + 0.18812725793827786425, 0.42089166052376503213, + -0.24851941899871160535, -0.43068263339021300995, + 0.58150831083720311288, -0.11272374120177546669e-01, + -0.40421201648844007348, 0.11328652077040166080, + 0.39134365008699112387, -0.33457383349694475028, + -0.22414836941696519856, 0.56421283188521009766, + -0.27556398287840655481, -0.21707070744868109391, + 0.29288205410853540567, 0.10331589521867685921, + -0.41705081028806717525, 0.23401524394033931809, + 0.26125674286797023749, -0.51335892797848980962, + 0.28172382478773483339, 0.14442986941515095767, + -0.28195234127989660111, 0.22111113984333855692e-01, + 0.31071403774624212213, -0.31206665003429318039, + -0.41745974149179639057e-01, 0.41691253530229960278, + -0.45221737979343196168, 0.14396011949078707515, + 0.20360716348282437149, -0.26632661820210007386, + 0.34647289833746520993e-01, 0.22998400953173059325, + -0.23535457612325907939, -0.39056730122914593006e-01, + 0.36213532367088735464, -0.44363282059475706021, + 0.21857124608247127662, 0.13494139858887632677, + -0.33393473140328966409, 0.25734193793490434121, + -0.59756417392648258566e-02, -0.17395655053410677415, + 0.13012003564535923328, 0.10150273871766797573, + -0.31081887384320250334, 0.31604985800835483367, + -0.82643989059759004334e-01, -0.22839871639880268694, + 0.41262174984469246475, -0.34863776237092020116, + 0.10460345487759178940, 0.14729728629022353914, + -0.23622428463969741275, 0.13569718226411103812, + 0.53480910253497077056e-01, -0.16240996776735014406, + 0.10299539223767606444, 0.95061833033070100574e-01, + -0.28563036745333347799, 0.33319632423122791387, + -0.18231156549392132926, -0.83446063380320664726e-01, + 0.31984523763562722198, -0.39094868514942482385, + 0.27320515840085768389, -0.41148374830713589645e-01, + -0.16250363042793605772, 0.23744247578514479646, + -0.16045949584762503326, 0.12007156810899130561e-01, + 0.10218193726632626706, -0.98577114067504495454e-01, + -0.13603768167985334434e-01, 0.16172483341196938755, + -0.23664909981818893492, 0.17985853265478879415, + 0.45518905325110827062e-03, -0.21329089994545127884, + 0.35429577686767671496, -0.34314726005785056717, + 0.18481188585714194983, 0.53018871227974259663e-01, + -0.25731753325298273305, 0.34510592784303206759, + -0.28409857455012077487, 0.12155873818144194431, + 0.62076811529559579317e-01, -0.17847775414782640624, + 0.19098311574989590422, -0.11092457799933344575, + 0.20537600607028806167e-02, 0.72871138504511892564e-01, + -0.69732510235465366977e-01, 0.13099907008154101787e-03, + 0.92712958171967702059e-01, -0.14357063971109185196, + 0.11552528298961778352, -0.56138283340772488980e-02, + -0.13760594398094219692, 0.25080353817987938170, + -0.27174440214283906991, 0.18298678598608558721, + -0.78775228014505982443e-02, -0.18464422936640953465, + 0.32185039212454891189, -0.34455693544793075667, + 0.24422258845761815604, -0.53788110710791869895e-01, + -0.15361662631352643316, 0.30564801799903018598, + -0.34671399770061511747, 0.26939945862852621161, + -0.10392427347122047687, -0.84504903934795150278e-01, + 0.23205173374401594222, -0.28918381857525099488, + 0.24699562434480323847, -0.12732668244182523964, + -0.18858633073250561513e-01, 0.14142352313042744205, + -0.20018498540402387964, 0.18622613852860611661, + -0.11316864717790267592, 0.17007740358457999752e-01, + 0.67296759327682809104e-01, -0.11120374356232770596, + 0.10887990171348793655, -0.69274284630577942501e-01, + 0.16650490954325861820e-01, 0.27246624515773820024e-01, + -0.45633460930410076062e-01, 0.38208214450458320710e-01, + -0.13534896624887616731e-01, -0.10882653329769800821e-01, + 0.22321524637576698608e-01, -0.13622381757706105571e-01, + -0.94008732719514619125e-02, 0.35457387456138876602e-01, + -0.49132038579293595137e-01, 0.41909937149108483778e-01, + -0.12698496673663694362e-01, -0.27926450198044249634e-01, + 0.64861499864181271224e-01, -0.81745938824111949450e-01, + 0.70294040435841503855e-01, -0.31725968455575209726e-01, + -0.21172694140807732377e-01, 0.70304751970411305528e-01, + -0.97448820819886899924e-01, 0.92347515650799780196e-01, + -0.55748063151292229223e-01, -0.15808138811173549909, + 0.35161985991170108257, -0.21583036464151814093, + 0.68148634328703189267e-01, 0.16210685912005712295, + -0.28294015388017068613, 0.37087111034034991874, + -0.27827463141869285268, 0.15070687223338410932, + 0.87357493098844288260e-01, -0.23991068429028583608, + 0.37102123935385278308, -0.31815491572239107398, + 0.21342258002274253070, 0.24762100140206726867e-01, + -0.19869509840192411954, 0.36275438364908885180, + -0.34205504436087313946, 0.25707672929161495823, + -0.20884246904724932531e-01, -0.16767263511826246969, + 0.35501611295199697604, -0.35650519702584421156, + 0.28385571921989227739, -0.47162251475284466817e-01, + -0.15247391753351186017, 0.35422237246822313450, + -0.36624339078364814837, 0.29528809685099965954, + -0.52341222141850184124e-01, -0.15675356954685831790, + 0.36393122758824358876, -0.37301658476338472870, + 0.29072682723151571649, -0.34188308997124362831e-01, + -0.18258852275975220869, 0.38436833609621057217, + -0.37457491771975265360, 0.26641290669980238759, + 0.10341376538304733468e-01, -0.22995223251626537020, + 0.41135272216294971326, -0.36372428073086177092, + 0.21537283393277481536, 0.84030870641457436343e-01, + -0.29480510698462164543, 0.43451334287963494507, + -0.32782101984253103621, 0.12888793542088425315, + 0.18625053039500999441, -0.36562849482213766183, + 0.43542120352485441659, -0.24998300680260221451, + 0.85972399861796756915e-03, 0.30716398855516990896, + -0.41916988008897215767, 0.38766019681214608505, + -0.11442283166358435675, -0.16349744622255704685, + 0.41997586185266372327, -0.41835954526080948446, + 0.26287154732385675793, 0.81184711393672517876e-01, + -0.33494931559146756683, 0.47542125068100371532, + -0.31888647076570708627, 0.48065502438972854127e-01, + 0.30587608672040561553, -0.44953269446550037092, + 0.40880596476851172039, -0.93530638137187011028e-01, + -0.22415216642962573768, 0.47700115485178923302, + -0.41627203708109916658, 0.17474411855251612002, + 0.22230661851828031894, -0.44619372864345829832, + 0.46964384442265494357, -0.16794097117769354877, + -0.18480183999468707823, 0.48633515543645355894, + -0.44970490293402604065, 0.19287516478571731238, + 0.23808870939764278929, -0.47784326015818018307, + 0.47604675473132507246, -0.12314375344205640006, + -0.26273884522109247630, 0.53825576294644728037, + -0.41831490163213252975, 0.73123256648452719664e-01, + 0.37786714585832958946, -0.53336780664421534759, + 0.38158315838226825045, 0.84693888946099221693e-01, + -0.45084456781698539762, 0.55916233731634001902, + -0.22413249066956411615, -0.22767231571887591723, + 0.57373226737266969089, -0.45750833249229383437, + 0.50148050602627960992e-01, 0.45248057810701181047, + -0.57374369486217946523, 0.30724082705354671674, + 0.25192770610144260557, -0.57665242278574535550, + 0.49922011166085278333, 0.29486374718561015468e-01, + -0.49758123642405105436, 0.61434063970830121715, + -0.17342078031496416246, -0.37629838434018053617, + 0.66426187526645452675, -0.33586321449682371432, + -0.24803754635964000985, 0.67212606567419663772, + -0.45362540200257528422, -0.13824535182252362109, + 0.66301425233121247249, -0.53198685423330771549, + -0.63172793878184335670e-01, 0.65828069700981650669, + -0.57833681271457137996, -0.33425010457800115315e-01, + 0.67280437800600567666, -0.59592145094786386217, + -0.57833837207527376278e-01, 0.71301279049946653110, + -0.57877801546025520185, -0.14533109869302532347, + 0.77327283082956499438, -0.50803146123218945185, + -0.30210243507551226561, 0.82890261705849399565, + -0.35177489450382348757, -0.52030045971355209922, + 0.82680349035091393883, -0.75187003136627128530e-01, + -0.75508376484333450396, 0.68229666757219098461, + 0.32713559444689338518, -0.89490490233446218227, + 0.30544710249855772100, 0.76753540877403969578, + -0.75639422370112630034, -0.30665356969758184036, + 0.99699954351462838353, -0.18068003390017300935, + -0.90737498433501539985, 0.65607007731869571021, + 0.69020746396054344363, -0.92938005371392817811, + -0.33903869323415142256, 0.11175520491220161112e+01, + 0.58472287136645643979e-01, -0.11499323878099738661e+01, + 0.21380398417373458475, 0.12012643313314756988e+01, + -0.33522631724052542879, -0.12076917109135669737e+01, + 0.40237534277849246189, 0.13156817141657444203e+01, + -0.26948031513160369821, -0.14038313594192910472e+01, + -0.76756347246919405438e-04, 0.15118113156182448886e+01, + 0.57279129491365288196, -0.13311266527467906506e+01, + -0.12821868053519389630e+01, 0.65952498660172098610, + 0.18536903989473954013e+01, 0.80010468359797004556, + -0.12456828398725283691e+01, -0.21253980033118113901e+01, + -0.10894251246391259969e+01, 0.91117846613490305341, + 0.25005512651253738454e+01, 0.30027917225107758625e+01, + 0.25863733621705251586e+01, 0.17836154966344608397e+01, + 0.10309037598023147453e+01, 0.51151173329461041561, + 0.22095514968958859803, 0.83806220359111852081e-01, + 0.28053583851759270745e-01, 0.83100546627453714815e-02, + 0.21800455108916799024e-02, 0.50607003182255875986e-03, + 0.10370758822076280362e-03, 0.18687519726090166654e-04, + 0.29441396913748078328e-05, 0.40239048831402609845e-06, + 0.47215792897576293867e-07, 0.46903220183207893327e-08, + 0.38701018668045426273e-09, 0.25824193159045504188e-10, + 0.13395016425071959023e-11, 0.50693140829289987958e-13, + 0.12455314367651110690e-14, 0.14915771300255592861e-16, + -0.84763333218270831698e-02, 0.15284808723217312848e-01, + -0.13609370141272395666e-01, 0.97050999207225589760e-02, + -0.74857616533918740903e-02, 0.45343498471286857940e-02, + -0.39193676048807565837e-02, 0.21870353718285891198e-02, + -0.17291528564004189725e-02, -0.86438084119778622015e-03, + 0.24626909125993164465e-02, -0.54517874237773782456e-02, + 0.59851033770390712693e-02, -0.65061910532213549849e-02, + 0.40704695470622845321e-02, -0.24686587165372538867e-02, + -0.15264543540758948570e-03, -0.17746407954137433517e-03, + 0.63017507911473078820e-03, -0.34011437122686417715e-02, + 0.39386883036884130435e-02, -0.37349193357645361392e-02, + -0.86087986246361489825e-03, 0.60183886795126652694e-02, + -0.12567495950122263559e-01, 0.14751352804589716594e-01, + -0.13529507274613477436e-01, 0.56542390575450383189e-02, + 0.38361114842181322920e-02, -0.14252926501553842692e-01, + 0.18666188847759456609e-01, -0.17726037485023837109e-01, + 0.88660352010213380053e-02, 0.15530286083638299328e-02, + -0.11558977164418700670e-01, 0.13668084923750635495e-01, + -0.90567948060971455865e-02, -0.34272683303010914070e-02, + 0.15794888200403086470e-01, -0.25064166232571377657e-01, + 0.23922817758331802601e-01, -0.14867097749336437643e-01, + -0.14420620653252979367e-02, 0.15675384028992541546e-01, + -0.24745471528132181871e-01, 0.22573777270009611623e-01, + -0.13548980578641216937e-01, -0.26943847235979742627e-03, + 0.96484935237016386522e-02, -0.13321203146366781753e-01, + 0.79640158118784200314e-02, -0.16242092215350335837e-03, + -0.78003978843183717148e-02, 0.89313796010716053897e-02, + -0.58027878202862618814e-02, -0.13815662867850844828e-02, + 0.48167158158233698562e-02, -0.42408374016014542540e-02, + -0.28779726220250507335e-02, 0.93421043439266601011e-02, + -0.12743689355900002930e-01, 0.69123960517802462283e-02, + 0.36401173222306722720e-02, -0.16124581753250568500e-01, + 0.20568363261819769955e-01, -0.16095007468957912150e-01, + 0.16160432364566430612e-02, 0.12723187269868282620e-01, + -0.21467228853129613486e-01, 0.16774780560921180583e-01, + -0.35130121659659547736e-02, -0.13715620172889554651e-01, + 0.23035499759198930364e-01, -0.22734629749291579426e-01, + 0.12024933279017980398e-01, -0.14002509528240258616e-02, + -0.46160596569515422588e-02, 0.68787333891517530790e-03, + 0.56305292683492338957e-02, -0.92534658180493025575e-02, + 0.16610185764769833366e-02, 0.12409164086267165591e-01, + -0.27455989660635223698e-01, 0.30806679945610971477e-01, + -0.21738112366021220684e-01, 0.27449634795267386332e-02, + 0.11675405325931380654e-01, -0.15006823408302614672e-01, + 0.36370162648136131721e-02, 0.10450074822534722793e-01, + -0.18299289631311006776e-01, 0.11054301450473050239e-01, + 0.33700240434461842601e-02, -0.16151433542122606984e-01, + 0.15149054542144163235e-01, -0.47853350345496790258e-02, + -0.66877657775473702689e-02, 0.44073488102733746063e-02, + 0.10515405150163650849e-01, -0.30313107771858586320e-01, + 0.36701177669454396191e-01, -0.25783156087235872822e-01, + 0.25437340455511793340e-02, 0.13240261052873106631e-01, + -0.13302589222956099843e-01, -0.11706990513580255598e-02, + 0.11300139831001211263e-01, -0.75338737140969629438e-02, + -0.97636250876196786080e-02, 0.20472724700627876332e-01, + -0.12917541959969977908e-01, -0.12939502525257695273e-01, + 0.34606653856929264768e-01, -0.37048203078761561546e-01, + 0.18545889213218199471e-01, -0.20812663381411583216e-02, + 0.31878255580701955578e-02, -0.22205041259587585817e-01, + 0.34196267012581174627e-01, -0.24455481421694822558e-01, + -0.28161022685298420405e-02, 0.18295356544768021090e-01, + -0.79499421294247259173e-02, -0.18756481965490373609e-01, + 0.29332576709977117857e-01, -0.13931390027494537989e-01, + -0.10469454474329512733e-01, 0.10825507140341228060e-01, + 0.12678168343374618746e-01, -0.32766158196516896595e-01, + 0.19477528487964888143e-01, 0.12095204912575367728e-01, + -0.26441231471183847951e-01, 0.49431940142692842519e-02, + 0.19412631720317902184e-01, -0.12608711509889838562e-01, + -0.20330795372684146161e-01, 0.31192366920694703653e-01, + -0.40615507636322231363e-02, -0.25735729001795843579e-01, + 0.12259487068809769850e-01, 0.23556548149309918666e-01, + -0.29024740234999020505e-01, -0.63933676289135215817e-02, + 0.22523114285715895716e-01, 0.98272536257848330105e-02, + -0.43048447942944004230e-01, 0.19471207666498038108e-01, + 0.21072848847527785726e-01, -0.10877717915127357862e-01, + -0.30809152367663246441e-01, 0.18212757898968083559e-01, + 0.35397486909116607223e-01, -0.38508504804406526456e-01, + -0.11306927148925781032e-01, 0.69471439506960091376e-02, + 0.47828797911245730934e-01, -0.38867064499584012827e-01, + -0.25381050388086627556e-01, 0.11049790759939752058e-01, + 0.40877614849391452623e-01, 0.32183395683785063351e-02, + -0.57394204061526808702e-01, -0.42391122393791828837e-02, + 0.22282433215677969335e-01, 0.57438451518726590939e-01, + -0.23144666057715423957e-01, -0.45273973788468972745e-01, + -0.41383108549206869264e-01, 0.23446530219191016181e-01, + 0.62918886470492332852e-01, 0.47597402937538120515e-01, + -0.12614887949288406972e-02, -0.55290828123572277608e-01, + -0.91555568539731638222e-01, -0.76342229587037124805e-01, + -0.82201805067725189358e-01, -0.25919281695509714669e-01, + -0.45931207997798435827e-01, 0.90746180098731608898e-02, + -0.25269654482185006233e-01, 0.14020722894924160171e-01, + -0.11426761534720022290e-01, 0.38533871918399777157e-02, + 0.28451291314591331365e-02, -0.94892273425009332488e-02, + 0.14858688629907865555e-01, -0.18459793120308261999e-01, + 0.19927596363099004534e-01, -0.19175308706756433175e-01, + 0.16441378275090238331e-01, -0.12181751156793032762e-01, + 0.70710908910824226206e-02, -0.18398820016304207742e-02, + -0.27722691390532688480e-02, 0.61721329754366241471e-02, + -0.79504406340271584902e-02, 0.79739165565084653420e-02, + -0.63687966406718345136e-02, 0.35213463511609851241e-02, + -0.92859208842458774991e-02, 0.18895739087340417822e-01, + -0.71498303945016468755e-02, 0.51891524547139225923e-02, + 0.63280075118461428033e-02, -0.55496460875896847301e-02, + 0.12239123597882720085e-01, -0.53384680871836169558e-02, + 0.56388957757374852039e-02, 0.68100838450276136166e-02, + -0.10230116004152314813e-01, 0.23861302803622391755e-01, + -0.25635132251325739444e-01, 0.34956535694780049850e-01, + -0.30428441876519881498e-01, 0.32255601511362967659e-01, + -0.20961370329744231922e-01, 0.15172519918726911151e-01, + -0.55905012053931888924e-02, -0.16395537740755142947e-01, + -0.15620452340105924274e-01, -0.91311887672188368770e-01, + -0.12632578889002341049, -0.28310545565381006750, + -0.38842404089733661987, -0.52381899244901564128, + -0.51240350911190757355, -0.33554218018329640127, + -0.16161894549687087080e-01, 0.30334607388555900886, + 0.37450721453891294699, 0.12737185845376622351, + -0.20107599692998653906, -0.34441986710751221201, + -0.34867988174120401190e-01, 0.22965648589962789350, + 0.25546720280204382458, -0.12775096734668112131, + -0.26674444534650193495, -0.11630425083067696609e-01, + 0.23329322402181892904, 0.13073984026743618037, + -0.25159974910391552649, -0.10247993935119080466, + 0.15242718126865603678, 0.17128312583564650473, + -0.16527864293450469924, -0.16856166241513886872, + 0.20138035695299508210, 0.79556595784463557397e-01, + -0.11203521206681200939, -0.15811423799459140005, + 0.23328743534610468791, 0.22064881393356980399e-01, + -0.17886316288575015987, 0.12922183131728531141e-01, + 0.15624355084814203765, -0.29636988354734147832e-01, + -0.19221039504242823370, 0.16501217370683710084, + 0.68189362675710157857e-01, -0.16861337078464330719, + 0.25285754799185957559e-01, 0.11284442481285300586, + -0.20973584911219266685e-01, -0.17970525878736026693, + 0.21629685183861216413, -0.38520205773433312257e-01, + -0.12666288154213184436, 0.95247306036195633627e-01, + 0.48564018891775334597e-01, -0.79994922655448247317e-01, + -0.64854465912378742032e-01, 0.22164270179647910242, + -0.20608017644522583223, 0.39566308763314878005e-01, + 0.93409565981588213446e-01, -0.63321689788590818093e-01, + -0.59427348881728792040e-01, 0.10665171121355274120, + -0.62013931935081907307e-02, -0.13749948966263692007, + 0.17149940315586548190, -0.57595078300975356689e-01, + -0.87777864948991965455e-01, 0.12587363985937843891, + -0.32147256148133233900e-01, -0.84288186929477301734e-01, + 0.10452787309836000795, -0.14449054952569734267e-01, + -0.84496613016181734701e-01, 0.86975099722845283789e-01, + 0.16510454307529610213e-01, -0.12899588099684575204, + 0.14588001249948903681, -0.46994123797784240204e-01, + -0.84713341736330355358e-01, 0.14576535745584187631, + -0.98461131893536030235e-01, 0.15307161608356912273e-02, + 0.53007604022272336586e-01, -0.18442056463571290803e-01, + -0.65070910778241911054e-01, 0.11442550523365849213, + -0.73869103688213796910e-01, -0.33056138328296562345e-01, + 0.12751175624447633195, -0.13564682200803979129, + 0.50405494046126715635e-01, 0.69313023095282116914e-01, + -0.14201334802289916626, 0.12850432068978107081, + -0.52708687199429969661e-01, -0.18799110924813140083e-01, + 0.34440462064949391163e-01, 0.80485112597410372187e-02, + -0.59984683815805649176e-01, 0.65941364095180476923e-01, + -0.39638730987669535191e-02, -0.93405461953624244198e-01, + 0.16572191908288061435, -0.16380126895709884449, + 0.87310779144859088086e-01, 0.18801435678428759374e-01, + -0.91063797958249703690e-01, 0.91846785393901869687e-01, + -0.27998048853638126537e-01, -0.53508549576226291378e-01, + 0.10127628032126687052, -0.88675746976072805650e-01, + 0.31014936413169835044e-01, 0.31445501176558643408e-01, + -0.58838531622492258599e-01, 0.40539144039343423531e-01, + 0.29904632861139138732e-02, -0.32991363192995969145e-01, + 0.22406559286468567121e-01, 0.28378717189951691013e-01, + -0.88060609466650938137e-01, 0.11640041227410534430, + -0.86356289550961987111e-01, 0.41415955411034368824e-02, + 0.95623724479571237111e-01, -0.16554385693380682665, + 0.17346174541223360888, -0.11647451284487725376, + 0.24183838457114574527e-01, 0.60148730249392948211e-01, + -0.99489466631691850229e-01, 0.83222589688592155110e-01, + -0.27733311713258556458e-01, -0.32078437356533595626e-01, + 0.64276185124803333903e-01, -0.53347422672585846637e-01, + 0.82036334401139263117e-02, 0.47270131540386568780e-01, + -0.86199052848036694652e-01, 0.94844830807835872610e-01, + -0.76140188014942350447e-01, 0.47737380856020437958e-01, + -0.28545541046412718084e-01, 0.29389828653393269831e-01, + -0.45294262248323717557e-01, 0.60708977249148234068e-01, + -0.57245972648542475802e-01, 0.26586304882138738631e-01, + 0.25346238006675760740e-01, -0.78511022508327185654e-01, + 0.10977864649745033843, -0.10294299473493144503, + 0.58925797738977145346e-01, 0.50077134925713548061e-02, + -0.60954820600475891068e-01, 0.84177474369243998620e-01, + -0.63123056716230252494e-01, 0.64043974566172605367e-02, + 0.61675927721816375948e-01, -0.11015880082279158603, + 0.11592479977831267324, -0.72742722818565350162e-01, + -0.45648256982624146882e-02, 0.86878883524049821396e-01, + -0.14153694277736572626, 0.14650401051838848887, + -0.98431213610411461001e-01, 0.14893553425629476455e-01, + 0.73351424396353046009e-01, -0.13373875296961454384, + 0.14528484277185133022, -0.10593631574414996699, + 0.33659705009392970609e-01, 0.41419197647239461291e-01, + -0.88442803593109367566e-01, 0.88331939327088798697e-01, + -0.40732346288174889337e-01, -0.35579435206732075436e-01, + 0.11033591241847008624, -0.15321922533774573472, + 0.14575649908890700446, -0.88279372230493577400e-01, + 0.66260099427444513198e-01, -0.12186353150262027242e-01, + -0.60976866130994414328e-01, 0.12907655850776089679, + -0.10147504142952333550, 0.62097875188530868296e-01, + 0.33363264430217476342e-01, -0.70237555350682739919e-01, + 0.92100485368040621581e-01, -0.15796091872219961139e-01, + -0.63643489041413842111e-01, 0.17997169367177850985, + -0.21362909328980844714, 0.21160894566691273999, + -0.10204179265151543110, -0.55906346796084577591e-02, + 0.13364961601658620349, -0.16016922311544853907, + 0.14044171316184311804, -0.18770956306146474590e-01, + -0.78908587366326513046e-01, 0.16648124349459075821, + -0.12748333655838808842, 0.36207114780083822503e-01, + 0.13710064305025654319, -0.24488474212188610091, + 0.29385217775906696813, -0.17981943585668405672, + 0.47369628589463844484e-02, 0.22926159227737274993, + -0.35305982225297194432, 0.37233181703109968774, + -0.20386211735935935718, -0.17185543583382128369e-01, + 0.25928459140963339147, -0.34353918894728713296, + 0.29185797451014877657, -0.57125650338065915579e-01, + -0.18718343166767056895, 0.38895827455146236851, + -0.37929992670159640156, 0.21788406067700835655, + 0.94363037035528660179e-01, -0.35078848862125389108, + 0.49970902562645808098, -0.40857806315008382558, + 0.19119256663572101185, 0.10923318864555149610, + -0.28209537565857772945, 0.31690249169364548276, + -0.14922855207418769807, -0.48936244077081005044e-01, + 0.22156297447335501771, -0.20488589855476863066, + 0.75948987207642412733e-01, 0.14575796311493277591, + -0.25596302307095802897, 0.24110857558576997972, + -0.37534043428251076535e-01, -0.17272370644930423733, + 0.32026737876577793251, -0.23931935077723986982, + 0.26296931859923277502e-01, 0.26172392571597974387, + -0.38381938930398085130, 0.31346598308647094511, + -0.10001667469998544099e-01, -0.29579014881709553286, + 0.48707493365882176262, -0.38062860279463872626, + 0.94407046712157383084e-01, 0.27073797383489273116, + -0.44111039884174335635, 0.39227682341632874596, + -0.11662424962619985513, -0.12445016993225571644, + 0.22334156451184172809, -0.56872237462720846846e-01, + -0.17970442566438366017, 0.35084449633888281639, + -0.23591216456029936999, -0.60501061366364329575e-01, + 0.41275694100249216145, -0.51327173344282284173, + 0.33870540485087707872, 0.63740029667512479450e-01, + -0.35633772992813883551, 0.39381568871355038253, + -0.93209102788381154037e-01, -0.25635502270204690856, + 0.44628174424508193496, -0.27055896690333847143, + -0.70547359179333191115e-01, 0.35964795432915497297, + -0.30057286673072441952, 0.24007526838294834109e-02, + 0.33202548415271471161, -0.33498287704383711283, + 0.23702763038215727415e-01, 0.42631499844776488128, + -0.58084678036819548108, 0.34861548877184328488, + 0.15671099996607898430, -0.46853993204143040696, + 0.40214361457557107338, 0.23943606830337180180e-02, + -0.27972101863934223376, 0.19497253453419441382, + 0.24590575815388063252, -0.55479397132867735998, + 0.44403842466757315055, 0.10004118359004435246, + -0.54863800078921343140, 0.55264220370147909556, + -0.76693423668919596947e-01, -0.32401512743465527011, + 0.28007809247149273446, 0.21161191937127957208, + -0.54285087287801803146, 0.35266487336265944785, + 0.26702963378210525791, -0.61641298208816164284, + 0.36119324232068278357, 0.27477085822099894807, + -0.51575833298857964859, 0.13320925846278847127, + 0.45961351783469606147, -0.46322187606397441373, + -0.11986104239694647666, 0.63586127550986748513, + -0.36168504181802257902, -0.34477345003441378646, + 0.63852353306351439244, -0.77895138479123174347e-01, + -0.53994268430571423778, 0.39721560783832665642, + 0.38594569878293549792, -0.64866791893797659529, + 0.52781959500300887345e-02, 0.70243142096569943789, + -0.37566096940026749706, -0.47944971657731938475, + 0.59866993481741836991, 0.26964208382425952637, + -0.67619302698832361997, -0.84615189904761564654e-01, + 0.87693362729610302431, -0.32099108314533064679, + -0.62364843003088166196, 0.33279060690200024109, + 0.72907041594722632460, -0.49649240228864033320, + -0.71964024081485855611, 0.73277543098377029285, + 0.50743077755177823374, -0.42329542156942867592, + -0.89794212266420903035, 0.71712667315870037843, + 0.76726647488717913959, -0.34883214854122673865, + -0.97918450557344749452, 0.59548253690404101719e-03, + 0.12316497757736797336e+01, 0.29720706030738675008, + -0.75706714885852521846, -0.11521601026962831060e+01, + 0.34509406295727201863, 0.12675035252568984667e+01, + 0.84760056565257213546, -0.44931393272711356301, + -0.16017141652612985059e+01, -0.10559514593086809509e+01, + -0.69469596650996473519e-01, 0.14581886292378882786e+01, + 0.20212054597870650063e+01, 0.20600702158180750345e+01, + 0.16954602166572956268e+01, 0.93809096812382042341, + 0.76684303511281604049, 0.11263239425601233312, + 0.30850102711435695158, -0.96973931539461932783e-01, + 0.11478702415416101867, -0.26880527761297758754e-01, + -0.35533623067811444252e-01, 0.10255663406983374364, + -0.15417946712498553641, 0.18627268032354463156, + -0.19448681697571737481, 0.17800992462453121834, + -0.13995886787154895869, 0.85840381926720610295e-01, + -0.23866386660359395488e-01, -0.37292974206443035845e-01, + 0.88805289065970002826e-01, -0.12377127899898428265, + 0.13746866701251903020, -0.12862003338097019456, + 0.99046414600573937093e-01, -0.53771841840958123360e-01, + 0.26182785682968775370e-01, -0.21665442485972366549e-01, + -0.67617441816129178478e-01, 0.91609238471259360481e-01, + -0.15564909068236237877, 0.13945705280105946677, + -0.15425463690647367443, 0.87317923263803734479e-01, + -0.57747213919909674840e-01, -0.39969511492741430225e-01, + 0.81560880463824647624e-01, -0.17004801407426906046, + 0.18205435014917795145, -0.22455086859049600001, + 0.18114943875599817669, -0.16620067013834979863, + 0.76103282223083684732e-01, -0.18276553778629370250e-01, + -0.56208692282812521002e-01, 0.18609278614040625222, + -0.18429316292596694543e-01, 0.57785669393605543220, + 0.60341013276255295317, 0.15487734822030969628e+01, + 0.20681008363883393031e+01, 0.27585955822862993081e+01, + 0.28018643850211608637e+01, 0.16918067112226973236e+01, + 0.20084007120377592170, -0.17391045018762683050e+01, + -0.18835573587587057798e+01, -0.77612907705580047590, + 0.11417811785989051554e+01, 0.17985636853667086310e+01, + 0.19043359020975406115, -0.12000331646923012574e+01, + -0.14115457997832046022e+01, 0.74355091603220080376, + 0.13567384153863111251e+01, 0.11867415948533871495, + -0.12829924943098987011e+01, -0.68590845041153003514, + 0.13610555211733190717e+01, 0.49414900220895735528, + -0.73144038962011836968, -0.10198406203821099858e+01, + 0.10028552131979477924e+01, 0.77068319492815762217, + -0.95007633236028987689, -0.53662759815061378266, + 0.68998832245871533075, 0.77314280201802354497, + -0.11986894982939217957e+01, -0.14234239141749469026, + 0.96131259921551737158, -0.67431373820488194060e-01, + -0.83712447091603936489, 0.15494698798860581657, + 0.10404441178249173028e+01, -0.91358688618534600323, + -0.31151587636428185180, 0.82832430538692869426, + -0.50771814732396794434e-01, -0.69353907497112554648, + 0.20103667085321452745, 0.88014517494879840331, + -0.10971040901901836229e+01, 0.17777593320530460375, + 0.66692958422891790438, -0.46122423332428003073, + -0.34502936418150614850, 0.54695563424780213602, + 0.19689541228303117371, -0.10152124640957622681e+01, + 0.92436339639792175493, -0.41733617819829559037e-01, + -0.65157143429825359338, 0.46367921495471364768, + 0.22517496167220166225, -0.51745300604173227743, + 0.22591056396016100105e-01, 0.70350034464447563920, + -0.85059391888109714408, 0.21518501081531093977, + 0.57757545189456760415, -0.78909450587620066919, + 0.28619469326499696882, 0.34599884367724481615, + -0.47390106866874576186, 0.17723859652077924437e-01, + 0.48178813181456153769, -0.46763090325449574447, + -0.11064779740663800711, 0.73181818047047741960, + -0.83880631040271758092, 0.32129247278042816216, + 0.37616695059909888155, -0.70304551836603079717, + 0.45496974988341065682, 0.54396962387517816540e-01, + -0.33804470512977097263, 0.14651664510633127803, + 0.30264943023230056474, -0.56721800107698039373, + 0.34749368232985200500, 0.22886741357423245891, + -0.74252955942547826940, 0.79649072025010902998, + -0.35336264482059936975, -0.27635730140228337293, + 0.65799096940733436956, -0.58588198075218234084, + 0.18701464829836583759, 0.18115316454153948533, + -0.24526291311646450377, -0.78280768924532968117e-02, + 0.31550403562976164773, -0.38202563105329162552, + 0.86447180447843677276e-01, 0.39843452577471577536, + -0.75426484891682799017, 0.71931803975515640204, + -0.29518334881486224530, -0.27875297489963035691, + 0.66189107770726884894, -0.65524483921678799980, + 0.29474565867358237803, 0.16603368905602422512, + -0.45233878834060309293, 0.41824466980612534650, + -0.14418794066084503203, -0.15908567158931877228, + 0.27989217524788922997, -0.16480165542924543609, + -0.77113352111530711341e-01, 0.23723305728765314848, + -0.17271211134224956352, -0.11479019451050437306, + 0.45551648707578190622, -0.63402683950041405225, + 0.50243335862798377267, -0.92456740461410280574e-01, + -0.41503539189994770320, 0.76846369992974861152, + -0.79941514940049673843, 0.49267417992448037101, + -0.79425932147990669502e-02, -0.42512965133067376344, + 0.60868111467772634260, -0.48851743522629326177, + 0.15294712967189966202, 0.20852766590359203547, + -0.42394496768305373058, 0.40692454406885036899, + -0.20337679041671111180, -0.62498538278130157109e-01, + 0.24827877302978340612, -0.28282403909300707356, + 0.18151607671719244275, -0.39278433166579744540e-01, + -0.44584147689778398649e-01, 0.12842822189303614716e-01, + 0.10537957758068869363, -0.22575870495686262140, + 0.24711875528027324456, -0.12341359132480532457, + -0.11675438068313903628, 0.36783643643138952406, + -0.50877097675192151094, 0.45362353629585722148, + -0.20853504577363055073, -0.13498594236591643369, + 0.42805324490354546008, -0.54030548631254193825, + 0.41099953302689251622, -0.88313238876397526234e-01, + -0.29675788638678024522, 0.57668499069446454985, + -0.62679944471144632967, 0.41180641847316529214, + -0.98949162694254143985e-02, -0.42492997202991833472, + 0.71851339313803530562, -0.75365850802072731351, + 0.51164549942213521927, -0.85597942945895538758e-01, + -0.36204848732668104550, 0.65889181131938956426, + -0.69501807620631372853, 0.46100779599087321481, + -0.54625517880381085911e-01, -0.36212813388282111271, + 0.62322628773338306640, -0.62617215380380597534, + 0.36842864347012105330, 0.49789245404192945810e-01, + -0.46677300498132484607, 0.71992329550487088596, + -0.70959878884620264383, 0.43602730479787338291, + -0.11609405267182731913, -0.30043860593609017506, + 0.59006169518245821237, -0.75954180252600878021, + 0.50961744278488563253, -0.17539086389236702157, + -0.33716416158373824219, 0.57998179443238873088, + -0.67663819840344974210, 0.34585648905623012084, + 0.49393203363150735286e-01, -0.57586573041352828728, + 0.77433092237559608684, -0.77981277518985758768, + 0.34489341804424633597, 0.12590364714757532050, + -0.66721203430867548345, 0.81546356051504775841, + -0.73291406325307650871, 0.22318543624523826119, + 0.25838266746694488196, -0.71964422144190609565, + 0.71306882887721989572, -0.45665417798828811247, + -0.17006356164932601160, 0.65115640881068248547, + -0.97844169543167935910, 0.74763805817374673346, + -0.26358377293561696675, -0.49891414420175256295, + 0.96664423791331710589, -0.11411811302456731365e+01, + 0.69717562150390055553, -0.51945899484877829100e-01, + -0.72624022177014757595, 0.10410749016396694255e+01, + -0.95817622273121982879, 0.28003576700845783654, + 0.44682051070805095527, -0.10896871779117887069e+01, + 0.10947366885771445677e+01, -0.66333195468642069947, + -0.23436715922120632261, 0.94020882831658381118, + -0.13288699998617172771e+01, 0.98064436784856601204, + -0.29322638925381150354, -0.60676007299859024968, + 0.10381587026566301279e+01, -0.10108476793600258414e+01, + 0.33951867194031798425, 0.37003091380290270562, + -0.93030556484030901832, 0.79966334817912942956, + -0.26802708940929265147, -0.57342972684266424466, + 0.10065655332891572105e+01, -0.97374075535583493046, + 0.25290068244986385615, 0.52917430325724457152, + -0.11224749820696806601e+01, 0.93800350164362056304, + -0.27806564757414720113, -0.68784963506025864621, + 0.11491339255458707935e+01, -0.10077933207493843248e+01, + 0.95434185176199420875e-01, 0.84205180550385017035, + -0.14463958345268623784e+01, 0.11140120653260949801e+01, + -0.24253104332606850724, -0.85457246909439787963, + 0.12861729539104413966e+01, -0.10081429746958407989e+01, + 0.16735237091094940648e-01, 0.79339104260274151414, + -0.10662825183702444587e+01, 0.39697130106253697424, + 0.53480884531194727849, -0.12540292300575497375e+01, + 0.99149553856819949704, -0.80765563289443870199e-01, + -0.10741712907037452851e+01, 0.14387355418488974035e+01, + -0.92582342774988679590, -0.33430530005912811875, + 0.12331033254548418032e+01, -0.13097656999364586383e+01, + 0.29164382413013467676, 0.85358268648709556548, + -0.14469064355973759728e+01, 0.81384100304100348566, + 0.35396080626475084907, -0.13216239173654344974e+01, + 0.10892448758097221795e+01, -0.27754312880577454437e-01, + -0.11796795163268545270e+01, 0.12833558767309916071e+01, + -0.32384589763251042660, -0.11380724500935170962e+01, + 0.16626816657068947958e+01, -0.95292779766959589960, + -0.62540818827954636205, 0.15302350812896254872e+01, + -0.11741684199679685019e+01, -0.28877167499706457576, + 0.12817875124656525898e+01, -0.10133349081416616055e+01, + -0.50375882553833217781, 0.16297594373238706300e+01, + -0.13927112973098914050e+01, -0.28024049115345345262, + 0.16462472850382861012e+01, -0.15663463540701858534e+01, + -0.68056854656910054091e-01, 0.13981571877772065449e+01, + -0.12020791293647044018e+01, -0.52115583374970064767, + 0.17220608870470071050e+01, -0.11820381263301500407e+01, + -0.81285528793093131394, 0.19368535584377974956e+01, + -0.10827640163572336274e+01, -0.10110088465008120195e+01, + 0.17652071051441753369e+01, -0.43518599603121516095, + -0.15910469017775903389e+01, 0.16335602775022779465e+01, + 0.30243022695174459624, -0.20418434504953499875e+01, + 0.11660433993897114657e+01, 0.11379265255640982346e+01, + -0.20680170861383651015e+01, 0.15953929055019416827, + 0.19192436287638292569e+01, -0.14422895778378317377e+01, + -0.11910853366811766652e+01, 0.21015802815464410536e+01, + 0.32621149301744305216e-02, -0.23312619337484616899e+01, + 0.12262446827657764725e+01, 0.16160263838278388082e+01, + -0.19835111803032470235e+01, -0.96064581339578170027, + 0.23733015314383352212e+01, 0.10739424780166802187, + -0.27111195585839285016e+01, 0.84741680030657373646, + 0.22755001184534950909e+01, -0.12448034308159567907e+01, + -0.23885080852815656627e+01, 0.17262397060265302073e+01, + 0.22082897770694422945e+01, -0.21460327250129940246e+01, + -0.20668141156475043907e+01, 0.18231761605871801279e+01, + 0.25908032055291805307e+01, -0.20464531673090404773e+01, + -0.28040969197294622894e+01, 0.12843271155180462362e+01, + 0.32754441813463897049e+01, -0.13762015002165622901, + -0.38737766110150699816e+01, -0.12792631420115927465e+01, + 0.28212602876389105688e+01, 0.35791204927613287090e+01, + -0.96454568441542498647, -0.43110475979919256062e+01, + -0.28473166764360562375e+01, 0.16160803074564729087e+01, + 0.51509590527464004239e+01, 0.37374581079708821818e+01, + 0.29001526235559550726e-01, -0.47176545126783233641e+01, + -0.67858713534542598467e+01, -0.69348742021415628045e+01, + -0.54638812961914888788e+01, -0.34200713276362111337e+01, + -0.21896432485380157296e+01, -0.77199120089515638199, + -0.65227051900038468535, 0.16292634948459415456e-01, + -0.18640557263764345741, 0.31095991039807219930e-01, + 0.29091668344635286669e-01, -0.11428973505788360410, + 0.17476230557047550684, -0.21131863205307180320, + 0.21700286856478606667, -0.19108473626604405293, + 0.13790099812506070864, -0.64766149800300140682e-01, + -0.17241923302964805298e-01, 0.96675690069764175227e-01, + -0.16174541781655546457, 0.20343585418538384646, + -0.21554591008032167321, 0.19661287384341558093, + -0.14924941369731264951, 0.80427915334850177964e-01, + -0.21935847790385536171e-01, -0.11448058024571328151e-01, + 0.12249145819321528850, -0.15908807175959621683, + 0.22950924832648189611, -0.20937945847196201554, + 0.21505860262149695261, -0.13178633578786219660, + 0.85274474684910436806e-01, 0.31170115720279799321e-01, + -0.86683499611440936738e-01, 0.18617562227366837857, + -0.20110990145680499031, 0.24212506687204554678, + -0.18969480834602903130, 0.16365492972075756928, + -0.58784707538608663158e-01, -0.11155486432565992622e-01, + 0.96471861461942795546e-01, -0.23011636272153199179, + 0.61622485995452266905e-01, -0.61149318283244391559, + -0.58376279755042415065, -0.15477502387617045887e+01, + -0.20906347593272753826e+01, -0.27126264725262432265e+01, + -0.28668787186977651160e+01, -0.16109373261196904270e+01, + -0.28890231960740581085, 0.18281935433030276350e+01, + 0.18033394470066050896e+01, 0.84187628279560411393, + -0.11855247720842738701e+01, -0.17786428407129160068e+01, + -0.18380430571247455274, 0.11702008337007461236e+01, + 0.14623157089805272069e+01, -0.80774861456503765922, + -0.12843304831059003668e+01, -0.19042180641518335893, + 0.13491126580047421157e+01, 0.63244246886508881378, + -0.13221399254705394899e+01, -0.51544129508786251659, + 0.73745384916801381969, 0.10281032823143982924e+01, + -0.10197112977183893090e+01, -0.74853289622156193861, + 0.92924661091596461038, 0.55325582297802955445, + -0.69754530307401518829, -0.77481186335922647146, + 0.12110481840242699469e+01, 0.12268835317312644373, + -0.93620567139151644742, 0.42820566681690923339e-01, + 0.85784291331807716041, -0.16555475739817934744, + -0.10423630527617135932e+01, 0.93204714246139763745, + 0.27719266137743736600, -0.77783098765242564276, + -0.11402803832216009197e-01, 0.76415051184933868722, + -0.27279673851899877146, -0.81228002561072121246, + 0.10409232893683204590e+01, -0.13753304890070849886, + -0.68553992736770097416, 0.45706020083617576732, + 0.37376799362950408057, -0.59720975056787395374, + -0.12748932317525854541, 0.93334307216361622750, + -0.83521388569433041571, -0.46347062792519502783e-01, + 0.73296553138654418902, -0.53093076726636001528, + -0.17565590717739318349, 0.49010109177522070967, + -0.17376715721398476588e-01, -0.68607661781044182447, + 0.81434583085982681361, -0.16297105219738455828, + -0.63938975560344368798, 0.85603527194552653246, + -0.35140747924007242897, -0.28643798301015543917, + 0.42528649278348329421, 0.18304713935083382487e-01, + -0.50275745143254868541, 0.47486903246487954799, + 0.11672822908660744623, -0.74745204598423853337, + 0.86173824294098666510, -0.34674384170730604415, + -0.35065594908383662665, 0.68159507985445833000, + -0.43871604735993757762, -0.63220523676426138016e-01, + 0.34043517860448746504, -0.14244698541033923300, + -0.31023720590847753131, 0.57680481244752901393, + -0.35524053474730499236, -0.22471266969036626793, + 0.74527235591997764708, -0.80672518690093597549, + 0.37265913729182831293, 0.24944625380233703682, + -0.62410167353215750818, 0.54851208555737374084, + -0.14854915677017449527, -0.21604738375174767362, + 0.27367032505225219463, -0.96927111420680635984e-02, + -0.31080211650722056049, 0.39283221769087411923, + -0.11248055925845394654, -0.35709123012998272850, + 0.70057855800693535908, -0.65580695770185448712, + 0.22701046108286909719, 0.34740450549440271555, + -0.72496846555237981491, 0.70846536886642241804, + -0.33285726140393134820, -0.14574299810722779469, + 0.45281410985314318740, -0.43941484642052519582, + 0.18587723664514005373, 0.10007597409820080669, + -0.20670224391674230091, 0.83110910420854416936e-01, + 0.16228678687429914929, -0.31916856251011993528, + 0.24619131992463427760, 0.55746437157611433699e-01, + -0.41457984163757094498, 0.61486034607584560963, + -0.50588128218510708400, 0.11897653629365195771, + 0.36785949644396714886, -0.70332631634597031489, + 0.72146094277901340330, -0.40678608778198988016, + -0.79324879571036899240e-01, 0.50827665301733204739, + -0.68144690359198645258, 0.54649314555824013429, + -0.19175223475535907447, -0.19086026630962193984, + 0.42889489524380913776, -0.43339465204555827071, + 0.24975896366016311911, 0.11201773715184132612e-03, + -0.17391678059485732311, 0.20218094137931744148, + -0.99741234295770947460e-01, -0.37625496515231636463e-01, + 0.11189538798871252745, -0.65757820163130586977e-01, + -0.69792789651290335073e-01, 0.20997888674899226058, + -0.25147114705636214316, 0.14759264542960820465, + 0.75109824084791831922e-01, -0.31152052778615585416, + 0.44219032247516842915, -0.38112754855845587532, + 0.13542122232199108045, 0.20410467913898419634, + -0.48832675307080436466, 0.58815102836574961742, + -0.44317820922543965656, 0.10323257976242414258, + 0.30002745950455250723, -0.59734873958222334256, + 0.66339998010738432388, -0.46140017313255987652, + 0.69168191443210902403e-01, 0.36028860900831144454, + -0.65269958311967990472, 0.69125146235220857882, + -0.45657082355419575936, 0.41573865777582159897e-01, + 0.39240029404303239380, -0.67358931857302339896, + 0.69340780313672001345, -0.44325936367806173521, + 0.22198772658400849761e-01, 0.40704138493456254455, + -0.67744418681457707621, 0.68610526273829774979, + -0.42998849039545983253, 0.93631440252590746737e-02, + 0.41399375531225757197, -0.67695499306860718036, + 0.67929617962527721886, -0.42035754308015227387, + 0.59170099523836172661e-01, 0.37560667904523775684, + -0.63044433879235262097, 0.73817794465588937314, + -0.45810577523828349689, 0.90502143854852626359e-01, + 0.41436041438687831739, -0.66058266724461467412, + 0.73882187119449560520, -0.41975484182278366418, + 0.21834555904106326546e-01, 0.48600419582457188294, + -0.70065174645672700926, 0.72076962741928840561, + -0.34111697130490947760, -0.91169874886941310033e-01, + 0.58530633450899460790, -0.73733474995956949094, + 0.66774477707993262765, -0.21075238510987964746, + -0.24824577154554430813, 0.69817509903913821390, + -0.74738156769323271789, 0.55762900251738078961, + -0.19222143128326544398e-01, -0.43918667955046625240, + 0.79684953001576264153, -0.69709691077140789606, + 0.36743008959647954770, 0.23208561859263415750, + -0.63528103033670002553, 0.83642750423141820626, + -0.54691595559214034594, 0.84909991845728685633e-01, + 0.51748421406233557907, -0.78131687481713885113, + 0.75800155940850766356, -0.26603993694631783429, + -0.27151550306411481595, 0.77239732577825437332, + -0.79590085191890080907, 0.50664221570809930828, + 0.13907961802100826665, -0.62867876282828494272, + 0.88895049998644271039, -0.59331809306005156568, + 0.71552413672815118328e-01, 0.58703723674670305055, + -0.84692676145064771376, 0.74261703940890699815, + -0.13982501180790121720, -0.45692996974421096201, + 0.89911992741831991971, -0.75335974452642462396, + 0.27129104520024766023, 0.46224552386946016203, + -0.85062722037236837558, 0.84292502233513677545, + -0.25381374629469316551, -0.40300078030509217664, + 0.92007630802431195072, -0.80529267132196502565, + 0.29285223309856106555, 0.49422204090296495416, + -0.90098767160287085431, 0.84551803183085894045, + -0.17331841251976695673, -0.52963504528947458194, + 0.99537875370437844946, -0.74293849422436786245, + 0.94564456973882840551e-01, 0.71317270012518574340, + -0.97711673668741438892, 0.68410122502134895761, + 0.15874493774457792972, -0.82096357149663923281, + 0.10205907473522193296e+01, -0.43440243076456946936, + -0.37704276966524313819, 0.10234721689079706586e+01, + -0.87007726800696016944, 0.17761585998668821818, + 0.74021217027819286027, -0.10490339193736457624e+01, + 0.67594883219328927293, 0.29082906482950215965, + -0.97177079871649219012, 0.10121226494479407254e+01, + -0.19390351290956070462, -0.70535773051624794938, + 0.11531023317669937267e+01, -0.61499459769344499982, + -0.34090372422395659457, 0.11225292317359976124e+01, + -0.92143544697338430893, 0.39662737866369292272e-01, + 0.97411794186844957721, -0.11058789699561166753e+01, + 0.38052812401701074929, 0.76782013694651862767, + -0.11901939958617857584e+01, 0.65445046906223636185, + 0.55497689594376398148, -0.12097866256000011642e+01, + 0.85635349468153065811, 0.37286274812058300965, + -0.12016025484105314902e+01, 0.99355941404354153335, + 0.24594484754213258304, -0.11969466028655650902e+01, + 0.10761857566323929092e+01, 0.19042835416113179647, + -0.12178108110559568988e+01, 0.11091122487707558708e+01, + 0.21905952472682069243, -0.12742957804017986945e+01, + 0.10856498842861346255e+01, 0.34359893238912980751, + -0.13605649463865636672e+01, 0.98310356691336864277, + 0.57220591786785957034, -0.14475128054536199329e+01, + 0.76216800732037892629, 0.89828690873657068838, + -0.14727349989327196411e+01, 0.37576867970843691458, + 0.12776325204385075018e+01, -0.13343169889840049702e+01, + -0.20238815462391118727, 0.15959407589609979627e+01, + -0.90625428451970935217, -0.91886051491008713388, + 0.16462070249419706869e+01, -0.10672365001592190592, + -0.15584537540766623120e+01, 0.11696955588525104197e+01, + 0.95481323434456599752, -0.17052851390036378731e+01, + 0.44828641024092764911e-01, 0.18011824327727046224e+01, + -0.91042480021321614547, -0.13550409383612074254e+01, + 0.16276391746850586983e+01, 0.76175660545958290282, + -0.19310886455797671157e+01, -0.13840855488105808374e-01, + 0.20663459713149237018e+01, -0.55830867571029618723, + -0.19373976811932493991e+01, 0.10915047812066909216e+01, + 0.18548742331582457332e+01, -0.13756678049605455261e+01, + -0.17163447145610186695e+01, 0.16167252774603797505e+01, + 0.17910100552597951751e+01, -0.16128035827046438566e+01, + -0.19241542581717629989e+01, 0.15185236549343474888e+01, + 0.23136243035328054596e+01, -0.10364833672691426969e+01, + -0.26748640657451092650e+01, 0.22210725825618962692, + 0.29460326247680828082e+01, 0.11957679360393949075e+01, + -0.24224151847462160880e+01, -0.27290298118522215987e+01, + 0.68959713147942580669, 0.34665816758550032084e+01, + 0.23281728944946236126e+01, -0.14035933029372567038e+01, + -0.39651335880013607316e+01, -0.31671058933260116675e+01, + 0.14994211764325621195, 0.36309826521748576056e+01, + 0.55213275936219901041e+01, 0.55198187849067039679e+01, + 0.43310972634011637439e+01, 0.28386158783998389765e+01, + 0.16021853333405922104e+01, 0.79255904258370046822, + 0.34738574455294601862, 0.13587038892430991499, + 0.47637397498477770941e-01, 0.15013467163735829540e-01, + 0.42591425002018856033e-02, 0.10878511417583430505e-02, + 0.24996102295927113621e-03, 0.51576160464748607563e-04, + 0.95296298922013251270e-05, 0.15705405681767965572e-05, + 0.22967475856280587278e-06, 0.29604053541559010250e-07, + 0.33343736840773665819e-08, 0.32453662610583801986e-09, + 0.26900789102381135126e-10, 0.18621900964536584299e-11, + 0.10476795404098179779e-12, 0.46029703534994373301e-14, + 0.14817788104904817198e-15, 0.31091685029792417895e-17, + 0.31914749621199350712e-19, -0.54082328687370517101e-02, + 0.96852240284014245314e-02, -0.92719701021588725454e-02, + 0.68336556178317442098e-02, -0.55409165667599678470e-02, + 0.27564039727983402975e-02, -0.16526780642575258223e-02, + -0.50682700340212792200e-03, 0.72612743034748412473e-03, + -0.19560326337333708117e-02, 0.14057049095298227923e-02, + -0.21783185422375238131e-02, 0.15516942494188934714e-02, + -0.26023455749871042021e-02, 0.24964805320119298759e-02, + -0.41430944995608431566e-02, 0.45293836736033342427e-02, + -0.64073985871326401623e-02, 0.67144970209876125161e-02, + -0.80909811638974933612e-02, 0.79851147579943059646e-02, + -0.78767640389291390668e-02, 0.92269635777986434844e-02, + -0.35960845775587172574e-02, 0.16611015525976713381e-01, + 0.11889818719143645590e-01, 0.42842008609955288534e-01, + 0.46990871099149268686e-01, 0.85808911076473148860e-01, + 0.74406024211069093921e-01, 0.84510007789917282461e-01, + 0.20038027174562138971e-01, -0.82706970652530360788e-02, + -0.70355922213597432702e-01, -0.41959540265442650531e-01, + -0.13539599506120053238e-01, 0.52257394375963849009e-01, + 0.40966669443991868271e-01, 0.53966188529951343231e-02, + -0.52305616278785202478e-01, -0.24443755011838610991e-01, + 0.11258544797566407553e-01, 0.56607670186256425771e-01, + -0.11527088499437211644e-01, -0.25539715071700084398e-01, + -0.34247984488687620297e-01, 0.43980210543709555293e-01, + 0.20160902369011753088e-01, -0.19210508868667444671e-01, + -0.31235975274937599622e-01, 0.11086610680406687804e-01, + 0.41765478204930067685e-01, -0.23236869729048190147e-01, + -0.23897608825361172508e-01, 0.78240026967969326932e-02, + 0.31161887522496337088e-01, -0.10294692932778130162e-01, + -0.37428807362261617975e-01, 0.31335145298542345371e-01, + 0.99248088044564912458e-02, -0.11208011431129753788e-01, + -0.24822637666170495330e-01, 0.28590769919141320599e-01, + 0.13543732374952689723e-01, -0.40368498489177839783e-01, + 0.18221392510312430651e-01, 0.89267039300463882356e-02, + 0.44019766999740953320e-02, -0.35298922197533187661e-01, + 0.32115747059888455350e-01, 0.51026097910418276651e-02, + -0.27552726497047406312e-01, 0.97557995459783015263e-02, + 0.16633687285993101895e-01, -0.12471577390624497342e-01, + -0.14554140818088513731e-01, 0.23628705589973583723e-01, + 0.67597833654299273147e-03, -0.28912388944669777102e-01, + 0.26603553926562904797e-01, 0.13531020058661913374e-02, + -0.20278828681698658071e-01, 0.10516466716254377345e-01, + 0.93513739608440758083e-02, -0.90216007690695730614e-02, + -0.15669295742028493956e-01, 0.38109469585641098099e-01, + -0.34113936845136666465e-01, 0.94436909417508051873e-02, + 0.77509851848447733347e-02, -0.14783992257686407129e-04, + -0.21570864513812584851e-01, 0.31356388435697879480e-01, + -0.18676459861876174018e-01, -0.20558514269167836412e-02, + 0.81867923045227993656e-02, 0.57110762050014808947e-02, + -0.22979075786242079971e-01, 0.22547430239574537542e-01, + -0.12296850262179270276e-02, -0.23932036647923395772e-01, + 0.32518012029852855216e-01, -0.20567294014936173679e-01, + 0.23142076618038165924e-02, 0.46512690164607264215e-02, + 0.31042807027449295827e-02, -0.13171275156129440623e-01, + 0.10186047568897063295e-01, 0.82521091772340821047e-02, + -0.29352932530689400392e-01, 0.36328256578100501240e-01, + -0.23786370071806145488e-01, 0.17905015539806982353e-02, + 0.12740974892809862895e-01, -0.10670389877491486333e-01, + -0.30714618811046776568e-02, 0.14628198678642428954e-01, + -0.14042537346207341342e-01, 0.29176307448618870634e-02, + 0.75733676301979278161e-02, -0.73865079695198676557e-02, + -0.39715511489383037783e-02, 0.16726037261017841912e-01, + -0.19478840971137219990e-01, 0.83356912383541949957e-02, + 0.94105234823635853375e-02, -0.21177672153602413591e-01, + 0.18251472380976012377e-01, -0.25048036659290947442e-02, + -0.15583863219059714694e-01, 0.24323022068251268918e-01, + -0.19248680515599417978e-01, 0.51943294931750634211e-02, + 0.76730901970611066140e-02, -0.11772858869413154945e-01, + 0.67668132370571829060e-02, 0.84175996929705416277e-03, + -0.36320635675128375500e-02, -0.12072397041091626098e-02, + 0.95662362759396796230e-02, -0.14000551803545589410e-01, + 0.92104219622864240413e-02, 0.34371374489841439656e-02, + -0.16701465786362522381e-01, 0.21845789077730746325e-01, + -0.14719227598933057322e-01, -0.16399843385312240333e-02, + 0.18445109671466491247e-01, -0.26733792725702771459e-01, + 0.22431400569254026506e-01, -0.88528173133626143071e-02, + -0.57673207206855861204e-02, 0.12993418663810339664e-01, + -0.92112876305978537428e-02, -0.29363318599270760850e-02, + 0.16324633649999836793e-01, -0.23934759118293787855e-01, + 0.22488655889114701758e-01, -0.14008476702861814497e-01, + 0.38009206610514524594e-02, 0.27614537837303138046e-02, + -0.34511769008084875084e-02, -0.25368514797147493842e-03, + 0.45335442596715859118e-02, -0.62121014843853896922e-02, + 0.46543897943862296354e-02, -0.21860065980350111559e-02, + 0.21741438821004334045e-02, -0.67692178213874252060e-02, + 0.15082908198152677332e-01, -0.23609388878134327655e-01, + 0.28011208001212376667e-01, -0.25839832274981454352e-01, + 0.17971561668349386731e-01, -0.84721850376398167431e-02, + 0.23365683537623902800e-02, -0.28746013587476432032e-02, + 0.96454273691223141318e-02, -0.18612619168080171694e-01, + 0.24002028948790152252e-01, -0.21409401238604165718e-01, + 0.10102453982591838577e-01, 0.62475111987400980262e-02, + -0.21236865204825483566e-01, 0.28613392828718820643e-01, + -0.25350012185379782598e-01, 0.13050027386396913232e-01, + 0.26678997598636646632e-02, -0.14838187304309500419e-01, + 0.18305916107247747343e-01, -0.12158699080935815584e-01, + 0.35542788214235403416e-04, 0.11585206574653422740e-01, + -0.16523605904029528557e-01, 0.11796287609359369306e-01, + 0.89784196920124445963e-03, -0.15945589135387731872e-01, + 0.26350791604662159029e-01, -0.26977061164913412883e-01, + 0.16920888621999762708e-01, 0.13717953425252612382e-01, + -0.43477013608125489319e-01, 0.31497627198050062725e-01, + -0.14489316202246395326e-01, -0.20629582440749156397e-01, + 0.40379796183642416296e-01, -0.55325614968300587670e-01, + 0.39908133615245956760e-01, -0.20727966300937341465e-01, + -0.10491288121851021983e-01, 0.17350581661967554026e-01, + -0.12047464482065811664e-01, -0.24185508213520185566e-01, + 0.55180917259951452192e-01, -0.81332270713869864176e-01, + 0.64512240309077567568e-01, -0.23186030340831772362e-01, + -0.49275188856506287050e-01, 0.10430361900116058571, + -0.13598775075014116198, 0.10978303365362128419, + -0.56311635895959548381e-01, -0.16527786577339810548e-01, + 0.51592285433102590131e-01, -0.46248458129106870262e-01, + -0.18960927307903517602e-01, 0.93333083865697552550e-01, + -0.15435668080306083616, 0.14450615754260565105, + -0.76820989469148476259e-01, -0.43215676661403391867e-01, + 0.14327954858912841929, -0.19428436744864344132, + 0.15140518095325197767, -0.53172578364917885696e-01, + -0.70931895574722819697e-01, 0.14060570535999120101, + -0.14089735228549460366, 0.56581681403850857259e-01, + 0.45463291021469877384e-01, -0.12620117874839373306, + 0.12246159590898224312, -0.55482799808029684141e-01, + -0.54586551197158821036e-01, 0.12747999914634727814, + -0.14213945356346910365, 0.75535744728972481488e-01, + 0.12578735053446431919e-01, -0.89675064294669995513e-01, + 0.98989188156999849411e-01, -0.66095178797094492062e-01, + 0.87648541043439023163e-02, 0.61737352957918637322e-02, + 0.18872838356672850396e-01, -0.82271960105231592419e-01, + 0.11233457780892013023, -0.88097445605107072009e-01, + -0.12776465390300278946e-01, 0.12229631299106033526, + -0.19448042456825015423, 0.16499689282595295103, + -0.68496702091745687024e-01, -0.50905185457264467974e-01, + 0.95582035754672722838e-01, -0.51216888434459553747e-01, + -0.71745349728483412410e-01, 0.17207980887801332948, + -0.19671729508423560495, 0.10748522822240233476, + 0.21514175755508374577e-01, -0.12672762334031406617, + 0.13165698754299831608, -0.71796313744251133437e-01, + -0.34522748259602858110e-02, 0.33386685950142578477e-02, + 0.61029116364223624791e-01, -0.15018469514213847460, + 0.15882218641600553966, -0.72173983729802354548e-01, + -0.81795484343590726950e-01, 0.17869670673253040816, + -0.16233002663876086591, 0.24773808496751145020e-01, + 0.11406820967746481021, -0.16804331653644646871, + 0.87269482959087985030e-01, 0.32697614968062740926e-01, + -0.99268761266063099136e-01, 0.37736392929998592571e-01, + 0.74741767170781320262e-01, -0.14316393193409718276, + 0.77512294248699917243e-01, 0.52990241825210386561e-01, + -0.14258321431575435301, 0.81257852585614298579e-01, + 0.70425091451980184609e-01, -0.19348057172760965705, + 0.15332521477445076874, 0.45494531039934763342e-02, + -0.15658900734018474377, 0.15352696270707077986, + -0.32213361350356871371e-01, -0.83161736457781187948e-01, + 0.45920985604959226045e-01, 0.91599477654418559602e-01, + -0.18717143434085034559, 0.95881788437477036280e-01, + 0.10204033515035672297, -0.23393436082439192369, + 0.15250725776502607745, 0.37097043862294482031e-01, + -0.14724495867316653164, 0.55717410779413070743e-01, + 0.89628236754058746016e-01, -0.99767089026490216042e-01, + -0.84422446803042783259e-01, 0.24415209046018285233, + -0.19373094055525738599, -0.45047094794396037865e-01, + 0.19250247528477396064, -0.10769600322424512095, + -0.86131540976016857103e-01, 0.94383200288028865077e-01, + 0.10129235536887147562, -0.25600998863646362569, + 0.12432700946603046643, 0.13370349405004133825, + -0.20228498117203860818, -0.97532528363960240697e-02, + 0.16722011449133206140, -0.33752228630765136741e-01, + -0.22012707957132965353, 0.19415432389268011404, + 0.77417250168173301628e-01, -0.19592490894919445399, + -0.47115275147837053227e-01, 0.26145319698951019483, + -0.10900139160934618765, -0.17596065544266720204, + 0.93703580528928534510e-01, 0.21360963553803916093, + -0.20654595291083271968, -0.15866431540794428967, + 0.25201439588179092022, 0.63378672655637360855e-01, + -0.17749078615861058061, -0.18450871112794006712, + 0.32881537994009546466, 0.48103781363353352585e-01, + -0.23304203210641222244, -0.14560640134320904093, + 0.24232779726633077444, 0.21190763815906218936, + -0.26917409133976244462, -0.22502192691831912619, + 0.13838090590581927919, 0.31812313964679367340, + 0.13499105803194018632e-02, -0.40003042680991746094, + -0.12207333690348623478, 0.20868439653722264948, + 0.39489705037375827379, -0.27363547942901179227e-02, + -0.41048732615893396281, -0.29783377506635255738, + -0.58564799370916700849e-01, 0.52665850729859864376, + 0.35398259720824631902, 0.26041932352302027409, + -0.33131041303930114372, -0.55529756162876497960, + -0.66950315911672619862, -0.66910865983687184411, + -0.35772013122739698687, -0.39169880273483714817, + -0.46624622888301915646e-01, -0.17327019986471006718, + 0.34354490887727989756e-01, -0.47801528309840198017e-01, + -0.64763945836327418623e-02, 0.30065426043906579023e-01, + -0.51833760131105702240e-01, 0.57370192513415310676e-01, + -0.49712089437763125332e-01, 0.30285433482570966318e-01, + -0.36654387469412688487e-02, -0.24267224320014615935e-01, + 0.47601962061581432062e-01, -0.61069934175482468164e-01, + 0.61493000469553936449e-01, -0.47933412344684463158e-01, + 0.22297901249928833017e-01, 0.11365324205233742760e-01, + -0.47233435800680970140e-01, 0.79045480096600589937e-01, + -0.10094285185092832791, 0.10874895004373624774, + -0.10052325330573855244, 0.77087659394687035874e-01, + -0.41782370460296154591e-01, 0.52664913981705079038e-01, + -0.39680975087527027567e-01, 0.57928943555243909980e-02, + 0.59862859864703660273e-01, -0.77675751715912053075e-01, + 0.11399459654324964331, -0.94582898710832821743e-01, + 0.92671416426138561451e-01, -0.41183061319976566050e-01, + 0.19315042407062558288e-01, 0.36364590784827705017e-01, + -0.46176609462767997938e-01, 0.76313229724180434155e-01, + -0.52668555624204332899e-01, 0.48655465195417059443e-01, + 0.23404294468478401871e-02, -0.20829864871923630537e-01, + 0.69744453543648221583e-01, -0.70343035927629554704e-01, + 0.86220015680868483665e-01, -0.55101844937265623270e-01, + 0.16987136939016902332e-01, -0.95563980507474520498e-02, + -0.16290029706327369130, -0.11804277171463717355, + -0.58565869132742598424, -0.72082131391373482909, + -0.14274830276519339112e+01, -0.17789086357988503906e+01, + -0.20373419323674455406e+01, -0.18088960340082356204e+01, + -0.66828694971458302287, 0.36074630520446815396, + 0.15423177235215632663e+01, 0.11501097713061227967e+01, + 0.17353448910023860918, -0.10831887869731946505e+01, + -0.11799113733209884991e+01, 0.95970445547340493819e-01, + 0.10046222618641840185e+01, 0.85588584106897902526, + -0.54613076630707557690, -0.10882650325062199759e+01, + 0.25835625231044153510e-01, 0.83366280426426242478, + 0.64005610714286853558, -0.91522288101807813820, + -0.58314975162157245414, 0.52586896127972249104, + 0.71072265248417687555, -0.24095377167358331127, + -0.10245657430691497147e+01, 0.58775841016829200036, + 0.52921017877358467185, -0.12545343220014268382, + -0.82604297045645669328, 0.33604052013473623139, + 0.80832861292117874630, -0.67161076950996301260, + -0.29675285617335239730, 0.29589247933541329427, + 0.60891969323190675567, -0.74270869891633928273, + -0.22495520311340361230, 0.83066198115441225447, + -0.26900236258888238217, -0.40070844412709655247, + 0.86946528679510470816e-01, 0.66160688667292288923, + -0.60257526135095451636, -0.26437335819591067931, + 0.77255989184968265615, -0.31280189815232550821, + -0.35073886398663284281, 0.27735038064115147272, + 0.35106470252022886624, -0.55394304244679559712, + -0.38781649602113062170e-01, 0.72348423858689614452, + -0.67408330240708347336, 0.11971278881724346441e-01, + 0.42932522733885569721, -0.17523273021239169078, + -0.32774962401413998414, 0.35286978713246097694, + 0.20272380147188556743, -0.70209943403214458701, + 0.56948527306310603446, 0.54077811546426379774e-01, + -0.48824323793269308602, 0.31215298743415026417, + 0.21121789506085672516, -0.46580407462215489556, + 0.19576752049714193915, 0.25634021835689613233, + -0.34935938163058444239, -0.41556703519743956599e-01, + 0.51279283764186200933, -0.55297770353497799345, + 0.82490564163966259570e-01, 0.49375413068839224540, + -0.68655033584066571528, 0.40216061356678439731, + 0.19804555059330652966e-01, -0.15861143156041584978, + -0.63870540779120438257e-01, 0.34677084848708078502, + -0.31633735373539140223, -0.88009171423886145558e-01, + 0.56339450322478767941, -0.70829747767128325986, + 0.39534051620120813642, 0.13480557616164393075, + -0.47630455625257328567, 0.41259516141690122382, + -0.63665970263446627908e-01, -0.23439844698600217909, + 0.24081491405285421203, 0.89554912168971420594e-02, + -0.24755227661022083385, 0.23550903658348232295, + 0.39787354382754568094e-01, -0.34373543280463503269, + 0.40488160477028345419, -0.13075373428041889290, + -0.30102842368484583613, 0.58748355504982607833, + -0.51737844228213658582, 0.13551102086866553820, + 0.30756132650410067386, -0.53015765518505320042, + 0.42484950968740925470, -0.10558356979341758375, + -0.18460717229467407674, 0.26607890256376687255, + -0.13153328678339429314, -0.61252204799444917582e-01, + 0.13423925836521677368, -0.19378370949873737622e-01, + -0.18348459346538595338, 0.29515882898214396146, + -0.18639354372072761135, -0.11109228470657113441, + 0.42571492233975521957, -0.54864636170411584803, + 0.38180603917640382194, 0.19502870162477073737e-02, + -0.39134665949258240492, 0.57251386434182294227, + -0.44838625580852975450, 0.10061416778488170565, + 0.27186473750836631647, -0.46435415101727656184, + 0.38903927350053207901, -0.10777106597832414314, + -0.20857158976873010903, 0.39189236771466817721, + -0.36236466635331215924, 0.16762400955100217881, + 0.67139285316066457665e-01, -0.21461595972721270176, + 0.22380594300076053771, -0.13168587354631799968, + 0.31762741915966383188e-01, -0.78138295444268326094e-03, + 0.54478618121820032716e-01, -0.13606956932008379413, + 0.16368399448693055076, -0.83348702838610566612e-01, + -0.85832842828264685475e-01, 0.26280830326313908696, + -0.34597475624752921375, 0.27937277592552273164, + -0.85771907162338165143e-01, -0.13569306393123065080, + 0.26496715195379483276, -0.22286455030666296739, + 0.21604051121166676502e-01, 0.23995480951649189594, + -0.42017845861952313191, 0.41033924130433341304, + -0.18931687518567613671, -0.15777215139704522939, + 0.48015821495702165622, -0.62968710423330964687, + 0.53508588136063217622, -0.23496120396733677360, + -0.13637964172406252805, 0.41345122860207178528, + -0.47470181692770829773, 0.30113828206436837887, + 0.16963467558630186682e-01, -0.32102808249354669590, + 0.46012563482338569854, -0.36044622529408143485, + 0.61433002682137659300e-01, 0.30278056129772923377, + -0.56387656336039027050, 0.59740056255627027593, + -0.37971233688072608681, -0.12848209518892142467, + 0.64499799819646574939, -0.68332983095360710912, + 0.54499199760802208292, -0.91306299929195866572e-01, + -0.27984047702630421295, 0.59178554205190814219, + -0.50448422717453456077, 0.25597511176725007420, + 0.21687584135236256944, -0.47122573949050988729, + 0.54603891649706659539, -0.18136748796980933784, + -0.27197543628633130686, 0.78382230686090548222, + -0.88810410044535192942, 0.68894015736053293431, + -0.55374536781855797363e-01, -0.53162020411295118905, + 0.97861355144439687859, -0.86364761317727600787, + 0.42675555494845268667, 0.30129953152501365299, + -0.74102184790902858591, 0.82570070834568909390, + -0.28635741354248683832, -0.42835700557994049742, + 0.11308241997549939306e+01, -0.12279478659731151158e+01, + 0.80214527848380345887, 0.17107366243097443803, + -0.10311637002383295947e+01, 0.15296415631204329788e+01, + -0.12073362511484526660e+01, 0.40928154425437995867, + 0.64192450125193245558, -0.12025166832009968054e+01, + 0.11667911008196076850e+01, -0.37874642645372097460, + -0.52228903462846709704, 0.12058242573498012540e+01, + -0.10890792448385702151e+01, 0.42136185862536712499, + 0.60195245949190345769, -0.12071898864855632461e+01, + 0.12417596869954830030e+01, -0.52346225352415332033, + -0.31284782593512072690, 0.94648880348969122167, + -0.83882394112255087570, 0.30692074841154237674, + 0.41448808863624719834, -0.60592691005251975156, + 0.27875845848631830570, 0.53810251000405107114, + -0.10782598907534579613e+01, 0.10781967609692031385e+01, + -0.25688019598817241063, -0.73411271874900962953, + 0.14432353595740776697e+01, -0.11997423202271602083e+01, + 0.31446288833561475418, 0.81722893192171386367, + -0.12432211572086371287e+01, 0.83006202396783779207, + 0.34056275416851444771, -0.12881107343398126019e+01, + 0.15260807226499495393e+01, -0.69873768672586977768, + -0.44014178649418239653, 0.12760010679932523026e+01, + -0.10789550382576451604e+01, 0.25836098437629956281, + 0.64793538837212349968, -0.69714058198334494243, + -0.22048236248151100933e-02, 0.10390030037640771710e+01, + -0.13155516569922347525e+01, 0.63796518754017195185, + 0.76318453244508099864, -0.16692824209833889704e+01, + 0.15278466023985217692e+01, -0.23888709502850669075, + -0.10286505262412095618e+01, 0.14562814767737610744e+01, + -0.57525571928032337432, -0.63690743462539067821, + 0.12587569417512316505e+01, -0.55855484155956869330, + -0.65892164163724187276, 0.14159537223713456466e+01, + -0.78634848257177625275, -0.54176266695834351950, + 0.15041503054216454061e+01, -0.97338243412579694702, + -0.47262839238991855018, 0.16756660628585595685e+01, + -0.13040916664297654837e+01, -0.18318081620419227051, + 0.15701036490589950212e+01, -0.13904859431035405670e+01, + 0.50803465484967585963e-01, 0.11790705769264040459e+01, + -0.81066764874423613563, -0.63099749722122122630, + 0.17098719159688782199e+01, -0.94331044643306538600, + -0.90043596183345364636, 0.21315711515827429068e+01, + -0.12969744882608329473e+01, -0.54343884111994178454, + 0.15286175763143083906e+01, -0.46131393449141322449, + -0.11411751931529217075e+01, 0.13554386472484798443e+01, + 0.43957946323268204392, -0.20658842236622363409e+01, + 0.16643359306505129958e+01, 0.57018766129577591606, + -0.18695830928431909079e+01, 0.86151119272861753640, + 0.11937670508598132724e+01, -0.13281510182945257537e+01, + -0.64512014066005352042, 0.22709632390419645098e+01, + -0.10729324801178548032e+01, -0.13716161023310293743e+01, + 0.19320060748825527153e+01, 0.28661692109129494055, + -0.19205812599320464251e+01, 0.60929010060288302242, + 0.19346245708984899370e+01, -0.16920217373173458419e+01, + -0.10070066747635977311e+01, 0.21881080191264241641e+01, + 0.23258153628981387273, -0.23555943826267822239e+01, + 0.81351221119582028951, 0.20381995897197713319e+01, + -0.11869926510456527691e+01, -0.19516118518134792925e+01, + 0.19848108068417851246e+01, 0.15363714653320876824e+01, + -0.23273506940948962551e+01, -0.95728468924929854822, + 0.21975006081274841563e+01, 0.13732846334819051037e+01, + -0.28232445988667942416e+01, -0.88415267398526353748, + 0.26316113303146071445e+01, 0.12775709053454114006e+01, + -0.23624167422052004817e+01, -0.20884265767737408837e+01, + 0.26131482623978805613e+01, 0.23286914666268376806e+01, + -0.14181272144264438495e+01, -0.32180032907478683946e+01, + 0.99975919824959610938e-01, 0.38305923916966553300e+01, + 0.14060645035385128665e+01, -0.22326223188668867792e+01, + -0.38986023584348763471e+01, 0.11902751977512103509, + 0.38469720772477384862e+01, 0.33995071592426078233e+01, + 0.35406117889498170404e-01, -0.46465794441487666688e+01, + -0.41520894174491802531e+01, -0.20807831796538627245e+01, + 0.29515405017344833460e+01, 0.57021516884470022646e+01, + 0.67794358169281103699e+01, 0.63866322371111809986e+01, + 0.40575167088236536728e+01, 0.33296377025898871160e+01, + 0.10805140701190205643e+01, 0.11709466637635093100e+01, + 0.10143027767080460555, 0.19032233028707301603, + 0.18525454932889501292, -0.27318286160200572210, + 0.38712725286325955221, -0.39704018681037350769, + 0.33641789990151865775, -0.20933111941301316139, + 0.42280739371065266530e-01, 0.13228437543795384945, + -0.28179585104239290860, 0.37683622654315412914, + -0.39957085403561265480, 0.34392320731073111606, + -0.21946770142252675084, 0.47135593897185322498e-01, + 0.14219569206848231557, -0.31528607299925476282, + 0.44060131739712204979, -0.49550568618273804766, + 0.46893493924591855837, -0.36448160167078635929, + 0.19893910832916247844, -0.10165349521356512041, + -0.71694622650971692734e-01, 0.21622443687721115690, + -0.44108501738713568052, 0.47181133446220596683, + -0.53882101777274571397, 0.39590642635581774211, + -0.30484686388485554565, 0.48613990024417880198e-01, + 0.90039315185071369663e-01, -0.31901398037808748054, + 0.36075852940584723916, -0.44151444881382873042, + 0.31246012930478694880, -0.23311715041236755197, + -0.13347152179202877512e-01, 0.14368364951462700430, + -0.36275161306165210062, 0.39396758460497399712, + -0.45139900243276420699, 0.32219584348840341059, + -0.15070368318416171860, 0.65051578266746373780e-01, + 0.57093592241761093042, 0.30871431753147454691, + 0.20748933537496898616e+01, 0.22609305149763891940e+01, + 0.48928104435067512057e+01, 0.58207894107617468293e+01, + 0.68563153005701549247e+01, 0.60121682617596459153e+01, + 0.21974037155726469095e+01, -0.11391533028624514223e+01, + -0.52215199046287263940e+01, -0.37613590886821346437e+01, + -0.62301195210387327883, 0.36062385098881852841e+01, + 0.39949888220237497194e+01, -0.44417462571145732708, + -0.31726129088803687317e+01, -0.30668299587805574191e+01, + 0.20460036324347337100e+01, 0.34144095625858819076e+01, + 0.85795968659850757598e-01, -0.28903127236876318129e+01, + -0.20994447120115187211e+01, 0.30961648457523969213e+01, + 0.18219985541062659884e+01, -0.15723445255892056771e+01, + -0.25882507391206490688e+01, 0.10315861106676702530e+01, + 0.32026214585712002858e+01, -0.17892873604623886763e+01, + -0.18755620031560960026e+01, 0.45932506711661419407, + 0.27803005585491273877e+01, -0.12080594215741027320e+01, + -0.25647260543706402736e+01, 0.20869165570531715836e+01, + 0.11367243520190466466e+01, -0.11093671207483724039e+01, + -0.19516518407922263112e+01, 0.24518170964226371211e+01, + 0.71363667301275779398, -0.26792010230474896382e+01, + 0.76262308237716280868, 0.14955935119575118897e+01, + -0.45907440332429100271, -0.20472489652646475022e+01, + 0.18747398623275857155e+01, 0.97842274320471944726, + -0.26338767886443257282e+01, 0.10632170017220285985e+01, + 0.11764081841421603070e+01, -0.94942934977030457588, + -0.11438344594189269188e+01, 0.18300638514676212942e+01, + 0.12318245949454191546, -0.23794634481794458836e+01, + 0.21871899479385130682e+01, 0.38677874764117353701e-01, + -0.15180962311966355038e+01, 0.66117964011162366766, + 0.10416317814512832118e+01, -0.11709336035454400715e+01, + -0.62332279118580102839, 0.22198245001455849668e+01, + -0.17103139702659797550e+01, -0.43089395650780681901, + 0.19245891349761234945e+01, -0.13651358272257179127e+01, + -0.37894845361952139706, 0.12522883703545810707e+01, + -0.40456829964394747101, -0.10298535871898564231e+01, + 0.12499430930119976857e+01, 0.14889180778894792190, + -0.18157949108262183557e+01, 0.20339857440528557042e+01, + -0.53374057122527607255, -0.13443839480755350735e+01, + 0.19696963440377122101e+01, -0.10335486294211682079e+01, + -0.33752933862823603084, 0.74257564157922806292, + 0.69082096445670621021e-01, -0.10900190428768758988e+01, + 0.10633531854558280205e+01, 0.21706695340639531322, + -0.17506668055580787424e+01, 0.22000465200515111341e+01, + -0.11453821165070541266e+01, -0.61457727528844796616, + 0.17267587380853084422e+01, -0.14765048385673327225e+01, + 0.26633784119329667606, 0.77479924964458701808, + -0.84151750164571192947, 0.44569101740856806315e-01, + 0.72546073460735616134, -0.67474933070948750480, + -0.24141472002528358010, 0.12399914263425368954e+01, + -0.14215958363733693925e+01, 0.47912539525768821358, + 0.98881039899736855592, -0.19709583670373187481e+01, + 0.17576069389976476387e+01, -0.49839949057429200341, + -0.97474614059271869060, 0.17201334541836250658e+01, + -0.13804495052854017789e+01, 0.33078726743873276828, + 0.61942692883337324705, -0.87665044861999918968, + 0.41706710188885942614, 0.22922166658865081312, + -0.46984085479400677920, 0.75918543177691352741e-01, + 0.61650497595730402445, -0.10100579057440925990e+01, + 0.66912826011230541745, 0.30167907604328786375, + -0.13353568944086269266e+01, 0.17364348334177492905e+01, + -0.11815476840051732932e+01, -0.87647883279351745944e-01, + 0.13656388200862832338e+01, -0.19429927860941842432e+01, + 0.14971089499472611806e+01, -0.30524712211194476863, + -0.96742091545433717137, 0.16333214505779751757e+01, + -0.13982490962220774922e+01, 0.46461095166780091992, + 0.59746771436530676791, -0.12288342685643591778e+01, + 0.11602352936064093125e+01, -0.54897709935023941696, + -0.19291171945572491153, 0.64413040854944947355, + -0.64056627754933725960, 0.30835172893743656442, + 0.36187634343308468232e-01, -0.13631324751043627508, + -0.62332258764202730372e-01, 0.36839601596176613230, + -0.50766561126409281979, 0.29530759246255439132, + 0.20877028649297799112, -0.74086632480614533769, + 0.96680305832169444180, -0.70607918131994895639, + 0.37758461282347811905e-01, 0.70405292450208600830, + -0.11189492731235164413e+01, 0.94282229174698728436, + -0.21965452390143061501, -0.71779630410699413190, + 0.13914564390302528452e+01, -0.14336399036377116545e+01, + 0.76707928444029271908, 0.32970486039313046112, + -0.13597294774703525544e+01, 0.18322099918351235637e+01, + -0.15120940281886470213e+01, 0.52769218089459202226, + 0.67454747727015673675, -0.15468734801975423387e+01, + 0.16885035460415342978e+01, -0.10422522346692741912e+01, + -0.85150142244654947188e-01, 0.11587997858130363316e+01, + -0.16705760398013342893e+01, 0.13700840164420593492e+01, + -0.38646395391373672412, -0.83411540206806644715, + 0.17293532367994377541e+01, -0.18816809938049321449e+01, + 0.12079066079434899184e+01, 0.21274728994273847671, + -0.16807988059184229002e+01, 0.19847020021350136876e+01, + -0.16713096089024521707e+01, 0.39411149644052784202, + 0.78218856391936142369, -0.17846363982885682375e+01, + 0.16554649580761506833e+01, -0.92650315076500655564, + -0.52608058912639243943, 0.15053954560797253581e+01, + -0.19734396237954132669e+01, 0.11809919526483405594e+01, + 0.47330025934653879860e-01, -0.15946736788890618630e+01, + 0.22064935275951116367e+01, -0.20128286525566427834e+01, + 0.59396503828663460567, 0.89653526964652541231, + -0.21839400190281970104e+01, 0.21290425230957263913e+01, + -0.12088867798816731458e+01, -0.58167059259806896954, + 0.18303667480005865187e+01, -0.23130898417655552102e+01, + 0.12562203056616931818e+01, 0.35616896935834574389, + -0.21419428287048800641e+01, 0.26471044593600736583e+01, + -0.19990142763961897820e+01, 0.79755544908047797809e-02, + 0.18368698307321154051e+01, -0.30129431607283998495e+01, + 0.23984217680405746087e+01, -0.76422698782677378482, + -0.14723884205781354595e+01, 0.26136959302628914870e+01, + -0.24777722195417188900e+01, 0.67758263507657434666, + 0.12967156183037580330e+01, -0.27527036683439645159e+01, + 0.23653390329815899840e+01, -0.79510214883796626051, + -0.15052078860015689621e+01, 0.27236154786680661921e+01, + -0.25940332321988188724e+01, 0.75523595625493877836, + 0.12020383123987983254e+01, -0.25168403355592019466e+01, + 0.19365268305209266675e+01, -0.32286306493226218928, + -0.16740871110968083002e+01, 0.22410926205484891227e+01, + -0.13875566224544557681e+01, -0.80342228403186799479, + 0.24125635399030360695e+01, -0.27289239289294355828e+01, + 0.98597330673987515492, 0.12898125568553269193e+01, + -0.30278693176671809262e+01, 0.25672645749026345996e+01, + -0.59794572318290406532, -0.20100574631514405155e+01, + 0.30074635589924891832e+01, -0.20930791015409493383e+01, + -0.57833677862771970535, 0.27026738413959368046e+01, + -0.31895640716480584409e+01, 0.12267242702418625910e+01, + 0.13489370574810268799e+01, -0.30956042237459464594e+01, + 0.23103175704622240794e+01, -0.62572555549660888174e-01, + -0.22931248645082473736e+01, 0.24364397295165312052e+01, + -0.62869096957740044918, -0.21199562220772238952e+01, + 0.31004471670109179371e+01, -0.17778469994610763827e+01, + -0.13746366117999238021e+01, 0.34673323088289103033e+01, + -0.31902620576332072488e+01, 0.26435358656526902754, + 0.25524543641148231821e+01, -0.33701853436092887861e+01, + 0.11107724443506161727e+01, 0.18400201750651292709e+01, + -0.32800230042123170726e+01, 0.14742695513581738354e+01, + 0.15892985527762704123e+01, -0.35219884800372720512e+01, + 0.20550387169297681389e+01, 0.11652409573247139996e+01, + -0.35787983538876408929e+01, 0.24349260271377048959e+01, + 0.91918257895400612423, -0.37559082844868392215e+01, + 0.28982393926967131570e+01, 0.54373197852310362066, + -0.36854207655119286535e+01, 0.30470239184403986599e+01, + 0.33350828023577677728, -0.33679074903315369127e+01, + 0.24483097386430641151e+01, 0.11579313145350675907e+01, + -0.39827492603741068145e+01, 0.24095597238874746360e+01, + 0.17715664695750292790e+01, -0.45680103177078095200e+01, + 0.25225013863859473418e+01, 0.18046402401614822786e+01, + -0.39738693468135060094e+01, 0.11499400724302224486e+01, + 0.29600869706636983025e+01, -0.36876481268477450115e+01, + -0.50992947295449531087, 0.44212860805035614220e+01, + -0.35856304744524578609e+01, -0.15660848030087299865e+01, + 0.44318738943305691080e+01, -0.17777104876247333820e+01, + -0.33308452056900144100e+01, 0.37337190905886425973e+01, + 0.10200642703604771988e+01, -0.50307242294635479141e+01, + 0.23184068601886633765e+01, 0.33647935254424954366e+01, + -0.45489576180985684672e+01, -0.89093593558822881118, + 0.48638993097317273495e+01, -0.17139906663774100437e+01, + -0.44358907516593246712e+01, 0.39090756572755727127e+01, + 0.25223684479376533574e+01, -0.53430868273616045627e+01, + -0.44736675195820324591, 0.54929264706433871268e+01, + -0.17352994290673771083e+01, -0.51529370196737929177e+01, + 0.31140440958096200497e+01, 0.44649188591408082161e+01, + -0.46478297951105354002e+01, -0.36596561645348861802e+01, + 0.53947022927631271827e+01, 0.26357093149159784851e+01, + -0.57162748318209208875e+01, -0.28209007887747139520e+01, + 0.63456855985586626545e+01, 0.24317712563913258528e+01, + -0.64560924772998831145e+01, -0.31148215394345855067e+01, + 0.58842029919653224823e+01, 0.46865775809407752561e+01, + -0.59167966767033988162e+01, -0.58868540839992222757e+01, + 0.35666652621979944016e+01, 0.77414231851558747977e+01, + -0.45002792288427961864, -0.88270404188484246077e+01, + -0.38275084395680454286e+01, 0.58008910249743781407e+01, + 0.90237440980255012590e+01, -0.14999960422919586533, + -0.91192089521657369033e+01, -0.85317004641829772282e+01, + 0.50649512844532174061, 0.10422388124769522477e+02, + 0.10720358148289355071e+02, 0.43313063146414778615e+01, + -0.66228253507279681855e+01, -0.13869483427702746781e+02, + -0.16394525526418600947e+02, -0.14917519563205896560e+02, + -0.10367974771591260463e+02, -0.72459987052426040322e+01, + -0.33343694985331575609e+01, -0.21898367294128608940e+01, + -0.65295246791900352079, -0.31000376110964622534, + -0.32670883584695875612, 0.31696407371420609600, + -0.45321798108838645680, 0.44390216522566100510, + -0.37297815330849670712, 0.23111262835973445107, + -0.48931479803548380558e-01, -0.14106959080366598958, + 0.30562633463380284304, -0.41447818349540233029, + 0.44932897754083478414, -0.40338993734473238550, + 0.28594411740336789229, -0.11747421901476129413, + -0.71192466033035597950e-01, 0.24694524262761963218, + -0.37802997777129243584, 0.44161877850881608998, + -0.42618172094113865311, 0.33484730432575371406, + -0.18377030222677648297, 0.61647018455799541814e-01, + 0.12035345953048140477, -0.24663505892539322462, + 0.42587555726449621840, -0.43192488699306952338, + 0.45610898918320985640, -0.30028671653274052744, + 0.18520444700370219948, 0.61224613519519389959e-01, + -0.20105403064708499139, 0.40078930838018522742, + -0.43040723803885722054, 0.47603200591399791319, + -0.33612506104950334862, 0.22836821818673536111, + 0.19411594773190446461e-01, -0.16873315980772804479, + 0.38237492824800645153, -0.42949912029637032918, + 0.48405145361650714353, -0.37101987784878442955, + 0.21343242720440147586, -0.11336199643826191941, + -0.42771586977914016758, -0.24376754385684487603, + -0.16856528802855488269e+01, -0.17686188516999232778e+01, + -0.39546507916071278466e+01, -0.46243385557920371198e+01, + -0.54990317569326991887e+01, -0.48153209863234751609e+01, + -0.17316997805589828818e+01, 0.87260172016362225200, + 0.42214001117957522524e+01, 0.29728846395509513911e+01, + 0.51791390759805411292, -0.28767196770838654452e+01, + -0.32347849087443072413e+01, 0.42698640763025441647, + 0.24408875320338054848e+01, 0.25686928309760563849e+01, + -0.17547506724121701982e+01, -0.26233768266133905556e+01, + -0.15064710320341695438, 0.23586372377610858031e+01, + 0.16783105484053242318e+01, -0.25207402362137729668e+01, + -0.13703026266444469083e+01, 0.11381247877848470473e+01, + 0.22118430794449275290e+01, -0.97050121990397064664, + -0.24266383828625222030e+01, 0.13219570674618312811e+01, + 0.15751884594865426248e+01, -0.39933116978509225481, + -0.22341174897240008157e+01, 0.10158240127693904942e+01, + 0.19734135188142474249e+01, -0.15717097137097697512e+01, + -0.10119498048582320493e+01, 0.98446851359115161717, + 0.14820373060117197905e+01, -0.19048227032494389199e+01, + -0.60012739405060022690, 0.21482397915209734407e+01, + -0.59352450904728315528, -0.12253636542002888099e+01, + 0.40179855943062664503, 0.16076945765721275539e+01, + -0.14789988449774744694e+01, -0.78836393858601960805, + 0.20984993151700472858e+01, -0.82843193744658516486, + -0.96975373686954446928, 0.78914623452383036994, + 0.89420468396209307205, -0.14576107123811588018e+01, + -0.83332294913218460386e-01, 0.18657269565270544476e+01, + -0.16884260373616868378e+01, -0.10968130885595767099, + 0.13046720099372277613e+01, -0.61904512184042426171, + -0.75269569698941019009, 0.87792456633617244055, + 0.52833251608856612869, -0.17688434383797662086e+01, + 0.13240149273055474843e+01, 0.42550821493407692264, + -0.16490705344288061340e+01, 0.12216295109247752304e+01, + 0.16755679579003202040, -0.87233694401301842269, + 0.21505057802465030181, 0.90164127827535411885, + -0.10371613405882642578e+01, -0.12517580807044445534, + 0.15029898319595023093e+01, -0.17155137448234722974e+01, + 0.54582732463835359482, 0.93936902908947117474, + -0.14344320987533045741e+01, 0.69537806306452010219, + 0.38050881025819116577, -0.67230218307781330900, + -0.14408927386318236274e-01, 0.87226162036271071010, + -0.88901642806564995514, -0.10148034892312511601, + 0.13043570860488398200e+01, -0.16491987034934945111e+01, + 0.80343212544072273307, 0.59682607551974653504, + -0.14682435724902866969e+01, 0.12439372823789056621e+01, + -0.24657146797052753584, -0.61512906027563918343, + 0.69610282670848677711, -0.80083472425975354980e-01, + -0.52003600401484062488, 0.47237364154784866610, + 0.26104164611999330914, -0.10524596983356033775e+01, + 0.11860867949888656003e+01, -0.41614009623653380743, + -0.77418626331324014167, 0.15758479407890959578e+01, + -0.14172697965155989230e+01, 0.41896115833688590824, + 0.75609591863005187751, -0.13524659181184253143e+01, + 0.10854947916866550806e+01, -0.25213359292038489690, + -0.49970191629509719267, 0.69859544688330565965, + -0.32507702725912274166, -0.19392422861441943605, + 0.38572305390968664174, -0.65497531098889769097e-01, + -0.49562112805282659833, 0.82034809431219457565, + -0.55711467650238644111, -0.21033961888101243565, + 0.10315344128160701676e+01, -0.13497744084028289180e+01, + 0.90873420056252351973, 0.99533101726753919758e-01, + -0.11094982351010305166e+01, 0.15560681298711791509e+01, + -0.11812260942020071930e+01, 0.21005934884951102393, + 0.82465352815481141047, -0.13695384155021150807e+01, + 0.11889005456305949959e+01, -0.44219987604972149642, + -0.41370091987718798920, 0.93250652077769102810, + -0.89663132872139994500, 0.43148399430074418914, + 0.13662820899805430686, -0.47198962236235048051, + 0.44695276624907720464, -0.16368147163135132738, + -0.12180176498013191300, 0.20387082982353846305, + -0.37562094562853406976e-01, -0.22268829002585230348, + 0.35723612668965204486, -0.21533441324529120631, + -0.15672528473537092331, 0.55170242114642298326, + -0.70433455106541698054, 0.47372475583421824741, + 0.75447968173747506637e-01, -0.67363968172756205632, + 0.10006086432192002889e+01, -0.84465919204257922104, + 0.24286045770233138930, 0.53719701048218670980, + -0.11097708754953159449e+01, 0.11782424152300730036e+01, + -0.67706441236734338229, -0.17339820907305594777, + 0.97858826494792083839, -0.13472160428675887811e+01, + 0.10926321006285468762e+01, -0.31702742194905358941, + -0.62304972911049394391, 0.12916653789079857173e+01, + -0.13704665550302519428e+01, 0.81711800423767666501, + 0.11998740028026651239, -0.10094722575082657468e+01, + 0.14422760474246036910e+01, -0.12157342622477786964e+01, + 0.43204722419986596460, 0.55231825821274438404, + -0.12867113385702375616e+01, 0.14355434599798784223e+01, + -0.92976725640501201031, -0.93229020132125153819e-01, + 0.11609665320859781090e+01, -0.14460948434374050198e+01, + 0.12305462293935072182e+01, -0.27491562609753916746, + -0.65439144714227670541, 0.14496459799701166826e+01, + -0.14012178471549674441e+01, 0.84790048303172493860, + 0.28250938425496818773, -0.11244663914928969550e+01, + 0.15921197253593581955e+01, -0.11220035130218359853e+01, + 0.25731717281719140855, 0.90729472590044391023, + -0.14689811155467902282e+01, 0.14614885471589533772e+01, + -0.55265455804182384014, -0.48534721172995398675, + 0.14481171820658258476e+01, -0.15131879897998139484e+01, + 0.95488530940427995830, 0.26994536778151251299, + -0.12056720320027212168e+01, 0.16741837731052917615e+01, + -0.10947567902110910687e+01, 0.81109564450831644900e-01, + 0.11481698488787244194e+01, -0.16070246858589412042e+01, + 0.13499928262009701641e+01, -0.18554898291451132897, + -0.93679554490178817971, 0.17070402838877405394e+01, + -0.13658444749916813787e+01, 0.40352412916207819338, + 0.95922966064376158357, -0.16285606812556721046e+01, + 0.15192085309746907740e+01, -0.36381790445926143196, + -0.86302657496126400360, 0.17504877224894099808e+01, + -0.14475436164277859508e+01, 0.42631251583375417979, + 0.10222167245879159037e+01, -0.17096814048077753068e+01, + 0.15098772712727710488e+01, -0.21669321687875228721, + -0.10739241858759820403e+01, 0.18604135137367499020e+01, + -0.13235633171676679520e+01, 0.87854584564586613027e-01, + 0.13747216949953102727e+01, -0.18116630091988972229e+01, + 0.12227915737892387504e+01, 0.33298842132513317704, + -0.15365584588713230296e+01, 0.18799565524663801597e+01, + -0.80709303112161778770, -0.67867448508930905415, + 0.18711295595652117640e+01, -0.16353673659603900070e+01, + 0.40617991723495827650, 0.12767722438078477065e+01, + -0.19290187527572895121e+01, 0.13610697134431781752e+01, + 0.34608532280277776172, -0.16781497532720730526e+01, + 0.19479506696551038836e+01, -0.63247893179063019442, + -0.10272141737694349128e+01, 0.20867706578514018112e+01, + -0.14309616107357807646e+01, -0.18457870155185843175, + 0.18293746438665701159e+01, -0.19275761218694205112e+01, + 0.65617510935155887175, 0.13021344667158678554e+01, + -0.21039289016799798127e+01, 0.13618128696449545156e+01, + 0.64836161130394731611, -0.20141516474704537210e+01, + 0.18710360265552625769e+01, -0.11600316049792752660e-01, + -0.17470129844779767048e+01, 0.21828574438633188137e+01, + -0.59825657312479552097, -0.13950583460609589093e+01, + 0.23350209373154053871e+01, -0.10731684122804314718e+01, + -0.10363680051557950801e+01, 0.23825881913688133906e+01, + -0.14289209866987580000e+01, -0.72829463339607547478, + 0.23818733972944312605e+01, -0.16754622618493102415e+01, + -0.50949156264614081646, 0.23806428710924194547e+01, + -0.18269416667234930074e+01, -0.40593971366114273147, + 0.24128388783977054999e+01, -0.18907478834369459975e+01, + -0.43723938830419822876, 0.24949313998225308708e+01, + -0.18590097835679399996e+01, -0.62003424653467020811, + 0.26209307659418019654e+01, -0.17028122330593749023e+01, + -0.96545627319630256125, 0.27539763182834389177e+01, + -0.13710383054212991194e+01, -0.14670085862930217768e+01, + 0.28148338508319468154e+01, -0.79918461963887577060, + -0.20755591444409047241e+01, 0.26730252814227464242e+01, + 0.62053724086101845481e-01, -0.26622306381621876348e+01, + 0.21562411120042654922e+01, 0.11868157267622974071e+01, + -0.29834133459024054780e+01, 0.11067305955189350453e+01, + 0.23817217911438888223e+01, -0.26900426583644505563e+01, + -0.48240070356592540390, 0.32002063480717986010e+01, + -0.14585420701660891662e+01, -0.22554745323935962986e+01, + 0.29833108661285629992e+01, 0.68285538147998670055, + -0.33399848299761711878e+01, 0.12239499579751613734e+01, + 0.29110084931717206125e+01, -0.25972745271670651945e+01, + -0.16595551963515238203e+01, 0.35285034386109059845e+01, + 0.32442003301715760522, -0.36618906598523128793e+01, + 0.11240101722801758566e+01, 0.34990268150871846053e+01, + -0.21541282283201943493e+01, -0.29051066343438316508e+01, + 0.30594499153340617426e+01, 0.24288145561250300553e+01, + -0.35255717333441047856e+01, -0.18806750040969937299e+01, + 0.39685304740014677449e+01, 0.17207814771799250231e+01, + -0.41019387445430126604e+01, -0.16856296523934071185e+01, + 0.42853047758944597945e+01, 0.21840648785939054122e+01, + -0.41036654984001037505e+01, -0.28994765486601830062e+01, + 0.37183911451023217154e+01, 0.41087091114732112729e+01, + -0.24803671070815149768e+01, -0.51628839304730673732e+01, + 0.41214341163165929549, 0.56802471370918681259e+01, + 0.28141492369261991158e+01, -0.41390619373793802183e+01, + -0.57845732789314050493e+01, -0.45281996831563059436e-01, + 0.61105525008279473198e+01, 0.57800519315961125244e+01, + -0.53752346091975766740, -0.66751132929563583573e+01, + -0.74431628037893924343e+01, -0.26215198662196561585e+01, + 0.42293210008850836701e+01, 0.93181971454157022094e+01, + 0.10986477354614503810e+02, 0.97699272636692029437e+01, + 0.71747147921279754712e+01, 0.45283878037651490445e+01, + 0.25106932466171669738e+01, 0.12393071711301029136e+01, + 0.54943457175048304730, 0.22008321812405115536, + 0.79973384192633500955e-01, 0.26433014195092831983e-01, + 0.79594643592528543236e-02, 0.21851004169211336176e-02, + 0.54688276760461328099e-03, 0.12469059718477577890e-03, + 0.25862831644860572735e-04, 0.48697417126016346369e-05, + 0.83001287411587961477e-06, 0.12758914739782360429e-06, + 0.17606601634636539240e-07, 0.21684589191371860213e-08, + 0.23664566614513149836e-09, 0.22676466968176990697e-10, + 0.18861443162644136890e-11, 0.13415776010761943922e-12, + 0.79997172320660593100e-14, 0.38906733556079699316e-15, + 0.14826004358867086033e-16, 0.41525200296043122656e-18, + 0.76030144672056544090e-20, 0.68287775607942977740e-22, + -0.11006006346354216610e-01, 0.17026216456620186374e-01, + -0.28681933515114720577e-02, -0.10386752172585708709e-01, + 0.16915730538033864339e-01, -0.10217164020959302803e-01, + -0.51855500479599291389e-02, 0.24118142260681943445e-01, + -0.35236966682227095771e-01, 0.35045923561562712656e-01, + -0.21529805419711188497e-01, 0.32686688029399408456e-02, + 0.13277558672353393515e-01, -0.19052035490308229931e-01, + 0.15201323084740208866e-01, -0.40968720816868453224e-02, + -0.41395305033548566997e-02, 0.54602677332214501205e-02, + 0.38768548751011546252e-02, -0.17209521677873772932e-01, + 0.29332982298460597015e-01, -0.31414968526630435153e-01, + 0.23963402327632759431e-01, -0.83553286485255028049e-02, + -0.60612148698282698397e-02, 0.15341184611725254550e-01, + -0.14935825512583947305e-01, 0.98069048257273059438e-02, + -0.28915059198499678400e-02, 0.86449898449412066869e-03, + -0.20956490791962782173e-02, 0.59496621542821977874e-02, + -0.59146165269090807473e-02, 0.22253910877688448840e-02, + 0.57900146773050831239e-02, -0.11452415323882407516e-01, + 0.13294275382125351689e-01, -0.87074132506621635536e-02, + 0.38328276435533573281e-02, -0.16114144767886146980e-02, + 0.70894217452893790871e-02, -0.15449991876579400804e-01, + 0.22396292663342313306e-01, -0.19167314624135938644e-01, + 0.68376411456106990505e-02, 0.11120206454675634483e-01, + -0.22374945482181923112e-01, 0.21354203261608695197e-01, + -0.54305189987000545768e-02, -0.14855989955480149861e-01, + 0.30003731128313167881e-01, -0.29776833999441872092e-01, + 0.17771749776801584741e-01, -0.11216309275364978910e-02, + -0.67623624680636746850e-02, 0.32799943602873932874e-02, + 0.94439292166115205995e-02, -0.18808940471080684564e-01, + 0.18936930600889190224e-01, -0.74286878034645143290e-02, + -0.56198617386167366503e-02, 0.13545410249027032418e-01, + -0.11278228727971302547e-01, 0.69377967390741798748e-02, + -0.73084500228029211991e-02, 0.18711585612702984899e-01, + -0.33065767826778565130e-01, 0.41014876630854853190e-01, + -0.32212255420034405229e-01, 0.12332401198638758000e-01, + 0.75578597884805014812e-02, -0.11635900840296545256e-01, + -0.41025681912482657183e-03, 0.20216795457147846565e-01, + -0.29929707985469362203e-01, 0.24359582519692214025e-01, + -0.76812186219605707929e-02, -0.34338577118147492993e-02, + 0.24004135184537036922e-02, 0.84101980890675855779e-02, + -0.12995796851744718589e-01, 0.47476730209592777135e-02, + 0.13166590429212246191e-01, -0.22618530183860011823e-01, + 0.14952287497620649417e-01, 0.66203140018920737103e-02, + -0.21414844408742344378e-01, 0.17536961512311717570e-01, + 0.33497903097911198994e-02, -0.19792911335030836245e-01, + 0.18280596069956651234e-01, 0.40023806390188218420e-03, + -0.15139435840223184129e-01, 0.13655527021078488550e-01, + 0.10161369892468549540e-02, -0.68171324574879815783e-02, + -0.57127242644182292530e-02, 0.27864040682606831811e-01, + -0.33565606550827666033e-01, 0.14671240478571710361e-01, + 0.15159050096977813235e-01, -0.26992960316978027030e-01, + 0.14918513157008492578e-01, 0.42033983980476986517e-02, + -0.41025775037289895567e-02, -0.12401083133392814400e-01, + 0.22556632344167489718e-01, -0.54456737785506361196e-02, + -0.23205269866566749504e-01, 0.33924542428342821521e-01, + -0.12897368098135427936e-01, -0.12841030992055541687e-01, + 0.14656458213568203733e-01, 0.72129708084505677473e-02, + -0.17143892018575076358e-01, -0.16012551477558093199e-02, + 0.28159092073062445133e-01, -0.24562978681369293521e-01, + -0.44527287882480896114e-02, 0.20893063879404195210e-01, + 0.32800672526453049675e-03, -0.27766907808206488240e-01, + 0.23038405873384491113e-01, 0.79271704342741642485e-02, + -0.15912433044095265766e-01, -0.10486719578210590767e-01, + 0.29328975079413666799e-01, -0.30643517461270619248e-02, + -0.33223449069737572004e-01, 0.29173663910625789036e-01, + 0.46379107849767557681e-02, -0.61138423913971017692e-02, + -0.27727940918133148901e-01, 0.36347479629761737796e-01, + 0.54408142519815150609e-02, -0.31554016563272634099e-01, + 0.28175877716889964272e-02, 0.24527838671093270956e-01, + 0.52186061064316583910e-02, -0.33047121503279361376e-01, + -0.17530821429163311043e-02, 0.42428037257772346913e-01, + -0.13414611105870000163e-01, -0.20900163858732744016e-01, + -0.12849509526423023506e-01, 0.42556237065785589013e-01, + 0.74813462017354675701e-02, -0.39419870238376654437e-01, + -0.84587740280725690761e-02, 0.20482999540920809878e-01, + 0.38814961857281803093e-01, -0.23961837469009622525e-01, + -0.42299601919065066280e-01, 0.10751458465288556143e-01, + 0.24913896339853320444e-01, 0.48517768515663764473e-01, + -0.48670510940318885418e-01, -0.25012437197614950657e-01, + -0.28340097738793746524e-01, 0.47824555893126459438e-01, + 0.49028073881555202240e-01, 0.66167588178007268052e-02, + -0.26323542745973847051e-01, -0.74905108860802718795e-01, + -0.22996048907722752702e-01, -0.44003972784803432883e-02, + 0.65011190340682437072e-01, 0.73215619978299062431e-01, + 0.83527893823418755681e-01, 0.65438339561794539589e-01, + 0.45899538845247840613e-01, 0.28019531659152399627e-01, + 0.17096839188573242918e-01, 0.44910121132683659961e-02, + 0.73979982066384843489e-02, -0.22032310811841322729e-02, + 0.21161092883501386036e-02, 0.21371366390168528709e-02, + -0.66461579590169853754e-02, 0.11964975089819458384e-01, + -0.16913561632499525544e-01, 0.20811183324109364806e-01, + -0.23040859771467605416e-01, 0.23267826827159450442e-01, + -0.21516907336951142382e-01, 0.18092733017537280388e-01, + -0.13574337569173942908e-01, 0.86352928092068709232e-02, + -0.39788386405874738572e-02, 0.16212410898299825274e-03, + 0.24352929185988930576e-02, -0.37027793906342998734e-02, + 0.37464958966341617430e-02, -0.28817721935648580450e-02, + 0.15177307298214729077e-02, -0.98709340246944530703e-04, + -0.10101297088121845291e-02, 0.15647988804550207968e-02, + -0.14970648758862550084e-02, 0.89897116787775155876e-03, + -0.40690224478929760965e-01, 0.65167953799595321196e-01, + -0.41564873800171348028e-01, -0.38124745197876878759e-02, + 0.41412269240130743231e-01, -0.82599177193310988065e-01, + 0.98763634169353506365e-01, -0.10596306718653085432, + 0.83020605892431334483e-01, -0.54539631695630620689e-01, + 0.71454112478681061985e-02, 0.29216750862558218960e-01, + -0.66205983085556238676e-01, 0.76179365187206096732e-01, + -0.76610486076588893423e-01, 0.47920617007790003439e-01, + -0.16118952298187296662e-01, -0.31235108744301340322e-01, + 0.63979225921362348206e-01, -0.94273292381555268138e-01, + 0.95711203537086356197e-01, -0.87027143755284905313e-01, + 0.51154271054291620968e-01, -0.12069031671697174474e-01, + -0.32183249263888921710e-01, 0.80076700484308982464e-01, + -0.70128891929016862195e-01, 0.15779456315008147382, + 0.36066302503620202569e-01, 0.27960719304350190040, + 0.34785361961086730398, 0.50777885642049624959, + 0.68876329462339247467, 0.57317423789867172346, + 0.49512842608259755028, 0.26828742656411729700e-01, + -0.28992944520036262324, -0.47621717270715635539, + -0.33410527195496314556, 0.13600561720487430728, + 0.36668811424107922159, 0.32373829555734778829, + -0.92412593100939827151e-01, -0.40440251690285627939, + -0.15504273099072571340, 0.15151664592258634601, + 0.39047953577839006334, -0.40954077032427323168e-01, + -0.29934527428320728548, -0.15773660538292041955, + 0.21521283500120311216, 0.27703613045921954283, + -0.17213970941875988974, -0.26069140860647133096, + 0.62650381485676504001e-01, 0.26960922132478459812, + 0.95803301752896141696e-02, -0.30276127314216494391, + 0.88798966146829833024e-02, 0.25989450379989409434, + 0.41708718078711315772e-02, -0.23375751312215697908, + -0.28729532587831511231e-01, 0.26603013886965642953, + -0.23238774917997476882e-01, -0.26749547495746733849, + 0.12142447838998093879, 0.14695063701809951695, + -0.47187763574176755377e-01, -0.22702683874523790775, + 0.16846476728415274438, 0.17134037522327333347, + -0.29935103723424627553, 0.90192417163759516785e-01, + 0.52877591968672137124e-01, 0.11754887052642074008, + -0.31779898755537178134, 0.19986827735728093791, + 0.10896489146731297426, -0.21501253987645918553, + 0.32928880615323986858e-01, 0.12094520375297268533, + -0.15285919313290593363e-01, -0.17932161415805084048, + 0.15649262927418883251, 0.82373055169705056144e-01, + -0.23838097741167957322, 0.11900017559495744413, + 0.11610266214872344559, -0.18555035552007342892, + 0.45479158411917623706e-01, 0.76568939162283078392e-01, + 0.18166022989130697039e-02, -0.18793232214064209407, + 0.23736567642301853454, -0.65684169313589169104e-01, + -0.15368280427744773764, 0.19633204156434325149, + -0.46960305661490092666e-01, -0.10259119421180526444, + 0.82568545498884496348e-01, 0.64213394879894830636e-01, + -0.15195599499511810992, 0.71206724574685228979e-01, + 0.86077724069956729203e-01, -0.13865496973062005348, + 0.16929447999587666357e-01, 0.15831471174809239044, + -0.20771938809209816723, 0.75281325425894093928e-01, + 0.11832378897057584111, -0.20689435724127155924, + 0.13878267486793036123, -0.15868383095365815733e-01, + -0.26872899148211660397e-01, -0.41515836862768489002e-01, + 0.12070968403304901950, -0.91412519858731375311e-01, + -0.61413225264850275498e-01, 0.22510413130694936767, + -0.26487314280705775982, 0.14443280548736803226, + 0.39970196886710468442e-01, -0.14875592182267416419, + 0.11573299765032807329, 0.16127054177974468972e-02, + -0.85964383235948571560e-01, 0.64125764339116764212e-01, + 0.32671709137375097576e-01, -0.10923018323087661796, + 0.95005814174680847106e-01, -0.89267549189931579001e-02, + -0.63410009331859501502e-01, 0.46880434962475334149e-01, + 0.52121354484446977273e-01, -0.15038431403983806844, + 0.15424478638067881664, -0.40071125709188061548e-01, + -0.12539287669618409682, 0.23153584440969521285, + -0.20769023957598839458, 0.71062666980477917633e-01, + 0.87246624823866400500e-01, -0.17196276821694667092, + 0.14682558868316777922, -0.53845334122624682882e-01, + -0.28286513258051048519e-01, 0.43303727300347726048e-01, + 0.36593446765929502074e-02, -0.60356806381891336954e-01, + 0.72175415229954062446e-01, -0.27545117690265772531e-01, + -0.36965672384734193923e-01, 0.66664225995310272266e-01, + -0.35503541840139124508e-01, -0.33141123913751791008e-01, + 0.80955896314905254063e-01, -0.59782429567608000309e-01, + -0.31944567028626809357e-01, 0.14208716968679419024, + -0.19874655627760651200, 0.15670905028313605878, + -0.30788359147455486575e-01, -0.11191670709547429929, + 0.19070609542872157816, -0.16163866207658675322, + 0.42835828433538329640e-01, 0.95383686317066285199e-01, + -0.17362982098797657970, 0.14832441239753813012, + -0.36449976575475294405e-01, -0.97739042357953359597e-01, + 0.18005812815939636895, -0.16920739988606475768, + 0.76500863526106827051e-01, 0.43019718056034245146e-01, + -0.12465183326682133247, 0.12883334235771112808, + -0.61000936713111311716e-01, -0.36186410248672161438e-01, + 0.10819699770974039454, -0.11916357580699425689, + 0.67919978107813056001e-01, 0.14569356761265323669e-01, + -0.85434067441113162311e-01, 0.11259499988249631330, + -0.90168617940279249812e-01, 0.37433317775438595953e-01, + 0.13810709488437548226e-01, -0.37335632338816232556e-01, + 0.24357917507895839732e-01, 0.14152177745965730318e-01, + -0.55896466468960390173e-01, 0.79250753658025918647e-01, + -0.73781174034494217961e-01, 0.43479945851381165967e-01, + -0.34225619758201041541e-02, -0.28454208544721682622e-01, + 0.39421323971012521559e-01, -0.27168547656692357967e-01, + 0.29117242105771490301, -0.39492239319920108276, + -0.92422477866783397937e-01, 0.52561956301723289364, + -0.73751553916668988187, 0.50715634879461624074, + -0.12859186053807581535e-01, -0.59039679846651871298, + 0.91881160191474198218, -0.89433252574877564189, + 0.45413791248470253281, 0.85194549608195890844e-01, + -0.52972566689304256826, 0.58218816896743952327, + -0.33203615629773336471, -0.12750804811553745344, + 0.42619855218811969477, -0.45563861091055013475, + 0.10311599778164579067, 0.35698397195984404862, + -0.74837811161015632688, 0.76714193801747931900, + -0.48260216809307282526, -0.32588780648717632915e-01, + 0.42200220889078815523, -0.58129030254379998599, + 0.38987650048447836104, -0.97294301678750624851e-01, + -0.16446231409212455632, 0.14778605006535333599, + 0.32942695822083208068e-01, -0.30194203746394987498, + 0.36205391275900483672, -0.21968933273170584974, + -0.12938947330354835796, 0.37672230441814286150, + -0.43059496386072115826, 0.17216792205085892919, + 0.13538447456214899867, -0.33791935029972935967, + 0.18768861217180704548, 0.15206129108378196868, + -0.51522914342156067580, 0.52409658367185796290, + -0.17717708696507689092, -0.43741456779830856227, + 0.85862945402545531870, -0.87150758355337165639, + 0.34689198791851605375, 0.33371403133026211751, + -0.83640719146215980473, 0.78127649232141582747, + -0.32112637455478720838, -0.27690433154255988946, + 0.50648037309844939902, -0.29735351803396520287, + -0.24791842521960841261, 0.62561460079083519581, + -0.62355415187185714299, 0.17602762092192597576, + 0.28328759153944177429, -0.47677775663978405607, + 0.20995661971880377750, 0.16092320761690986908, + -0.32523182683380363889, -0.89900913805564548059e-02, + 0.53917227789940147531, -0.89192725526501970279, + 0.62975603881079222912, 0.54614757108808524577e-01, + -0.75630497891842418667, 0.86601968822848152119, + -0.37843663902540730648, -0.38717436303929614327, + 0.74268394705879003936, -0.51178156822499465406, + -0.11855964772081799274, 0.47535125501976777107, + -0.30978113703978671367, -0.25782131258017798592, + 0.55519705200984359461, -0.29460132545462869302, + -0.40892536709333010547, 0.82236977989699922009, + -0.58005169529282085694, -0.21777127071396160107, + 0.76636421447047819999, -0.60379614755114552338, + -0.20693485996862948095, 0.82241300402612138587, + -0.72642184594397052333, -0.29063647862711428083e-01, + 0.58646499708713639709, -0.45806603830596165361, + -0.21904099838181850801, 0.53520251325998391412, + -0.85685424992681682999e-01, -0.80204848536037709472, + 0.10897368782231178219e+01, -0.44179796850888269910, + -0.62098073166292422354, 0.97175935506939303821, + -0.40466809952528087768, -0.38744116143801904384, + 0.34863532129873497922, 0.39534590009664311028, + -0.91123934261878825058, 0.33186769918175262895, + 0.73932311803643591119, -0.11412931343913077509e+01, + 0.32395120100976637634, 0.64002351441771654361, + -0.62504914900771957331, -0.33838502272219950218, + 0.80595663827337971075, -0.98769179501925596920e-01, + -0.94979288742131129375, 0.81185486707845622156, + 0.33524189448682023551, -0.98483319801463731213, + 0.13965351236802467372, 0.94256724172508188353, + -0.73577389457959851971, -0.51030869080163043794, + 0.81268596573579665598, 0.29276955740002302830, + -0.11295745768714668955e+01, 0.18576113618649550685, + 0.11516866709991229190e+01, -0.89005503185394130305, + -0.52897620681857859815, 0.60817301246927335523, + 0.77330275505149526083, -0.11856488527480522066e+01, + -0.39727788973274902329, 0.13540879373804473040e+01, + -0.13996363892703864162, -0.98123376025442166082, + -0.22379418803749639988, 0.13872791691348342891e+01, + -0.65287246524972766815e-01, -0.14938514557033333308e+01, + 0.28760383767827724100, 0.10934072124848701613e+01, + 0.28939390926289620953, -0.15454837342094827068e+01, + -0.37041086064530392985, 0.15664377139792218241e+01, + 0.40282634070524070413, -0.89365822134880457117, + -0.15208519080578002391e+01, 0.10170573148146189180e+01, + 0.15102174494089581902e+01, -0.11614514798533911999, + -0.14257183131389363773e+01, -0.14373748900163656472e+01, + 0.14259959153726275982e+01, 0.14763954467500179923e+01, + 0.75825612457041768888, -0.16779853034187697247e+01, + -0.20389066055433735514e+01, -0.33740764255410554684, + 0.12484256513361911001e+01, 0.27189811735218332167e+01, + 0.12327729851573385744e+01, -0.13121959359181747939, + -0.23295547856597873526e+01, -0.31475757681168476942e+01, + -0.31755766374939606855e+01, -0.27394310664381360532e+01, + -0.17431750768274909547e+01, -0.11980148765367883978e+01, + -0.61586954320370201899, -0.23488162292297051770, + -0.26782912749113441109, 0.10936595832139006657, + -0.18097509357053645496, 0.10892969673676573816, + -0.41738638377695036485e-01, -0.55329784047836984284e-01, + 0.14907315287208453003, -0.22592983372364008887, + 0.27126030266741918417, -0.27713177190428495145, + 0.24386769124568735689, -0.17788148230817057982, + 0.92018766007010102670e-01, -0.89645465990881799921e-03, + -0.80155715286707382439e-01, 0.13958489841815086008, + -0.16991314545364707977, 0.17014518938453415675, + -0.14412826103149575796, 0.10055455377682756546, + -0.49895285367120734143e-01, 0.31690548096964241999e-02, + 0.30994383182706673058e-01, -0.47191202063645604214e-01, + 0.44636729305795347367e-01, -0.26631464488086963732e-01, + 0.38832636810551529605, -0.61521774690775687944, + 0.42225494125929236011, -0.41835684441644108156e-01, + -0.24098318052631242936, 0.56311607848304023882, + -0.65299852399601476804, 0.69052718542858781969, + -0.46761554872604887967, 0.23405354274496756317, + 0.15706048388260229753, -0.41732207518679370617, + 0.68610101812446477876, -0.70076947409551149093, + 0.65413217331573048074, -0.35329780608794403296, + 0.61482142222114379015e-01, 0.35855429553041862079, + -0.61557057053651276224, 0.85245079612425989080, + -0.81748452885714650851, 0.71433884794133317708, + -0.37407872652024110049, 0.38545903041225772212e-01, + 0.32491789900786610668, -0.71166267346081557577, + 0.52788626889922929397, -0.13405750112830658871e+01, + -0.62534150891313355913, -0.25431224314453122481e+01, + -0.36780031996329078936e+01, -0.49615604599370328742e+01, + -0.69007455718014902857e+01, -0.58212870361172592837e+01, + -0.47722091772717893932e+01, -0.50674870523164339264, + 0.31628246658109628875e+01, 0.45127630867842363216e+01, + 0.35462707029864222186e+01, -0.14982800329160554931e+01, + -0.36007107408578447050e+01, -0.32375045450669750480e+01, + 0.88020751235792360490, 0.41055258268124701360e+01, + 0.15035253041272478303e+01, -0.15077317860178851561e+01, + -0.38533484786141416478e+01, 0.29546820910753246459, + 0.31642261382990337637e+01, 0.13706946488434499365e+01, + -0.19346468096401694403e+01, -0.29677473040936783732e+01, + 0.18743218563186241354e+01, 0.25179113847154162009e+01, + -0.60588434736220331267, -0.26535827525536395122e+01, + -0.18107787532859909163, 0.31300238312623709369e+01, + -0.17600642965411886220, -0.25538497853106307822e+01, + -0.22361134729845411062e-01, 0.22466253214320994758e+01, + 0.44576762889923915445, -0.28648020870438859475e+01, + 0.45260670078891135359, 0.24798434866342664584e+01, + -0.10837781578833489693e+01, -0.14971460068034156965e+01, + 0.37138169156300376850, 0.25131915454623032780e+01, + -0.20653193510984464432e+01, -0.12125010033929162212e+01, + 0.24060498136834849170e+01, -0.26767529145321061756, + -0.11636007921759299322e+01, -0.58143288600311415770, + 0.26617864534904183138e+01, -0.15838424846580609895e+01, + -0.13895682560010946816e+01, 0.23369856610493413562e+01, + -0.41305611088114280172, -0.12085471456717451488e+01, + 0.21371854881992830011, 0.16937930759589294727e+01, + -0.14434913709553938155e+01, -0.95435131964951480654, + 0.25205440118213995326e+01, -0.13336967605384957292e+01, + -0.10025010547009185480e+01, 0.16751867477993669375e+01, + -0.24479779861209602365, -0.10063359354190613004e+01, + 0.25011261047313559924, 0.15960653367557982030e+01, + -0.20922036980451479415e+01, 0.40087638061170388637, + 0.17445379877938453905e+01, -0.20998567920832820199e+01, + 0.52015971441003194808, 0.10696531418635160104e+01, + -0.95913530087603815488, -0.43233152890503040444, + 0.12587896430309499785e+01, -0.43062411840561093390, + -0.11271151941408767971e+01, 0.16052846975228067805e+01, + -0.31132372179311684768, -0.15355000344168880932e+01, + 0.21317800044132981796e+01, -0.90243840595295887752, + -0.95603982322080860445, 0.17936934072788646155e+01, + -0.10984461983750093417e+01, -0.10699499376540529127, + 0.47762977290184460699, 0.29090028136985124352, + -0.11828815769085709864e+01, 0.99467749458477450197, + 0.43890517207559093249, -0.20010529271250381278e+01, + 0.23546363396338643170e+01, -0.11400571744377343553e+01, + -0.67776846412313196399, 0.17085279212533199811e+01, + -0.12961260660317168725e+01, 0.27460846133615553211e-01, + 0.91426829334672610194, -0.78383193517342952816, + -0.11482853309729104674, 0.83858447602427210743, + -0.68401414731477172548, -0.15834626589517120099, + 0.83816798775866663274, -0.60987259730373422073, + -0.45180298763469617374, 0.15061135133079743831e+01, + -0.16053029646347078963e+01, 0.50651954992038883407, + 0.11295789245019294267e+01, -0.21976326780456210130e+01, + 0.19911301708378725817e+01, -0.67646606791890862009, + -0.84080864750363615290, 0.16175915466464403369e+01, + -0.12988158211918672258e+01, 0.31407768716172868029, + 0.54427600441861356817, -0.70797025933294965849, + 0.22785691473453542621, 0.37368985384321851129, + -0.54576819238006557544, 0.16820414855163282053, + 0.40128140836835346494, -0.62194458463840385232, + 0.24123601050362827869, 0.50240806516514158186, + -0.10207700728989645977e+01, 0.83116502491555177556, + 0.83126712247840073289e-01, -0.11980547992093055765e+01, + 0.17924152263404067309e+01, -0.14091068542327334079e+01, + 0.19274666356673428314, 0.11907511132129529052e+01, + -0.19371155373030735092e+01, 0.16103700615099014737e+01, + -0.39245523631711964896, -0.10122211953578463817e+01, + 0.18109662115051097242e+01, -0.15683586781231058094e+01, + 0.45631902056268752732, 0.88193068141188113440, + -0.17028345478483908337e+01, 0.15934862624738932446e+01, + -0.66645082732510629864, -0.52666723831025419322, + 0.13384060028528361741e+01, -0.13713876582888371303e+01, + 0.67935202731895394379, 0.31246228253694696697, + -0.10585874981012663998e+01, 0.12004877849035799908e+01, + -0.72504563888687345585, -0.59340409025365289941e-01, + 0.72651440624386387501, -0.95775256739442848897, + 0.69703404620863085306, -0.13906152853853848139, + -0.39606310262265642663, 0.64515109107002066580, + -0.51960794311586000482, 0.12955338382843070710, + 0.30146450279538111738, -0.55578845493978157322, + 0.52776709012503941754, -0.25563993515951177748, + -0.11112953770407832388, 0.39443382694580708669, + -0.46773869625838976338, 0.30850783515814511615, + -0.15685629857284149047e+01, 0.20315811089882540585e+01, + 0.59612053614718663042, -0.28173420125466730468e+01, + 0.39033990115484407113e+01, -0.26885748938867415347e+01, + 0.24484717585825560571, 0.27031232124438751008e+01, + -0.41228526420531803609e+01, 0.37952558943255074730e+01, + -0.14112611417962568350e+01, -0.12274366096790687575e+01, + 0.32117604475757186577e+01, -0.30038631553477137537e+01, + 0.13075007691428590650e+01, 0.13407365381643800983e+01, + -0.28649399532645221100e+01, 0.28422990881616092551e+01, + -0.74686377085980726331, -0.17363024749396678281e+01, + 0.36819881457825949234e+01, -0.34646039180624277343e+01, + 0.17081590438358273953e+01, 0.10745395531167312164e+01, + -0.27985443563375773657e+01, 0.30426336372854598800e+01, + -0.13125170176221929719e+01, -0.69713898861147871600, + 0.21484184221173152629e+01, -0.16343256400943773077e+01, + 0.43172734675267721016e-01, 0.19747412752583219930e+01, + -0.24911125532403324279e+01, 0.15440166095895790921e+01, + 0.79571667153291425478, -0.24981600013923839221e+01, + 0.28746785544020996284e+01, -0.11415513889970014816e+01, + -0.10554143660630856960e+01, 0.26536886595926403309e+01, + -0.19816046581074096000e+01, -0.95987508551257344491e-01, + 0.26120054573398223674e+01, -0.31920573776519556297e+01, + 0.16585848558125659835e+01, 0.16604144489310213029e+01, + -0.41184418068794510503e+01, 0.44566383842168706408e+01, + -0.17977624424826268434e+01, -0.17266701744542558572e+01, + 0.42996877345714796803e+01, -0.37529123084118136688e+01, + 0.10371148797689899723e+01, 0.23272111426300634562e+01, + -0.34257129318908163818e+01, 0.19813246692772021884e+01, + 0.13187907101816738198e+01, -0.34472992395985673220e+01, + 0.32255993156652813525e+01, -0.37942647437560256263, + -0.23616691406518350860e+01, 0.32833651283830560530e+01, + -0.12391988574069690010e+01, -0.15153831782225608560e+01, + 0.29744695009351964643e+01, -0.12384330078281031717e+01, + -0.19464017826295387792e+01, 0.43374175315956149390e+01, + -0.32058129495225298200e+01, -0.42936502110890467643, + 0.42930541719394073041e+01, -0.48178444362475971730e+01, + 0.19972557424973413909e+01, 0.23257235047295430341e+01, + -0.41340104972841995590e+01, 0.25091954089225851909e+01, + 0.13380046908299005892e+01, -0.33311137715688374783e+01, + 0.20285245461272283229e+01, 0.17566372400569538748e+01, + -0.38649997540008498298e+01, 0.24822334847273634928e+01, + 0.17504053913884467519e+01, -0.44027593460632497013e+01, + 0.32098172981961825556e+01, 0.13365688065871446089e+01, + -0.44891478434654157326e+01, 0.35271243730615249312e+01, + 0.11951611824273442597e+01, -0.46795042719225259376e+01, + 0.39329823051158512293e+01, 0.64979020258443898062, + -0.38666222839867181449e+01, 0.28079733552248753448e+01, + 0.16416652445449382292e+01, -0.39098275881084618710e+01, + 0.14615041232176742003e+01, 0.38286111714720321153e+01, + -0.57509159876584661220e+01, 0.22587401968774751815e+01, + 0.36253733691684990603e+01, -0.52584964793136910188e+01, + 0.15299336573445110332e+01, 0.33306634761485223173e+01, + -0.29627584106288313848e+01, -0.18283744260626038081e+01, + 0.53560858899511147868e+01, -0.22972428931469046631e+01, + -0.38242461394294133825e+01, 0.61126019677781693318e+01, + -0.12732583787012830001e+01, -0.42912980215016194308e+01, + 0.39080774468519128284e+01, 0.21601920297316001829e+01, + -0.51714099382764056045e+01, 0.10210121154700777524e+01, + 0.52920410977103076178e+01, -0.45562097640087593220e+01, + -0.22161693020102606333e+01, 0.60444607043802145441e+01, + -0.97195115442826629515, -0.54504665513392858145e+01, + 0.41044515457526795643e+01, 0.34629393928601497343e+01, + -0.52926882962975696501e+01, -0.14337465869765617654e+01, + 0.66688126273154946233e+01, -0.13050796478515132026e+01, + -0.63928483221628447097e+01, 0.45506011677434416995e+01, + 0.41149907679255415260e+01, -0.45709981705900153415e+01, + -0.39080317208708477139e+01, 0.67092726680002341411e+01, + 0.24016244230363645862e+01, -0.77818990445813982504e+01, + 0.25051005918732982547, 0.65576065832740075834e+01, + 0.77497210316182996159, -0.80051088746696912324e+01, + 0.40266588026031746583, 0.86368112411832367314e+01, + -0.11818831085803680470e+01, -0.71577151534089580309e+01, + -0.12666952321793616409e+01, 0.90895012809377231378e+01, + 0.20316032150080847174e+01, -0.88340252020909098007e+01, + -0.32566001875084387152e+01, 0.63066473717093360918e+01, + 0.82852527641657811586e+01, -0.55636411047108129679e+01, + -0.91545381246266739339e+01, 0.29104385971556995250, + 0.94153871903817485389e+01, 0.74458969903472107532e+01, + -0.72578194012429237958e+01, -0.10054941828586208885e+02, + -0.36497739573327199203e+01, 0.96017629889996225501e+01, + 0.12216178109528366136e+02, 0.24887517522419955185e+01, + -0.82885160404169493376e+01, -0.15338942737393438165e+02, + -0.83797724182198933818e+01, 0.16375226871363415260e+01, + 0.13351625425967613481e+02, 0.19261904583932352608e+02, + 0.18891262494730973742e+02, 0.16467091346113981842e+02, + 0.10459679993223362615e+02, 0.72507444043318942661e+01, + 0.35090849516237598849e+01, 0.17334616671059772663e+01, + 0.11825484967729917862e+01, -0.20925325462281885169, + 0.71902107573908669025, -0.46780365968448023306, + 0.32500232329381817387, -0.39825757415986734467e-01, + -0.23711991924720485225, 0.47454350336491285534, + -0.62135375038357465449, 0.65142920389263214709, + -0.56504278227324411521, 0.38140006462098685613, + -0.14116967199271956979, -0.11031037729423000260, + 0.32499098786330549160, -0.46815612477891388465, + 0.51800032885758251489, -0.47454547085983300736, + 0.35297730514421504777, -0.18440612830619301787, + 0.47169926211177411537e-02, 0.14888371246701243011, + -0.24829187528349558334, 0.27672872591787306407, + -0.23372476050351628785, 0.13286796818799861963, + -0.79928979286799273218, 0.11717392547554850157e+01, + -0.74366043726453101570, -0.80996511113975211416e-01, + 0.62924024381018039964, -0.12693963133981234215e+01, + 0.13683703064615535538e+01, -0.13923879828541776416e+01, + 0.84453932425075750601, -0.33500034351748070316, + -0.51211750680549950054, 0.10167476807530928529e+01, + -0.15513095915791363932e+01, 0.15015213600251540171e+01, + -0.13602075047767285820e+01, 0.66304844757016789814, + -0.48174204469024262121e-01, -0.83978369044386935727, + 0.13163562073571242195e+01, -0.17630485323437279366e+01, + 0.15924445349719029696e+01, -0.13228916275421933602e+01, + 0.54763008151478465013, 0.14719880905951199246, + -0.86587373613125140359, 0.16125538352501100903e+01, + -0.10011337829295456903e+01, 0.28109452843728965910e+01, + 0.19866629439547045521e+01, 0.56017929835514017611e+01, + 0.92719153029333174487e+01, 0.11571657934458361439e+02, + 0.16749249513419236735e+02, 0.13936911085788707965e+02, + 0.11346537914198135510e+02, 0.14206877957614405528e+01, + -0.78455255397201026923e+01, -0.10585219395358764771e+02, + -0.87039421971615684726e+01, 0.37000029530944824607e+01, + 0.86326236595111645045e+01, 0.76908100202141804758e+01, + -0.19791037248940916982e+01, -0.10003877703793392584e+02, + -0.34889644486322994865e+01, 0.35632819937095243645e+01, + 0.92117968955712949963e+01, -0.58186747317353193498, + -0.78001032698812808874e+01, -0.30430718602465893774e+01, + 0.43966003143005636389e+01, 0.73177029764813692481e+01, + -0.46056536833936716491e+01, -0.60532854074461903693e+01, + 0.15832700200163323245e+01, 0.61334820477086759993e+01, + 0.73457315571618087002, -0.78293042445264457996e+01, + 0.69526094766886503695, 0.59511063387952267689e+01, + 0.91666697301107533113e-01, -0.52720972000054091566e+01, + -0.13487093513952990165e+01, 0.72826632300765634653e+01, + -0.15776593039855826284e+01, -0.54414375165972543869e+01, + 0.21349955886836524677e+01, 0.39496162574798865386e+01, + -0.10938060034970882306e+01, -0.60143788446632919786e+01, + 0.51246818621395862081e+01, 0.25735610535280519784e+01, + -0.53136257172718295294e+01, 0.10785458108091761087, + 0.33374156996852577528e+01, 0.89401011425815346545, + -0.59801423734259415710e+01, 0.35133107520067432539e+01, + 0.34877261078989985066e+01, -0.56367651885551186552e+01, + 0.91361406839610237451, 0.30481964813115030033e+01, + -0.69782548880830652660, -0.38793893675424477863e+01, + 0.32994649146616570334e+01, 0.24182906688650098737e+01, + -0.61430498112263691723e+01, 0.32685751806659797403e+01, + 0.23421286957605236267e+01, -0.39414964360202100480e+01, + 0.47095050997235415879, 0.25783429604793703938e+01, + -0.81399790018175643969, -0.35806890483214584009e+01, + 0.47554059868441136416e+01, -0.71474856416884280375, + -0.43833023411587097584e+01, 0.51490248392900452856e+01, + -0.12482428138444963128e+01, -0.26921549044823565033e+01, + 0.25455694093888641127e+01, 0.69264979609860011234, + -0.26127103421618049772e+01, 0.60504208293265715479, + 0.30997485797964539067e+01, -0.41667876390381017870e+01, + 0.93722304155364799527, 0.36430522947592312022e+01, + -0.52325905182493741563e+01, 0.24260717251382004633e+01, + 0.19187875824240985256e+01, -0.38623068774461102315e+01, + 0.21800082664433761970e+01, 0.66635233996911913401, + -0.14586966346195398003e+01, -0.52631391161266272150, + 0.28290547120979852025e+01, -0.25452358221668029969e+01, + -0.74688833891148964650, 0.43808469486050860553e+01, + -0.51659211400847961926e+01, 0.22422357421376237774e+01, + 0.20695585763653108202e+01, -0.44436999739850699953e+01, + 0.33140677519743397816e+01, -0.11066346052552872292, + -0.23116138121421996310e+01, 0.21409844077955435537e+01, + -0.94512507481819760247e-01, -0.15801480190488674804e+01, + 0.11967364196404652876e+01, 0.78413788523314764678, + -0.23323004270627691881e+01, 0.16664927026772302643e+01, + 0.10147699259270948069e+01, -0.36804889579614443740e+01, + 0.40361923771335517230e+01, -0.14889791653243020786e+01, + -0.23885413905675969559e+01, 0.49443665090349693259e+01, + -0.44851480217174959364e+01, 0.14007091024904994025e+01, + 0.21425874076802240431e+01, -0.38974197021763323789e+01, + 0.30222903514721326523e+01, -0.56443994577970202364, + -0.15667714906325067581e+01, 0.19971275968945940704e+01, + -0.84842794849505731580, -0.62745604052686398955, + 0.11005352975738031951e+01, -0.27713788422760043950, + -0.99692046297247816078, 0.14317801864356065611e+01, + -0.43390938172805038064, -0.14188158004520738942e+01, + 0.27065259178692731012e+01, -0.22706165895646281960e+01, + 0.68979437248086777901e-01, 0.26351771452472165791e+01, + -0.41080460952381780970e+01, 0.32438863103341337712e+01, + -0.38516495571019460087, -0.28783360197444687323e+01, + 0.46193563316629040472e+01, -0.37969464036196400869e+01, + 0.84728640206375305244, 0.25374651710683826522e+01, + -0.44585312702987494049e+01, 0.38719580967699052110e+01, + -0.11954012712212815917e+01, -0.20259130493479680091e+01, + 0.40032543414227648171e+01, -0.37456224723418634071e+01, + 0.15211770646933402418e+01, 0.13441435522855140761e+01, + -0.32963273504079317888e+01, 0.33782412554056882037e+01, + -0.17179403883717945245e+01, -0.66720412985930077632, + 0.24682182985881122583e+01, -0.28262237165208858869e+01, + 0.17081652310375243786e+01, 0.14619053921821997810, + -0.17171809570560627733e+01, 0.22415346773749598164e+01, + -0.15883183448434394780e+01, 0.22639717801484127158, + 0.10734450871688443474e+01, -0.16792605314734831978e+01, + 0.13777012002965742798e+01, -0.43441533345338284589, + -0.61312076712772567433, 0.12401194769765468973e+01, + -0.11913452032433677896e+01, 0.55629050152603376489, + 0.30751665166894143200, -0.97373424460038515704, + 0.11386532436268625990e+01, -0.74783093302006020675, + 0.27132475341073170050e+01, -0.34221315306048127880e+01, + -0.10401503213155909311e+01, 0.46191123106363134454e+01, + -0.63348350755955067370e+01, 0.42255233431161611790e+01, + -0.31069002233889042586, -0.43304208977750429099e+01, + 0.62512402101104935781e+01, -0.53790660705394053309e+01, + 0.12197854095197482316e+01, 0.29841039165273515188e+01, + -0.58769256101123437119e+01, 0.49010677374903917070e+01, + -0.15909174087270796516e+01, -0.30989269383290061199e+01, + 0.54898919940813621920e+01, -0.51112092241751039268e+01, + 0.11806825641962384044e+01, 0.30942548771551567910e+01, + -0.61695237081711624683e+01, 0.52702798097279712763e+01, + -0.18506249926274276341e+01, -0.30291300304421691081e+01, + 0.55332026652114896237e+01, -0.51458522078048511972e+01, + 0.12343997794931758083e+01, 0.27757225707843695695e+01, + -0.52716448755401339454e+01, 0.37289841424025707006e+01, + -0.82826861244373176096e-01, -0.42000436321138598927e+01, + 0.53237234307766527763e+01, -0.33707220128094830258e+01, + -0.13979377941675057428e+01, 0.49406831063568432683e+01, + -0.57869357068166547009e+01, 0.23674106790376598930e+01, + 0.21548753285135719970e+01, -0.56214915029132992430e+01, + 0.46593049295615447392e+01, -0.73419046527904152644, + -0.43974791826806658435e+01, 0.61581772159891068341e+01, + -0.40029978726622204022e+01, -0.17237865818748592250e+01, + 0.62310149186407928212e+01, -0.72121272687667392631e+01, + 0.28853292382575603803e+01, 0.29749972177950629870e+01, + -0.72297022123381946557e+01, 0.59699783972414364186e+01, + -0.10163774241918626107e+01, -0.49143630243607105967e+01, + 0.65479803140034569253e+01, -0.35716790495770389668e+01, + -0.26361465198399920418e+01, 0.64083801909528741447e+01, + -0.56742896912063569559e+01, 0.76642367949716405651e-01, + 0.51117163444129669614e+01, -0.66266606367823417401e+01, + 0.23438187987770247034e+01, 0.33718372326587062737e+01, + -0.66000112572140867684e+01, 0.36008858352645942702e+01, + 0.24449028724452754879e+01, -0.73465458975498627581e+01, + 0.58620009764179261680e+01, 0.28728040370027813077, + -0.70654290201515692615e+01, 0.79241334575294599674e+01, + -0.28858981291701728544e+01, -0.47167753594944468176e+01, + 0.75368460071406113698e+01, -0.40588123432129643575e+01, + -0.33352735456512663248e+01, 0.69721248505557111841e+01, + -0.42270478395709156771e+01, -0.32703865373929756899e+01, + 0.75869957622156549704e+01, -0.52247263499681606547e+01, + -0.26899569820016222543e+01, 0.78427644165853767078e+01, + -0.59196661326408603898e+01, -0.23066004128507722193e+01, + 0.80724351516917742799e+01, -0.63650069075908035643e+01, + -0.21957535415527518197e+01, 0.83635615058545802469e+01, + -0.66987392120464335221e+01, -0.19535648827228035973e+01, + 0.78019697239217267182e+01, -0.54423552497507348136e+01, + -0.33938198652522642007e+01, 0.81449622983773988238e+01, + -0.39372838246151107278e+01, -0.58577431784400832981e+01, + 0.96754097530246720993e+01, -0.36582699110164020873e+01, + -0.66890491258535691443e+01, 0.91184587127823650832e+01, + -0.17258986473503221681e+01, -0.74997195652290651324e+01, + 0.66468939689900592427e+01, 0.27121640633906212159e+01, + -0.98528337325159984772e+01, 0.46781289527404528172e+01, + 0.63563856239027982653e+01, -0.10473345542950754705e+02, + 0.15254271515222523892e+01, 0.85785075926018752313e+01, + -0.74929631982002042889e+01, -0.41896190814005507264e+01, + 0.10047834186194258166e+02, -0.23844020030273065380e+01, + -0.94708107711191651390e+01, 0.82568757810096826688e+01, + 0.42060971232604780212e+01, -0.11239937105760205327e+02, + 0.17609769202969667301e+01, 0.10124887866527680913e+02, + -0.74496877875582017126e+01, -0.68362613165587431396e+01, + 0.10323416328577183165e+02, 0.22944866542274335863e+01, + -0.12283766211486055298e+02, 0.25980106146409673862e+01, + 0.11404373601750343425e+02, -0.76650990529809739371e+01, + -0.86624823881871986231e+01, 0.94518513144043989627e+01, + 0.66464803381621901934e+01, -0.12311069813879083057e+02, + -0.42014513651596079313e+01, 0.13801522434757181657e+02, + 0.53180994246688728655, -0.13283840031251569869e+02, + -0.61256522477521713199, 0.14513984501151616868e+02, + -0.83243510075470894538, -0.15560376148263518559e+02, + 0.13063776870074343961e+01, 0.14362469795065509359e+02, + 0.15212057687533573347e+01, -0.16514745348596250096e+02, + -0.37176453802486224554e+01, 0.15870401695009554999e+02, + 0.71257142437791145539e+01, -0.13030409771938753494e+02, + -0.14272655324330516535e+02, 0.95190460416603936977e+01, + 0.17427899291271074844e+02, -0.27274559679019194647, + -0.18415583665740271613e+02, -0.12653042729837098435e+02, + 0.12135302062299656356e+02, 0.20076694533279052735e+02, + 0.58466353967588622353e+01, -0.17460315849874884719e+02, + -0.22714864664827448593e+02, -0.52260300742083174441e+01, + 0.16385807824843844571e+02, 0.27593071210058134568e+02, + 0.16588874740144678555e+02, -0.37363706519154562535e+01, + -0.24613842982004339177e+02, -0.35885884694258187722e+02, + -0.35638853258496581589e+02, -0.30197704773800300160e+02, + -0.20068622240666194045e+02, -0.13141836827578645241e+02, + -0.66881570336625140172e+01, -0.33925270845263986175e+01, + -0.17931859685716640129e+01, -0.18514512554389966903, + -0.74208482204731651688, 0.38982160555615225084, + -0.35953547619108405797, 0.13143515131859448419, + 0.72780030697443889864e-01, -0.25911246997684261872, + 0.37892504131952803315, -0.41294796562469038292, + 0.36061709964552179919, -0.23603968418693777043, + 0.70637621911742984326e-01, 0.10126461262337344005, + -0.24278982660070078103, 0.32828852456687351857, + -0.34189922816022022545, 0.28547612450050902089, + -0.17232917743755582496, 0.28498255471793243476e-01, + 0.11689781747654455490, -0.23386693278530229501, + 0.30040101281330316985, -0.30379772945264299500, + 0.24495210204041947821, -0.13620441221380816255, + 0.46086875905589641533, -0.60322499111640770497, + 0.32156696584927785265, 0.19847392729690480073, + -0.51067707186741462255, 0.88133430201263385229, + -0.89470133074214786006, 0.88012657320931508842, + -0.50531861067777561480, 0.18457694395309323654, + 0.34566334504226753355, -0.63509976593070716078, + 0.95168758901546501860, -0.89070545714448168262, + 0.79652998168436750515, -0.35613254755935680462, + -0.48130735000127730086e-03, 0.52527547716135669642, + -0.76714842247209680259, 0.10012234195913467527e+01, + -0.84189163726698157397, 0.65089142544994804673, + -0.15421486935048545064, -0.25284098095086132707, + 0.65454944132596404316, -0.10593799725641044329e+01, + 0.56437672751558265460, -0.16964324920953346432e+01, + -0.15460262639551702879e+01, -0.34988930379469262988e+01, + -0.63941511993640700595e+01, -0.75493569315527491170e+01, + -0.11261801869809412224e+02, -0.92680229579570774234e+01, + -0.75184889446210521058e+01, -0.10420529399229638834e+01, + 0.53538936794904818939e+01, 0.69331317579671694062e+01, + 0.59072557129313363333e+01, -0.25340166766757423744e+01, + -0.57275677771769624158e+01, -0.51162462849646939134e+01, + 0.12857922502690219968e+01, 0.67104713603711063641e+01, + 0.22992022332604293844e+01, -0.23760603452133364222e+01, + -0.61014410340472391425e+01, 0.31193526812808158866, + 0.53056554905643480424e+01, 0.19138211498286463730e+01, + -0.28262296841304208606e+01, -0.49475265735434517111e+01, + 0.30874042039293878581e+01, 0.40849763716540827829e+01, + -0.11699215882017739432e+01, -0.39166095193337002733e+01, + -0.69754392655510666366, 0.54385519528039774073e+01, + -0.66088182351830249139, -0.38175301087350472784e+01, + -0.13835061485309727014, 0.35092093963412160917e+01, + 0.99107170734353644548, -0.50198420127506553357e+01, + 0.12705243982157301552e+01, 0.33859900592581295697e+01, + -0.11877288054553511998e+01, -0.28303362097577839940e+01, + 0.86683228109613541523, 0.39487020112411106432e+01, + -0.34335050694653843628e+01, -0.16255554660598674488e+01, + 0.33982554252682621865e+01, 0.10565259858270296955, + -0.24078156762320586104e+01, -0.42977287792392770971, + 0.38590365499831302820e+01, -0.22627590022622166011e+01, + -0.23504706684948222239e+01, 0.37361977566918906923e+01, + -0.54983102620269841410, -0.21107892604665776659e+01, + 0.54846710178873037123, 0.25158314928461122939e+01, + -0.21505589531974527162e+01, -0.16330306544844750416e+01, + 0.40918979170153590985e+01, -0.21565753667509808267e+01, + -0.15893845978054692569e+01, 0.26504249586077248679e+01, + -0.31784643997724221220, -0.17396920334095176131e+01, + 0.59263087706110495478, 0.23138447159184405422e+01, + -0.30813288254985296000e+01, 0.38803980914003760594, + 0.29958675109394947711e+01, -0.34738722965136674681e+01, + 0.83049543537364312051, 0.18478195621865323162e+01, + -0.17988825901018568043e+01, -0.31764581522183893414, + 0.15726472177700638877e+01, -0.22778275693530222745, + -0.22237808903938955929e+01, 0.28965733221785998630e+01, + -0.68504567299127749891, -0.24365830938521058080e+01, + 0.35689897239329866352e+01, -0.17624950860735140168e+01, + -0.10830261248057768686e+01, 0.23515356068947936841e+01, + -0.12275627364542860409e+01, -0.64347380209245053084, + 0.11221328578974274492e+01, 0.27126296985586079158, + -0.18854243680440814224e+01, 0.17776686922705748906e+01, + 0.34618255764262129137, -0.27140888100043687459e+01, + 0.32085151912274518793e+01, -0.12566477964450881721e+01, + -0.15913455418303332767e+01, 0.31246225886394278781e+01, + -0.23024531577379283576e+01, 0.89470820814408422161e-01, + 0.16045009878079712351e+01, -0.15595187931420924077e+01, + 0.24844439939403409334, 0.83877095019957925714, + -0.57810050042479599330, -0.72098155006581632342, + 0.17109353164506604372e+01, -0.12074256086517682895e+01, + -0.64716546388601281503, 0.24931475734741113115e+01, + -0.27904549475852591378e+01, 0.11395611213660687966e+01, + 0.14182679844628383048e+01, -0.31149377705109961845e+01, + 0.28235577944443694953e+01, -0.79895556581425386522, + -0.15171015233378573051e+01, 0.26346508467655351815e+01, + -0.19970472637252330017e+01, 0.31082279368566967381, + 0.11480294057942963537e+01, -0.14576951250807770322e+01, + 0.69972266079713463238, 0.29298830943362547119, + -0.62969373694569563682, 0.11296485952945677089, + 0.69966466445650954409, -0.95120718541353843634, + 0.25223391516020726710, 0.10101322159834238423e+01, + -0.18851422318873263251e+01, 0.16010326903926161979e+01, + -0.12843272766617597203, -0.16873176763881481133e+01, + 0.26894065378742628702e+01, -0.21360905011289870181e+01, + 0.25403616854547328430, 0.19012007806616801897e+01, + -0.30455583865089086437e+01, 0.24878043329100489878e+01, + -0.51778783496001878905, -0.17355587868253585793e+01, + 0.30088715240960128838e+01, -0.26066533089562038406e+01, + 0.81044705440008024677, 0.13489255112345868159e+01, + -0.26763568153616597023e+01, 0.25112653459155986901e+01, + -0.10309750245542483871e+01, -0.87937019171825414610, + 0.21840588974915835507e+01, -0.22430660592789837260e+01, + 0.11415067204666131673e+01, 0.44431428917468523965, + -0.16417870075764822158e+01, 0.18796020249068638996e+01, + -0.11350639766406134257e+01, -0.98269814746448941323e-01, + 0.11419383580970094982e+01, -0.14873174415688288352e+01, + 0.10486011919364057743e+01, -0.13859819611453333410, + -0.72778834019751204032, 0.11295385246616203023e+01, + -0.92416250574693026287, 0.28968533641008353818, + 0.41514086501903618709, -0.83919602816035554493, + 0.81167165427625231899, -0.39119591223320426820, + -0.18418394584247749224, 0.63056862411945491242, + -0.74512642907390858049, 0.49107676835411034899, + -0.14396900016186808813e+01, 0.17737639852250390859e+01, + 0.56822815946932625497, -0.23460973502598032603e+01, + 0.31690375172147966509e+01, -0.20065562236789875605e+01, + 0.27042048824292064246e-01, 0.22714579505799266101e+01, + -0.30627225522511127842e+01, 0.24519864165112270626e+01, + -0.18836064165409047155, -0.19226556662643439211e+01, + 0.32549338538537826437e+01, -0.24753106091509562425e+01, + 0.55625581155288483792, 0.19833864180954374756e+01, + -0.31248804181788809586e+01, 0.27417653883161978712e+01, + -0.47087475062931710701, -0.18236699793525243951e+01, + 0.33411971911313589345e+01, -0.26042881726987614499e+01, + 0.57263176294639683839, 0.21053340911584879080e+01, + -0.32559955273498464301e+01, 0.27015812439279618395e+01, + -0.19898177334149266815, -0.21807851462420755340e+01, + 0.35002141027883806323e+01, -0.23581151933098332130e+01, + -0.17412502247974890462e-01, 0.26835841567160549914e+01, + -0.33848311914954609669e+01, 0.21780268548112489135e+01, + 0.73395190952656486072, -0.29282902276853715051e+01, + 0.34867780643285324338e+01, -0.14623812382592624726e+01, + -0.12963445295067996810e+01, 0.34846610873872272407e+01, + -0.30634651211000329951e+01, 0.80920907078912207577, + 0.22997247984174133961e+01, -0.35837410116158903151e+01, + 0.26447920902477703997e+01, 0.43662830048467538013, + -0.29820024355660379456e+01, 0.36937717146112367672e+01, + -0.14882885279061639494e+01, -0.15623252949558739111e+01, + 0.37749285134541659126e+01, -0.29713467226103227325e+01, + 0.21288721045641473273, 0.30049177351375999656e+01, + -0.37384165700363380935e+01, 0.19013331120464584956e+01, + 0.16787858478535939710e+01, -0.37525066414115975100e+01, + 0.31940000668574413112e+01, 0.13753957801924379667, + -0.31496509653817597041e+01, 0.39513397660512330489e+01, + -0.13310311854525314068e+01, -0.21499638106596958842e+01, + 0.41810490482557547409e+01, -0.25417318662417129893e+01, + -0.97958012316786480245, 0.39869808817742198315e+01, + -0.34174777883454341421e+01, 0.17911422351787240070, + 0.35150147619430041068e+01, -0.39674439795268763298e+01, + 0.12072993908237739102e+01, 0.29114520810642994242e+01, + -0.42549046629042699408e+01, 0.20469560177233612208e+01, + 0.22991809437403873950e+01, -0.43668927319397861098e+01, + 0.26854537485107834449e+01, 0.17697924490761189897e+01, + -0.43915595841747867567e+01, 0.31358548168377655685e+01, + 0.13865539462687990202e+01, -0.44040215383802587823e+01, + 0.34181170092816963724e+01, 0.11926181386117267191e+01, + -0.44583668672458305338e+01, 0.35434299569250722328e+01, + 0.12196024491596479944e+01, -0.45821751866674196307e+01, + 0.35021759344924250357e+01, 0.14924979169445204974e+01, + -0.47698857417459858965e+01, 0.32558902737468558009e+01, + 0.20271058140551643234e+01, -0.49724471128229206229e+01, + 0.27352916039867309905e+01, 0.28159305075881433389e+01, + -0.50833560212347901341e+01, 0.18499633184112731499e+01, + 0.37988082754643537342e+01, -0.49266766041174374635e+01, + 0.51986722951369368495, 0.48182699250234630739e+01, + -0.42623365998783819819e+01, -0.12584304367884655562e+01, + 0.55714429779428265022e+01, -0.28372776438047178083e+01, + -0.33048775782592572092e+01, 0.55952986622389779825e+01, + -0.51989140644994547014, -0.51330618163370420604e+01, + 0.43583072026191826964e+01, 0.24638521382546589855e+01, + -0.59044619609062456433e+01, 0.15523316889025013943e+01, + 0.52626168325285904714e+01, -0.46460224500143043613e+01, + -0.23912289595621225580e+01, 0.63580066443010769817e+01, + -0.93513382535596445422, -0.58101496458837189607e+01, + 0.42059469962079436556e+01, 0.40364515124443212102e+01, + -0.60726904854717229654e+01, -0.11479571687270007097e+01, + 0.69323941294145878800e+01, -0.15199128791966465268e+01, + -0.63400051517983104787e+01, 0.40887072797303680716e+01, + 0.52964961778117238822e+01, -0.57149912745873487907e+01, + -0.36003243436539427158e+01, 0.70193219313433123929e+01, + 0.22151243186003513053e+01, -0.75258624652621790574e+01, + -0.76279678701179420841, 0.80465453347808466589e+01, + 0.76444350014432610810e-02, -0.81480660522171941551e+01, + 0.57045972060698257877, 0.85726196307867983393e+01, + -0.26841678667441387640, -0.87366880681005856246e+01, + -0.40529373736331436584, 0.91455839980705047054e+01, + 0.21790257062374229768e+01, -0.88725736096357330496e+01, + -0.44726263014094849169e+01, 0.79628712924843343401e+01, + 0.76396971487671692103e+01, -0.50357629176315343855e+01, + -0.10162135446241320480e+02, 0.12041747298423449708, + 0.10785413970667779182e+02, 0.68059725007243683237e+01, + -0.64432055934506555772e+01, -0.11920844383649228604e+02, + -0.30289088913287418592e+01, 0.98650422261675068114e+01, + 0.12877730581847252722e+02, 0.32734315439885204313e+01, + -0.97646151255919875211e+01, -0.15341510217267311234e+02, + -0.98369452346340846560e+01, 0.23529419705524525774e+01, + 0.14027103669857501345e+02, 0.20366825872095667194e+02, + 0.20643856606370832196e+02, 0.16905225697225109371e+02, + 0.11813329927070963521e+02, 0.72425024436622615909e+01, + 0.39599754787819434476e+01, 0.19515933570484453874e+01, + 0.87321056976809197092, 0.35651971912423885414, + 0.13330274697535970940, 0.45758111437583667835e-01, + 0.14443958557553452857e-01, 0.41967229495698827463e-02, + 0.11227971250863048435e-02, 0.27656093303652317349e-03, + 0.62675137889857523836e-04, 0.13053296274386431530e-04, + 0.24943415714165336546e-05, 0.43638032173470345495e-06, + 0.69704553026033406356e-07, 0.10131537759024391644e-07, + 0.13344789456688345465e-08, 0.15848306314320871552e-09, + 0.16866363250408347620e-10, 0.15964499205752496328e-11, + 0.13314577916761297672e-12, 0.96700575384874811368e-14, + 0.60240415502889304453e-15, 0.31549982460516777660e-16, + 0.13513329968045116302e-17, 0.45464158798672617568e-19, + 0.11269330419852036878e-20, 0.18301741498748792952e-22, + 0.14611619570312400200e-24, -0.28805819676677602709e-02, + 0.72353243386742661578e-02, -0.91214983142990750664e-02, + 0.13025584947555915449e-01, -0.15724528383782940960e-01, + 0.18560314597341139725e-01, -0.18536257819481524733e-01, + 0.17649261706073136879e-01, -0.13812204649738193604e-01, + 0.99468730767032342149e-02, -0.46655837232419099941e-02, + 0.11857760146457842990e-02, 0.20574930478524156886e-02, + -0.24398622735163802248e-02, 0.23687622087758069232e-02, + -0.82318830226289741673e-04, -0.13593365904544640194e-02, + 0.34431922099484287350e-02, -0.32740226848668179012e-02, + 0.28844875260426883906e-02, -0.14474201931514486547e-03, + -0.21451619815722202354e-02, 0.55538994296530919126e-02, + -0.70862518621504074975e-02, 0.84769695831805463859e-02, + -0.73567816859545958133e-02, 0.58313133998460385185e-02, + -0.31357971150785439798e-02, -0.76502484377420501907e-03, + 0.28625708369273782620e-04, -0.10007621746484184760e-01, + -0.67703029975686931929e-02, -0.27884978723790112415e-01, + -0.32105546481408238357e-01, -0.61534955984521536032e-01, + -0.66992473859346035603e-01, -0.86216118648948167347e-01, + -0.60429566961623569499e-01, -0.41289978246450836918e-01, + 0.20192737986417980817e-01, 0.45105096300972126466e-01, + 0.58489995158919540208e-01, 0.22156680042245847223e-01, + -0.31042641525885240894e-01, -0.44587242178458906527e-01, + -0.34134605023114786282e-01, 0.29809714359786285143e-01, + 0.41634881866934952965e-01, 0.18225228378113775968e-01, + -0.29440894794291967707e-01, -0.42559468872879722967e-01, + 0.84233026750795032822e-02, 0.37553391911241754131e-01, + 0.16872059810949160269e-01, -0.23087198450418400242e-01, + -0.40866603007324538155e-01, 0.26957111758189763323e-01, + 0.24012177464374638569e-01, 0.57484245194600177772e-02, + -0.38148654612767118888e-01, -0.92036768377462812446e-02, + 0.40606786958092291884e-01, 0.13134338547556390162e-02, + -0.20342239443134155913e-01, -0.19885943893335835536e-01, + 0.26947084956023714675e-01, 0.23153937907181398881e-01, + -0.40431027803319294356e-01, 0.12193024355917649309e-02, + 0.14631443244086397848e-01, 0.16756408037560854146e-01, + -0.23059642468216835082e-01, -0.22660282930653755790e-01, + 0.53609371620500445577e-01, -0.30867530504129714330e-01, + 0.71298934895180667015e-02, -0.27631104443146623645e-01, + 0.53898109037003975874e-01, -0.35312495871471616393e-01, + -0.34682221780206342297e-02, 0.55982754368145148938e-02, + 0.26012511226052418417e-01, -0.37436773389794397726e-01, + 0.11476519371908588257e-01, 0.95473374492502319916e-02, + 0.62330618534539722342e-02, -0.31097769569563876030e-01, + 0.22740076163153953581e-01, 0.11874794763405855172e-01, + -0.27900644106286846130e-01, 0.81849255258154805792e-02, + 0.15345199964938348314e-01, -0.96656254579324425713e-02, + -0.13525566595738076209e-01, 0.17948970150272389873e-01, + 0.51759140641349172043e-02, -0.25313760384738884235e-01, + 0.15214355381936632214e-01, 0.13109668202900753159e-01, + -0.24621563063832282298e-01, 0.63871871578035392322e-02, + 0.18467831311479360190e-01, -0.21850610310236842637e-01, + 0.55403810164865886084e-02, 0.43522537412714491084e-02, + 0.77802993778627082058e-02, -0.26838801913197356946e-01, + 0.26192344940067377457e-01, -0.13862531217573745789e-03, + -0.28538401841437039536e-01, 0.34443947377177562552e-01, + -0.16613656548471755076e-01, -0.25982931969875059514e-02, + 0.41923739716902171104e-02, 0.76640329902379648527e-02, + -0.12897535032832528265e-01, 0.42792595042982040998e-03, + 0.19023832011594233454e-01, -0.24782325256220844034e-01, + 0.94657656549968355320e-02, 0.12844273893865021732e-01, + -0.20813152741513320926e-01, 0.77133780826274074213e-02, + 0.12560964995296845792e-01, -0.19683749665688879404e-01, + 0.69164572833850307063e-02, 0.13766545576700966319e-01, + -0.24379584810674159029e-01, 0.18508998132991210522e-01, + -0.56704764521599343094e-02, 0.23640101973657209281e-03, + -0.62387679151797714727e-02, 0.13992256119361319230e-01, + -0.10435625240529055463e-01, -0.67375938054824169310e-02, + 0.25785563602306469516e-01, -0.30782350481449935464e-01, + 0.16111797604113922699e-01, 0.83967635089048833080e-02, + -0.25348715434986023726e-01, 0.24200688733004564746e-01, + -0.90011443032211573695e-02, -0.58977318093114041581e-02, + 0.84170391244883669551e-02, 0.20528380429658591409e-02, + -0.15377563032932554596e-01, 0.20364887080889008952e-01, + -0.13895687697948565578e-01, 0.26205467643958821680e-02, + 0.40281231477391670273e-02, -0.21876084345494768713e-02, + -0.33937566928935142090e-02, 0.44731001088753460579e-02, + 0.28242622644860377983e-02, -0.13773236966824919936e-01, + 0.18691156993951477117e-01, -0.10896726478055158635e-01, + -0.70304502414921289655e-02, 0.24423354416031706898e-01, + -0.29886805109144192610e-01, 0.19816750822468965493e-01, + -0.11406637033627943165e-02, -0.13274652604901557296e-01, + 0.13683831174141389275e-01, -0.86096662126273538519e-05, + -0.18184399365790530206e-01, 0.28491679075829036416e-01, + -0.23909276899248554232e-01, 0.73120029079302767058e-02, + 0.10998196612310450621e-01, -0.20205783858857340879e-01, + 0.15911070280688010409e-01, -0.22302993175591086066e-02, + -0.11480167658314452753e-01, 0.17010044716828678218e-01, + -0.12092192899577464474e-01, 0.10989932294172624627e-02, + 0.86016322122465533467e-02, -0.11491717634610459919e-01, + 0.70397115810592447022e-02, 0.85484001632067923172e-03, + -0.69477333716843328246e-02, 0.81757343833999511495e-02, + -0.50937599268437647182e-02, 0.87969812990746449818e-03, + 0.12450415790348781046e-02, -0.40717059492524665962e-04, + -0.33193525561240663085e-02, 0.65763524026036688716e-02, + -0.80972336465137597500e-02, 0.78719383343909526268e-02, + -0.70873051284830144991e-02, 0.69525207868405469389e-02, + -0.76517072840128069755e-02, 0.83121218888523532714e-02, + -0.78087688286014129632e-02, 0.57831730028057113518e-02, + -0.29747659999125228812e-02, 0.68681716019289935828e-03, + 0.22534802459141711675e-03, 0.12634034025440341042, + -0.17820081375748156316, 0.13551324157342800256e-01, + 0.16813449828053486645, -0.24966072545395351368, + 0.21039486321828362869, -0.64981531670019007652e-01, + -0.74164495175465902643e-01, 0.13734815099201691524, + -0.68207025939392332270e-01, -0.69243974307398412082e-01, + 0.20084031506507429854, -0.21538785133902174640, + 0.10560549002318353473, 0.97240522103681503729e-01, + -0.26801461527180675537, 0.33417317387423162156, + -0.24690810067208660006, 0.81993342300908128584e-01, + 0.79561756226166582828e-01, -0.13009872294622146227, + 0.72908075650969877968e-01, 0.54164831253627157559e-01, + -0.13467751454191220772, 0.12196952938975655356, + 0.12651186242638961903e-02, -0.14175809587553275803, + 0.22942521482027891655, -0.19321562776519385363, + 0.77356985758222279737e-01, 0.62312999682911665578e-01, + -0.12816818621208767026, 0.11689903597952515379, + -0.46036973013563874113e-01, 0.34299964573656933214e-02, + -0.81045907606344773366e-02, 0.64082051786410798577e-01, + -0.92104409922409660738e-01, 0.65758925136425547264e-01, + 0.28763348268877993869e-01, -0.10787043665064828535, + 0.12346340688194272495, -0.37647139598294000751e-01, + -0.70957596384953830482e-01, 0.13109429838573041782, + -0.67640978666071702174e-01, -0.63304263916762831821e-01, + 0.17704289611348919542, -0.15431196609537542463, + 0.74669552230408626353e-02, 0.18699264223381539818, + -0.27056847396140515372, 0.19145055296669655220, + 0.20833087596648092177e-01, -0.20627125514948219109, + 0.26522452923498102129, -0.16604091908768467412, + 0.32352219337781901176e-01, 0.32020807037668380657e-01, + 0.34741313941825613387e-01, -0.13675523830587391072, + 0.17811635373975581720, -0.90086368822796428213e-01, + -0.36286966932537183250e-01, 0.98999475215983429033e-01, + -0.20692247139072954959e-01, -0.10363469862523008724, + 0.15239508371702720213, -0.28821642146527406275e-01, + -0.17028609346358486443, 0.29523411512135333545, + -0.21300700354921450752, 0.24006679677460564595e-02, + 0.17510164778519410334, -0.15674326803987803647, + -0.49172471304287385802e-02, 0.16031299687514330432, + -0.14920774660145480484, 0.24198210091727435922e-01, + 0.72032357297800900242e-01, -0.29895866295725661947e-02, + -0.14229598759895570326, 0.19705186220242090767, + -0.37848156778514052689e-01, -0.20127503117363171325, + 0.31341207628772016491, -0.17235462453047617482, + -0.61991117320433518356e-01, 0.16949385874133518493, + -0.46153633856509876376e-01, -0.12080298452966095613, + 0.13036368856477800748, 0.53044166807352542692e-01, + -0.19142259082202431331, 0.11756870199836809421, + 0.10798811625381987689, -0.19298432210678179155, + 0.26454094487676556302e-01, 0.22531436064959756149, + -0.24519877202947504280, 0.14496292100749473900e-01, + 0.21167243647816016971, -0.16357297647754334702, + -0.37400881487600921849e-01, 0.95248135403755929129e-01, + 0.10977175490246125766, -0.27870787280368025662, + 0.14391123631763871882, 0.19870290080872529681, + -0.32968077134537698836, 0.12708059875481467205, + 0.11166918248460694363, -0.36082183198454985396e-01, + -0.18552233514036889361, 0.15978354385983709052, + 0.17563036573797408124, -0.35882856050510575363, + 0.13581455481987125822, 0.17963406854883262609, + -0.11529041360318591225, -0.16115800316072351195, + 0.14950106373758340061, 0.20028036013073022281, + -0.31208654700440974228, -0.12929671857513288027e-01, + 0.26322590623056940640, -0.11481020831980173758e-01, + -0.27365001546272627042, 0.76739608505192472010e-01, + 0.25979798608309562225, -0.76579084773471986503e-01, + -0.30680746843964973314, 0.17286695607255528340, + 0.26243972736705006854, -0.16285767366080627916, + -0.23898386103851904094, 0.94765823253469938514e-01, + 0.35459611360241793943, -0.15166495517498951306, + -0.31323789135620938584, 0.82959603536885445640e-01, + 0.31575319080969155294, 0.72517971006301210068e-01, + -0.38536397597760901901, -0.13924933054513174979, + 0.33624920726473261912, 0.24414337836524360736, + -0.12188608706688920658, -0.44204269803358708923, + -0.25330893463234319118e-01, 0.42089245019861593056, + 0.23539733733977624697, -0.49166047352575646678e-01, + -0.58919785630998766646, -0.11347111597157341634, + 0.20084876228130715825, 0.51575894637372143858, + 0.34288556311734019744, -0.34282756246797824184, + -0.38777162831971967449, -0.67339102243853643515, + 0.12969143488449760490e-01, 0.25377737854303744625, + 0.69781729661144265009, 0.84645472853291847670, + 0.63684223215785584760, 0.67877233318071783508, + 0.27068502877094652304, 0.30287685041927114860, + 0.91237818605231210678e-01, 0.47649660306380597907e-01, + 0.70384829789238143039e-01, -0.40378750173544038227e-01, + 0.40185158055050115844e-01, 0.72858549997126536169e-03, + -0.42855236940995987405e-01, 0.83376650314241795847e-01, + -0.10644192240207084321, 0.10440736466769694191, + -0.74789209599218503532e-01, 0.22067584253912222308e-01, + 0.43176967984993257221e-01, -0.10725679650546954269, + 0.15609450127649648898, -0.17910792722298396473, + 0.17117287932091412861, -0.13427236166040854015, + 0.76502075761269688892e-01, -0.10540673887440557208e-01, + -0.49747568841964670550e-01, 0.92147730644754677343e-01, + -0.10917796377763082372, 0.99337255447566122357e-01, + -0.67497741723103757416e-01, 0.23253891980888785618e-01, + 0.21334530173605172759e-01, -0.54934658667252431186e-01, + 0.69521357729980387541e-01, -0.62384439957360073026e-01, + 0.36557846919532156760e-01, -0.10622557025134557462, + 0.12170730425069349601, -0.34410873703844206684e-01, + -0.11264100591643526339, 0.19320325755572936854, + -0.27256762715466692493, 0.24267424203423523799, + -0.19829587056134961864, 0.64432678081246697044e-01, + 0.36349755660841844007e-01, -0.16391055954897487679, + 0.19736657283707040311, -0.21465024340571609018, + 0.12462129454334081036, -0.38609736441190159462e-01, + -0.10640172534257401338, 0.18390638123383096225, + -0.25877065672781934813, 0.22295485659049527061, + -0.17135487036040161768, 0.29428904516665844310e-01, + 0.80163158294831241002e-01, -0.21728485640131064982, + 0.26212773601335437323, -0.29206859291535802736, + 0.22088121792375836616, -0.14493962541050783854, + 0.41097288910491233671e-01, 0.86037650369173171438e-01, + -0.49762100716343937376e-02, 0.33481349833994211718, + 0.41134530861555962389, 0.90550035172472176370, + 0.15442918509872849420e+01, 0.21780895893704541599e+01, + 0.29539087818107527816e+01, 0.32128362476394278779e+01, + 0.25910941419209359005e+01, 0.15507896407738264166e+01, + -0.77991331071247538276, -0.17719889978308132061e+01, + -0.24116975086743295265e+01, -0.79932820612643973313, + 0.11621099379936699059e+01, 0.18385228436888167991e+01, + 0.13416141204100255901e+01, -0.11976266076774260139e+01, + -0.16434940592613853649e+01, -0.75079030037706395717, + 0.11799616375752990383e+01, 0.17345141604596820972e+01, + -0.41296571731706499531, -0.13827729150918774970e+01, + -0.82930755082888629737, 0.10965529053665510339e+01, + 0.14618038619528874733e+01, -0.92508836770514690784, + -0.10801963397064167083e+01, -0.15129263850982083150, + 0.14862115180571373596e+01, 0.37785869853810466479, + -0.16192571171387084572e+01, -0.56659196462366813452e-01, + 0.80313697284122165243, 0.82644440970568944227, + -0.11265587983954341578e+01, -0.87424308697123942480, + 0.15848638156878556149e+01, -0.66123070447657958382e-01, + -0.48714154495077927054, -0.87805865105250413549, + 0.12598222055723538038e+01, 0.42994403664357405681, + -0.15339748552237970625e+01, 0.50775496636458228306, + 0.52877064616318603107, 0.24016105325683534399, + -0.12793173922808311893e+01, 0.56088627185579287282, + 0.93407719449244852594, -0.94176490728238348993, + -0.41214577938716406846, 0.95987555025132309527, + -0.66568176781698733258e-02, -0.76052013903353610225, + 0.67743993479188677198e-01, 0.97638562188163413591, + -0.68361790371900765795, -0.66441404058316566594, + 0.12694424372016810398e+01, -0.44414879887095087829, + -0.53533092282540539752, 0.34511231164852995690, + 0.54974753082911365087, -0.70347053020745575758, + -0.23176119191244881623, 0.10308535884897023216e+01, + -0.60408252658555128267, -0.56665270198104189525, + 0.10741420763595677101e+01, -0.39478903417798472120, + -0.55529682204908281662, 0.65950038622839957103, + 0.38943799007254515862e-02, -0.38760108616813282456, + -0.13367640644505079939, 0.95184731416346080035, + -0.99589768055156180360, 0.28241911778384060083e-01, + 0.10486675980817019571e+01, -0.12288110146091133501e+01, + 0.47993022979216687363, 0.29916352724790507001, + -0.34897146768214165613, -0.16100201107106884568, + 0.42047149708654002476, 0.21843365862359565704e-01, + -0.74723644439029246467, 0.93671509630177141048, + -0.30224310723081276864, -0.59008339325023773103, + 0.88633929798263200173, -0.32165810769303421202, + -0.54235154911243188547, 0.88375565552868440289, + -0.42487689427869823611, -0.36375169404819951424, + 0.76783506546962543293, -0.53416058422517187498, + 0.42168374985535862776e-01, 0.13650539012180998300, + 0.15244531822997170467, -0.51417957056728369469, + 0.41738760289936155390, 0.23703994424704677435, + -0.98532404397095540993, 0.11924786517507421912e+01, + -0.63381321688548175608, -0.30155989095420526747, + 0.92334238268900070690, -0.81779225067155369988, + 0.15428438264787197598, 0.48541997575100176432, + -0.61314332176995078871, 0.20098861777778259663, + 0.34549242434048788031, -0.57659275239507290500, + 0.36235612620127055639, 0.37092052526316802996e-01, + -0.25184753136148302355, 0.13365560884272353892, + 0.12166504552246357185, -0.18115335936076185086, + -0.11198584940933645204, 0.56752008620666116734, + -0.79564399949355602004, 0.52436269200196106155, + 0.14800801232286719955, -0.80046829603665337061, + 0.98163552500462969430, -0.55132192409136526745, + -0.21151813857244980421, 0.79130308961242878940, + -0.79940521222400839907, 0.23445721223767176933, + 0.51776247691134791307, -0.95828206236254398487, + 0.80371331621356378871, -0.16688063272126157921, + -0.54207846946026916335, 0.89113771710519829039, + -0.70462458355292667544, 0.14643071930424669813, + 0.40982968897299187905, -0.63690153533243432094, + 0.44464975638572457051, -0.85800264979933784509e-02, + -0.37681689070138701947, 0.49108790938341040366, + -0.31391603862545136572, 0.20163669524578954444e-02, + 0.23384385928147166656, -0.27072474833755461043, + 0.13054169693116859929, 0.59056829137407444719e-01, + -0.16840834327963979944, 0.14638194955972425038, + -0.38258581911625830219e-01, -0.67657231330717979012e-01, + 0.10786390560851023823, -0.83765883087896231274e-01, + 0.44113503745207997830e-01, -0.38255437238727957316e-01, + 0.73896543655845969845e-01, -0.11610763456776840297, + 0.11932555354826958338, -0.68393089910015913979e-01, + -0.82687328866087907164e-02, 0.59793602923206665145e-01, + -0.53382397848231073756e-01, -0.17193741533603541516e+01, + 0.24996627938782540745e+01, -0.39303009947224770704, + -0.19863426057415349835e+01, 0.30064419995373441452e+01, + -0.24389797080017689979e+01, 0.41575764003208487418, + 0.14757656422861291645e+01, -0.23277350213434337967e+01, + 0.12983269879412240311e+01, 0.68787069680182877374, + -0.26611720097555897624e+01, 0.30268047501600139348e+01, + -0.17281276474381817021e+01, -0.86142638337825705452, + 0.29737462365025204569e+01, -0.36920773390587195983e+01, + 0.23487269860497921314e+01, -0.10698859148248877904, + -0.19351794411290261788e+01, 0.22775064391168369227e+01, + -0.11273468594085804817e+01, -0.91002359711528635344, + 0.20909086473255498184e+01, -0.18472905701026296477e+01, + 0.15237693429643555179e-01, 0.19134196642379979192e+01, + -0.29526910258502345741e+01, 0.21473710697753256582e+01, + -0.35555368957534155827, -0.15095618891972546471e+01, + 0.19948279292371275950e+01, -0.12562009749638736178e+01, + -0.22980369691854002356, 0.94364144709739350425, + -0.61363772192189236510, -0.68568996817639837893, + 0.14937080692188882125e+01, -0.12499188753920280615e+01, + -0.30823807009132470069, 0.17614808344188668254e+01, + -0.22019853840983869553e+01, 0.88578829312347995284, + 0.97910025620305973781, -0.22074693241031915214e+01, + 0.14639532872877285552e+01, 0.49195983104746432435, + -0.23951249895726594019e+01, 0.23157968504837151968e+01, + -0.34013572523586904639, -0.24792101586305301808e+01, + 0.37469248231028404739e+01, -0.26994722905156289805e+01, + -0.24488837397924756445, 0.26606167817363677308e+01, + -0.31286445563668179304e+01, 0.12716850905712087094e+01, + 0.88120347811401189553, -0.17246120505355670982e+01, + 0.38363535627702638475, 0.14744767637367803825e+01, + -0.22377749281914174340e+01, 0.80046696546811979545, + 0.13026397309831614368e+01, -0.23325847824981074119e+01, + 0.95326384442300771127, 0.13426835091607500772e+01, + -0.25649369534010397764e+01, 0.10490033643895708693e+01, + 0.17828791172756155436e+01, -0.36359202785168620586e+01, + 0.24012774325289245603e+01, 0.71473263406269593734, + -0.32482272281062249952e+01, 0.27179437611235965910e+01, + -0.56042724895246795458e-01, -0.23336448213540088581e+01, + 0.19455802101220585065e+01, 0.26284199801143437458, + -0.18960614328187508359e+01, 0.69247143141180089732, + 0.19219964498962751609e+01, -0.32117518437510930163e+01, + 0.10807620866465950105e+01, 0.24436891243994192102e+01, + -0.41357254709184951835e+01, 0.19866054154395520470e+01, + 0.14960515390036304151e+01, -0.28930722103483130780e+01, + 0.64327472173322619575, 0.21795140331837039582e+01, + -0.23429551510992316921e+01, -0.68828864966343028531, + 0.30294537265869569964e+01, -0.19318556527596706385e+01, + -0.16867452044646715770e+01, 0.31459000715970932838e+01, + -0.62494354752650871365, -0.32938872266081746787e+01, + 0.36038383835693448276e+01, -0.43688568229572476154e-01, + -0.33256617487157531521e+01, 0.22539776906310620141e+01, + 0.12159167970036093287e+01, -0.22577926007143496179e+01, + -0.11027715908531763311e+01, 0.40763717069394571624e+01, + -0.23193878137673795692e+01, -0.27430005530239505163e+01, + 0.45133102830815197137e+01, -0.11339182468043933483e+01, + -0.26019513746133102750e+01, 0.11107136392454990403e+01, + 0.28303383191627706772e+01, -0.28199276389757756967e+01, + -0.22472195567661654714e+01, 0.50483809474957546115e+01, + -0.15392446106358992353e+01, -0.32989039263986530415e+01, + 0.19824186235517822219e+01, 0.27168939475195665878e+01, + -0.27273578088771799344e+01, -0.27890649635369006987e+01, + 0.46055836699511383259e+01, 0.49822793798439274360, + -0.43973437021590431328e+01, 0.30364435286045682316, + 0.42549278944573485362e+01, -0.10389805623922507838e+01, + -0.44412834792090700731e+01, 0.15851467850179667973e+01, + 0.45360358364120383357e+01, -0.24675826439038632820e+01, + -0.43444069599269736770e+01, 0.25537368590835205495e+01, + 0.40624240780960896302e+01, -0.18803858095176284593e+01, + -0.52816398270958435646e+01, 0.21074192409878444998e+01, + 0.51828956699599428859e+01, -0.13265376577885317211e+01, + -0.51940454837556941925e+01, -0.95381644132579268547, + 0.59867817447273798948e+01, 0.23024422102308474969e+01, + -0.53198293046195557210e+01, -0.40726796068490260794e+01, + 0.21375901123611447119e+01, 0.69790381287707505820e+01, + 0.29389458301492660253, -0.63513752809478649652e+01, + -0.44171658704985592436e+01, 0.16191709731707248920e+01, + 0.85655037153294681929e+01, 0.25179646203742889199e+01, + -0.35807595526758317916e+01, -0.83413335558797498948e+01, + -0.49102920682021622412e+01, 0.44924286189956079696e+01, + 0.74544547044799740476e+01, 0.94792579951726310128e+01, + 0.91234631447897840406, -0.48286059107411087865e+01, + -0.10846459348529046807e+02, -0.13412753567814334588e+02, + -0.10679454338749049924e+02, -0.10163762416737270655e+02, + -0.50622498303079517257e+01, -0.42287469209814956272e+01, + -0.18749380743375998470e+01, -0.56146715763633370244, + -0.11745308369508278279e+01, 0.65125036032994831903, + -0.72677452323918667609, 0.24355959723751560708, + 0.22539516783359581087, -0.71098785265546449175, + 0.10288178536855348000e+01, -0.11027200685775979672e+01, + 0.90001005390273669526, -0.45941128587011065276, + -0.11872998765928524656, 0.70254317092791740418, + -0.11543431782834878696e+01, 0.13704511908656535901e+01, + -0.12995327523557196336e+01, 0.96021954241214857451, + -0.43025847517360993333, -0.16754747983004078526, + 0.69987450260841777006, -0.10499652380725459366e+01, + 0.11487950120713747992e+01, -0.98639369172381163864, + 0.61600477439119383227, -0.13666609322064185439, + -0.32909254492285433535, 0.66773519811136139435, + -0.80015589213630899934, 0.70193141670486558503, + -0.40713936236465214646, 0.64693318996942883459, + -0.58828200566499522228, 0.64626112740228591411e-02, + 0.82592953849197392469, -0.11557909401776980118e+01, + 0.14231227444744878330e+01, -0.10235812280193006263e+01, + 0.59054322738856857011, 0.29179415648845108411, + -0.85690153883009778646, 0.14782440139937298440e+01, + -0.14512847769327141823e+01, 0.13004529532208146669e+01, + -0.52330651036149378186, -0.15612046590397016255, + 0.10956342708199897640e+01, -0.15217120822178609174e+01, + 0.18517409755550942041e+01, -0.14671797504515076138e+01, + 0.99477431780524072646, -0.24919850932180655917e-01, + -0.66421804837526010612, 0.14281926329720520119e+01, + -0.15509848521520332998e+01, 0.15383059480181959788e+01, + -0.91065205753935762889, 0.30429993329658294732, + 0.38698451351019458322, -0.11036343902412830698e+01, + 0.46480306140954635863, -0.21997660632290396698e+01, + -0.25628757790744214340e+01, -0.50540336981017919271e+01, + -0.98687203480508802755e+01, -0.12332565669642750805e+02, + -0.18473484101034365779e+02, -0.18620854703356961579e+02, + -0.16017293806586085481e+02, -0.90629374738894252772e+01, + 0.46710972234493217670e+01, 0.10454106886869219295e+02, + 0.14763089043368948339e+02, 0.44805791188364194610e+01, + -0.67132760223709597724e+01, -0.11172318203133345449e+02, + -0.80457533922921307123e+01, 0.73070382172090235784e+01, + 0.96671660621445880679e+01, 0.47055527421841842894e+01, + -0.72113269197534481947e+01, -0.10399628264633786756e+02, + 0.26287653082673347882e+01, 0.79954253818895049122e+01, + 0.53918348431957898725e+01, -0.70413998593843247775e+01, + -0.83357663387238698505e+01, 0.52170989405483050305e+01, + 0.66673270042006356206e+01, 0.88785298051077765624, + -0.90371302892333460477e+01, -0.20622421573640772330e+01, + 0.95113880835837836258e+01, 0.45650414196439337289, + -0.47648998453114632667e+01, -0.52312983329141911071e+01, + 0.72653682495749123404e+01, 0.45432472626691255968e+01, + -0.86832964830225769504e+01, -0.44303602675427061763, + 0.36593986960339441872e+01, 0.47526938521438708563e+01, + -0.73507537678859486974e+01, -0.24268300736979102616e+01, + 0.86901116983133412930e+01, -0.22132085612102745387e+01, + -0.42382411032564464293e+01, -0.25022474947421230462, + 0.64820156419978127715e+01, -0.22752806854891813870e+01, + -0.65016125479533073417e+01, 0.63056109498094716770e+01, + 0.20777865800616788228e+01, -0.56018578941724292974e+01, + 0.78169817210387348982e-01, 0.43906518331987136605e+01, + -0.15608373776668485466, -0.61352877265666974083e+01, + 0.43777719398705761122e+01, 0.37235274337603772032e+01, + -0.73551336483006579670e+01, 0.23869182329197995429e+01, + 0.35321176648427714539e+01, -0.24461036107352556179e+01, + -0.28643662688806315053e+01, 0.37491975401701607140e+01, + 0.18647005049876836935e+01, -0.66075354181944971899e+01, + 0.39407034246144467815e+01, 0.32440038423264097034e+01, + -0.64820478906256386864e+01, 0.26118785181663790596e+01, + 0.29043915416293550891e+01, -0.33914967836519349653e+01, + -0.65234323879419109371, 0.29345205752058469706e+01, + 0.30219272568731220252, -0.53916793671474989580e+01, + 0.58875183977315934669e+01, -0.32630221164517558829, + -0.59092623576584868417e+01, 0.68214552379949964234e+01, + -0.22381633470162305422e+01, -0.24298085434195910715e+01, + 0.26307969057773670229e+01, 0.60693171109115751083, + -0.23897912861003538509e+01, -0.21179135664683091528e-01, + 0.41555826869471861329e+01, -0.51294464857051789153e+01, + 0.12437011410595502081e+01, 0.40967571662145996214e+01, + -0.57667899416666594803e+01, 0.21976173855177902894e+01, + 0.32168800734013673903e+01, -0.55061202814066101396e+01, + 0.29709078639853934156e+01, 0.16021739349320811563e+01, + -0.39477570783131179510e+01, 0.25618159336721992858e+01, + 0.28484642244645141940, -0.11745981588229983394e+01, + -0.78844899737099238823, 0.32054462546659907574e+01, + -0.28503129125741484273e+01, -0.89970863066802575503, + 0.52886235192495929525e+01, -0.65155703170209129382e+01, + 0.32351725644735203069e+01, 0.22336064618232764900e+01, + -0.57685655664402855081e+01, 0.49193738681147625158e+01, + -0.73053714570769057168, -0.32756687174542422625e+01, + 0.41506437327085929923e+01, -0.17111213098259139276e+01, + -0.16091132642455618917e+01, 0.31061589654522698822e+01, + -0.19802127414009131900e+01, -0.22896642493029284449, + 0.13307820934871228413e+01, -0.45836535676141382245, + -0.11901980300750105712e+01, 0.16059011880123728044e+01, + 0.15956780662317315844, -0.29589875472499587161e+01, + 0.44446424012943595017e+01, -0.29655330191653721528e+01, + -0.90609026560632000002, 0.46663398180106385738e+01, + -0.56223437554843860298e+01, 0.29479338813023843180e+01, + 0.16780664935366822466e+01, -0.51593720057394136802e+01, + 0.51709137965777145496e+01, -0.17118833171114680169e+01, + -0.28893738507914905611e+01, 0.56281455646705031981e+01, + -0.47908924648160269300e+01, 0.10472173177204755490e+01, + 0.31491828091944755741e+01, -0.52064324681487628155e+01, + 0.40704186174864052106e+01, -0.71890015995007483518, + -0.26106547809358207068e+01, 0.39619170245362287375e+01, + -0.27977777556609044751e+01, 0.17582598089584022816, + 0.21370149145623504872e+01, -0.28178521587987170882e+01, + 0.17486414276085897601e+01, 0.12749860551953462462, + -0.15407802654780402563e+01, 0.17508604959796711942e+01, + -0.88589235889900741494, -0.28812884422716206201, + 0.99293522880105711259, -0.91816621138964027438, + 0.33207057629985536895, 0.24109464416868989223, + -0.42474721307681495563, 0.23243922698517591185, + 0.40235189093289061568e-01, -0.94374288669776817962e-01, + -0.11682028500950240868, 0.38385139373223281511, + -0.43168898202315469925, 0.16758712569988312713, + 0.24064304286720963888, -0.49028740049823732461, + 0.38731508470437908676, 0.59379628668698902771e+01, + -0.86902311254064930068e+01, 0.14109792799285765241e+01, + 0.70278630358544678103e+01, -0.10478804801653325285e+02, + 0.82791738803782681799e+01, -0.65046726511047514574, + -0.63794466354546095488e+01, 0.96349919778002828252e+01, + -0.57534150483023784872e+01, -0.16809055721245000914e+01, + 0.92689199091474652192e+01, -0.10879675874144201231e+02, + 0.64879180345668494567e+01, 0.26990800969268775589e+01, + -0.99252700710321359878e+01, 0.12059594079494051044e+02, + -0.66176321164993812118e+01, -0.16584062388192866155e+01, + 0.87530442282698111001e+01, -0.90100031486631344535e+01, + 0.37493326747097888152e+01, 0.45217030261335029451e+01, + -0.88597162428072167017e+01, 0.74496331553409609327e+01, + 0.41285445156619360318e-01, -0.73244272966128134428e+01, + 0.10662374928121955975e+02, -0.65808217054198179241e+01, + -0.84995048486577517988, 0.77265389515425280109e+01, + -0.82449793825994035501e+01, 0.36703840063195785071e+01, + 0.34378863619587685108e+01, -0.63700274150809637064e+01, + 0.41060202279367645772e+01, 0.26210946356194253504e+01, + -0.70893857087624816415e+01, 0.65409266864290716015e+01, + 0.24929626737577526008, -0.70554010032205303204e+01, + 0.96410290675562357876e+01, -0.44472518065483770400e+01, + -0.36087501642515458222e+01, 0.94292954206711314669e+01, + -0.70040036286132059118e+01, -0.88579743774622465846, + 0.92077693396586557384e+01, -0.97949294470854404437e+01, + 0.26912666404929703745e+01, 0.81912941543057495863e+01, + -0.13199345058755733717e+02, 0.93225732974118411533e+01, + 0.18516979339619132894e+01, -0.10529759412013213193e+02, + 0.11272851798099946308e+02, -0.28633408908225450595e+01, + -0.60362765549701871137e+01, 0.88758314902836961124e+01, + -0.23368565830791454552e+01, -0.61568054703580727960e+01, + 0.95963629050105456741e+01, -0.33085545225592754015e+01, + -0.60190469197274545365e+01, 0.10758307876220777999e+02, + -0.49808330703306014087e+01, -0.51430732034075932191e+01, + 0.11150641050937011300e+02, -0.57249271746282488493e+01, + -0.55078210962520310900e+01, 0.13191321730045881822e+02, + -0.85021851346986387910e+01, -0.36638731943828388715e+01, + 0.13328313245774362272e+02, -0.10430642674303490125e+02, + -0.84538245792788146993, 0.10392550712619421205e+02, + -0.78781111920072124377e+01, -0.23012129920747810274e+01, + 0.97274480690651756731e+01, -0.46420920349746124245e+01, + -0.69751358263445766283e+01, 0.13451152155025745571e+02, + -0.56220406675896574811e+01, -0.83434512930930022634e+01, + 0.15159156475205323389e+02, -0.64243512744146800131e+01, + -0.74648561934235955206e+01, 0.12447153775931569797e+02, + -0.22553054140203538935e+01, -0.99745131331376661876e+01, + 0.10632696694385041170e+02, 0.24253494324780162650e+01, + -0.12646306949682715626e+02, 0.82710767224405241649e+01, + 0.69970642908640252600e+01, -0.13475562226699127066e+02, + 0.33766827261897582879e+01, 0.12703245184353630037e+02, + -0.13942404603560239806e+02, -0.63117602364166902618, + 0.14024496199011085906e+02, -0.85781490728644360644e+01, + -0.68201977213132360944e+01, 0.11628204219217586513e+02, + 0.26340656973334533042e+01, -0.15838097478873351065e+02, + 0.95704897249909368639e+01, 0.10506022785709500766e+02, + -0.17012322626599846842e+02, 0.24255653073510718976e+01, + 0.13024853547887829563e+02, -0.59552574413832140010e+01, + -0.11718505137167154473e+02, 0.12799551593346185641e+02, + 0.76721793966474072235e+01, -0.19130157833786213928e+02, + 0.46404252031145665214e+01, 0.15005196851531138691e+02, + -0.85946352597570108145e+01, -0.11957285537503587136e+02, + 0.12547574041289928815e+02, 0.10456617227014708860e+02, + -0.18265641586518658102e+02, -0.27688189523449140417e+01, + 0.18714298063411760609e+02, -0.12160222463599457132e+01, + -0.18006577061980404864e+02, 0.43642038133463767480e+01, + 0.18914975092426466574e+02, -0.71566416370047001294e+01, + -0.18463310162551842097e+02, 0.99177435013326178392e+01, + 0.18342849688172254474e+02, -0.10353330880930410984e+02, + -0.17866070004376009450e+02, 0.89591179334900150621e+01, + 0.21137744834067913047e+02, -0.80920308954972028914e+01, + -0.22051403696758381301e+02, 0.53501493583704808898e+01, + 0.22408656308765401377e+02, 0.33081647119799026946e+01, + -0.24645785729346457060e+02, -0.97195708008478423068e+01, + 0.21849977168222363133e+02, 0.18047111557372531365e+02, + -0.10087658155708277619e+02, -0.28413867236198306898e+02, + -0.15401161252093860110e+01, 0.26139295538683363418e+02, + 0.19973904228183023690e+02, -0.88976798024192156333e+01, + -0.33617546315958200864e+02, -0.12657323321677171890e+02, + 0.16333326255953547701e+02, 0.34893173540003864730e+02, + 0.19500807195365130298e+02, -0.16655823610739357576e+02, + -0.34180966291299249349e+02, -0.36856841051408572696e+02, + -0.62772515622466782403e+01, 0.21753575416235996443e+02, + 0.45284745694824692919e+02, 0.55456792331413701902e+02, + 0.46569185720695891462e+02, 0.40615672265796071372e+02, + 0.23171768826224017346e+02, 0.16442168972896677559e+02, + 0.83739476484580102067e+01, 0.26618478489490868810e+01, + 0.40786856637462927111e+01, -0.17332355811611046548e+01, + 0.23475810582780014535e+01, -0.96963304210785861148, + -0.17806158386529716275, 0.14669341883731026321e+01, + -0.23458474354250409277e+01, 0.26536675122846937747e+01, + -0.22941303371197308003e+01, 0.13523632853092766304e+01, + -0.60967373876157325563e-01, -0.12711184982551722022e+01, + 0.23174953315762758521e+01, -0.28323750676396368675e+01, + 0.26915652878328413244e+01, -0.19375360573645648010e+01, + 0.75104893680912543363, 0.57974934269828348743, + -0.17438791473129124920e+01, 0.24697836374783856961e+01, + -0.26013126303710194520e+01, 0.21224338549641208473e+01, + -0.11681415357871995919e+01, -0.19297269124948217278e-01, + 0.11429993714369526270e+01, -0.19307010375660680346e+01, + 0.21948787196872658889e+01, -0.18818908167125889541e+01, + 0.10801636819992985750e+01, -0.10705746683772863204e+01, + 0.54086593773961977316, 0.67777021827268157939, + -0.22083601158247208041e+01, 0.26419399892277724007e+01, + -0.28673635302857189977e+01, 0.18086319443780030092e+01, + -0.74014604758405488916, -0.10724410768837446817e+01, + 0.21483966661214104477e+01, -0.32053077008636265965e+01, + 0.29455269869988445208e+01, -0.24237897672337438415e+01, + 0.75065203438402827718, 0.64754642383322913446, + -0.24215343952328431953e+01, 0.31066307803007271460e+01, + -0.35273979467582750047e+01, 0.25650566314351523900e+01, + -0.14712525318837079702e+01, -0.47473004811735391995, + 0.17613291321437352099e+01, -0.30558121452265014639e+01, + 0.30244269786966357927e+01, -0.26759269741930329367e+01, + 0.11653344584741516243e+01, 0.23292431411790726070, + -0.16746489533596951027e+01, 0.29980472736836123460e+01, + -0.16389443444045566078e+01, 0.45722181817981617513e+01, + 0.46908012878866731654e+01, 0.91408594343674884897e+01, + 0.19030657494971357835e+02, 0.22205741562202042871e+02, + 0.35350288455499914164e+02, 0.33979492777747154264e+02, + 0.30466988133666184524e+02, 0.16619387280873944235e+02, + -0.87047211062344036492e+01, -0.19303840540994812613e+02, + -0.27908674261804684136e+02, -0.79901763052106273832e+01, + 0.12230428089676193437e+02, 0.21004079629136118257e+02, + 0.15041085159530142690e+02, -0.13818473192515568826e+02, + -0.17781394284522821891e+02, -0.90518342695091469352e+01, + 0.13635968097304697721e+02, 0.19393903914637842689e+02, + -0.50828434042822774330e+01, -0.14577281130203441961e+02, + -0.10529373002563575668e+02, 0.13623914439858685554e+02, + 0.15166202784540388393e+02, -0.95354778122353121006e+01, + -0.12399253861808105626e+02, -0.19768621320612849157e+01, + 0.17417247112253399166e+02, 0.31550560806552989668e+01, + -0.17043980626853777238e+02, -0.14486080760208912555e+01, + 0.92462885439195332538e+01, 0.97390881057517635355e+01, + -0.13901718556844183894e+02, -0.78097975354410440474e+01, + 0.15286823144317219558e+02, 0.18631864328727589797e+01, + -0.78343746156406721681e+01, -0.80566774822229110242e+01, + 0.13210265363839621244e+02, 0.46576463253956879029e+01, + -0.15956512015136373961e+02, 0.35120751966437442348e+01, + 0.87848550601879225042e+01, -0.53999173205414741084, + -0.11101613340148924536e+02, 0.33767945455809345034e+01, + 0.12779834946983889665e+02, -0.12142550192032045331e+02, + -0.37866248661780455009e+01, 0.10600546857654311594e+02, + -0.46176278749534571677, -0.77961885516008955221e+01, + -0.11841788294863693498, 0.11806347129487228642e+02, + -0.84425512661387251967e+01, -0.67695478489956908419e+01, + 0.13607165094865209198e+02, -0.43537925716243712770e+01, + -0.67268591367059435981e+01, 0.47639702943903232679e+01, + 0.50628437465585154342e+01, -0.66442065439515278769e+01, + -0.38719134015344138788e+01, 0.12697146317425044515e+02, + -0.76255807547328178231e+01, -0.59504029419222934649e+01, + 0.12202239246192460698e+02, -0.52075252722721785403e+01, + -0.48841690387802669804e+01, 0.56401120743956383308e+01, + 0.19702699317026755033e+01, -0.61923959977170843771e+01, + 0.28390949595478737894e-02, 0.97294362635180196008e+01, + -0.10947804788000178533e+02, 0.86901941943501870291, + 0.10497313422236937086e+02, -0.12007068932285305252e+02, + 0.33627727779821081633e+01, 0.53111118040433638043e+01, + -0.55296901651752046192e+01, -0.77346336389010350576, + 0.44174931452661185816e+01, -0.24961539756960904324, + -0.71772115775319500486e+01, 0.87836579716405829288e+01, + -0.14386720867287154935e+01, -0.84941780613150168477e+01, + 0.11444911134513558792e+02, -0.45161421124938039284e+01, + -0.59251649181920909015e+01, 0.10544815136410466749e+02, + -0.61274606070656982837e+01, -0.21775170218226689300e+01, + 0.64342027110466091244e+01, -0.38581541067898483810e+01, + -0.13213317761011209583e+01, 0.27389870095402391037e+01, + 0.12351540325767396133e+01, -0.60847095222401668124e+01, + 0.57337581780780224605e+01, 0.10169301611817425091e+01, + -0.90615574678121806329e+01, 0.11316684662744338041e+02, + -0.52776416312436396083e+01, -0.47485588251557047101e+01, + 0.11090711396152343582e+02, -0.92189340660875274125e+01, + 0.11187653313731582561e+01, 0.65907643768085950597e+01, + -0.83807271555030968813e+01, 0.38854564928571755367e+01, + 0.23507575574390613404e+01, -0.52758281110749676301e+01, + 0.33697627721324394656e+01, 0.51842980219178580459, + -0.23383611149336527291e+01, 0.49959772529621654380, + 0.27299170046510052856e+01, -0.35869658246469873220e+01, + 0.29013416039864153850, 0.50101463561306296413e+01, + -0.79214459705074213858e+01, 0.53360718724541600366e+01, + 0.16989329679283935448e+01, -0.85390200821458890346e+01, + 0.10175379843133347535e+02, -0.50854048134616665067e+01, + -0.35929623328627999790e+01, 0.10076540620651806890e+02, + -0.10036407902383110979e+02, 0.34807667177351375720e+01, + 0.52243046059795261726e+01, -0.10456316353681536668e+02, + 0.89982911941065051309e+01, -0.20919276753915228007e+01, + -0.56919628196983644841e+01, 0.95133680342244293371e+01, + -0.74037665806712018579e+01, 0.11782322796751580896e+01, + 0.49933299757859614942e+01, -0.74713634691303454360e+01, + 0.52592261643808431160e+01, -0.33944734832524675605, + -0.39891579495611861894e+01, 0.52553832942691514063e+01, + -0.32441705850200261985e+01, -0.28085627797716522513, + 0.29414932599000578328e+01, -0.33518105753107092504e+01, + 0.17447284967996778970e+01, 0.45094996644115153961, + -0.17845074619822094419e+01, 0.16735662935555819519e+01, + -0.61693846347201797276, -0.41233975234174219393, + 0.71476765703578315492, -0.32094263136511996803, + -0.21505825469267075833, 0.33238348749300888896, + 0.56201105788235811156e-01, -0.55981542659493144232, + 0.66306924563987434951, -0.19147727554342858225, + -0.54410575333999045000, 0.98006841119547682961, + -0.75589590251645244479, -0.75274176639471779282e+01, + 0.11027273489805445195e+02, -0.16642718618049465729e+01, + -0.95064885524624127555e+01, 0.13900759874396440452e+02, + -0.10841954143140997147e+02, 0.26158344132525612746, + 0.93885839900534122648e+01, -0.14017524787335730707e+02, + 0.86911705453389611620e+01, 0.14631993935603602175e+01, + -0.12056177811446085357e+02, 0.14398256658727616397e+02, + -0.87229852104361231824e+01, -0.35328384871941445056e+01, + 0.12810711899938288738e+02, -0.15155859196934377664e+02, + 0.71273474874201587781e+01, 0.42069249653789562160e+01, + -0.13416433529137021807e+02, 0.12599758783903897807e+02, + -0.42766464848915672903e+01, -0.78007560167487346448e+01, + 0.13497179714572913767e+02, -0.10728425712557767113e+02, + -0.59855647020022539895, 0.10852902371592266562e+02, + -0.14803829330397512365e+02, 0.77617239810918743359e+01, + 0.35229776863628643468e+01, -0.13022996298345917765e+02, + 0.12212297037447957138e+02, -0.37087826476388605634e+01, + -0.79752849475901772536e+01, 0.12245932071856792334e+02, + -0.77068336697020622950e+01, -0.40479837986649318538e+01, + 0.12094476144601424394e+02, -0.11781356801554830227e+02, + 0.11011926941427105930e+01, 0.10136813238123679071e+02, + -0.14990298631958486553e+02, 0.75198653883002002374e+01, + 0.49609954148694317411e+01, -0.14562048881243196519e+02, + 0.11658791906118343817e+02, -0.28838906759853837058e-01, + -0.12995420772542818355e+02, 0.14898747711876941580e+02, + -0.54038834145803109621e+01, -0.10107511436846738917e+02, + 0.17372822355962227903e+02, -0.12030969468905324149e+02, + -0.37038329982998874357e+01, 0.15347998666026530401e+02, + -0.15211617695388136795e+02, 0.18405495108332687870e+01, + 0.11410010679196300742e+02, -0.14801674014657299594e+02, + 0.36919675999946623968e+01, 0.10103816031561169808e+02, + -0.15630274326020385800e+02, 0.57195808444877780374e+01, + 0.91550612440934902025e+01, -0.17001887111711575074e+02, + 0.84079542226878363209e+01, 0.73438782844003362982e+01, + -0.17264155599522187146e+02, 0.98417647622953374764e+01, + 0.67213145309596038501e+01, -0.18481050206266026237e+02, + 0.12011112574652775820e+02, 0.54244219440109135988e+01, + -0.19052342170893339812e+02, 0.13944812395673565675e+02, + 0.32170155983910331265e+01, -0.17038172708683454459e+02, + 0.11999792125933783637e+02, 0.47454079887513938019e+01, + -0.16904785102132176888e+02, 0.92896054923233197798e+01, + 0.90042626102921978770e+01, -0.19994182767962559666e+02, + 0.93012259130554575393e+01, 0.11016727735867535287e+02, + -0.21025645007581385215e+02, 0.79679137204331755839e+01, + 0.12452705418731913056e+02, -0.19145305020766553383e+02, + 0.28725676785694682636e+01, 0.16094862086733527917e+02, + -0.16994522556569680916e+02, -0.33233815940404336509e+01, + 0.19355522919801831705e+02, -0.12945192731672591435e+02, + -0.10438924889003741825e+02, 0.20763694081257504820e+02, + -0.59985549184151283342e+01, -0.18008661642664883118e+02, + 0.19768041949363784227e+02, 0.20462224285578711758e+01, + -0.21612688709845130575e+02, 0.12233227360160091379e+02, + 0.12191291677582313469e+02, -0.20049466979190672333e+02, + -0.18049976906890954353e+01, 0.22686403181295300868e+02, + -0.14353859299983682263e+02, -0.14931314197326138071e+02, + 0.23815414292204462043e+02, -0.11552735530600675151e+01, + -0.22118148346265371629e+02, 0.10443999688255063418e+02, + 0.17731256190748940327e+02, -0.20618409796337843432e+02, + -0.97025283276222200612e+01, 0.26858300209492263377e+02, + -0.51022558143133966979e+01, -0.24041293774219141710e+02, + 0.13261320039157709516e+02, 0.18967494157967369262e+02, + -0.20452697099328950969e+02, -0.14472188956254127490e+02, + 0.26647284027352004188e+02, 0.48675259610206351724e+01, + -0.28597949904365133733e+02, 0.15183606572608405738e+01, + 0.27908443908916595433e+02, -0.69911344607942611518e+01, + -0.28785685633837225339e+02, 0.11171686368161234171e+02, + 0.27703914921040798447e+02, -0.14759042355400282531e+02, + -0.28010135965140026570e+02, 0.15412761226667168302e+02, + 0.27967102051799503926e+02, -0.14586919777926217634e+02, + -0.31377532578524917284e+02, 0.11879354135459143649e+02, + 0.33487580229841952928e+02, -0.74777160384347025612e+01, + -0.35195966927637442723e+02, -0.39578470691153353478e+01, + 0.36809833124164597962e+02, 0.14914397337205420158e+02, + -0.32645670890599596703e+02, -0.28791445455855683377e+02, + 0.16964996985059915602e+02, 0.41861555928805167071e+02, + 0.31530230322539098964e+01, -0.39682850697163480902e+02, + -0.31632816676351687590e+02, 0.15602275610139825446e+02, + 0.48772697906118573030e+02, 0.21564534670555680407e+02, + -0.26421217189327499852e+02, -0.52799287555723189769e+02, + -0.28792157620746753111e+02, 0.23335947907180127459e+02, + 0.54791948235829195823e+02, 0.53408451748442210771e+02, + 0.11734964652000057228e+02, -0.34256699396222352050e+02, + -0.69175998138729099196e+02, -0.83161870767310887231e+02, + -0.73096219252186926951e+02, -0.59538216379706391024e+02, + -0.37283320375777634581e+02, -0.23942319183391091997e+02, + -0.12775055357897013408e+02, -0.50855314161745255319e+01, + -0.44760847434937209854e+01, 0.70396913818302253585, + -0.20055081023805563234e+01, 0.72828123994096305438, + -0.44591303691515010721e-01, -0.89823527978309469777, + 0.15262434397395063801e+01, -0.17905146991640545906e+01, + 0.16047468610918349530e+01, -0.10257148634157489120e+01, + 0.20397284699406431629, 0.65787920523712883902, + -0.13438713008938349969e+01, 0.16915488335415584942e+01, + -0.16173294728525631214e+01, 0.11484254913231990436e+01, + -0.40229757906752777741, -0.43209874942613191173, + 0.11519338005205170816e+01, -0.15802652752891181986e+01, + 0.16176499072280488001e+01, -0.12570849490375219926e+01, + 0.59204673518032413515, 0.21389606651420475791, + -0.96151484817724930387, 0.14695693875157411767e+01, + -0.16142558903106289936e+01, 0.13623729920437002150e+01, + -0.77618932114126404365, 0.53566739143327368744, + -0.13429688683380064732e-01, -0.75819108659976752751, + 0.16392254943621811236e+01, -0.18192093992228837163e+01, + 0.18370531964491290111e+01, -0.10969377926394383582e+01, + 0.36934048685965359393, 0.74992509479147440032, + -0.13898382198539140919e+01, 0.19709808265102390923e+01, + -0.17552920857770750729e+01, 0.13793049575966747078e+01, + -0.35130743448846424304, -0.48028243483381527490, + 0.14839496342936031592e+01, -0.18121830455169831708e+01, + 0.19590856342296802950e+01, -0.12984600461904627355e+01, + 0.58328223678561597065, 0.58240763062677503026, + -0.13075494626139299026e+01, 0.19784495773399703999e+01, + -0.18326283291530109931e+01, 0.14780287344814129202e+01, + -0.45189907484018881911, -0.47666334584131181407, + 0.13800213717872624741e+01, -0.21407201613914534910e+01, + 0.13012452442166939637e+01, -0.28503052849048016171e+01, + -0.26011240931257355591e+01, -0.51340482942528753441e+01, + -0.11103655353238227832e+02, -0.12364189695028402483e+02, + -0.20554377479486202418e+02, -0.19091193494003569242e+02, + -0.17651596078393307465e+02, -0.93640719111082404424e+01, + 0.49596482819746103843e+01, 0.10950631331153742209e+02, + 0.16090106586434771430e+02, 0.44103731063772491083e+01, + -0.68575852351688588726e+01, -0.12075938450597012874e+02, + -0.85851005480443856044e+01, 0.79447161246163746640e+01, + 0.10084975028197144198e+02, 0.52435588547461584596e+01, + -0.78177838680977504993e+01, -0.11124533729190565268e+02, + 0.30290483668650072246e+01, 0.81375468368055727808e+01, + 0.62509911065401988495e+01, -0.80132562510965517077e+01, + -0.84893638575759009512e+01, 0.53707600276994664767e+01, + 0.70393496285427978876e+01, 0.13106348764780799687e+01, + -0.10247368216342950475e+02, -0.14309066201106233063e+01, + 0.93502321343486034522e+01, 0.11753208951658733472e+01, + -0.55279682625862447409e+01, -0.54626632319185421949e+01, + 0.80061622222843720209e+01, 0.42466716373835078358e+01, + -0.83947884368637719632e+01, -0.14733585190861722136e+01, + 0.48939247919984021351e+01, 0.42447880976612930581e+01, + -0.72963909786182465922e+01, -0.27707353535555063750e+01, + 0.90787030405497031182e+01, -0.18310585513176671490e+01, + -0.52929048402093803460e+01, 0.63291249193430032527, + 0.60247351999119098664e+01, -0.16605046771064055910e+01, + -0.74836518172460992915e+01, 0.70177038939774760706e+01, + 0.21872468068206236680e+01, -0.61606534047136394250e+01, + 0.41864358016883673752, 0.42878759468987892589e+01, + 0.21689700162236336123, -0.68504524736690655118e+01, + 0.48749923199945657259e+01, 0.38709441268089799237e+01, + -0.78130662427561148320e+01, 0.25401934106871331132e+01, + 0.38049229488867721827e+01, -0.27144483576452209661e+01, + -0.28552506183026435949e+01, 0.37170167061374490558e+01, + 0.23235102117379811126e+01, -0.73713692466595981401e+01, + 0.44520935284175946478e+01, 0.33578678374767010339e+01, + -0.70010394058576306264e+01, 0.30866131383590591497e+01, + 0.26062522177235138976e+01, -0.29830012192325026099e+01, + -0.13844740685504286493e+01, 0.37772983764535807971e+01, + -0.17641245353691989428, -0.54809161998422704087e+01, + 0.62969469626198897316e+01, -0.65830353146322828639, + -0.57296077663974953609e+01, 0.65214944697080463598e+01, + -0.15555494663967781577e+01, -0.33717839448099233834e+01, + 0.34188594678810630967e+01, 0.30410429529110949431, + -0.25294387880019550963e+01, 0.29649244450225104019, + 0.38194700851443839085e+01, -0.46450783753265136866e+01, + 0.40960804258342120576, 0.52487289847669353904e+01, + -0.68592291465537886808e+01, 0.27811001185551922354e+01, + 0.33345013251646369312e+01, -0.61282669395614961516e+01, + 0.37449002007176024343e+01, 0.89695609091891548292, + -0.32728890793936393777e+01, 0.18029556282018845970e+01, + 0.11011425843516104983e+01, -0.18071950849558275909e+01, + -0.59693024408861261598, 0.35147659421807180280e+01, + -0.34500057558462460250e+01, -0.29768663112174248431, + 0.48286032861191889864e+01, -0.60993610874490373774e+01, + 0.26828323115059165005e+01, 0.29698152829903641248e+01, + -0.64840367843385742219e+01, 0.52910044533458613358e+01, + -0.53974777927064632177, -0.39675851223090652375e+01, + 0.50616447061482396919e+01, -0.25223049783129667389e+01, + -0.10526421994337800125e+01, 0.27753794615725744244e+01, + -0.17653197845052337467e+01, -0.35919821488409742205, + 0.13007013857421856340e+01, -0.16122058619333348717, + -0.17492406275662759629e+01, 0.22755164427993221921e+01, + -0.39415972167750895627, -0.26615568088205248110e+01, + 0.43782314213916508905e+01, -0.29685762159385760128e+01, + -0.97716545435993740210, 0.48177772736547099797e+01, + -0.56976725747175649417e+01, 0.27553154097279253243e+01, + 0.22154599272699306844e+01, -0.59083444937210192194e+01, + 0.58553919105224601083e+01, -0.20651779094057833852e+01, + -0.29581902546056548786e+01, 0.59964529948794202951e+01, + -0.52030227608584604937e+01, 0.12845874996563155790e+01, + 0.31511782905034584346e+01, -0.53369070256681023778e+01, + 0.41473363910830300938e+01, -0.61436746084122673128, + -0.28822186888183849440e+01, 0.42688978897376204102e+01, + -0.29788679036941285716e+01, 0.14944292504439679603, + 0.23340571722717369241e+01, -0.30580997079333154254e+01, + 0.19022146568242419562e+01, 0.12482716578434290000, + -0.16602604100275810683e+01, 0.19104893341402096052e+01, + -0.10052927487535745499e+01, -0.23952309723464715319, + 0.99663792915641868930, -0.93233709532225772509, + 0.33167605735161936886, 0.25128269053119633991, + -0.41752567325317574420, 0.18644367545285150944, + 0.12495777073679008307, -0.19513997599298024688, + -0.25367887505046485958e-01, 0.31333282129591411014, + -0.37337746567717455815, 0.10551775955785637484, + 0.31335230977495370785, -0.56127495884172984297, + 0.43244023987209012638, 0.31938718952066027512e+01, + -0.46786198923469868305e+01, 0.64526687697838025493, + 0.43171866425557965385e+01, -0.62120480801811348570e+01, + 0.48306617295081695218e+01, 0.28864336914298051318e-01, + -0.44251833584980824199e+01, 0.66114009398302497900e+01, + -0.41907928859276504241e+01, -0.39899051262805146356, + 0.52777909390901616149e+01, -0.63540498468291923828e+01, + 0.38602044417757603867e+01, 0.16411171099136665497e+01, + -0.56469535408620066264e+01, 0.64974768064976489157e+01, + -0.25984917288812563463e+01, -0.25744700532685458327e+01, + 0.65779634000147026995e+01, -0.57335447093744145164e+01, + 0.14994662284571800281e+01, 0.42842108422212845653e+01, + -0.67238523667804876993e+01, 0.50521512229833840379e+01, + 0.61632723816706658226, -0.54396627472575689310e+01, + 0.69856386844654663193e+01, -0.31400931368375744057e+01, + -0.25027567256585578903e+01, 0.68998936227997322845e+01, + -0.59038899872266279445e+01, 0.10920544455104246317e+01, + 0.50498016965885907936e+01, -0.70803837376397629200e+01, + 0.43697533896394560315e+01, 0.21024082677617372816e+01, + -0.66051209009026043972e+01, 0.66436934168429502279e+01, + -0.11579974309677196764e+01, -0.48149238078244751549e+01, + 0.76151985546210063660e+01, -0.40652064501232461069e+01, + -0.22465702488247041302e+01, 0.73329222058124354788e+01, + -0.61968517950210237899e+01, 0.55107157873256906733, + 0.60747509000100450294e+01, -0.73946536902574386829e+01, + 0.31433100964536611066e+01, 0.42141485230500475012e+01, + -0.77135564969236734001e+01, 0.52637930609353533740e+01, + 0.21124791890580749687e+01, -0.73408065418850556583e+01, + 0.68109275391876114014e+01, 0.54457766650015386467e-01, + -0.65173221198504407425e+01, 0.78106237712764015058e+01, + -0.17748540116744062622e+01, -0.54793998383735358360e+01, + 0.83678261986800581695e+01, -0.32829296058370460720e+01, + -0.44258484881704989178e+01, 0.86220859223576695740e+01, + -0.44461106782928272452e+01, -0.35071907994251074747e+01, + 0.87143052004523493537e+01, -0.52804569040608271280e+01, + -0.28297905446998319334e+01, 0.87653847101413777665e+01, + -0.58140047479880756498e+01, -0.24672558034179044029e+01, + 0.88636292831430711914e+01, -0.60635665785822085994e+01, + -0.24724907057320861803e+01, 0.90561346022442101855e+01, + -0.60169558877413518161e+01, -0.28849179077677091776e+01, + 0.93394050472064051860e+01, -0.56212417330478867683e+01, + -0.37279256989418629864e+01, 0.96458619609111266868e+01, + -0.47794558908370241568e+01, -0.49915711345665814136e+01, + 0.98260803032906860466e+01, -0.33620106371892801711e+01, + -0.65961281227160455387e+01, 0.96326697052279044442e+01, + -0.12441491034206171307e+01, -0.83358602822316409942e+01, + 0.87220469213341598191e+01, 0.16157201873103532730e+01, + -0.98138933781672132994e+01, 0.67046689744881851070e+01, + 0.50467921902456813754e+01, -0.10403428306747157350e+02, + 0.32865266104630777022e+01, 0.85014873638842285430e+01, + -0.93083505754305573276e+01, -0.14637823857197409527e+01, + 0.10933445286778791683e+02, -0.58304792192948564633e+01, + -0.67531378498317593539e+01, 0.10893429455652876570e+02, + 0.73718169615199238831e-01, -0.10799376714122951526e+02, + 0.70963899303028039611e+01, 0.70481052065585263477e+01, + -0.11096067433906835475e+02, -0.39833980956615683278, + 0.11931514138156199323e+02, -0.57484422549861218243e+01, + -0.88137471252851007364e+01, 0.10729189726279873440e+02, + 0.41033980957429987413e+01, -0.12572930532501310097e+02, + 0.18288479441353608923e+01, 0.12431879395109669773e+02, + -0.66499863830963121814e+01, -0.98107357316730610108e+01, + 0.10768424497711581722e+02, 0.66621089905302053324e+01, + -0.12877307619778383341e+02, -0.26483588541052527354e+01, + 0.14272231676060350480e+02, -0.55250041909482483504, + -0.14225536487254304419e+02, 0.37226797352679117381e+01, + 0.14286943355946720047e+02, -0.56085882284562602607e+01, + -0.13745796182276700748e+02, 0.72778814803643916420e+01, + 0.14023218645169924557e+02, -0.75926343745907924898e+01, + -0.14211748418493469259e+02, 0.75677751473275369776e+01, + 0.15477699854052353601e+02, -0.58909534727378458641e+01, + -0.16567492648156967761e+02, 0.33512853986185011657e+01, + 0.18114659496838548591e+02, 0.14760464531986816628e+01, + -0.18067166028924024346e+02, -0.75056425424037067629e+01, + 0.16037569491170330593e+02, 0.14970490354630737073e+02, + -0.92092885255807459544e+01, -0.20237968304797359309e+02, + -0.20408490379566814887e+01, 0.19939651017153167345e+02, + 0.16133719725117440902e+02, -0.84675501172402256600e+01, + -0.23529606803609386390e+02, -0.11608879412079362581e+02, + 0.13792149188479978505e+02, 0.26223766662172319997e+02, + 0.14113036179154331506e+02, -0.10987505112352909720e+02, + -0.28303649080739642585e+02, -0.25796636739204213740e+02, + -0.65413946070529389587e+01, 0.17397227755997903387e+02, + 0.34796359125746548102e+02, 0.40948491584802411580e+02, + 0.37447105976596112953e+02, 0.28831946569894938648e+02, + 0.19383121736244369515e+02, 0.11611942269846375453e+02, + 0.62786054375739102085e+01, 0.30905497736488105609e+01, + 0.13933313715316792969e+01, 0.57785655220269072085, + 0.22116593682337390425, 0.78298176312086104067e-01, + 0.25681742206492406966e-01, 0.78126456157972846983e-02, + 0.22056066381306656428e-02, 0.57794718722559861902e-03, + 0.14053542541714119339e-03, 0.31693494948697352670e-04, + 0.66226876960558952534e-05, 0.12805974745612762325e-05, + 0.22875625080661877597e-06, 0.37670644808446691526e-07, + 0.57041546141050521787e-08, 0.79177131966116917488e-09, + 0.10037553448702342067e-09, 0.11570797608854989622e-10, + 0.12064680136214481682e-11, 0.11306457272012915565e-12, + 0.94502082538474281685e-14, 0.69779794059023440186e-15, + 0.44979673168792999714e-16, 0.24926923426953250033e-17, + 0.11639305489791610033e-18, 0.44539084608462670489e-20, + 0.13413959118712041341e-21, 0.29820213699270084908e-23, + 0.43511801454974211092e-25, 0.31264857370619971834e-27, + 0.50257080989266639942e-02, -0.32615952248348681168e-02, + -0.14168510593627229449e-01, 0.29027127465629291858e-01, + -0.33058427190277989149e-01, 0.22061340866915281345e-01, + -0.49230899648441250188e-02, -0.89186304919546613434e-02, + 0.95846755590343491599e-02, 0.26216799084667239631e-03, + -0.13788008321414394267e-01, 0.18520167229358296818e-01, + -0.11332714097583943338e-01, -0.58010448528415118133e-02, + 0.20944664937811229705e-01, -0.26774913266204212331e-01, + 0.19068330537218160237e-01, -0.54761668036467196774e-02, + -0.66099526443846139123e-02, 0.90538570964740164998e-02, + -0.45917126135844726909e-02, -0.22605023903465603675e-02, + 0.29989612760267124122e-02, 0.20913949483345592104e-02, + -0.10700794596274557091e-01, 0.14639026735701833951e-01, + -0.12704384289961578175e-01, 0.53282668985023063160e-02, + 0.21056109407586301777e-03, -0.24113155140820588529e-02, + 0.96655168085980935119e-03, -0.27249046526839977751e-02, + 0.88995368089425097580e-02, -0.18749240783353316592e-01, + 0.23112972455954016587e-01, -0.18091104670618272932e-01, + 0.33725361215382115496e-02, 0.97511602795841596791e-02, + -0.12613308232121724778e-01, 0.28492589081326809460e-03, + 0.17187998341191092211e-01, -0.27870488958550477393e-01, + 0.21175584829881358845e-01, -0.31660830478755833638e-02, + -0.13533539300736984606e-01, 0.13415454584850508568e-01, + 0.29495862933886238602e-02, -0.24858944554354014955e-01, + 0.33654690181121306447e-01, -0.23860643080854636311e-01, + 0.12984331533157310833e-02, 0.16185451431111982923e-01, + -0.19931601719539580875e-01, 0.10980300905699808683e-01, + -0.33270449421381798928e-02, 0.37331589503784693741e-02, + -0.10853852599103595497e-01, 0.11459522137087096647e-01, + -0.62872921962646237913e-03, -0.17418623208445165040e-01, + 0.26526090607783520126e-01, -0.20502007000801878572e-01, + 0.48779584236517846071e-02, 0.14163663366440562303e-02, + 0.94879483332291937592e-02, -0.30872352520357099898e-01, + 0.40473880931135734762e-01, -0.27480290446850144659e-01, + -0.20030339228004697023e-02, 0.24237504981650618424e-01, + -0.26340861485946262532e-01, 0.12337442523079784895e-01, + -0.30181840892757054624e-02, 0.71729209264277194250e-02, + -0.17798584060825562575e-01, 0.15708597725938605594e-01, + 0.11007358135148768118e-02, -0.18107388726927405725e-01, + 0.14010540780992456616e-01, 0.83987221552185385015e-02, + -0.28218532133698900205e-01, 0.22886671270797444289e-01, + 0.54849457435700700678e-03, -0.17976584902177305397e-01, + 0.10021234936776292346e-01, 0.10171801221686836703e-01, + -0.18450406113588141421e-01, 0.41166687069796106813e-02, + 0.11514090197814989477e-01, -0.79238680654530185832e-02, + -0.11850125556890474254e-01, 0.17936004658425343944e-01, + 0.24559830372255530596e-02, -0.30588297826638400495e-01, + 0.31956328528088558116e-01, -0.54120594006363117665e-02, + -0.19508089261650721213e-01, 0.15583449528267703105e-01, + 0.12802175219946904713e-02, -0.46754003122765003600e-03, + -0.23097928659588776168e-01, 0.34234163895122210475e-01, + -0.12626535543401123940e-01, -0.19030296374699808004e-01, + 0.18480982884015780682e-01, 0.10947196543818168632e-01, + -0.28753848099226181345e-01, 0.11753973835026935643e-01, + 0.63313364681310355803e-02, 0.73439729515374111909e-02, + -0.34672268143134045426e-01, 0.27121750406853512710e-01, + 0.11143483266018662861e-01, -0.29470266356422889636e-01, + 0.52807664148175094410e-02, 0.13606570458972327281e-01, + 0.75753795606613777078e-02, -0.34281828414155030016e-01, + 0.16274671963485264764e-01, 0.17176480687346864368e-01, + -0.79894113357564921357e-02, -0.30948420722717230602e-01, + 0.29801093202056157250e-01, 0.78642160854076222087e-02, + -0.12735144567166265667e-01, -0.24120831932358588467e-01, + 0.26083803828757481935e-01, 0.16254341637191489084e-01, + -0.22592074500370425832e-01, -0.25205219705072182124e-01, + 0.37642299236075087154e-01, -0.13290893216536933587e-02, + 0.64126052574922116217e-02, -0.57453353540268405075e-01, + 0.48760536061978491940e-01, 0.54686809979432428677e-02, + 0.24574918670654324893e-02, -0.37327508574803693053e-01, + -0.61783087837197154038e-02, 0.47275351687293167002e-01, + 0.51343826367635566482e-03, -0.19985315104696248223e-01, + -0.34805042372038234866e-01, 0.14126869662395295096e-01, + 0.43725930407267570021e-01, 0.46671061144645054411e-02, + -0.32399772315588604155e-01, -0.33111508152703195140e-01, + -0.11513909000045239976e-02, 0.54186876852096312052e-01, + 0.20646429056870981011e-01, -0.63111151147109386186e-02, + -0.48150991298599045420e-01, -0.46910456195731566054e-01, + 0.19576483742693624041e-01, 0.24518082001849926532e-01, + 0.77411748567922017417e-01, 0.12810585721747130145e-01, + -0.65323985379594205238e-03, -0.55374352533247676866e-01, + -0.78858488982746305362e-01, -0.65876302786156998303e-01, + -0.78102850681489685569e-01, -0.34842612917016638208e-01, + -0.40452833547273241155e-01, -0.13489990097990477158e-01, + -0.96172837856559473257e-02, -0.88711030019171834005e-02, + 0.43138631307705326695e-02, -0.83271311673720066482e-02, + 0.69937983236203257048e-02, -0.71490815490989206848e-02, + 0.70699095657405395740e-02, -0.80128914726496774934e-02, + 0.96729141595270524967e-02, -0.11740524806705671459e-01, + 0.13597227090345966743e-01, -0.14621895791283024552e-01, + 0.14416059370318354271e-01, -0.12876970651024877840e-01, + 0.10281586748162093586e-01, -0.71417062935083784614e-02, + 0.41116945032713559521e-02, -0.17614889854537447208e-02, + 0.49462634936052810031e-03, -0.42906115628102707744e-03, + 0.14554875881322205423e-02, -0.32640389269637747581e-02, + 0.54889931315270437673e-02, -0.77652720163021403399e-02, + 0.98275123719828005181e-02, -0.11493957674640361763e-01, + 0.12676746012983113737e-01, -0.13314754316690954536e-01, + 0.13363426265347786576e-01, -0.12759155029392095851e-01, + 0.11451591515115138592e-01, -0.94200533746449585659e-02, + 0.67221300518337410643e-02, -0.35037610385291926250e-02, + -0.24550037400288739903e-01, 0.41302239771181907535e-01, + 0.49950126899038086239e-02, -0.55206710833703945274e-01, + 0.11144266683232069426, -0.13484209340608369065, + 0.13407523564831466678, -0.85920917086955331254e-01, + 0.19383492507652578390e-01, 0.69494821876534135230e-01, + -0.13905814742213823410, 0.19094119895162847689, + -0.19233157861927213661, 0.16254149781851140455, + -0.90417773199557988084e-01, 0.14871318949780521282e-01, + 0.63216668900907574402e-01, -0.10388250406167305606, + 0.11649092092471467763, -0.79748486515206148950e-01, + 0.24826139743211680239e-01, 0.50805491999441440565e-01, + -0.10557396372592077471, 0.14287015102415978607, + -0.13291471388988879143, 0.98277878435447066363e-01, + -0.30228429644382201480e-01, -0.32347938882934114402e-01, + 0.89880347823984602096e-01, -0.11014543557135045293, + 0.99526313710537855917e-01, -0.66563810097633693830e-01, + -0.15276966614506563152e-01, 0.39085169115648139837e-02, + -0.17750871553303251837, -0.94871427501033014917e-01, + -0.36256475330464382756, -0.47023648286905472826, + -0.58910325580342637330, -0.86578810295108366013, + -0.61406875676106364992, -0.63141678473803386495, + -0.49126864151750188059e-01, 0.30316111388126415482, + 0.50847882295901358773, 0.55462073856704641184, + -0.81117477351498684657e-01, -0.27073797173707953023, + -0.56101550775211850297, -0.88596013913346843838e-01, + 0.31265695777439467262, 0.41760980887644355564, + 0.88974256384165756328e-01, -0.36383369531074843950, + -0.35338299682588825146, 0.12300678189369944338, + 0.36899706447001962006, 0.16493204087112320333, + -0.28733016432614422175, -0.33398121335488434314, + 0.18874283373396949504, 0.30799000671762166714, + 0.30424924100698611668e-01, -0.33478180503168308846, + -0.14942975467642438669, 0.34954336647404116167, + 0.14002886651973187049, -0.23744054158957028644, + -0.18703576301526284031, 0.12554210892704686930, + 0.35668951931690712209, -0.30074237050921653891, + -0.16107673257466484373, 0.15311060565760642449, + 0.18625318114675923353, -0.69633287139828817236e-01, + -0.35336111035197176333, 0.31512983383374282287, + 0.11491098921610791439, -0.20170446466205552150, + -0.10488113208769092588, 0.16018685242043553818, + 0.16607210701803407082, -0.27736467442704643149, + -0.71977937945140013642e-01, 0.35992653226044069026, + -0.18355694413418738309, -0.10933913083296101232, + 0.54296889065393941221e-01, 0.17475246722520357268, + -0.97597560006475139738e-01, -0.26315875570306102027, + 0.41673091434120385079, -0.16482900528189523004, + -0.11396911389220104605, 0.56815926164003931198e-01, + 0.16782496261881157951, -0.15896491444464752596, + -0.10135738014391934558, 0.24171339563599467115, + -0.59536298529364831134e-01, -0.18341475172148766215, + 0.13934234933000785861, 0.14637228320622230893, + -0.30741469454982012222, 0.15479342568113607648, + 0.98058327056742958239e-01, -0.14678673407061368361, + 0.57312983443379082976e-04, 0.65234298511693572520e-01, + 0.10354010284947577636, -0.31983622732546851397, + 0.29809889010248480368, -0.16343097586252946368e-01, + -0.24894105610075373258, 0.25164720278965252431, + -0.47296339289209433920e-01, -0.99622334518963753802e-01, + 0.41269370727599417881e-01, 0.10135574349476259015, + -0.11289614458600770452, -0.40255107927656734457e-01, + 0.17218602629261425818, -0.10253270115459092726, + -0.12187259264564181960, 0.27227708435037795143, + -0.18560062885738839999, -0.57656076616289846093e-01, + 0.22249112153816114068, -0.16170749251945226721, + -0.42667185586589072288e-01, 0.18342199863695585194, + -0.14404260796653353682, 0.33596650058023572530e-02, + 0.73005887132748664703e-01, -0.15725434974880235506e-01, + -0.80882747165327520400e-01, 0.75446068136706151419e-01, + 0.59433534305035659595e-01, -0.19730042655548407637, + 0.18568260430385055693, -0.34530612905441498278e-02, + -0.20483511380620175735, 0.25824819709189072992, + -0.10227857039201318501, -0.14094697990099211427, + 0.28322187711324381398, -0.23003898604791236937, + 0.52142110157143164995e-01, 0.91728811412142161053e-01, + -0.95532184357638549876e-01, -0.12034218155362699440e-01, + 0.11319089853832885184, -0.11504479345472666540, + 0.28979611434382348406e-01, 0.55486728468828426519e-01, + -0.62880381693445328017e-01, 0.40812278646895541051e-02, + 0.41246402482957397750e-01, -0.64510691637615956776e-02, + -0.90738248698517265378e-01, 0.15909354490683075278, + -0.11436288403280947534, -0.37677063978350862350e-01, + 0.19438191735934598481, -0.23133921190345743679, + 0.10358756566397875343, 0.11368711340082091055, + -0.27575301663058077173, 0.27592576000481028320, + -0.12384572808176504133, -0.61497397057943832543e-01, + 0.14132978836978962733, -0.58158291029868205979e-01, + -0.12279505004759005971, 0.26321938081948603738, + -0.25084050819976605462, 0.78779090671491039388e-01, + 0.15234998660255261171, -0.30465321450052340602, + 0.29603870677616356266, -0.14940212334451774545, + -0.29662759087551244380e-01, 0.12859429585543244445, + -0.10060699080273534378, -0.11131212806753873479e-01, + 0.11130242831241887735, -0.12026762210130383102, + 0.26778716674270949122e-01, 0.10882972779850109968, + -0.19746489753906631970, 0.18043317458608332249, + -0.65059918244261299991e-01, -0.82510229724711586785e-01, + 0.18065314857346306820, -0.18164317262445794920, + 0.97586886259493549334e-01, 0.11655401729236385816e-01, + -0.78096636624833348783e-01, 0.67838640701640862130e-01, + -0.52384795243544901577, 0.64349207354030768524, + 0.25026177988293107912, -0.93454244960738819259, + 0.10534393315749865927e+01, -0.44637587611952417310, + -0.35969327941396844750, 0.90067179510784955987, + -0.71001063059864399918, 0.25532167495298355858e-01, + 0.76175795516461075607, -0.99455647831080840060, + 0.58954516439613879886, 0.29319680655404323222, + -0.98200659273992041420, 0.11477253095621200440e+01, + -0.64077270822007703632, -0.40047186585530296365e-01, + 0.50561763098789069826, -0.38064962443016725491, + -0.56869694674470810947e-01, 0.48720289154696283518, + -0.43196363163699663668, -0.29038366455255595726e-03, + 0.58364676980064300604, -0.79096292854599348221, + 0.59032273732863249638, -0.91798733965204132312e-01, + -0.18748387937151911320, 0.13621505492633798062, + 0.21514959706963782127, -0.35567087032675354097, + 0.11911509436439980669, 0.49283123169842296685, + -0.89639843925890938525, 0.77126246840425205509, + -0.15997018581360780698e-02, -0.78843262111684853100, + 0.10688804418218587067e+01, -0.47623267653613537975, + -0.46753289623216159887, 0.11002922947070374882e+01, + -0.78179678442982947217, -0.17762156906594492312, + 0.10946002744739284918e+01, -0.10859243780768477183e+01, + 0.18318530573948765827, 0.10287959149406791237e+01, + -0.15085693119069996104e+01, 0.98963060767276089802, + 0.17103046752149239640, -0.95205340917137704082, + 0.92429364310569106511, -0.23705779038648183699, + -0.21983271503284523840, 0.51358091710102957150e-01, + 0.60371669873705191556, -0.87143159858408303364, + 0.39547565900506509440, 0.59289544253596271339, + -0.11002624194010597325e+01, 0.70995682450885511106, + 0.28641343889333964468, -0.75844025654269509040, + 0.20210347829278341170, 0.10386079333121494006e+01, + -0.16806772650644785649e+01, 0.10973254525781537261e+01, + 0.37339325510447751721, -0.13744923399993134172e+01, + 0.12184719927176113075e+01, -0.21302993753721338743, + -0.36867064898424295460, 0.26009565105572739901e-01, + 0.75925733431411768226, -0.76296469653586651560, + -0.18560603960960680991, 0.12286307069576940521e+01, + -0.10597446272672683687e+01, -0.20296230404005977110, + 0.13546205564216562411e+01, -0.10641781882620338084e+01, + -0.25481778948176952992, 0.11944006644992983812e+01, + -0.63674923968662200391, -0.59686858149370025650, + 0.10560980087102866953e+01, -0.12639389292364497375, + -0.86667719323026981559, 0.65126102981031530614, + 0.60910252135947828833, -0.11051453343515389438e+01, + 0.25388902249460044286e-01, 0.15634462781966078637e+01, + -0.16356344936434878967e+01, 0.13886006754990276590, + 0.11765920493756572007e+01, -0.72667096672697284454, + -0.47316231848712347885, 0.53895150456656415461, + 0.85313089479561998729, -0.15749189766564071213e+01, + 0.36556011093114376687, 0.14650655019513387778e+01, + -0.14191901182867894260e+01, -0.29201917261893689526, + 0.12600779568943785147e+01, -0.13671819715248029192, + -0.10046033296016299019e+01, 0.15757260115807381062, + 0.16020546406667899308e+01, -0.13420660863757620795e+01, + -0.72810124175369606014, 0.16175788461412090591e+01, + -0.84569256880763568618e-02, -0.12135164370469353479e+01, + -0.28681742094500268375e-01, 0.16372162544299644349e+01, + -0.56620878531581242399, -0.14502369057639330485e+01, + 0.93408223344183594072, 0.13531011671964785492e+01, + -0.12416554498281715535e+01, -0.10338235634504640004e+01, + 0.13075174689711024367e+01, 0.94705172002846693680, + -0.11061675777297479417e+01, -0.14263609266588388458e+01, + 0.18587492825104865446e+01, 0.89053252128223925332, + -0.14684933234297750104e+01, -0.88842703946080636701, + 0.72147633751587458839, 0.22899941652837254580e+01, + -0.18313957705374122042e+01, -0.12458950569943665343e+01, + 0.51107928149745407431, 0.18727766605937081756e+01, + 0.47098687173982928256, -0.27413953153505872251e+01, + -0.22603336484976083165, 0.14041553046138652849e+01, + 0.19354518108822935663e+01, -0.76660110678564630238, + -0.26527288444328416261e+01, -0.25713128169502519338, + 0.18799483900442799378e+01, 0.21195994045616362023e+01, + -0.12519527028807525548, -0.30393640777119506069e+01, + -0.13984696356209473933e+01, 0.41210697588539002556, + 0.30376081964216457010e+01, 0.24663880978350865014e+01, + -0.65457046653856776341, -0.20931955339628283141e+01, + -0.40150018428595304343e+01, -0.13087700478030006579e+01, + 0.41373383600453855768, 0.31522603399371078581e+01, + 0.47031356134526509649e+01, 0.41347966725175098190e+01, + 0.44205297941098100623e+01, 0.23626200366281402410e+01, + 0.22153534056439561084e+01, 0.91734387113960513815, + 0.59002540149344184783, 0.40472175508834878910, + -0.36780191246931312476e-01, 0.20637192014815164409, + -0.72144524070974019869e-01, 0.33925383061905879656e-01, + 0.21572147471758128939e-01, -0.23133435718386930607e-01, + -0.13479794901924767314e-01, 0.79063042275005393500e-01, + -0.14864041219376236680, 0.19644994301604706832, + -0.20470971326712825156, 0.16644553521559740661, + -0.89630029138559927371e-01, -0.87955198191370185384e-02, + 0.10576319370107678530, -0.18131938246389120439, + 0.22117458011773530324, -0.22171148074726954036, + 0.18714310063562467068, -0.12883247291536023549, + 0.59248853551259660077e-01, 0.97618567505667677708e-02, + -0.70982526477658666741e-01, 0.12058004164524133150, + -0.15844435363575867792, 0.18494591664881401827, + -0.20046111697068005886, 0.20355002343417122335, + -0.19228509307008170848, 0.16474382549448171598, + -0.12113770866102256674, 0.64295229504402640064e-01, + 0.64475858337238312057, -0.12011121495716092777e+01, + 0.53272309049380295320, 0.19337892180903074046, + -0.10608086484490508727e+01, 0.14834860854239237948e+01, + -0.16274708068012320172e+01, 0.11133041115538833132e+01, + -0.37938146947873407910, -0.69320964359029124680, + 0.14929938929089006105e+01, -0.21043364929298395971e+01, + 0.20322713050576681759e+01, -0.15974748774523894745e+01, + 0.59546754683009806008, 0.39111057879103239276, + -0.14084124404183024915e+01, 0.18659249655534504431e+01, + -0.19558932642272079949e+01, 0.13475405760237495478e+01, + -0.53239839430243540708, -0.56711713393437901409, + 0.13258023838869905653e+01, -0.18455670366894481038e+01, + 0.16766793118814229402e+01, -0.11952446328362908989e+01, + 0.24570721575625495414, 0.57587671614077440285, + -0.13208506855924699863e+01, 0.15088940579605663039e+01, + -0.12742221023267443769e+01, 0.75881501154599462211, + 0.46912933240698895254, -0.16886072353558082004, + 0.28252600684292423772e+01, 0.16157029788565053785e+01, + 0.56810747448255405345e+01, 0.75929804864327046232e+01, + 0.94642286651212614856e+01, 0.13674979009950050113e+02, + 0.10129362836972401141e+02, 0.97204231567108578815e+01, + 0.11636478435916470797e+01, -0.51323215450917034630e+01, + -0.80359756472776648906e+01, -0.87376620160058955378e+01, + 0.91005903389379017021, 0.49369726552782360329e+01, + 0.82241592808135539627e+01, 0.22175908069222312058e+01, + -0.57505386816591208543e+01, -0.60732482475936553357e+01, + -0.18413373552142631162e+01, 0.60349440833927303629e+01, + 0.56139623648598684369e+01, -0.20435464222316053196e+01, + -0.57884485463726358390e+01, -0.27270883163694619178e+01, + 0.46089134020585822427e+01, 0.54217288725200187827e+01, + -0.31685740123959602599e+01, -0.47604605568836788621e+01, + -0.60766226958018820792, 0.53627422888258085010e+01, + 0.25467539024404981518e+01, -0.59310975364732012594e+01, + -0.17388337184312339101e+01, 0.31847565215189796994e+01, + 0.36408491790490415951e+01, -0.26053614497708972308e+01, + -0.52439325183633247462e+01, 0.45395010308227181639e+01, + 0.26304467275211611543e+01, -0.22933899043317786948e+01, + -0.33087925556605188859e+01, 0.15544716942671961135e+01, + 0.51663978058176196484e+01, -0.45680511387926019395e+01, + -0.22599602386127508602e+01, 0.35776539600080639048e+01, + 0.13909637033860722255e+01, -0.23175964404680042819e+01, + -0.28911520717790244461e+01, 0.46819330340509601740e+01, + 0.88944904733013230302, -0.54955888444430893713e+01, + 0.27092329623520097215e+01, 0.18860690444155281398e+01, + -0.85660186404628524404, -0.30086523390711366055e+01, + 0.20014948678891681944e+01, 0.35458723103387055353e+01, + -0.58197201621802534532e+01, 0.16781329238194826470e+01, + 0.27954589877773430295e+01, -0.17893303136633800232e+01, + -0.19949656164371125655e+01, 0.21138468214431962444e+01, + 0.17555244319915517259e+01, -0.37169951278116171167e+01, + 0.57003866602162334143, 0.34604947131609082867e+01, + -0.27924354771044641588e+01, -0.18525630147996414721e+01, + 0.45954900450468683104e+01, -0.23844978807808367982e+01, + -0.14071590130544504582e+01, 0.19490973080074085466e+01, + 0.58113966970380059873, -0.17295194214723086379e+01, + -0.95970077357340988211, 0.44957828598277425058e+01, + -0.42945660470793729502e+01, -0.24739850279758394264e-01, + 0.40671507710259051649e+01, -0.39262881212313236468e+01, + 0.51103621713192615150, 0.19321206156269410403e+01, + -0.10382352409751709477e+01, -0.12501231000114352288e+01, + 0.14695597643936557652e+01, 0.93459532465491856890, + -0.30074032380487087934e+01, 0.18740886563336047743e+01, + 0.17084541807215634091e+01, -0.40841830060240402744e+01, + 0.26510302760546475831e+01, 0.12877807996682106850e+01, + -0.39594146197716231228e+01, 0.29946446656202336811e+01, + 0.29973582518137303898, -0.26108416263756253350e+01, + 0.20668954374757042558e+01, 0.80426803659250187262e-01, + -0.11969983331100024770e+01, 0.18608053356823020530, + 0.14305874794457464905e+01, -0.13868159156397854570e+01, + -0.75663119850926574550, 0.29681388179483341183e+01, + -0.27981926607362366255e+01, -0.10617559324883572847, + 0.34432152015879520235e+01, -0.43280895853614484992e+01, + 0.18900667018168066935e+01, 0.19195685754669711276e+01, + -0.41013397771250952317e+01, 0.31569467223767579966e+01, + -0.23653532879016878065, -0.21057453515962332169e+01, + 0.21609077145628994288e+01, -0.38503894316301862100, + -0.13349592275790413964e+01, 0.15004788583375388011e+01, + -0.27788199147802206124, -0.92142749498080633863, + 0.90789828245723958045, 0.12831765810975243047, + -0.90551546638800750610, 0.35659254539686924268, + 0.12249639047231757338e+01, -0.23646935618025475279e+01, + 0.16937555109722481905e+01, 0.71472907147308040177, + -0.32360239911561192727e+01, 0.38883631585555984422e+01, + -0.19536629076867106924e+01, -0.13754650841770803549e+01, + 0.38010114529631122693e+01, -0.36416287676696397213e+01, + 0.10780901884009939096e+01, 0.19597668212824257417e+01, + -0.32333383343490953443e+01, 0.18129357200543347872e+01, + 0.12545211702126812803e+01, -0.37419800657646540287e+01, + 0.38274462013574663821e+01, -0.13695439129358486507e+01, + -0.20566982403723859107e+01, 0.42760514259279212013e+01, + -0.39998643057149161351e+01, 0.16073850751861036290e+01, + 0.12108572886583723882e+01, -0.26666036460542215103e+01, + 0.20340369221723526572e+01, -0.34684649050701850392e-01, + -0.17737124397059524927e+01, 0.20860158889110693714e+01, + -0.69906681202812614995, -0.14351091755096800906e+01, + 0.28915551999722657328e+01, -0.27202153954351073750e+01, + 0.10169535389648431956e+01, 0.11870816714901735178e+01, + -0.26151144360181532988e+01, 0.25292788246080966097e+01, + -0.11419653961780114049e+01, -0.58092922843554262169, + 0.15548494098838061550e+01, -0.12517009516957779969e+01, + 0.44174201004724986674e+01, -0.49477573986365097625e+01, + -0.24320664191339411708e+01, 0.73765034983715702666e+01, + -0.74829149424271230728e+01, 0.18546632924839834278e+01, + 0.46163819381713500078e+01, -0.82598970826434126025e+01, + 0.55219627220472347062e+01, 0.89656215978453734916, + -0.75241058225256765013e+01, 0.88715542558443019061e+01, + -0.48955450069029362581e+01, -0.26144735194641959275e+01, + 0.76753426731871305932e+01, -0.79637618960813201241e+01, + 0.27954921614784451478e+01, 0.28691460285342182956e+01, + -0.57230982597270356749e+01, 0.29682106926407447745e+01, + 0.20774128966991494138e+01, -0.61396483805204562501e+01, + 0.49804990617563253963e+01, -0.23261524437836722523, + -0.54254944319449638357e+01, 0.68506370564105436571e+01, + -0.40443212845973937064e+01, -0.13779450796680721147e+01, + 0.40188918499353807334e+01, -0.26758644505198918573e+01, + -0.20637568157559686988e+01, 0.47700249671771066673e+01, + -0.32731075184068925132e+01, -0.27078793683669331038e+01, + 0.75058087426362227745e+01, -0.75745130621041667496e+01, + 0.11954990221200445522e+01, 0.61470107921837362497e+01, + -0.94399250791376587699e+01, 0.48371940793159717842e+01, + 0.33150767450710949547e+01, -0.91868568551276599266e+01, + 0.67488451755186673608e+01, 0.14704361816380129291e+01, + -0.96022543568934182190e+01, 0.97192137137720031603e+01, + -0.20981733688469428323e+01, -0.82020000547894209575e+01, + 0.11999882808457648764e+02, -0.72546860781352071612e+01, + -0.26211549003079794851e+01, 0.83879762822845336245e+01, + -0.66180247880445248754e+01, -0.74048037659344934092, + 0.50552785761544738463e+01, -0.27118119938129567892e+01, + -0.46262729172571921410e+01, 0.82908628529074146485e+01, + -0.45890706575423774183e+01, -0.44288044777440429556e+01, + 0.92843657037091986695e+01, -0.57512926716666052940e+01, + -0.37530967955433229832e+01, 0.87327215682492891347e+01, + -0.42834837323526437913e+01, -0.67853720987094439110e+01, + 0.12863811189278507641e+02, -0.82781715190347391342e+01, + -0.39741248388305892014e+01, 0.11636080304004220665e+02, + -0.88266737573089191216e+01, -0.11769311030129965268e+01, + 0.63435900955944601876e+01, -0.21997499844771364330e+01, + -0.63431467312736096176e+01, 0.73717546356116159245e+01, + 0.10311956482240938193e+01, -0.10936729646113311887e+02, + 0.99414859197306952865e+01, 0.11980623536308581123e+01, + -0.11585340523691289860e+02, 0.89594842957674547534e+01, + 0.28700279199714642253e+01, -0.11018591383796364269e+02, + 0.53491370728882641217e+01, 0.62499105631320892584e+01, + -0.10231252593671847251e+02, 0.10335201087999921210e+01, + 0.86607880189393462445e+01, -0.67119278207489792010e+01, + -0.54848572809443947307e+01, 0.10934993564381837672e+02, + -0.17840295770354486216e+01, -0.12385811531497685323e+02, + 0.12950009283557294637e+02, 0.47670765252000857348, + -0.11712793759098241608e+02, 0.62994461814477435979e+01, + 0.58821069445950042720e+01, -0.69503227020549394055e+01, + -0.62285779682708639626e+01, 0.13650207882795607262e+02, + -0.32422979625413743676e+01, -0.13144473881013924554e+02, + 0.12470457916381779029e+02, 0.31942105764432717763e+01, + -0.11503030364976140731e+02, 0.15044538477047211811, + 0.11170632574342562293e+02, -0.34876027373895808203e+01, + -0.13252180029087952562e+02, 0.11568673501490566835e+02, + 0.68228815151882544754e+01, -0.14304004706186605134e+02, + -0.12084676186929081965e+01, 0.12688876416478471754e+02, + -0.82848845016751948567, -0.14619767371550580037e+02, + 0.50148274504412002628e+01, 0.13597231627127275289e+02, + -0.87913525538117820446e+01, -0.12418521289499819815e+02, + 0.11265262493614411454e+02, 0.99092973790489384811e+01, + -0.12169333392140492478e+02, -0.93418885192013316754e+01, + 0.11289150175645726648e+02, 0.12109678185776054704e+02, + -0.16322007095724156756e+02, -0.86869788606833839850e+01, + 0.13046286101518527190e+02, 0.10122387646979584375e+02, + -0.95556647657543489771e+01, -0.18043242232250097601e+02, + 0.13911483237439426830e+02, 0.14002278336762996602e+02, + -0.58713195451611062126e+01, -0.17801475064082456612e+02, + -0.28577051348878073078e+01, 0.23314870891949965426e+02, + 0.45018886220243539142e+01, -0.15072302123674839791e+02, + -0.16854013181633195728e+02, 0.67275305109061411812e+01, + 0.24653554882185492403e+02, 0.26119338863042362853e+01, + -0.17433703793777969082e+02, -0.20506648197539945500e+02, + 0.25317838455253554031e+01, 0.26604646672268149388e+02, + 0.14769703605452241035e+02, -0.50148705270961357883e+01, + -0.28141575266751370776e+02, -0.22091615555893699963e+02, + 0.41528455159097337202e+01, 0.22140050386240353930e+02, + 0.34770102430673823335e+02, 0.14441746039509332888e+02, + -0.51594473793987640775e+01, -0.29279178027666389994e+02, + -0.42926006805556305324e+02, -0.40397020537641232352e+02, + -0.39040616107620301989e+02, -0.24234917231709253826e+02, + -0.18890235864715936742e+02, -0.97488670441557108148e+01, + -0.49459874689500962219e+01, -0.38340207526667233751e+01, + 0.92279321502848107861e-01, -0.15659670571358772495e+01, + 0.33554796101574813072, -0.39889604618510321465e-01, + -0.46885477922426854747, 0.57364302744765871545, + -0.42064210035562527024, 0.41785302503077534353e-01, + 0.40787745976160516559, -0.76975301237829718559, + 0.92875883114629287363, -0.83031437996562484916, + 0.50908733117952809089, -0.51386850364187622309e-01, + -0.41741602998077431685, 0.78997696393924166092, + -0.98837274406886199696, 0.99601763565567402736, + -0.83769941167129868820, 0.57785503891160261425, + -0.28252120658164592282, 0.11787255012407921867e-01, + 0.20506049616923383017, -0.35905881578488191286, + 0.46385474698489465029, -0.53351580494071826344, + 0.57984605121164689567, -0.59945548461215647507, + 0.58220497517281366573, -0.51320403017531435186, + 0.38654469531231394619, -0.20832021851917298383, + -0.27912614960687038845e+01, 0.52647122608439973490e+01, + -0.26826267022813934382e+01, -0.53613673216362921214e-01, + 0.34517902926864150182e+01, -0.51571860516762804139e+01, + 0.59654424401022509983e+01, -0.42670347145853559923e+01, + 0.18487633649240788891e+01, 0.19433392862858451799e+01, + -0.46819784758887896814e+01, 0.68848312293261351158e+01, + -0.65425859032902060619e+01, 0.50315368120391692486e+01, + -0.14017625592214877361e+01, -0.20165525761791447401e+01, + 0.56020352980004970433e+01, -0.70098101573007101095e+01, + 0.71708940827827074571e+01, -0.47083412852860515585e+01, + 0.16571627139886313529e+01, 0.24391448156529094149e+01, + -0.50821880534437777754e+01, 0.68598738960471044024e+01, + -0.59671403784782492963e+01, 0.40401033441927731715e+01, + -0.37546015254018993978, -0.25964385683913668856e+01, + 0.52327996964992609108e+01, -0.56217205524605367017e+01, + 0.44348165142202189415e+01, -0.22861696406449718566e+01, + -0.26475248727397282522e+01, 0.10523863942112940961e+01, + -0.11857603740928706060e+02, -0.70374974592217265368e+01, + -0.23536352380500169090e+02, -0.32073026809832498429e+02, + -0.39874019539901894404e+02, -0.56905930523362926010e+02, + -0.43444648820870447992e+02, -0.39682550788962927868e+02, + -0.60401868140604104696e+01, 0.22468485933644746666e+02, + 0.33316298490133000598e+02, 0.36518204020097009277e+02, + -0.29976682318619292111e+01, -0.22085620431949273268e+02, + -0.32880677173447622863e+02, -0.10988524318230613375e+02, + 0.25555481396110188541e+02, 0.24618420624327100654e+02, + 0.79886137109462396211e+01, -0.24963739061886350612e+02, + -0.24461562143491487831e+02, 0.97483521506410095725e+01, + 0.23137614288119944916e+02, 0.12394783919193445243e+02, + -0.19881494372433550666e+02, -0.22725928628190974479e+02, + 0.13699504567193917737e+02, 0.19323602862219676268e+02, + 0.32947139675100176603e+01, -0.23106031161502674109e+02, + -0.10451102124735298204e+02, 0.25111654649809697304e+02, + 0.66640628675963222705e+01, -0.12394326568759572282e+02, + -0.16431055187327885392e+02, 0.12034041825589131491e+02, + 0.21187629923411712696e+02, -0.18621922322788879711e+02, + -0.11030709783353730202e+02, 0.91904183186478078937e+01, + 0.14661144285825997713e+02, -0.74513149657021449102e+01, + -0.20778537744641063512e+02, 0.18410711938330649673e+02, + 0.10051806609210551358e+02, -0.15363012587176967827e+02, + -0.56545363606881720031e+01, 0.95878756826576410077e+01, + 0.12379231068678393513e+02, -0.20084068341633205534e+02, + -0.30859153077331917814e+01, 0.22245267886250484679e+02, + -0.10465535292132843281e+02, -0.87319526842349439733e+01, + 0.41133415030637472398e+01, 0.12599828380006570683e+02, + -0.89599323839369731104e+01, -0.13720548793794403508e+02, + 0.22744178074198909911e+02, -0.50064416990340872005e+01, + -0.13855699586968144743e+02, 0.94115355210476288050e+01, + 0.69844438857022179690e+01, -0.81902528102144813715e+01, + -0.72459322538553427862e+01, 0.14697071037470813337e+02, + -0.83433605619435935452, -0.16488150265435983499e+02, + 0.13777631231405626622e+02, 0.59517454869102328630e+01, + -0.17953520133127941705e+02, 0.93328976049169298790e+01, + 0.58651728289991860166e+01, -0.74619441167153341965e+01, + -0.36837416827523208340e+01, 0.88028705614045978933e+01, + 0.24570726750833986607e+01, -0.17509784980725559222e+02, + 0.17055866063812256783e+02, 0.59490852849043751593, + -0.17066745144175094140e+02, 0.16046907536581297649e+02, + -0.14074930065273842938e+01, -0.89753374023009460103e+01, + 0.51794944950340076062e+01, 0.46117457060872508734e+01, + -0.57891361811179784524e+01, -0.40324674474090134169e+01, + 0.12510103299619071748e+02, -0.76057227650409906516e+01, + -0.74727252145569744712e+01, 0.17381914388763366475e+02, + -0.11211841494718360224e+02, -0.55150575392673673036e+01, + 0.16914248939298374808e+02, -0.12986802038037749796e+02, + -0.79821223049958800466, 0.10541660177296105161e+02, + -0.83629460550348433401e+01, -0.50203650072806271787, + 0.50342149860685942997e+01, -0.65818315760983781004, + -0.61986215891262181898e+01, 0.60104011381909936418e+01, + 0.30702215004457333869e+01, -0.12482496864094596134e+02, + 0.11910164349173019360e+02, 0.17561039507815801031, + -0.14138254394772646449e+02, 0.17892699646609994346e+02, + -0.77834646691831625986e+01, -0.80011258697460689859e+01, + 0.16900652368657322455e+02, -0.12661743489163312049e+02, + 0.17061438620763169638, 0.98052156542744270951e+01, + -0.10051018275037701954e+02, 0.24764201376929899645e+01, + 0.49861119991430573606e+01, -0.60025359288430308879e+01, + 0.12247596692680580155e+01, 0.34836063298419994716e+01, + -0.31784337434186835658e+01, -0.12938106653536176616e+01, + 0.45329543436172494708e+01, -0.20578140801838578078e+01, + -0.48632069552230223763e+01, 0.99883167010456546109e+01, + -0.74982638545827642318e+01, -0.23633674689921924106e+01, + 0.12833320354907607808e+02, -0.15619930935663882465e+02, + 0.77178606814921630885e+01, 0.58915192016477559989e+01, + -0.15605452109926709170e+02, 0.14438475034911329331e+02, + -0.32285510937316792557e+01, -0.98382058462418910949e+01, + 0.15302351415005793100e+02, -0.92238405646866592491e+01, + -0.39956967142760060341e+01, 0.14968575306679376524e+02, + -0.15972772235705244626e+02, 0.63294998957588761712e+01, + 0.74433372703466371689e+01, -0.16294979633331543312e+02, + 0.14881886581655681567e+02, -0.48299934320448780767e+01, + -0.67603103003184870090e+01, 0.12418955867265998094e+02, + -0.91654178492676834367e+01, 0.12171760619594261532, + 0.80750206740201235789e+01, -0.98541131095342695545e+01, + 0.42981231932516559269e+01, 0.46292752632319693618e+01, + -0.10938792441875945016e+02, 0.10602143010079025487e+02, + -0.39526885267214688646e+01, -0.47640825601598901784e+01, + 0.10276593798592710272e+02, -0.95646364300422384019e+01, + 0.35769826950764902485e+01, 0.36060886151703712699e+01, + -0.74409191800415781515e+01, 0.57552142441927633953e+01, + -0.12279616818850598747e+02, 0.11595254071920328087e+02, + 0.98970079706131848241e+01, -0.22319156673085380760e+02, + 0.20169204011700212931e+02, -0.19940939774564618858e+01, + -0.16595409127256818493e+02, 0.25426104722382579126e+02, + -0.14985470734467195797e+02, -0.49768811465599904764e+01, + 0.23858934131134692080e+02, -0.25695945225065859319e+02, + 0.12177001468023490816e+02, 0.10241697882657904373e+02, + -0.23075258146487978905e+02, 0.20711793684676891303e+02, + -0.26918323335381040273e+01, -0.14315513763050764950e+02, + 0.20457723143038421654e+02, -0.83948904304641303042e+01, + -0.95639954680481640281e+01, 0.22303579508873571768e+02, + -0.16821716033344582542e+02, -0.15096707914905879711, + 0.18699999582827445010e+02, -0.21847972257083561942e+02, + 0.10370127387380584594e+02, 0.91202421159124966721e+01, + -0.17928057082395078226e+02, 0.11789999004019012574e+02, + 0.67199693372914177658e+01, -0.18633985611462026810e+02, + 0.15528631589431064697e+02, 0.42381083602289821854e+01, + -0.22022290365271107504e+02, 0.25181505799464634521e+02, + -0.67010986106411092322e+01, -0.16659318033083756916e+02, + 0.28702766750521078620e+02, -0.16029941318387511018e+02, + -0.86824005141087177151e+01, 0.27599447331057486821e+02, + -0.21253022380933298763e+02, -0.31719986751466113795e+01, + 0.28157550520203574962e+02, -0.29101182436229386497e+02, + 0.68598969779277654268e+01, 0.23359891933125197738e+02, + -0.33487947848195027234e+02, 0.18116623374519491563e+02, + 0.11603089692401141519e+02, -0.26746626387335794561e+02, + 0.17695638217812575732e+02, 0.80303952565688696552e+01, + -0.22033113328731548819e+02, 0.12931813284325867741e+02, + 0.13092493846334047447e+02, -0.27099753014739949464e+02, + 0.16449915002910156403e+02, 0.12507814110205144331e+02, + -0.28877287262889140607e+02, 0.18278655495337037706e+02, + 0.12337925460655004173e+02, -0.29535738429785737935e+02, + 0.17162874052966479610e+02, 0.16771534282427147389e+02, + -0.36007222194214499211e+02, 0.22861284528765324353e+02, + 0.13412147394306247250e+02, -0.34506845986390707992e+02, + 0.22845713684910858632e+02, 0.10165851351049873585e+02, + -0.25696968640330318578e+02, 0.99379156540253497099e+01, + 0.20403247081949491104e+02, -0.26034429239464408568e+02, + 0.73614682380619023139e-01, 0.32270901877606455344e+02, + -0.30760661336589514292e+02, -0.30376922365854022168e+01, + 0.35129089262325990717e+02, -0.26680523940232614422e+02, + -0.10218694809951990976e+02, 0.34959534385904191822e+02, + -0.15811826450629997254e+02, -0.21425160857090734368e+02, + 0.33367111728133700410e+02, -0.26131097035816077678e+01, + -0.29511403744509557612e+02, 0.23527154615349186173e+02, + 0.16424792189413228272e+02, -0.35703462665912240936e+02, + 0.85238017783543327255e+01, 0.35336276326215504184e+02, + -0.36927177792816330282e+02, -0.47487245933226400751e+01, + 0.38302985255671941900e+02, -0.18248756460501429189e+02, + -0.22820584425259891503e+02, 0.26988456847896902246e+02, + 0.16025952953854083916e+02, -0.41832857913532670580e+02, + 0.11043763014470229677e+02, 0.39360581673440009354e+02, + -0.36333543721303769303e+02, -0.13229708711794291531e+02, + 0.38128903328917274962e+02, 0.35769138462574645576, + -0.38381946599081757654e+02, 0.14626983250269484316e+02, + 0.39332973066957201524e+02, -0.35319165274072247485e+02, + -0.21711215141186503530e+02, 0.44060483329283719911e+02, + 0.64526628476437029036e+01, -0.43141577716068660209e+02, + 0.44201903598692604547e+01, 0.46092683223484762323e+02, + -0.16240687105770803100e+02, -0.42934707374661194024e+02, + 0.27738094286413570444e+02, 0.39649652193660983812e+02, + -0.35559468505633034852e+02, -0.32116172764138028128e+02, + 0.38636437346821182359e+02, 0.31418164204083218749e+02, + -0.38934236111108916134e+02, -0.35122277849326906107e+02, + 0.48734435379484871476e+02, 0.30039039973357219537e+02, + -0.41785674809071736036e+02, -0.34941763962424403189e+02, + 0.35382869846448450346e+02, 0.51720588265461870492e+02, + -0.38723506112747962504e+02, -0.48930242157893772514e+02, + 0.20254322802066642595e+02, 0.58416314855617848423e+02, + 0.53439627087557939333e+01, -0.69639605998749530613e+02, + -0.19089898360664914634e+02, 0.51389114836096673855e+02, + 0.52990727795822131441e+02, -0.22722906600850294012e+02, + -0.76317270949008246816e+02, -0.11122376735738404463e+02, + 0.57552349576226802697e+02, 0.65680571760160077588e+02, + -0.10151032119839555889e+02, -0.81612382564460119738e+02, + -0.51199936533893186663e+02, 0.19156382318626619110e+02, + 0.88837615877297679390e+02, 0.69475622117281560008e+02, + -0.97620006198015065735e+01, -0.75914392827883872883e+02, + -0.10582848004184268120e+03, -0.50759791819749310093e+02, + 0.19180748497747810433e+02, 0.93385550528977560703e+02, + 0.13543417348141136358e+03, 0.13279911156570352659e+03, + 0.12075611707316471666e+03, 0.81397962645056409769e+02, + 0.57685022634360031191e+02, 0.32524078513974906457e+02, + 0.15872015258948684036e+02, 0.11260200000267005294e+02, + 0.11148996598367511002e+01, 0.37362479975649667274e+01, + -0.27160241745633162402, -0.12317156466359056866, + 0.13760280626347654032e+01, -0.16546194144707120355e+01, + 0.14477454355471162106e+01, -0.73731704246473106501, + -0.16613561030715603972, 0.96427006850836827212, + -0.14300124801559119803e+01, 0.14437466144743582586e+01, + -0.10524900274316575377e+01, 0.39593816256859687419, + 0.30935764693616563115, -0.88039695428272846112, + 0.11821870665311611237e+01, -0.11913113427247836729e+01, + 0.95334623270538110251, -0.58411941760950780722, + 0.19504600241555505868, 0.11602016378959234544, + -0.31336017731861448565, 0.39881601828466867188, + -0.41730003764315876102, 0.41090197445965975787, + -0.41482503579588653198, 0.42993114816523647637, + -0.43968942329618942999, 0.41214520061678627805, + -0.32721825593474751503, 0.18218861883418130398, + 0.40241409584715421843e+01, -0.75793933571465279542e+01, + 0.38920636402964876588e+01, -0.11790968271312865512, + -0.47041895369087791678e+01, 0.71033407708103490918e+01, + -0.84189157332745434559e+01, 0.61812172944974896893e+01, + -0.30699118865991548155e+01, -0.20841761019701134927e+01, + 0.57231839430450479611e+01, -0.88194140143634811579e+01, + 0.83731039249043863748e+01, -0.65160331318294826275e+01, + 0.16846337833253426375e+01, 0.26969840057609903994e+01, + -0.74224795757714145950e+01, 0.90604173331741471031e+01, + -0.91709498882572546563e+01, 0.56531198862127007843e+01, + -0.15718803282307169944e+01, -0.39353373925936567801e+01, + 0.72088392220148849177e+01, -0.93424802954969621283e+01, + 0.76797450339438029232e+01, -0.47890779029496926000e+01, + -0.46484672138898802674, 0.44563606465424463465e+01, + -0.79024726144170038822e+01, 0.80082696638785613175e+01, + -0.59339022121865312442e+01, 0.26347745807768414572e+01, + 0.46652940171475281161e+01, -0.18867228976445056254e+01, + 0.17969048336243744757e+02, 0.11091929352297933420e+02, + 0.35406198430004799604e+02, 0.49185991365935031183e+02, + 0.60770235104551851180e+02, 0.86270058387548942846e+02, + 0.67039769751863460101e+02, 0.59374823825697227164e+02, + 0.10295937883672415580e+02, -0.35060720891249040676e+02, + -0.50470785584724225714e+02, -0.55282970463654983462e+02, + 0.35233234953383858468e+01, 0.35226200484942637559e+02, + 0.48257042057390862055e+02, 0.18520398565493703558e+02, + -0.40327115077879248872e+02, -0.36789114333955069469e+02, + -0.12119545034279868290e+02, 0.37223095172813387421e+02, + 0.38667511079059579515e+02, -0.16549241158313339639e+02, + -0.33605834862531587248e+02, -0.20196562006125848399e+02, + 0.31027330444921268793e+02, 0.34559044574354956580e+02, + -0.21428207359589237058e+02, -0.28453298447355777512e+02, + -0.62092145954151760634e+01, 0.36307952245099642141e+02, + 0.15141872915900638219e+02, -0.37955707846390247084e+02, + -0.99678674350990981168e+01, 0.18273084462895273106e+02, + 0.25898948117150077053e+02, -0.19245257018107963631e+02, + -0.31545269128955119697e+02, 0.27940225255225147549e+02, + 0.16868165406396865791e+02, -0.13730875632589791380e+02, + -0.22843646276165646469e+02, 0.11915676457322133430e+02, + 0.31196726341632931678e+02, -0.27817501322125405494e+02, + -0.15284008719068989279e+02, 0.23133054453841211284e+02, + 0.90149404621280790906e+01, -0.14976562325094851857e+02, + -0.18709248523871959691e+02, 0.30785770005064126309e+02, + 0.41183641414688025861e+01, -0.32960526257152245933e+02, + 0.14786132255637109978e+02, 0.14469532056643030771e+02, + -0.71960689938570974178e+01, -0.18746008527381455622e+02, + 0.13827504648619440175e+02, 0.20040492691473254183e+02, + -0.33176342222390125869e+02, 0.57142429438830841804e+01, + 0.23171940128716844498e+02, -0.16228581691732120618e+02, + -0.92441873723463316992e+01, 0.11799429650905377542e+02, + 0.10873732862482485828e+02, -0.21403057380707597446e+02, + -0.40163155272111983329, 0.27207883576576950446e+02, + -0.23168845430306749478e+02, -0.71456081365862411658e+01, + 0.25961451863041624222e+02, -0.13548331553136691241e+02, + -0.88321767007633198432e+01, 0.10547082107163983977e+02, + 0.69669557583602896855e+01, -0.15047839643900626783e+02, + -0.21224187594501615628e+01, 0.25327781124070245511e+02, + -0.25107621707185359128e+02, -0.12233465602341144773e+01, + 0.25756016568665575761e+02, -0.23743451626136884869e+02, + 0.11431854106421512896e+01, 0.14757482564018769011e+02, + -0.88586429708194653898e+01, -0.63411592567655610253e+01, + 0.85002875156870469908e+01, 0.60802515077525862708e+01, + -0.18676963538347038707e+02, 0.10987364333897351898e+02, + 0.12061339603806541021e+02, -0.27104314015229906687e+02, + 0.17534478399346944855e+02, 0.81734806424820209969e+01, + -0.25772073819852792553e+02, 0.19964531932256196711e+02, + 0.93728757520920902291, -0.15776889107419458824e+02, + 0.12524064687449342870e+02, 0.86102405099026280144, + -0.76382709928830667678e+01, 0.86611575956460773451, + 0.96185714094347254388e+01, -0.92947617628583358851e+01, + -0.46582380125438822560e+01, 0.19161513339799473243e+02, + -0.18466417601333244392e+02, 0.18921738205772825614, + 0.21016851551936806430e+02, -0.26773057011563601293e+02, + 0.11507205785301568568e+02, 0.12309907272807551593e+02, + -0.25584094950588681883e+02, 0.18829107136786227272e+02, + 0.44433542521371133249, -0.15786273116431640773e+02, + 0.16160170120502993285e+02, -0.44733686197997784006e+01, + -0.71778495899645342604e+01, 0.90917775363565667135e+01, + -0.22083469845493057804e+01, -0.46143467510948035226e+01, + 0.39007733545053691060e+01, 0.30025513848802942718e+01, + -0.78498924888418430967e+01, 0.38133023124822242877e+01, + 0.71294077902455805784e+01, -0.15409456966388267674e+02, + 0.12073931535252617309e+02, 0.25810178779169561381e+01, + -0.18324524217284196226e+02, 0.22560465291772000995e+02, + -0.10726553815370136746e+02, -0.96165208184408488279e+01, + 0.23888260594429159056e+02, -0.21531421161282409571e+02, + 0.39114592398927987560e+01, 0.16402856791397500302e+02, + -0.24930710013326503827e+02, 0.15623444461885432233e+02, + 0.48093247744597160676e+01, -0.22029355732414096281e+02, + 0.24194054312261187079e+02, -0.10177982169278697810e+02, + -0.10194113550689660741e+02, 0.23222741545485877879e+02, + -0.20841370586348219263e+02, 0.55620175286352280253e+01, + 0.11796110334003234499e+02, -0.19897514765392212865e+02, + 0.14276388854294976838e+02, 0.20655308279672840444, + -0.13333133575925211645e+02, 0.16516034305098667545e+02, + -0.82887983081753215941e+01, -0.53444722441395633439e+01, + 0.15247138774265204475e+02, -0.15233643123192514679e+02, + 0.57288251969858743351e+01, 0.68979284247011198872e+01, + -0.14719695669462034004e+02, 0.13224758972776992749e+02, + -0.39235093993108272059e+01, -0.69412984153473011872e+01, + 0.12461412828774021122e+02, -0.93822335715602616091e+01, + 0.13742048715194254527e+02, -0.10059602345514429445e+02, + -0.15655633593109447688e+02, 0.28354100348747124372e+02, + -0.23135899717240722140e+02, -0.48285875277707934750, + 0.22458832148420594166e+02, -0.31284214533933905500e+02, + 0.16542957261424398041e+02, 0.81474084668099617801e+01, + -0.29723529255518101877e+02, 0.29288199857416270078e+02, + -0.10893303091943630889e+02, -0.16420847919816036864e+02, + 0.29524169082843684464e+02, -0.23045765414808624172e+02, + -0.18686534129346259459e+01, 0.22942988978412692802e+02, + -0.28214489375472595611e+02, 0.98037558106057769436e+01, + 0.14795074366064449478e+02, -0.30696093284653706235e+02, + 0.21743574962011582130e+02, 0.18852310845386048843e+01, + -0.26124605699361445943e+02, 0.28633806013095966847e+02, + -0.11222176308522559651e+02, -0.16147843222584640444e+02, + 0.27973924231784724981e+02, -0.18352548719910519281e+02, + -0.87385170977594768260e+01, 0.27307328348515635952e+02, + -0.25048571157864476078e+02, -0.92324804294632079049, + 0.26136981632780507567e+02, -0.33080493562305925082e+02, + 0.11226362638192492582e+02, 0.18640071274971603543e+02, + -0.35547806804884402254e+02, 0.21169624282000079063e+02, + 0.93980303211569804489e+01, -0.34036083342975096855e+02, + 0.27499278310297746941e+02, 0.18957596497458555351e+01, + -0.32924248338016781190e+02, 0.34722985492892938453e+02, + -0.83832685423592430141e+01, -0.27544396010043293188e+02, + 0.38284987995427592011e+02, -0.18048235599120157957e+02, + -0.18576547362575315248e+02, 0.34994978037163711804e+02, + -0.20169830255147910947e+02, -0.14984755629476614658e+02, + 0.33186089734411531538e+02, -0.20003861138427552646e+02, + -0.15778494255545965075e+02, 0.35759836303812996050e+02, + -0.22908893258478737920e+02, -0.14796833995062467437e+02, + 0.37017369611785397865e+02, -0.24383326407921547485e+02, + -0.14995976877154385321e+02, 0.38289602120774887339e+02, + -0.24290583014744999701e+02, -0.17700799198161828230e+02, + 0.41962564522412357348e+02, -0.26270586761611543380e+02, + -0.17791939075537964499e+02, 0.41843643941651798457e+02, + -0.24504243189144137460e+02, -0.18682920053825707640e+02, + 0.37470802241450172687e+02, -0.14630193688471781144e+02, + -0.27376686051822282764e+02, 0.36862121546593542121e+02, + -0.42595353968844298365e+01, -0.38171695447315059369e+02, + 0.38113471401472196476e+02, 0.32878067442891549810e+01, + -0.43227685462740517153e+02, 0.32183278365973102098e+02, + 0.14387314791113631429e+02, -0.44905319021038842209e+02, + 0.19281596794987471810e+02, 0.28734917985009417407e+02, + -0.43325879142490251184e+02, 0.24899886838582130366e+01, + 0.39901577461522727219e+02, -0.32474629968062693308e+02, + -0.19777276078244323543e+02, 0.46337889102291789811e+02, + -0.13422256590848132163e+02, -0.41564719283653573711e+02, + 0.43455775721607281525e+02, 0.88024764768031396045e+01, + -0.49552299942610886774e+02, 0.21090766760568687488e+02, + 0.33693086930326970219e+02, -0.39653041011852295128e+02, + -0.16678577266603902274e+02, 0.52114269295852771791e+02, + -0.15242622584237766503e+02, -0.47360022589048398345e+02, + 0.42468094507545124827e+02, 0.20759392364725758995e+02, + -0.51086437752654887845e+02, -0.62546861240215045896, + 0.51441370134020246496e+02, -0.21914887278826920891e+02, + -0.47642682452221734479e+02, 0.43631846061321326147e+02, + 0.28073673134937042306e+02, -0.55385474072129703416e+02, + -0.10327716739338516305e+02, 0.57412307707357662423e+02, + -0.68993877788461697165e+01, -0.59017129010631521169e+02, + 0.21351194091794340579e+02, 0.54552285394341083702e+02, + -0.35417856758951543839e+02, -0.50532912348626609855e+02, + 0.44701776469970887717e+02, 0.42336884199053578470e+02, + -0.50046461638089112967e+02, -0.41289872960396934332e+02, + 0.52363666633432472963e+02, 0.41833206396916700953e+02, + -0.59219619833441591084e+02, -0.41082582346203508905e+02, + 0.54254702177222860371e+02, 0.46738534139906505516e+02, + -0.49377330619508818188e+02, -0.61505656337083358665e+02, + 0.45028961232785448487e+02, 0.66085023845827308264e+02, + -0.26741850309270816410e+02, -0.77064847499756069737e+02, + -0.28812035331180094744e+01, 0.84722296070969036919e+02, + 0.28733714457563145572e+02, -0.68433195728252002255e+02, + -0.68224534306140810713e+02, 0.31595049250661386253e+02, + 0.94313624561929543688e+02, 0.18238727398835766991e+02, + -0.76774710376240321352e+02, -0.83741021006766473533e+02, + 0.14647904557456328689e+02, 0.10151060827577879309e+03, + 0.70014091065170418915e+02, -0.28312621577710558540e+02, + -0.11216392681844281753e+03, -0.89136303627834678309e+02, + 0.10141624423378930331e+02, 0.10156398124266992511e+03, + 0.13162361173950776561e+03, 0.69011682455640425360e+02, + -0.26799679127270099599e+02, -0.11998731013461238604e+03, + -0.17228887241575139910e+03, -0.17388652417950456197e+03, + -0.15171852626577469891e+03, -0.10768604142597035889e+03, + -0.72314754766256797325e+02, -0.42228003183410926624e+02, + -0.21284103907873028305e+02, -0.12801277117370752023e+02, + -0.32856402265170592258e+01, -0.33523202540774041935e+01, + -0.35320352076660299634, 0.46917611191604167986e-01, + -0.10616082305168921263e+01, 0.12022959590640434069e+01, + -0.11355885172581019482e+01, 0.72310998669962045504, + -0.17978475737541096957, -0.33066707273979839554, + 0.67126828390699744276, -0.76624274888617627255, + 0.63487766519963362288, -0.34750358640697681656, + 0.20470066113049151940e-01, 0.24941447640738401148, + -0.38940631749099630099, 0.38963496945148073936, + -0.27575633413374406322, 0.11227733236385625815, + 0.42313542138784458746e-01, -0.13805786447953635743, + 0.16277172944607798399, -0.12534417966867039684, + 0.59882602645807851693e-01, 0.28516264748426451391e-02, + -0.36983585332759041919e-01, 0.38969732638686097048e-01, + -0.17118091141092865032e-01, -0.85367007256084703748e-02, + 0.22742917527177320541e-01, -0.17945664783998321185e-01, + -0.18598341097457196103e+01, 0.34754905837056173645e+01, + -0.17198369668809703192e+01, -0.92820385606550911972e-02, + 0.22689636267259505331e+01, -0.33663407490786991794e+01, + 0.40258119210699705448e+01, -0.30044172912603359649e+01, + 0.16317279627468810332e+01, 0.74464732567248881345, + -0.23938300196315105417e+01, 0.38741690802295329910e+01, + -0.37039330042242650798e+01, 0.29643985306948335001e+01, + -0.82414733713828336459, -0.10504813124194998242e+01, + 0.31433744295710419614e+01, -0.37888490681109345815e+01, + 0.38233924700176458167e+01, -0.21894110455649062885e+01, + 0.40614157946386914011, 0.20287695919882691165e+01, + -0.33417520984971522680e+01, 0.41621204235798119342e+01, + -0.31961393172448819833e+01, 0.17613838665578238629e+01, + 0.73796699758620143417, -0.25166648295981390859e+01, + 0.40050000020609664020e+01, -0.38499952298198110157e+01, + 0.26901830584892025833e+01, -0.10096844188705818013e+01, + -0.25735553255763763403e+01, 0.10653008840901547760e+01, + -0.89678745003993398655e+01, -0.56602597087016626176e+01, + -0.17553531192696691932e+02, -0.24689024107455644241e+02, + -0.30406002770643187461e+02, -0.42954843264752518905e+02, + -0.33841680890639821655e+02, -0.29275848704265854394e+02, + -0.55499777270055901113e+01, 0.17824162556078757547e+02, + 0.25146872097053996953e+02, 0.27478794724668542671e+02, + -0.13432909207488767933e+01, -0.18221866853378418938e+02, + -0.23429102365893090365e+02, -0.99127930570400017984e+01, + 0.20646665569325605816e+02, 0.18185407849385583745e+02, + 0.59545201517459904750e+01, -0.18201619893544869200e+02, + -0.19967573804084583600e+02, 0.90200661391733660821e+01, + 0.16088572048760308775e+02, 0.10659969745760735194e+02, + -0.15824285201032779469e+02, -0.17254866278280637459e+02, + 0.10964242325916760734e+02, 0.13775087697473917814e+02, + 0.36617970477975596566e+01, -0.18699211419684459656e+02, + -0.71306892500875678209e+01, 0.18713896241508223284e+02, + 0.50549585735911710671e+01, -0.90311375344281525912e+01, + -0.13169435664101177608e+02, 0.98881533262388927596e+01, + 0.15539540680293862707e+02, -0.13817499695926400705e+02, + -0.84787584751633424673e+01, 0.68195294581850962601e+01, + 0.11522545595479826375e+02, -0.60514121993901612839e+01, + -0.15562948824228184819e+02, 0.13975485110149605816e+02, + 0.74682464342356222886e+01, -0.11304640707248687193e+02, + -0.47989572156415247761e+01, 0.77425204235132198960e+01, + 0.92154971669357976793e+01, -0.15420394911606184252e+02, + -0.18358202236999048296e+01, 0.16081757904108449964e+02, + -0.68711678616016591548e+01, -0.77876216935666207064e+01, + 0.40835524872271848906e+01, 0.90569755663164581705e+01, + -0.68348657000929486927e+01, -0.98266065767134271880e+01, + 0.16144780823876978104e+02, -0.22257061782908462710e+01, + -0.12298145926861939969e+02, 0.87901266778787583434e+01, + 0.41045351082405430176e+01, -0.56283748055563878054e+01, + -0.54083263821320732845e+01, 0.10379709495928018725e+02, + 0.76598017754723202177, -0.14312651685795936274e+02, + 0.12320649847112191466e+02, 0.29357978845643866173e+01, + -0.12542779656004066524e+02, 0.66061644894716495813e+01, + 0.42985305109799378798e+01, -0.48965575932389402425e+01, + -0.40437381668567100590e+01, 0.81706849093289974917e+01, + 0.44156490311337304178, -0.12167539730807282794e+02, + 0.12257316199471727458e+02, 0.67690699917237473482, + -0.12715149612672453472e+02, 0.11528686327697368341e+02, + -0.11661858360502680432, -0.78578934373804321112e+01, + 0.48548745569011666490e+01, 0.28658274215515571193e+01, + -0.40996950363922364247e+01, -0.30273413965603239717e+01, + 0.91890149796769335921e+01, -0.52494078822252348004e+01, + -0.63106501078666328297e+01, 0.13815863637485076509e+02, + -0.89680000793688989802e+01, -0.39708802750039673413e+01, + 0.12861583283919088672e+02, -0.10030362021281771234e+02, + -0.37465355388646848223, 0.77862591343249780707e+01, + -0.61802611877365585258e+01, -0.46846394185415041189, + 0.38104542553749038980e+01, -0.38518039916737079054, + -0.48712010550982105528e+01, 0.46972093031463408863e+01, + 0.23211649703918593168e+01, -0.96304610614393890700e+01, + 0.93469360555368137256e+01, -0.25713088677626311229, + -0.10322650554688811653e+02, 0.13217823217741438313e+02, + -0.56399420861965419149e+01, -0.61774429927359033599e+01, + 0.12706173998485523313e+02, -0.92186567710790043861e+01, + -0.50364347284313837338, 0.82207201510361933572e+01, + -0.83973026616289097035e+01, 0.24877399191537397094e+01, + 0.34566176033195494810e+01, -0.45638167118909551689e+01, + 0.12832135020809183334e+01, 0.19875863875927000102e+01, + -0.15331138060039344317e+01, -0.19502150275003755642e+01, + 0.43337616674884937851e+01, -0.22031430668275202578e+01, + -0.34339911049549414201e+01, 0.77710216768484192684e+01, + -0.62966578535709558651e+01, -0.87041195314262598259, + 0.86456726655225768496e+01, -0.10746449035035920971e+02, + 0.48999232009369633190e+01, 0.51251000590368924748e+01, + -0.12057476458318905799e+02, 0.10652814795927497471e+02, + -0.16276182436237385254e+01, -0.86960911872320068028e+01, + 0.13052136818090014359e+02, -0.83974735003965026436e+01, + -0.19126018485843965244e+01, 0.10697678029286899815e+02, + -0.12007716205510277518e+02, 0.52462352634212914282e+01, + 0.47154519557538385754e+01, -0.11062028047159142119e+02, + 0.97894397596816453699e+01, -0.21661829859886294614e+01, + -0.63981284755850937884e+01, 0.10254440277863309916e+02, + -0.71986143165194720339e+01, -0.29920497216299873910, + 0.70905707126939008234e+01, -0.88443348410130084858e+01, + 0.48021806225463299356e+01, 0.20466836002459616317e+01, + -0.71285191276254220583e+01, 0.73312401785966878620e+01, + -0.28338016353266151093e+01, -0.32184942970969721010e+01, + 0.69039282681365401473e+01, -0.60017775234810963880e+01, + 0.12922142925614097386e+01, 0.40942612662952617697e+01, + -0.67103192003948457511e+01, 0.49514113498689855675e+01, + -0.53629908300720545711e+01, 0.26356356949658517053e+01, + 0.81854857603611215211e+01, -0.12719142303787453585e+02, + 0.95587216291996366380e+01, 0.10304173560567271295e+01, + -0.10144436456067342789e+02, 0.13230937909544094211e+02, + -0.62919783629427472604e+01, -0.42390148158767173570e+01, + 0.12776012628295637441e+02, -0.11504498013527939548e+02, + 0.29099727939694415291e+01, 0.87262519095926531776e+01, + -0.13341109915263068331e+02, 0.92107888834194113770e+01, + 0.25392614053372941640e+01, -0.11694037332536643348e+02, + 0.13183608388404444156e+02, -0.40434467052720410862e+01, + -0.73612077771144157623e+01, 0.14215897602188485749e+02, + -0.95376138129119514275e+01, -0.16024474893925073626e+01, + 0.12493074131289029438e+02, -0.13022608555060292801e+02, + 0.42974598472446263742e+01, 0.87336083122513716859e+01, + -0.14202120676638742225e+02, 0.93347465196818752986e+01, + 0.38713842426569891053e+01, -0.13287745870788327807e+02, + 0.12923439448459415502e+02, -0.12097944421120871983e+01, + -0.10800141613912115801e+02, 0.14888387271404862844e+02, + -0.58399706699352202932e+01, -0.73689244335418724319e+01, + 0.15369978364187016240e+02, -0.96228800700372136845e+01, + -0.35806335770250163897e+01, 0.14697352576374987265e+02, + -0.12417796658050679781e+02, 0.10826550910661010552, + 0.13271781520341336957e+02, -0.14278155329513610994e+02, + 0.33993542867400328156e+01, 0.11482076186312266231e+02, + -0.15377370551475163296e+02, 0.61384629044485361504e+01, + 0.96570978670295204438e+01, -0.15941896596982353174e+02, + 0.82791027797936376231e+01, 0.80498305636143800967e+01, + -0.16200701994408408524e+02, 0.98383624167070298228e+01, + 0.68428161380232292998e+01, -0.16351934925307677560e+02, + 0.10854868932621048572e+02, 0.61642027723350238944e+01, + -0.16542477378101906993e+02, 0.11353425553004070636e+02, + 0.61050483047876520359e+01, -0.16853935223662972476e+02, + 0.11317899990201187421e+02, 0.67301510265130692900e+01, + -0.17288665085778209374e+02, 0.10673377816386484085e+02, + 0.80756436080046327675e+01, -0.17751300313051103785e+02, + 0.92806141663351802151e+01, 0.10126921401619210172e+02, + -0.18025224710435281850e+02, 0.69502193323337015940e+01, + 0.12771396544038726262e+02, -0.17750646503126507270e+02, + 0.34898789151177838086e+01, 0.15724836612352516951e+02, + -0.16422705842495815887e+02, -0.11975775280719402893e+01, + 0.18442223820316911542e+02, -0.13444364190524925817e+02, + -0.69508989539139776070e+01, 0.20049618224364053276e+02, + -0.82845434682353804590e+01, -0.13131099350509476409e+02, + 0.19374560339562485467e+02, -0.79091033618259587445, + -0.18414764190219667483e+02, 0.15197352566863091994e+02, + 0.83439074234785177708e+01, -0.20771528262998959491e+02, + 0.68507384525031902456e+01, 0.17107691440099227265e+02, + -0.17910788368584910302e+02, -0.48285200725413082168e+01, + 0.22082897025507794098e+02, -0.84828285639538698604e+01, + -0.16555928941477702665e+02, 0.19396773317041617446e+02, + 0.60356660280046323663e+01, -0.22619638631447845256e+02, + 0.72309674118951550170e+01, 0.19782893406535194458e+02, + -0.17235383795331383538e+02, -0.10691700088073414321e+02, + 0.23559567971046114110e+02, 0.24444948792442697250, + -0.23555051776065660363e+02, 0.10845093977004168551e+02, + 0.20078566947346061511e+02, -0.18649644904250202160e+02, + -0.12689751435415539405e+02, 0.24356511152805957465e+02, + 0.51075299456450435898e+01, -0.26007489724370635997e+02, + 0.33252913495397793398e+01, 0.26271432165036070927e+02, + -0.97236189062355187218e+01, -0.24017485637368363172e+02, + 0.15730842025692933106e+02, 0.22156371035226616328e+02, + -0.19304557308395125403e+02, -0.19425965955667816587e+02, + 0.22628505463867334413e+02, 0.18426189139807739537e+02, + -0.23883099335466226876e+02, -0.17563436522517381633e+02, + 0.25178235831364915498e+02, 0.19134966553307023673e+02, + -0.24385055680025242708e+02, -0.21257630945735837003e+02, + 0.23106291555306320618e+02, 0.25822374437144777204e+02, + -0.18597330191318999226e+02, -0.30234489556624552620e+02, + 0.11906827339339425720e+02, 0.35115649690751347123e+02, + -0.22954894645111534324, -0.35935981480217229489e+02, + -0.14179949691820350921e+02, 0.31095950022037875726e+02, + 0.30577702586573234811e+02, -0.15152409952118031100e+02, + -0.40281949321383670792e+02, -0.97766378583883870590e+01, + 0.35344417987686803428e+02, 0.36792202864801552664e+02, + -0.69773743534529977239e+01, -0.43915634963206372277e+02, + -0.32674904616956162329e+02, 0.14040849776138653482e+02, + 0.48908529709562301946e+02, 0.39803249077283275881e+02, + -0.39231679689015250823e+01, -0.46282292456726672469e+02, + -0.57152110788528815988e+02, -0.31827146053532107572e+02, + 0.12564967960438940153e+02, 0.53325746048214170969e+02, + 0.75974256005589566598e+02, 0.78269586810036258839e+02, + 0.66366414107719933213e+02, 0.48700729719975164755e+02, + 0.31739978454440556987e+02, 0.18660178376615657925e+02, + 0.99977899494155106908e+01, 0.49166219351154705208e+01, + 0.22307162675296026144e+01, 0.93733445420019290140, + 0.36581125217641280445, 0.13287891389709433065, + 0.44995445386820723255e-01, 0.14219028618929079738e-01, + 0.41962900083953435376e-02, 0.11569431745035688337e-02, + 0.29801099053451961555e-03, 0.71700828005300074486e-04, + 0.16105185104626602518e-04, 0.33745540599764500051e-05, + 0.65889334569254160558e-06, 0.11972233352044643275e-06, + 0.20210430913591464562e-07, 0.31633614228489310471e-08, + 0.45799856232643241001e-09, 0.61165319712579507452e-10, + 0.75100263548264106307e-11, 0.84447984020147500541e-12, + 0.86568948301661310097e-13, 0.80464236694710210698e-14, + 0.67373976448677816015e-15, 0.50422102913195893060e-16, + 0.33404775191849695914e-17, 0.19356822993432401176e-18, + 0.96610217926709515672e-20, 0.40698385039728980302e-21, + 0.14073778193426095243e-22, 0.38365107539268785529e-24, + 0.77314418804540232934e-26, 0.10241395017821932194e-27, + 0.66898520716763342135e-30, -0.13270393585778996609e-01, + 0.23237808340584920064e-01, -0.16008143646967322449e-01, + 0.51238866197446039652e-02, 0.46867064089928384130e-02, + -0.12623840724464572421e-01, 0.15094516835949589595e-01, + -0.13718873252757064762e-01, 0.78320988659133731341e-02, + -0.15638100769497897524e-02, -0.44427923807152068514e-02, + 0.63420773032732326996e-02, -0.52428299357492481186e-02, + -0.76450590236730789611e-04, 0.58844628510906805963e-02, + -0.11650136958743645410e-01, 0.13340964520759187803e-01, + -0.11681540004990687356e-01, 0.50466129472949133178e-02, + 0.30655411847020858432e-02, -0.12050061036267104703e-01, + 0.17460429485893321638e-01, -0.19350292507730348923e-01, + 0.15342426192416264499e-01, -0.83160518958089024028e-02, + -0.14245567993077387029e-02, 0.93160779799334771101e-02, + -0.14894699349578661984e-01, 0.14998014334616732376e-01, + -0.11641668535464088849e-01, 0.44505584342805623241e-02, + 0.24871614637614627118e-02, -0.84311749974179742151e-02, + 0.10580244940290585778e-01, -0.83200532894580972454e-02, + 0.54870420843583511683e-02, 0.59966669296534587039e-02, + -0.79834302097671068065e-03, 0.26849808747266903919e-01, + 0.11191018150952386501e-01, 0.52987883683189851425e-01, + 0.44457136276735802205e-01, 0.81308077909546971895e-01, + 0.63450846170589436657e-01, 0.77851169159852615098e-01, + 0.14438976396244944042e-01, 0.14333572431904154088e-01, + -0.70497096999631442271e-01, -0.28697857387349669928e-01, + -0.55171350865907985150e-01, 0.31788544049211248099e-01, + 0.32420283636563483609e-01, 0.47542106347107204734e-01, + -0.36500036588373208253e-02, -0.38046149970969049547e-01, + -0.37315764622931520134e-01, 0.27437621788318914198e-02, + 0.39862215653812697880e-01, 0.26502766055466833034e-01, + -0.12862527587095015300e-01, -0.42187531719692243637e-01, + -0.89406700541803853927e-02, 0.33495029358955881460e-01, + 0.19290832315089920246e-01, 0.15038654577875358066e-02, + -0.57324664644665249136e-01, 0.23885284104649181364e-01, + 0.93982882779976278237e-02, 0.31295721523104891304e-01, + -0.34584272544112143466e-01, -0.25145107307101843830e-01, + 0.30930083558457506510e-01, 0.12685376346110185594e-01, + -0.22191180399085564529e-02, -0.34053826843223673759e-01, + 0.72465701473271278490e-02, 0.37145742511493336224e-01, + -0.17252350123361247930e-01, -0.19818899368304616904e-01, + 0.21144749036127912303e-02, 0.24445845403689811515e-01, + 0.23280753755021647150e-02, -0.35297449717419375481e-01, + 0.11562661530136837326e-01, 0.28323443958932919412e-01, + -0.20085483276883087100e-01, -0.87978196986627180826e-02, + -0.14810002248314484922e-02, 0.30899590891657207486e-01, + -0.19648471430698522672e-01, -0.22696426225657838349e-01, + 0.33902407833163894502e-01, -0.51838160636997216574e-02, + -0.92226302102529026522e-02, -0.13756478824012574255e-01, + 0.31139937946503395971e-01, -0.10534733126906297221e-01, + -0.16064066815281729389e-01, 0.61252747629769090792e-02, + 0.24378160820456511171e-01, -0.27312659687893821314e-01, + -0.31418437113524648463e-02, 0.23990449827660711296e-01, + -0.10100913448638863465e-01, -0.11527658368050884563e-01, + 0.69371558668381398671e-02, 0.12901145723885891481e-01, + -0.11074106213493233736e-01, -0.18240762965209589980e-01, + 0.39136774531462227567e-01, -0.23765202183417377668e-01, + -0.10466967426678493516e-01, 0.25879266803523145318e-01, + -0.14228831089458543815e-01, 0.24977433418642558394e-02, + -0.11908615175156303523e-01, 0.28581104403971213657e-01, + -0.24860140736848668208e-01, -0.10948747442018490379e-02, + 0.20865709712494445033e-01, -0.11941376789104096376e-01, + -0.14018811821287370523e-01, 0.25785828698554408983e-01, + -0.10628770205294424747e-01, -0.12252786938779651124e-01, + 0.16692405967586799315e-01, -0.64958370180712881378e-03, + -0.14370230402933989455e-01, 0.11366391469608678327e-01, + 0.20344126585480942944e-02, -0.53779530569234975865e-02, + -0.77563144117893450744e-02, 0.20638990054530386570e-01, + -0.13156990601666378529e-01, -0.13817412279034954267e-01, + 0.37387279926899226468e-01, -0.36509786701763725925e-01, + 0.13612673127979141655e-01, 0.86570293605953679145e-02, + -0.11293737751045933651e-01, -0.31655280516972596726e-02, + 0.16008345112887220618e-01, -0.13538095363110914590e-01, + 0.18300169553025894854e-03, 0.87008683789094858757e-02, + -0.49876581986582294720e-02, -0.39067460620159904366e-02, + 0.43850871980896707208e-02, 0.70662335560534765902e-02, + -0.19141289760729315178e-01, 0.17240660906817046466e-01, + 0.52547760409293561065e-03, -0.20039265446728297265e-01, + 0.23940434867563382265e-01, -0.84394868642794738933e-02, + -0.12548216906802850748e-01, 0.19586770860286848578e-01, + -0.51700183678921388108e-02, -0.19875947847357324644e-01, + 0.36001952699492342780e-01, -0.31684824626055006769e-01, + 0.12089173090336188116e-01, 0.67500551255710739690e-02, + -0.12223486695477143310e-01, 0.46754068479805278163e-02, + 0.49681926071591794511e-02, -0.61892287502489278309e-02, + -0.22942267903573727687e-02, 0.12848099258964644845e-01, + -0.17055536335046830171e-01, 0.13175870575078581226e-01, + -0.66141076705167828678e-02, 0.36550635171850405156e-02, + -0.52855997699517960967e-02, 0.67546088474380837352e-02, + -0.31340341052648085403e-02, -0.50136123274170715097e-02, + 0.11308676098656308961e-01, -0.93200780874440648793e-02, + -0.99835442169669591679e-03, 0.12079903213901564338e-01, + -0.14484408955746090608e-01, 0.48234100660052327270e-02, + 0.10740250680032351407e-01, -0.20869145595557272305e-01, + 0.17911262243791130355e-01, -0.42691135912227154772e-02, + -0.91789887343468410524e-02, 0.11495684098123175321e-01, + -0.53482361053732612507e-03, -0.14931974526719500249e-01, + 0.21605707236206729560e-01, -0.11918355245362074676e-01, + -0.97825697350640838934e-02, 0.29901275213778475554e-01, + -0.35341679673053433275e-01, 0.23028015284819697978e-01, + -0.21147986679958511065e-02, -0.12840643917718908354e-01, + 0.12618034758140276447e-01, 0.39672132056206906026e-01, + -0.58458947623483886735e-01, -0.32325049793949664489e-01, + 0.10398374079997155239, -0.10808108632021261319, + 0.42331585383821946147e-02, 0.13542750832824196339, + -0.24047715527952900905, 0.21951014627809589674, + -0.97151489420167200239e-01, -0.67520596316421696570e-01, + 0.14959816979644438573, -0.11818259484998835940, + -0.63709143547918505035e-02, 0.94654977446047616763e-01, + -0.74401304184164546163e-01, -0.76828536208997447177e-01, + 0.23587514729465935970, -0.28986604520326852974, + 0.15671408726916191689, 0.72288121160297189038e-01, + -0.25814216879419588091, 0.24635253743241877777, + -0.57308170227748873871e-01, -0.18981846457301213005, + 0.29543748526555452250, -0.20318030141521337129, + -0.20416599189117125290e-01, 0.16833649000403635987, + -0.12776286374678039182, -0.91678421624573541715e-01, + 0.29298348592424788839, -0.31731435453079409603, + 0.10754928097719866631, 0.17571252147963303814, + -0.35228288090799719789, 0.30093216061300409603, + -0.11785103814947324452, -0.44988544874879979329e-01, + 0.51582307218051570707e-01, 0.39443002904161715561e-01, + -0.11065809294758249814, 0.44750646270843415231e-01, + 0.95127043780118533678e-01, -0.19542630118946272000, + 0.14852508831503205555, -0.30192829938535687556e-01, + -0.39494467735326402313e-01, -0.36365273331809597201e-01, + 0.15427879410192599230, -0.16857759842141306628, + -0.14886613898051395330e-01, 0.25265996092433873343, + -0.34342323208060393513, 0.15884695375274682227, + 0.14889381573273144377, -0.33858730633106265406, + 0.24153791690308837325, 0.11541757219088937675e-01, + -0.18685100139135712993, 0.12087814727226753320, + 0.57272896338779410996e-01, -0.13913239832343063385, + 0.91881150695523258753e-02, 0.16842522173348500880, + -0.20400012208597959051, 0.48951925576829147246e-01, + 0.80491210473757637822e-01, -0.19453784594591391754e-01, + -0.19088600452724216461, 0.26624413871958563238, + -0.68412814643545122317e-01, -0.26549023332784882356, + 0.38681420260053961391, -0.18412353693138139299, + -0.14337040952631449620, 0.25149440026138275561, + -0.10846654914922607138, -0.45826663686902302519e-01, + -0.38613841494241844809e-01, 0.23398578221125335141, + -0.25681324121568638308, 0.10664000285354221891e-02, + 0.22861398873182192659, -0.15002442428312445788, + -0.16768902003277222357, 0.30414490025553186925, + -0.82832196110718375737e-01, -0.24381300548905707193, + 0.26736445795937091585, -0.30434097021541293288e-01, + -0.95267325747939349267e-01, -0.10694367080736473519, + 0.31611308343286204092, -0.18961934187555901099, + -0.15761523708146552014, 0.22308960166642038958, + 0.96589478724236302321e-01, -0.37114789171527950984, + 0.19505852880380153413, 0.15383152654872417342, + -0.19150238819257076051, -0.63845929365272627298e-01, + 0.67832962427019305451e-01, 0.29494064463359254136, + -0.50792303004167382863, 0.17697204975190392040, + 0.24028541484248949756, -0.18795231562196287878, + -0.12927820970238507181, 0.55499767000206048917e-01, + 0.30552429343048226329, -0.28283720333026834970, + -0.19903221538636955978, 0.35686923633787537291, + 0.36104965371516882511e-01, -0.25556937489598269275, + -0.10241426761975572224, 0.29752820909497551538, + 0.10338436145125629029, -0.36992532487877094471, + -0.51725720948625666940e-01, 0.34367034252615269452, + 0.66374331251924587050e-01, -0.35495475764289530218, + -0.80646601127461123304e-01, 0.27856112238596647535, + 0.23271399324869757042, -0.36800083912697928445, + -0.24607842736959867347, 0.32374330428803638204, + 0.21524020917536809683, -0.45017014140950786794e-01, + -0.50649859012895537269, 0.66243299714715681015e-01, + 0.43970351886148789644, 0.81912736730651192207e-01, + -0.21146533861287303280, -0.49767327107116537954, + 0.19908333583911674847, 0.46118324942037125513, + 0.12237139969047750032, -0.23990620602261047978, + -0.56692966670186850653, 0.44443114561095228149e-02, + 0.48041620260018841337, 0.34957512947382018975, + 0.16978795023842110923, -0.65938561107704940500, + -0.41418849184840722533, -0.21387150893916276329, + 0.34358480194792018203, 0.75679796100959162430, + 0.40298470381558215703, 0.21171264244439519375, + -0.45163643987226820276, -0.79035699062052866548, + -0.80660239734668970346, -0.98421858045405963278, + -0.54802159588661869538, -0.55835797969465095214, + -0.30460702114900034543, -0.89058039895839699596e-01, + -0.24986065407773816460, 0.14515378552773391951, + -0.20660691700050193287, 0.13716681661929081004, + -0.91091626084813637210e-01, 0.27568666065855361447e-01, + 0.13882516629825373405e-01, -0.33731568984665276367e-01, + 0.29984486596187433921e-01, -0.12338566166052427481e-01, + -0.65272688184578884010e-02, 0.14784289607712646636e-01, + -0.54184838070435491567e-02, -0.21068286930444317384e-01, + 0.57728657445190081909e-01, -0.93168775197598585613e-01, + 0.11603952309302016654, -0.11816670552294726571, + 0.97579589472022359997e-01, -0.58443605178848820336e-01, + 0.10120114796571332699e-01, 0.36155742910256562228e-01, + -0.70019768960509098932e-01, 0.85065050535073488680e-01, + -0.79783153696756092810e-01, 0.57793875471101194274e-01, + -0.26017337573924902150e-01, -0.71828873448763000398e-02, + 0.34543680780729384139e-01, -0.51280386314997164487e-01, + 0.56076178816906310787e-01, -0.50601247696814830035e-01, + 0.38701005758912339350e-01, -0.24825271817936155755e-01, + 0.12823868760679238768e-01, -0.48586831007522909842e-02, + 0.11198794580877457442e-02, 0.52387795739158415920, + -0.88824143214006356928, 0.56337293832842161301, + -0.65792312529341021032e-01, -0.35188065327340700694, + 0.67674672283742831613, -0.71817241623512229065, + 0.58717128314638866726, -0.23915690169961101308, + -0.93462501588272170472e-01, 0.39714096371985485590, + -0.46282461817062636733, 0.37353946082053079980, + -0.58072590499794081442e-01, -0.26697895576816171870, + 0.58768795061395640023, -0.67931153646030151272, + 0.60008930944325289403, -0.25476326782767921841, + -0.15379654837064232753, 0.60852105979541359915, + -0.86388684959366512928, 0.94455302157766485305, + -0.71834203880281866095, 0.35845925441077958196, + 0.13150590711362800111, -0.49932869306366139961, + 0.74427948633346541207, -0.69734156349030751443, + 0.49239651167104159235, -0.10400589448592895137, + -0.23642865571031973504, 0.51015745758866559711, + -0.57566403475018812497, 0.42108982830217384086, + -0.28962580214166505632, -0.30108650441264472875, + -0.15622796043049880232, -0.12341630919621748852e+01, + -0.12224071281523529731e+01, -0.24741526943281737516e+01, + -0.34905018377618888259e+01, -0.39778755197005706279e+01, + -0.47480028838450127893e+01, -0.37149709190872957087e+01, + -0.18242898936352980321e+01, 0.97784454059343037247e-01, + 0.32712592093964283357e+01, 0.26796300883403323390e+01, + 0.23656489374659814828e+01, -0.99943909176211842560, + -0.27813440457446843013e+01, -0.21260530845760876595e+01, + -0.36416711846631033556, 0.27047800564226025521e+01, + 0.19749562396196871372e+01, -0.29889627797018092359e-01, + -0.24467271351047732431e+01, -0.15508476397825163851e+01, + 0.68312601179540077823, 0.27243864190555759919e+01, + 0.20598486535858506752, -0.15359129600347896094e+01, + -0.17513598134964400987e+01, 0.57852480656117777347, + 0.27552695541078389141e+01, -0.79308970628897934585, + -0.11095495771759948944e+01, -0.14568507780320947287e+01, + 0.17874196460482150162e+01, 0.16770213053415441440e+01, + -0.19337113095719093980e+01, -0.73633889925073559013, + 0.12644995713147855199, 0.20591537811594529117e+01, + -0.47380543274560144029, -0.21647013731335769116e+01, + 0.95449844643013392886, 0.12746307407964352354e+01, + -0.20625595820947012493, -0.13975778590436815918e+01, + -0.20154905042495177558, 0.21826636461582022974e+01, + -0.77357198601914878289, -0.15945903188271737250e+01, + 0.10741978765039457144e+01, 0.67520606020146134441, + -0.52237602941151338454e-01, -0.17503275187973557081e+01, + 0.11482889203790391797e+01, 0.12883671117426716002e+01, + -0.18361154675305930706e+01, -0.14691943737531786354e-01, + 0.99151540422287265386, 0.30826206229548297477, + -0.13172127106912874250e+01, 0.96676004587976732685e-01, + 0.14390877518146802938e+01, -0.75021625077359799239, + -0.11862031298567785598e+01, 0.14633480073504876451e+01, + 0.28554606136610188871, -0.14908703173460455815e+01, + 0.64788857096677987535, 0.63011800371500092943, + -0.31797123102519142535, -0.90853574316214458229, + 0.81835255385644223303, 0.95163739581454520611, + -0.22528281198618715919e+01, 0.14132024315401336967e+01, + 0.53294796401444999301, -0.13394784936915395956e+01, + 0.53027549679346563938, 0.25961685978782100825, + 0.25592713026767394124, -0.12487837556230674263e+01, + 0.10577318238285933205e+01, 0.43772294357703561696, + -0.15462103811447580615e+01, 0.93357771564722136226, + 0.68691379853729217508, -0.14313286000161689060e+01, + 0.53312457302662441538, 0.85261786515115223217, + -0.11459291658245422951e+01, 0.21181422635881821948, + 0.67369782528515398390, -0.50159843659330616283, + -0.26317997253629260568, 0.39314256515632473032, + 0.49188313486360146776, -0.13769341537363450900e+01, + 0.10418294659436728722e+01, 0.47598488285956946919, + -0.18146842036283261645e+01, 0.17205536561894325676e+01, + -0.34201244735777036610, -0.96385585709507537455, + 0.10638503555253127075e+01, -0.11946809177177304673, + -0.73535893002934860085, 0.66922810618399497518, + 0.60387256820079580899e-01, -0.53659807008025939279, + 0.27410779751231423296, 0.28304513977149658999, + -0.32061260803743835135, -0.36956011694874674189, + 0.11077198489614008547e+01, -0.10167951277393683096e+01, + -0.16082604865916248771e-01, 0.11436140065929600862e+01, + -0.13237541372987950972e+01, 0.33072882958824645350, + 0.99753105581952816738, -0.14889537147791189753e+01, + 0.68593281997294996977, 0.77081370376631519470, + -0.17162659751331612590e+01, 0.14656930343558223218e+01, + -0.33186127201066667469, -0.72383578141124949035, + 0.95046846196628598236, -0.37770724880670930590, + -0.32668202742123614302, 0.51892836575674228250, + -0.10991130466254120379, -0.45132357210519946644, + 0.66515449190458864059, -0.42743008343010213679, + 0.58703233588383835206e-01, 0.71583395392498569421e-01, + 0.86569490111949351507e-01, -0.23832736458872408325, + 0.80124332863417274675e-01, 0.35973471971536480352, + -0.70016982546879225069, 0.55407807305411915788, + 0.85281281106491538258e-01, -0.76864571924872537867, + 0.93414970858761803285, -0.38086373492213526637, + -0.52165328261073251603, 0.10967369225640672958e+01, + -0.89125497527258945585, 0.57030718469159483175e-01, + 0.74594082595104316269, -0.85588142366971875497, + 0.14216465046715948128, 0.86644165923581795141, + -0.13646959280164521200e+01, 0.88737192505430839695, + 0.31841440167891127411, -0.14509217966101219943e+01, + 0.17365616491148365697e+01, -0.99884090473495379392, + -0.21043004168018333844, 0.10215795480614668911e+01, + -0.89103012786227753228, -0.74271019797243298388, + 0.16824974538150170300e+01, 0.14707709883582056887, + -0.22480698605204962881e+01, 0.33344647535774116776e+01, + -0.19033982244065692502e+01, -0.93268208971741906055, + 0.37567133168684718747e+01, -0.41681857943703093383e+01, + 0.22057511246427172757e+01, 0.12033647687945463467e+01, + -0.32019139346850291616e+01, 0.27496105802275159213e+01, + 0.13414287684542944290, -0.26595097606598692153e+01, + 0.29887506267594128317e+01, -0.14347938045380589922, + -0.34336178883656507388e+01, 0.52395109810704605380e+01, + -0.30723489486573809515e+01, -0.14501201100662872712e+01, + 0.55276605391397319877e+01, -0.56476066435199330229e+01, + 0.20090016959654439788e+01, 0.30802216732922294007e+01, + -0.53143567739872876743e+01, 0.34234113124410869844e+01, + 0.13148155676497335076e+01, -0.44386248181936149848e+01, + 0.35379216344621036150e+01, 0.12562691736766116168e+01, + -0.56789790434680416098e+01, 0.63931783201092793334e+01, + -0.22076458368543780963e+01, -0.33096972239495658918e+01, + 0.63895330905995573190e+01, -0.46410412608929600964e+01, + 0.52965347200476642353, 0.25224382383633083826e+01, + -0.17091230255854197306e+01, -0.11862972936110240951e+01, + 0.31995835203947673442e+01, -0.16388723922080195017e+01, + -0.17591777160970352156e+01, 0.40718710961408550730e+01, + -0.26722711037482684837e+01, -0.53701403558930638216, + 0.24679686856879698986e+01, -0.58534873747573001879, + -0.27639583881809834942e+01, 0.39964605678323024129e+01, + -0.54376216158283685598, -0.46008831226378470447e+01, + 0.69092262615603408094e+01, -0.32691912999449583843e+01, + -0.30944205770645889508e+01, 0.69359534600184060693e+01, + -0.45549377855109325353e+01, -0.99700281766586595911, + 0.44887403569970754091e+01, -0.24030342978974830181e+01, + -0.20241625319793579152e+01, 0.39033734913775086639e+01, + -0.68985690950303091284, -0.35514812684903573903e+01, + 0.42373851789436640658e+01, -0.24084048975013014338, + -0.32045274108350021436e+01, 0.19963987582338116322e+01, + 0.30981912916788489909e+01, -0.54488287646823323485e+01, + 0.16373284542095583038e+01, 0.54595272345664795921e+01, + -0.79966703239385079627e+01, 0.35106193441912534325e+01, + 0.34432998082562580322e+01, -0.50982002323406252486e+01, + 0.10387979754716856196e+01, 0.29068067494584663990e+01, + -0.84881795759295264325, -0.40945981069909631600e+01, + 0.50783323863183271740e+01, 0.58700638665128823668, + -0.58751710771968692626e+01, 0.41313359858349718579e+01, + 0.32183474041444415370e+01, -0.65516229375709347238e+01, + 0.18456593158516776398e+01, 0.50720797306741403077e+01, + -0.48567442109808753870e+01, -0.12616144231968302591e+01, + 0.44429197714279808906e+01, 0.40495192184399009250, + -0.56760085349051303538e+01, 0.31783620751258800929e+01, + 0.45986428413727464815e+01, -0.60138905222034821918e+01, + -0.13954048264575591443e+01, 0.77565117943487020824e+01, + -0.37936058174988072089e+01, -0.38908966576480303878e+01, + 0.40309624826826491173e+01, 0.27818396826120701526e+01, + -0.35888588483542709362e+01, -0.45351446548361735722e+01, + 0.96607142989953018741e+01, -0.25420260265983967152e+01, + -0.63376830081408890294e+01, 0.42842103099010628853e+01, + 0.36818229708076772866e+01, -0.21207755003298762730e+01, + -0.65216675533571129009e+01, 0.64393369022675814861e+01, + 0.43447456374344870511e+01, -0.77381425939751906640e+01, + -0.14587651848538334409e+01, 0.63766191620203596102e+01, + 0.22940755320820267471e+01, -0.71315771553074416289e+01, + -0.20735391806036211904e+01, 0.83040292956322243612e+01, + 0.14246818757789079246e+01, -0.81298264283584948942e+01, + -0.14483379523925927757e+01, 0.80688104452402775735e+01, + 0.22839886148084334039e+01, -0.70554679316153317004e+01, + -0.48703264792837863695e+01, 0.82415038636149855478e+01, + 0.56781220898807864828e+01, -0.69969167729099295272e+01, + -0.59902286245067832837e+01, 0.21937070443064485836e+01, + 0.10820124510084751179e+02, -0.98485077186432279372, + -0.10219835694158527772e+02, -0.25229963792798910660e+01, + 0.59100746476683374553e+01, 0.10585797317717581478e+02, + -0.38677940643436303780e+01, -0.11111241929615935931e+02, + -0.29188337549979275209e+01, 0.58785022000656654839e+01, + 0.13040068469624417347e+02, -0.31064711286941326662, + -0.10424028703146177577e+02, -0.95082420806085412579e+01, + -0.22549491912890728962e+01, 0.13668702836928950717e+02, + 0.11028773535736682732e+02, 0.42413217745539304460e+01, + -0.79569914132500594306e+01, -0.17163732223067682980e+02, + -0.10156911047393643699e+02, -0.42792543073072444315e+01, + 0.10262235379227634624e+02, 0.18202293238504669404e+02, + 0.19504608884435960192e+02, 0.22087842751903956184e+02, + 0.13509611843122357300e+02, 0.12798908447323876558e+02, + 0.66208087817212026849e+01, 0.33277402557352107060e+01, + 0.39563220943523482731e+01, -0.11641722496507322937e+01, + 0.25790325274923109333e+01, -0.12317310866308246453e+01, + 0.61659008329225839518, 0.35449145814145999189, + -0.87695325412148783517, 0.10307005575921854845e+01, + -0.77205893035032413518, 0.27731574365614608535, + 0.23684239651314584196, -0.56505669894398924402, + 0.58022826567385388241, -0.27906593215114272599, + -0.23549420441906748769, 0.78371287804194100790, + -0.11824138325986752740e+01, 0.12936199388273634803e+01, + -0.10754224217552861287e+01, 0.58053385937495849412, + 0.55784691520040223522e-01, -0.66868470158881487819, + 0.11047614879691343148e+01, -0.12713759135564739466e+01, + 0.11495867891947728623e+01, -0.79846762255803760411, + 0.32488900027347139554, 0.14466625291010640209, + -0.50467200284948721123, 0.69047632399046465768, + -0.69336707507732409095, 0.55075593954842827493, + -0.33247546800234822895, 0.11419992642908317892, + 0.41909789983232435817e-01, -0.10495951149747774489, + 0.79099878308801607751e-01, -0.36856147890434032277e+01, + 0.60090902306954703249e+01, -0.35215791091699690796e+01, + -0.30414049946209920083, 0.32944892394573317418e+01, + -0.55478986425866789745e+01, 0.54309649325813005305e+01, + -0.40624637846644722217e+01, 0.98273082670632982971, + 0.17413149283747892948e+01, -0.41524289308473445459e+01, + 0.44346513133660607764e+01, -0.34676532853498214237e+01, + 0.58636217442176608028, 0.22435869347525896345e+01, + -0.50252883113703994411e+01, 0.57800236288550523867e+01, + -0.51580366677463080904e+01, 0.22831517256481301814e+01, + 0.99637606120048416436, -0.46573586822720214329e+01, + 0.65527760817450717568e+01, -0.70658928646867718015e+01, + 0.50353455159779034744e+01, -0.20882102722534914285e+01, + -0.18419968585181545340e+01, 0.45440024509798888630e+01, + -0.62010837630267792164e+01, 0.53801480495717504127e+01, + -0.34326064539329532721e+01, 0.11206465501027772225, + 0.24969709792679180005e+01, -0.43811223219598058876e+01, + 0.43834568997463856377e+01, -0.25573772338940607973e+01, + 0.12555004042445492285e+01, 0.40005878324818473502e+01, + 0.77997243166859830943, 0.11542761370284155831e+02, + 0.12026063671053348614e+02, 0.21964164156013119111e+02, + 0.33999599990727503496e+02, 0.35630499520442761252e+02, + 0.45706215743594690082e+02, 0.33466180731006843985e+02, + 0.18056833056289587347e+02, -0.18573370081115390118e+01, + -0.29565996671991168654e+02, -0.26081943931789979274e+02, + -0.20903418406354386860e+02, 0.81405391318231234976e+01, + 0.26967247629850202628e+02, 0.19243649385189080192e+02, + 0.33657374504143016125e+01, -0.24444386739413168641e+02, + -0.20012393440922100041e+02, 0.24864991930269400022e+01, + 0.20281962156802805453e+02, 0.16994324682963984685e+02, + -0.84722460866027322623e+01, -0.24089354373174504786e+02, + -0.23086627860606165896e+01, 0.13738699046295023365e+02, + 0.17770747399888730200e+02, -0.73650218354183021319e+01, + -0.23584915455391314509e+02, 0.54742165293599418519e+01, + 0.11774919332763255753e+02, 0.12859668118787251245e+02, + -0.16660581041163446514e+02, -0.15069099563465309544e+02, + 0.17058401679419624486e+02, 0.80215307046812238667e+01, + -0.22686462900649715380e+01, -0.18353911102577697534e+02, + 0.38461540986235966955e+01, 0.20505532686727072189e+02, + -0.90213166598866543211e+01, -0.11871664104764905190e+02, + 0.18963675941923241464e+01, 0.13111072541940398395e+02, + 0.17960133245593052909e+01, -0.20350463336453330498e+02, + 0.73645516741175010011e+01, 0.14474452475751846237e+02, + -0.93116254650018479566e+01, -0.72960422176927179905e+01, + 0.16455578633463638916e+01, 0.15190721333119329373e+02, + -0.98001632413915373832e+01, -0.12518608374150074880e+02, + 0.17066911663213858219e+02, 0.80738001683398630259, + -0.10454321185330305966e+02, -0.13279894375822181019e+01, + 0.10640681862366285770e+02, 0.58309015531465335780, + -0.14519228072978650701e+02, 0.75407622703931105335e+01, + 0.11109417183242006999e+02, -0.14184109599450808403e+02, + -0.18495377387397289315e+01, 0.13062622573238039436e+02, + -0.54218767641739189500e+01, -0.60741499725065359883e+01, + 0.26157468096185527706e+01, 0.93607480357822527850e+01, + -0.89172415673267568792e+01, -0.74349781070442411135e+01, + 0.19682756588014818533e+02, -0.12216421213119160072e+02, + -0.53804904333858782906e+01, 0.12242209634670858875e+02, + -0.40527278514252662589e+01, -0.38185135908169884900e+01, + -0.72205409149825516835, 0.99771016818486799593e+01, + -0.84317567704380618210e+01, -0.51075346755070398785e+01, + 0.14946120554256056678e+02, -0.87461355691790743094e+01, + -0.67422060096698368525e+01, 0.13862541063966469679e+02, + -0.54409802323194256246e+01, -0.77246054245986552900e+01, + 0.10820392303563949099e+02, -0.25027511561105915128e+01, + -0.54190163767496501990e+01, 0.36054409350578744409e+01, + 0.35459098464852019106e+01, -0.45684935228162171228e+01, + -0.40644770301145216607e+01, 0.12815420735247693429e+02, + -0.10219101223258149957e+02, -0.34655449025572067079e+01, + 0.15598712916848851862e+02, -0.14533811759295739208e+02, + 0.16707525556906666075e+01, 0.10333816926897497979e+02, + -0.10947797976805242470e+02, 0.17316460017937456151e+01, + 0.66657707970141517606e+01, -0.64340706939572545053e+01, + -0.66138202797320619353e-01, 0.42923038427901740732e+01, + -0.17182596766429603097e+01, -0.35298789839436017779e+01, + 0.38704629963907204449e+01, 0.26153361507175856282e+01, + -0.95733730444758418088e+01, 0.88116751970360596147e+01, + 0.71263930044328016589, -0.11081451601067001889e+02, + 0.12553164332264525882e+02, -0.30182952188759712975e+01, + -0.96978326719408745049e+01, 0.14629731468264331795e+02, + -0.74717489808180266309e+01, -0.58455867932951068866e+01, + 0.14493732679099769811e+02, -0.12123793354586002380e+02, + 0.16742684178072340107e+01, 0.78807779167784364205e+01, + -0.95621327900280128631e+01, 0.36940016884171646971e+01, + 0.34235952484817953057e+01, -0.57142244301373841253e+01, + 0.22804028960371742762e+01, 0.27305795929097889108e+01, + -0.46784584606706509646e+01, 0.25816088411890634191e+01, + 0.59984399294955037529, -0.14725590261143108872e+01, + -0.37026237294245506471, 0.21163478253900676052e+01, + -0.88929956708121005171, -0.30714724519365788069e+01, + 0.62058313618320743998e+01, -0.48775689875559198327e+01, + -0.10186633444542345650e+01, 0.73354641507010169832e+01, + -0.88719389648569109141e+01, 0.37778367583938061713e+01, + 0.44925990513246274460e+01, -0.96458673224061790563e+01, + 0.74941590951910752594e+01, 0.48845146395963773278, + -0.80847247397891557341e+01, 0.90693770956499317748e+01, + -0.21978739763147503439e+01, -0.75922550702139588452e+01, + 0.12750052020751988735e+02, -0.88713949877668323296e+01, + -0.18192259339948460006e+01, 0.11925352033888836800e+02, + -0.14304874998310831202e+02, 0.73646083408354465760e+01, + 0.37240116654566666199e+01, -0.10861693982295351546e+02, + 0.90289569818194976847e+01, 0.49869059746113997278e+01, + -0.15035543248025284413e+02, 0.52419599521739259629e+01, + 0.98023360106442929407e+01, -0.21220302209448195896e+02, + 0.16766170898713063764e+02, -0.87425588966414613523, + -0.18475561938830836084e+02, 0.24656876659454727729e+02, + -0.15419731733686113273e+02, -0.53896849694809878528e+01, + 0.19652803243762445362e+02, -0.19097228661606592937e+02, + 0.15775684626683337264e+01, 0.16188894980027466630e+02, + -0.21735803922510601893e+02, 0.65900752737540742032e+01, + 0.15717756326098427877e+02, -0.29862664711263612105e+02, + 0.20427893526236257316e+02, 0.46332634795597114064e+01, + -0.29504935734111899848e+02, 0.32133798415394771553e+02, + -0.12494546392928514322e+02, -0.16880042417451626591e+02, + 0.30058222007507026774e+02, -0.19084687445973923303e+02, + -0.92336444748088730705e+01, 0.28125192909598883517e+02, + -0.23236517518519502090e+02, -0.50863492442403757110e+01, + 0.31192526483522282632e+02, -0.35586510798159970648e+02, + 0.11404461108603964448e+02, 0.19286557136214970143e+02, + -0.34391818558307136300e+02, 0.20661919575311792130e+02, + 0.50632671494593433081e+01, -0.21458044035370299696e+02, + 0.12260252399551223590e+02, 0.91959359158434370585e+01, + -0.22964648557597090672e+02, 0.12120366872300076366e+02, + 0.10871177158306059241e+02, -0.25944206746365779281e+02, + 0.15694409816124286650e+02, 0.70441971269735175198e+01, + -0.21111139207305942733e+02, 0.89037142847491477227e+01, + 0.14941559948843606165e+02, -0.26679280349144118389e+02, + 0.81385257488712881013e+01, 0.23173814948158835136e+02, + -0.39077235157710290991e+02, 0.19085223957783480131e+02, + 0.17696370794257294534e+02, -0.39500739535035549466e+02, + 0.23723492524587854291e+02, 0.10133084683485396482e+02, + -0.29707093550335624599e+02, 0.13929117139834142236e+02, + 0.15411655741702759315e+02, -0.26928666561119829481e+02, + 0.50856086042124060143e+01, 0.22923089264092176620e+02, + -0.26974800724148497721e+02, -0.15636720564116166066, + 0.24088646355319450976e+02, -0.17355446353835322526e+02, + -0.16084235502948896368e+02, 0.33833080852234097335e+02, + -0.13136333813881284627e+02, -0.29101865451071855517e+02, + 0.44013969808145709806e+02, -0.16462796188448880486e+02, + -0.24865748002275147144e+02, 0.31516554238758587303e+02, + -0.23744726557268069911e+01, -0.24210006178298456803e+02, + 0.10329684104413773937e+02, 0.23328531491506815598e+02, + -0.31787959492109717274e+02, -0.32566647844015488289e+01, + 0.37255776866870029096e+02, -0.27290724747394193628e+02, + -0.18444358455650405659e+02, 0.39314666640898138894e+02, + -0.10121719497018307976e+02, -0.32047651042070249616e+02, + 0.28165480375996231999e+02, 0.12856174386008179411e+02, + -0.33727195633930925567e+02, 0.17348034921451691570e+01, + 0.33849997044738053376e+02, -0.19665520957733374274e+02, + -0.29244385337117311252e+02, 0.38707067971574943499e+02, + 0.73608635788763168151e+01, -0.46675884381646973509e+02, + 0.20856581149820364374e+02, 0.27179737486127663715e+02, + -0.25403108362646513285e+02, -0.21647282656466138917e+02, + 0.29817700886081638600e+02, 0.20731169629926796460e+02, + -0.54275105961993894255e+02, 0.11441358073498516745e+02, + 0.41557744375353891542e+02, -0.24762303386158496465e+02, + -0.28571924506601277471e+02, 0.19012322624096096746e+02, + 0.37644411797294196731e+02, -0.39512510155413366419e+02, + -0.27098770907636886562e+02, 0.47257807136560991523e+02, + 0.11883591112820900193e+02, -0.42533138474096688242e+02, + -0.14326765212057992471e+02, 0.46478761744309686321e+02, + 0.11901537532257092877e+02, -0.52018376938122415254e+02, + -0.95495830105351977579e+01, 0.51816876289004596856e+02, + 0.96053175961192547305e+01, -0.51432553081403192152e+02, + -0.15817502104949619834e+02, 0.47256782416641577527e+02, + 0.28814324004947884816e+02, -0.51141961506820969419e+02, + -0.36272848434007094909e+02, 0.42611014444552665736e+02, + 0.42271678791450824519e+02, -0.18703789916507801649e+02, + -0.65276941235986001288e+02, 0.42931680408775303448e+01, + 0.64799768693763510896e+02, 0.19113534491438542773e+02, + -0.42063772255999857919e+02, -0.63799649634484246974e+02, + 0.22547675449907043088e+02, 0.70743723301121335112e+02, + 0.21494412033614498370e+02, -0.41846353384076785176e+02, + -0.79423727454474118304e+02, -0.27852058582641042728, + 0.66211764186374651331e+02, 0.64168352540289575359e+02, + 0.92221080077378179141e+01, -0.81966838606367701914e+02, + -0.74705318514378717509e+02, -0.25651228797615107879e+02, + 0.52397831854572622490e+02, 0.10605996542221865298e+03, + 0.69674603349369419902e+02, 0.23543617068529663072e+02, + -0.64093358528053101963e+02, -0.11515213121430113574e+03, + -0.12881264378363172796e+03, -0.13589161958136816111e+03, + -0.91794948434211832478e+02, -0.78314039013590104332e+02, + -0.43165414653035647063e+02, -0.23578663293913983523e+02, + -0.20549647038160042456e+02, 0.13796561195249938958e+01, + -0.10547652617912440576e+02, 0.32340232400496136123e+01, + -0.12803133426693364960e+01, -0.29340474667669336206e+01, + 0.48071827597652774244e+01, -0.51494979081907787943e+01, + 0.36438318171996213479e+01, -0.11180555203219546545e+01, + -0.14913224709420187519e+01, 0.32771241202155314554e+01, + -0.36663545535624595395e+01, 0.26162672648379095008e+01, + -0.53779016592333817037, -0.18184279228536910367e+01, + 0.36769388341595963254e+01, -0.44352886214510229834e+01, + 0.38869617949418904246e+01, -0.22121495787639053887e+01, + -0.62254948501407059158e-01, 0.22864311681153326461e+01, + -0.38497702904637773891e+01, 0.43896136891864534491e+01, + -0.38378690252066953725e+01, 0.24426463086982916906e+01, + -0.63729844604185847956, -0.10720105979713359101e+01, + 0.22772683094477255139e+01, -0.27447470399063940150e+01, + 0.24768237522270339923e+01, -0.16635138423972957167e+01, + 0.62348832514315688513, 0.31250387558718151215, + -0.88259410681390049191, 0.96974715246076437225, + -0.61489210995755927414, 0.95119006719348586643e+01, + -0.14774764048431862307e+02, 0.78682047974032558457e+01, + 0.27047548382258566058e+01, -0.10389222402995086370e+02, + 0.16007033257147281091e+02, -0.14645893949612210250e+02, + 0.10076929856365223870e+02, -0.70426414007251392224, + -0.70939569255737762177e+01, 0.13864149818603950237e+02, + -0.14095443217048858386e+02, 0.10845898010773554532e+02, + -0.19547449347156740096e+01, -0.64329897628339747229e+01, + 0.14675350970329553491e+02, -0.16729504858174703230e+02, + 0.14950373444197346373e+02, -0.65564971943196441728e+01, + -0.26411010911819272629e+01, 0.12915228452737704146e+02, + -0.17746521983302312009e+02, 0.18754659524521439806e+02, + -0.12402407432771742180e+02, 0.39441534007223286729e+01, + 0.70741497248582119184e+01, -0.13906934681550081834e+02, + 0.17610184887969559497e+02, -0.13944888593611846517e+02, + 0.75045920567173904914e+01, 0.25113182896907391140e+01, + -0.95832114933556589165e+01, 0.14045739974809809070e+02, + -0.12564076793973191215e+02, 0.57005046350488317586e+01, + -0.11681788170582247943e+01, -0.15295268272131762544e+02, + -0.89771970133699063865, -0.37345088018019815479e+02, + -0.39202055142371762031e+02, -0.68745321504632229903e+02, + -0.11066531634442455356e+03, -0.11228557219076539297e+03, + -0.14750679650654529951e+03, -0.10641348111639321417e+03, + -0.58021279183305743743e+02, 0.60849949243951551026e+01, + 0.94205168975900051009e+02, 0.84437299086203836396e+02, + 0.65283457195463086009e+02, -0.23981886109692215570e+02, + -0.88375074854208079955e+02, -0.60050066224868039910e+02, + -0.11161858889498850189e+02, 0.77086683172316440960e+02, + 0.66823117674343706085e+02, -0.12119518166911072754e+02, + -0.59932305183157581041e+02, -0.59333345978729020942e+02, + 0.31193287998758869151e+02, 0.74621963861944394125e+02, + 0.78068993200306824320e+01, -0.42271005348201931895e+02, + -0.60311392499683115886e+02, 0.28114785229428278512e+02, + 0.70675449334501280418e+02, -0.13289761132891408479e+02, + -0.40667091403136431893e+02, -0.39752312247165711767e+02, + 0.53536609532503042885e+02, 0.46683885759417975692e+02, + -0.52228320062447835426e+02, -0.28251968575443640930e+02, + 0.95611913086002129347e+01, 0.57072087176045506851e+02, + -0.11393761356517295269e+02, -0.65871434861887536272e+02, + 0.28726597132793077805e+02, 0.38234731025113077862e+02, + -0.61523749745744744644e+01, -0.42140018400044283453e+02, + -0.53291590334330827261e+01, 0.64679039515400674532e+02, + -0.23367468546847483424e+02, -0.45991452864170170756e+02, + 0.28790604367103917127e+02, 0.25038989848004476357e+02, + -0.74278180677186469438e+01, -0.46333971444366866876e+02, + 0.29436381174152209894e+02, 0.41209073727486028815e+02, + -0.54674199998059357597e+02, -0.36892191859486613836e+01, + 0.35571205970912572525e+02, 0.15284601059437812332e+01, + -0.31265471953812014050e+02, -0.41141722756333845012e+01, + 0.47687674068473803857e+02, -0.24033356802167677557e+02, + -0.36972363805240256340e+02, 0.47870506885696201493e+02, + 0.29025082389597698374e+01, -0.38885836480927238767e+02, + 0.15190813426112800499e+02, 0.20347249382914462501e+02, + -0.77650158650102865110e+01, -0.32016507177739107703e+02, + 0.31717730206291818718e+02, 0.20073060465110707185e+02, + -0.59406085905710575901e+02, 0.36322540032267284005e+02, + 0.18688144344722065426e+02, -0.39093187317687245752e+02, + 0.11400105542239510115e+02, 0.14945159558883835516e+02, + -0.10176317910961563129e+01, -0.28626179164153565893e+02, + 0.24319562757597491753e+02, 0.17929221333740102295e+02, + -0.48117352306047031618e+02, 0.27049673951440396991e+02, + 0.23445127324093050447e+02, -0.46677591297267433390e+02, + 0.19639596050948778583e+02, 0.23086568049358131560e+02, + -0.33935864245629701941e+02, 0.84140248064117901805e+01, + 0.15935772127569563850e+02, -0.94159763367696829306e+01, + -0.13748000194480828995e+02, 0.16830524183086954082e+02, + 0.11421674893688042118e+02, -0.40346072211406486474e+02, + 0.33089806843370134004e+02, 0.97242205848621168229e+01, + -0.47801531479491274013e+02, 0.43998948780502111333e+02, + -0.28233337761133641131e+01, -0.35242654643520801017e+02, + 0.36600536221045928187e+02, -0.63570982577321935025e+01, + -0.21265896667575535872e+02, 0.21175420522481690710e+02, + -0.84062678553118441727, -0.12414531575149899467e+02, + 0.40975834852594452684e+01, 0.12651783602993226907e+02, + -0.13625551454120561345e+02, -0.72481053160045645356e+01, + 0.29613071257647462176e+02, -0.27241619717870523942e+02, + -0.31657785927448176544e+01, 0.36235118791082200573e+02, + -0.40733670026506935358e+02, 0.98865668651805300726e+01, + 0.31279514833170832588e+02, -0.47632179896000842234e+02, + 0.25332865285741050343e+02, 0.16745392008481527313e+02, + -0.44045278880553730971e+02, 0.36347546283824094360e+02, + -0.31002736841535907253e+01, -0.26967763543104588564e+02, + 0.31582935500314512467e+02, -0.11876107435694075676e+02, + -0.11850308654280103937e+02, 0.20014657131365570564e+02, + -0.96098555943999688367e+01, -0.61729205366970472113e+01, + 0.12521339091301603830e+02, -0.62538190393945551904e+01, + -0.32418165701875349960e+01, 0.52438627265465962424e+01, + 0.14100551797442404389e+01, -0.75830967699357429979e+01, + 0.39835961108463173730e+01, 0.86637093522613017882e+01, + -0.18934188525782584378e+02, 0.15113174982161112325e+02, + 0.32636636624794745920e+01, -0.23055410309743329833e+02, + 0.27742711075266107912e+02, -0.11477820729898910557e+02, + -0.14664491455787102225e+02, 0.30597110805201694461e+02, + -0.23022245866983450213e+02, -0.31945378608625438766e+01, + 0.28005417090247863854e+02, -0.31351900367307219852e+02, + 0.91687881583975432420e+01, 0.22762173246550037931e+02, + -0.40214973944244000847e+02, 0.28968120925798771736e+02, + 0.40410929355889848580e+01, -0.35340228622929252822e+02, + 0.42257293294119158134e+02, -0.19824930117162381293e+02, + -0.15349625970604261482e+02, 0.37378111377237551949e+02, + -0.30309770768583007339e+02, -0.13209593904231253347e+02, + 0.47587874948142086851e+02, -0.26889674286513344015e+02, + -0.14330766684791340637e+02, 0.52097081745853628831e+02, + -0.49739894021827680604e+02, 0.13375898630771265729e+02, + 0.38663925232461735959e+02, -0.61111344043273859938e+02, + 0.43286658483441584622e+02, 0.90145727774386212872e+01, + -0.49400204411255167258e+02, 0.53288945087928489386e+02, + -0.10526497016071134638e+02, -0.38187841852276541488e+02, + 0.59401638671815398141e+02, -0.26830959863915975205e+02, + -0.28995667504400078229e+02, 0.70178661683564087070e+02, + -0.54496241986163582283e+02, -0.23059299445994900779e+01, + 0.63753095663034542895e+02, -0.73973170014952245310e+02, + 0.30368838213753942767e+02, 0.39251954205673840193e+02, + -0.71336630330422892143e+02, 0.45693092421440674400e+02, + 0.23025945522377849528e+02, -0.69581622940990143888e+02, + 0.59243815240425753643e+02, 0.81340728131509560939e+01, + -0.69934728732211638658e+02, 0.79876082226631595518e+02, + -0.21930445169930113281e+02, -0.48551302051506020518e+02, + 0.78729443990811418530e+02, -0.38548938814497105909e+02, + -0.26570004316504856945e+02, 0.62939806974047222354e+02, + -0.32051533986988317793e+02, -0.28044342529782674944e+02, + 0.64245928293541652465e+02, -0.33734309315445337063e+02, + -0.28611380397299491563e+02, 0.68418190926264145446e+02, + -0.39694126242371105207e+02, -0.23219606945785237428e+02, + 0.63091625908733462325e+02, -0.31813305515382211297e+02, + -0.33814049741273656480e+02, 0.71214941642303926983e+02, + -0.30254086909998886057e+02, -0.47281842768844377645e+02, + 0.90527370186850163236e+02, -0.45658206316177803785e+02, + -0.41204885081358050058e+02, 0.91946030426684259851e+02, + -0.50513436940731033076e+02, -0.33043872733117169105e+02, + 0.77806658295288514182e+02, -0.32482014780013436450e+02, + -0.44732178125970968097e+02, 0.72990245698977503253e+02, + -0.13879125635775039882e+02, -0.60232188166710500354e+02, + 0.70257102007200415983e+02, 0.24814464110892839876e+01, + -0.67815612019195583571e+02, 0.52713591457500598381e+02, + 0.34586896667019765061e+02, -0.85176286210925496789e+02, + 0.38874659684738567478e+02, 0.63798674622918404964e+02, + -0.99772565068230775864e+02, 0.31335319348865517952e+02, + 0.68735244618146055018e+02, -0.78331152989821092092e+02, + -0.23502410695621445136e+01, 0.72675458004657798483e+02, + -0.34821750270406738537e+02, -0.56434361767480545780e+02, + 0.83013228515651775297e+02, 0.44450044884361625819e+01, + -0.92266578547043621938e+02, 0.69470441069274130541e+02, + 0.44772892592454923033e+02, -0.96486706548241912174e+02, + 0.22078737807948616734e+02, 0.83398442809385727514e+02, + -0.69575228047092394945e+02, -0.38660990148005758726e+02, + 0.92681483263849855803e+02, -0.81786209551304409615e+01, + -0.86921225082872183521e+02, 0.53559984260121375144e+02, + 0.71314754676421188151e+02, -0.97535501780232849001e+02, + -0.16994164905694770340e+02, 0.11405171481965993507e+03, + -0.45583444952866813082e+02, -0.76617477428769447556e+02, + 0.67416762258884091352e+02, 0.60058599023332071454e+02, + -0.86969341828657661608e+02, -0.39950984059947970195e+02, + 0.12729686476890739755e+03, -0.22055808816222629787e+02, + -0.10718310083300953295e+03, 0.57311109530675658164e+02, + 0.83983758676233634333e+02, -0.59813267859939536208e+02, + -0.88880044368767059382e+02, 0.98661701443202673545e+02, + 0.67741900338155772943e+02, -0.11646982755866018522e+03, + -0.36113910892209354131e+02, 0.11322088647001417883e+03, + 0.35761287626792793048e+02, -0.12080777340856607793e+03, + -0.28307064887909387352e+02, 0.13205218295710167808e+03, + 0.24756272072340195223e+02, -0.13204140853163548286e+03, + -0.26207790106522356410e+02, 0.13267089701509215161e+03, + 0.42343938023293731021e+02, -0.12518791905244343354e+03, + -0.69622943225351235697e+02, 0.12818344791026908069e+03, + 0.93653268291015194791e+02, -0.10613368134092947059e+03, + -0.11532590551763101416e+03, 0.55937722037931223440e+02, + 0.16152345364223333490e+03, -0.86135852028942299086e+01, + -0.16397705287855904999e+03, -0.56228396692451227068e+02, + 0.11740270638794602576e+03, 0.15584880640591839551e+03, + -0.53723203583629818070e+02, -0.18057995062670241282e+03, + -0.61864810767909482081e+02, 0.11729660756419863787e+03, + 0.19475855513113518214e+03, 0.67162836313896328022e+01, + -0.17068065719030076366e+03, -0.17031778690825134959e+03, + -0.14462564711604812828e+02, 0.20076187726111805887e+03, + 0.19945673988514721486e+03, 0.63776549836258418225e+02, + -0.13845502860797975586e+03, -0.26435701091774598126e+03, + -0.18934633677153746589e+03, -0.51956208293666591658e+02, + 0.16072468468834875921e+03, 0.29429109176890591471e+03, + 0.33847657463867483330e+03, 0.33895080550085674531e+03, + 0.24664862274046674884e+03, 0.19373843268079011182e+03, + 0.11361486230341284909e+03, 0.63532935282258087284e+02, + 0.45570026528107263175e+02, 0.57994783611188251982e+01, + 0.18385459918197494034e+02, -0.23842658407196628545e+01, + 0.12847025618000862401e+01, 0.58417101891088387688e+01, + -0.82434164069034352451e+01, 0.85730129067834379697e+01, + -0.58808118262067345938e+01, 0.16264122960442062293e+01, + 0.27680535788883480208e+01, -0.58642527880979828936e+01, + 0.67492317454849333203e+01, -0.53276482132132088054e+01, + 0.22026323123604165666e+01, 0.14847368326547738526e+01, + -0.45459534950022257860e+01, 0.60361700526551897994e+01, + -0.56073424756777177080e+01, 0.34877945285845157741e+01, + -0.43597839862419218715, -0.26045947890585505746e+01, + 0.47385893970518155882e+01, -0.54410523377234856213e+01, + 0.46177415347480552654e+01, -0.26441579073580490089e+01, + 0.15971565395574596757, 0.20950160105310966507e+01, + -0.35408969299893855442e+01, 0.38661650528071977995e+01, + -0.31201717541294460290e+01, 0.16301022240306202171e+01, + 0.89549441000130763912e-01, -0.15211072261677056616e+01, + 0.22659188010863053897e+01, -0.21621997027015051884e+01, + 0.13013555682889450527e+01, -0.10304706670662923784e+02, + 0.15075458307378406531e+02, -0.70367779349417771684e+01, + -0.51224086854878070341e+01, 0.13339732042244317967e+02, + -0.19170476327371801517e+02, 0.16583719295068693356e+02, + -0.10619722852872630625e+02, -0.91637779046925760262, + 0.10046843024688920210e+02, -0.17889132957139061375e+02, + 0.17633756063986389506e+02, -0.13452248352785895591e+02, + 0.25046073194849416410e+01, 0.74582983401677926949e+01, + -0.17271752803042961233e+02, 0.19454701651357012793e+02, + -0.17327377392510790344e+02, 0.73254182847244226906e+01, + 0.31752754806877971916e+01, -0.14892244182949758269e+02, + 0.19794232993520619601e+02, -0.20381414150770794436e+02, + 0.12286527637867450835e+02, -0.23357078270309306056e+01, + -0.10299163144106945111e+02, 0.17260189832623360928e+02, + -0.20386134786256498330e+02, 0.14567509179345419668e+02, + -0.59994037969198847904e+01, -0.63587350803284339307e+01, + 0.14250746894537623888e+02, -0.18481644665265886118e+02, + 0.15108314074938833826e+02, -0.52469577430479859004e+01, + -0.10160634713381830885e+01, 0.21938498166900330943e+02, + -0.38167227940131770447, 0.48544752002251748024e+02, + 0.50794445422202350926e+02, 0.87373374883835097648e+02, + 0.14343802750284254444e+03, 0.14349221399293020340e+03, + 0.18994330816650443694e+03, 0.13712463033817934388e+03, + 0.73885901302009827418e+02, -0.71199925380289270649e+01, + -0.12139458075897076128e+03, -0.10907980409496482821e+03, + -0.82532824107480507791e+02, 0.28695955221192736673e+02, + 0.11604039428081941310e+03, 0.75096985653349094036e+02, + 0.15520036089267467361e+02, -0.98896927987372151847e+02, + -0.87707875349588348968e+02, 0.18751637325018251090e+02, + 0.73006188475518158043e+02, 0.80448186608640654072e+02, + -0.43584663727293765589e+02, -0.93866803646471467459e+02, + -0.10302122960680113906e+02, 0.52725141915736173814e+02, + 0.80713999352199252257e+02, -0.40259446414424154170e+02, + -0.86620524114212230415e+02, 0.13458265871512681500e+02, + 0.54679223034690167538e+02, 0.50240821511254026177e+02, + -0.69476790474041905554e+02, -0.58210545402112288116e+02, + 0.64679767378733913574e+02, 0.38850491436981108961e+02, + -0.14386603679201352080e+02, -0.72053410473356635180e+02, + 0.14154875137783461625e+02, 0.84484322720354086300e+02, + -0.36343372990678226131e+02, -0.49797555230592827513e+02, + 0.82856239305586090182e+01, 0.54203212630663252014e+02, + 0.64414393665324398697e+01, -0.82568354825628645699e+02, + 0.29545473625067753431e+02, 0.59230835771496074926e+02, + -0.36533908773575070938e+02, -0.33305708110840129166e+02, + 0.11118247787118065162e+02, 0.57857159611670169852e+02, + -0.36414613356335806316e+02, -0.53746912944112217758e+02, + 0.70096542278108316282e+02, 0.59644981899749618393e+01, + -0.47826032783833262840e+02, 0.59490143703964826205, + 0.37687574449560173662e+02, 0.71743941891805995681e+01, + -0.62119961877859765309e+02, 0.30357908040984113995e+02, + 0.49394907129424957759e+02, -0.64433912916104489454e+02, + -0.36708130775736685925, 0.46798963808516170104e+02, + -0.17163799119355282130e+02, -0.27209941123907707805e+02, + 0.94547146621397679667e+01, 0.43195252851972803398e+02, + -0.43963266864672895906e+02, -0.22077136337436986224e+02, + 0.72789293524977310312e+02, -0.43934628700202409846e+02, + -0.25475205428976344990e+02, 0.50136127196469104206e+02, + -0.13031313271571843160e+02, -0.22002251098578316402e+02, + 0.46828653359607868012e+01, 0.33488537080890530717e+02, + -0.28641117805560707410e+02, -0.24537420221448023483e+02, + 0.61977035886405289489e+02, -0.33581625352243257510e+02, + -0.32352832704487596516e+02, 0.62737388891080769326e+02, + -0.27935491957805776764e+02, -0.27572815286469243290e+02, + 0.42471983536342065690e+02, -0.10796695838783039179e+02, + -0.19434626254194942163e+02, 0.10226421869686124211e+02, + 0.19967750623741185478e+02, -0.23892704519902807192e+02, + -0.12902509960323637728e+02, 0.50859436403758508050e+02, + -0.42447905108078828107e+02, -0.11730204667546495045e+02, + 0.60006939792618688045e+02, -0.54750038818834994458e+02, + 0.17733065480208600739e+01, 0.46888805276675228129e+02, + -0.48142963103265572045e+02, 0.86573198625488174685e+01, + 0.27429610213835633914e+02, -0.27771937943594682707e+02, + 0.18983126313654812289e+01, 0.15054562634825240153e+02, + -0.44346929143243114524e+01, -0.16943435546274347558e+02, + 0.18014189585396916726e+02, 0.89514727860617533395e+01, + -0.37760207601764513186e+02, 0.34676392399559340163e+02, + 0.44947304537611865172e+01, -0.47086406569644530862e+02, + 0.52866399885337045816e+02, -0.13087599985605789854e+02, + -0.40106164068975026282e+02, 0.61514558271774376408e+02, + -0.33301686273504436997e+02, -0.20362995371888946039e+02, + 0.55131835233095458193e+02, -0.45104542768023826227e+02, + 0.24713644607473930215e+01, 0.35811495752552637839e+02, + -0.41159824718176437841e+02, 0.15106075069043329862e+02, + 0.16117056823750647965e+02, -0.27214973943028027747e+02, + 0.14200953832020944745e+02, 0.60269841833780333218e+01, + -0.14449215578593065601e+02, 0.69220692178920257831e+01, + 0.45737278034515371772e+01, -0.63942843400916418162e+01, + -0.28196877873781676094e+01, 0.11188300830121781004e+02, + -0.66904375424935542682e+01, -0.97711156982452109787e+01, + 0.23457592394668719038e+02, -0.19212794593564488821e+02, + -0.37059026660652008012e+01, 0.28547910286647567801e+02, + -0.34211787069287758811e+02, 0.13260177050360047346e+02, + 0.20040383996885353213e+02, -0.39916233431040318180e+02, + 0.29376371067190962805e+02, 0.51656098828291563407e+01, + -0.37770173136549004766e+02, 0.42494517622012082825e+02, + -0.14013483990865781337e+02, -0.27418309527329299158e+02, + 0.50605896334632411993e+02, -0.37151266824517364284e+02, + -0.41963413383249639210e+01, 0.43446148241455496475e+02, + -0.51628308765571745198e+02, 0.22487993955194941265e+02, + 0.22557922098112470621e+02, -0.50244365085103531499e+02, + 0.40161443514939826116e+02, 0.14612675262423639566e+02, + -0.60255541286771169496e+02, 0.41590760488088442060e+02, + 0.60802904850969703432e+01, -0.55193133263119314336e+02, + 0.60435885079122741104e+02, -0.23968922088714421648e+02, + -0.35800924530498370757e+02, 0.66337504110746394304e+02, + -0.51494982607845628308e+02, -0.58876323128414815855e+01, + 0.54348766386547382012e+02, -0.63598818720268496918e+02, + 0.18169765312331552565e+02, 0.38740206165636394076e+02, + -0.68727669759682299855e+02, 0.38525778466149624535e+02, + 0.21774106941053894104e+02, -0.71494123760506894882e+02, + 0.61471481149039426839e+02, -0.50902040145365008428e+01, + -0.60849611185606903518e+02, 0.74995378679876779415e+02, + -0.32268759296577407270e+02, -0.40322321862662597880e+02, + 0.74847800015439759136e+02, -0.49050712542941745653e+02, + -0.23412380647921491317e+02, 0.73281716990039726056e+02, + -0.63945106827164153174e+02, -0.57163991695377243119e+01, + 0.69121153061832828257e+02, -0.78354796811430091452e+02, + 0.17110773310807406489e+02, 0.54244687154165156073e+02, + -0.80483381752360358519e+02, 0.31708258901284626319e+02, + 0.39733362725342885824e+02, -0.75222997924571288308e+02, + 0.34856333288371082801e+02, 0.35782642690354705906e+02, + -0.76172514941770955943e+02, 0.39415869323908687250e+02, + 0.33138071176080998725e+02, -0.78581629452993496443e+02, + 0.44670430204686240927e+02, 0.29224907453430855497e+02, + -0.77000521069062344282e+02, 0.42609845357555698797e+02, + 0.33834605510087719438e+02, -0.81530197326025714233e+02, + 0.41766410064518353806e+02, 0.41851060866622070478e+02, + -0.92012884129639147091e+02, 0.47889239765986346242e+02, + 0.41902274267182981760e+02, -0.93718132335677466926e+02, + 0.47060218084719330989e+02, 0.42571468627565344889e+02, + -0.87354014642353391196e+02, 0.32853512183617354481e+02, + 0.54328691730826385253e+02, -0.84285436778557780713e+02, + 0.15724651894115014628e+02, 0.68710264340202229505e+02, + -0.79668823651391790008e+02, -0.37409066455470685320e+01, + 0.79774892584675939133e+02, -0.65168511095921417109e+02, + -0.32688309544490714131e+02, 0.92907245722694838719e+02, + -0.47208825564548128284e+02, -0.61962801535602018532e+02, + 0.10008899580345716629e+03, -0.26315012096649834206e+02, + -0.79415345084771928441e+02, 0.83629976573939316609e+02, + 0.10731837146345768019e+02, -0.90119765628130281243e+02, + 0.45578810010513166162e+02, 0.60536329511828562033e+02, + -0.94813718389342000137e+02, 0.29668618933613827293, + 0.97525195203996702276e+02, -0.74825708636696532494e+02, + -0.48803646387551708585e+02, 0.10402097470172837745e+03, + -0.21307493981150070539e+02, -0.93944853610897894214e+02, + 0.75825823647078422596e+02, 0.46321746210321933290e+02, + -0.10626665900129728470e+03, 0.10196103888424190131e+02, + 0.98623628220649024456e+02, -0.64066536139473342359e+02, + -0.74339186338768314499e+02, 0.10572999986734542688e+03, + 0.17378368362341639397e+02, -0.12098792113768827505e+03, + 0.42489965328766132302e+02, 0.92556337989530675259e+02, + -0.78495694414347781276e+02, -0.68823450819359109687e+02, + 0.10405720411316829654e+03, 0.33992918918029630504e+02, + -0.13165265512320297603e+03, 0.18644881826522286872e+02, + 0.11912928775066085052e+03, -0.58179821340112582106e+02, + -0.10218186409463227449e+03, 0.75468352946432588624e+02, + 0.92520773033727849111e+02, -0.10781536399527006154e+03, + -0.72830402136051773709e+02, 0.12435575590439141536e+03, + 0.45452249179988754690e+02, -0.12944249611174868164e+03, + -0.38695676999318692424e+02, 0.13538063063963539889e+03, + 0.29380215215115924821e+02, -0.14520711883181729718e+03, + -0.27613971982201270805e+02, 0.14547809853809289393e+03, + 0.30714497015866271568e+02, -0.14810283473650434871e+03, + -0.48193486862581821129e+02, 0.14205078157683240647e+03, + 0.73603366729136467939e+02, -0.13955595162412896570e+03, + -0.10448207502786532075e+03, 0.11513095409569000083e+03, + 0.13360509913760634504e+03, -0.68573727629086079105e+02, + -0.17446677355668415998e+03, 0.80434407177861508842e+01, + 0.17926841909783121309e+03, 0.69220858371970848566e+02, + -0.13895363403700932281e+03, -0.16575846507140479957e+03, + 0.55972244409947784050e+02, 0.19924553332367096914e+03, + 0.74914565570824137808e+02, -0.13930504455122775198e+03, + -0.20763623683371022821e+03, -0.13065468605187128048e+02, + 0.19017449410620122308e+03, 0.19394127752574922852e+03, + 0.77416849331064927497e+01, -0.21397199101213351469e+03, + -0.22840495163120320399e+03, -0.68694318152680565959e+02, + 0.15699901042224763614e+03, 0.28629004764697259589e+03, + 0.21962331689537737134e+03, 0.49705037599456105113e+02, + -0.17436528254706254870e+03, -0.32611368653443685162e+03, + -0.38170993660716152363e+03, -0.36809598319882036321e+03, + -0.28279071609581495750e+03, -0.20895246267743638668e+03, + -0.12838300049098532440e+03, -0.73004712922751465953e+02, + -0.44709045329804901314e+02, -0.13863490439670895782e+02, + -0.13840390972643923817e+02, -0.12566311839846273646e+01, + -0.10745191557641784463e+01, -0.36231381876870445424e+01, + 0.43601248930183613695e+01, -0.45767209867407316892e+01, + 0.30639179498320743278e+01, -0.81037525216275063666, + -0.15324960400131371063e+01, 0.32082579716232411116e+01, + -0.37499572184068408198e+01, 0.30979626824955213138e+01, + -0.15452401378689526457e+01, -0.33821909806409977683, + 0.19557716974851828695e+01, -0.28244002608535385690e+01, + 0.27577666062025620874e+01, -0.18522711778608329514e+01, + 0.47080411112970999010, 0.93251948663358508185, + -0.19225803886422974109e+01, 0.22469955151663838500e+01, + -0.18612272651021877223e+01, 0.95136859358374548101, + 0.17198514552571628200, -0.11509987194143114220e+01, + 0.17133566311958903228e+01, -0.17206704027650157052e+01, + 0.12157208665800653957e+01, -0.37663417803258114613, + -0.52818050562763674272, 0.12349985584618901058e+01, + -0.15450851621154704230e+01, 0.13846840467020877785e+01, + -0.81150580353371160047, 0.39837307671446446911e+01, + -0.54230110998852723014e+01, 0.20839473434260571416e+01, + 0.28802804311662404402e+01, -0.60049399527797140408e+01, + 0.81581316180225318391e+01, -0.67510751305828566871e+01, + 0.40941502956072808317e+01, 0.84534422012083720865, + -0.45953171567614869986e+01, 0.78027544710923981697e+01, + -0.75306833762315026348e+01, 0.57187846023217305813e+01, + -0.10728672277260240531e+01, -0.30154901030948271234e+01, + 0.70600374342575022979e+01, -0.78367382572099772986e+01, + 0.69320309593774931400e+01, -0.27615819963384526936e+01, + -0.14265185985525232759e+01, 0.60885909941605440565e+01, + -0.77783066550463884070e+01, 0.77637777826007763338e+01, + -0.41672497911746644306e+01, 0.55650315968960153978e-01, + 0.50280268707605078049e+01, -0.74750261457040965141e+01, + 0.82779478341175369849e+01, -0.52834411041079754057e+01, + 0.13543127250502078329e+01, 0.39774471599353069529e+01, + -0.70793624279375029218e+01, 0.84433824667695134281e+01, + -0.64318707356039253042e+01, 0.16826997967461359007e+01, + 0.12668481091075636247e+01, -0.10498822723566522797e+02, + 0.68833332171092831420, -0.21774404156626168572e+02, + -0.22659522396102666164e+02, -0.38569847035189937401e+02, + -0.64022646752354447131e+02, -0.63630881300936856348e+02, + -0.84335620647991746068e+02, -0.61243748167302065610e+02, + -0.32405677706531093918e+02, 0.27644168638532495841e+01, + 0.54158880376684500391e+02, 0.48610194469975930076e+02, + 0.36176375769208171107e+02, -0.11923745773565032735e+02, + -0.52560839971771208923e+02, -0.32445255072026220944e+02, + -0.75318376971093954353e+01, 0.44119358505494076894e+02, + 0.39374507069561246908e+02, -0.92314136294921507186e+01, + -0.31202387226361221195e+02, -0.37087745467623662421e+02, + 0.20522485425080507326e+02, 0.40999602249420981082e+02, + 0.47233315009061822565e+01, -0.22970271989028756110e+02, + -0.36830155156948748640e+02, 0.19144268381256182465e+02, + 0.37224252539675994456e+02, -0.49335313555812501107e+01, + -0.24921622438779021280e+02, -0.22221165994809588540e+02, + 0.31265742345578253492e+02, 0.25124190387744945951e+02, + -0.27824424562009429707e+02, -0.18146558296021691348e+02, + 0.70630382880507136534e+01, 0.31678324295356311779e+02, + -0.62779315482981559171e+01, -0.37287773825479533230e+02, + 0.15748043863484220140e+02, 0.22547710173515927323e+02, + -0.39828714922573520418e+01, -0.23962962135493587112e+02, + -0.28115746499190286123e+01, 0.36537928073240330207e+02, + -0.12959045649038770875e+02, -0.26396221003970087082e+02, + 0.16138270773452472184e+02, 0.15099526426856877848e+02, + -0.53830313675062688716e+01, -0.25225608423947477377e+02, + 0.15792553958426010396e+02, 0.24055576153809685280e+02, + -0.30999152397504143863e+02, -0.31441257987711428434e+01, + 0.22033366404545688511e+02, -0.11824808203730929890e+01, + -0.15870645741480423396e+02, -0.38277538825609713768e+01, + 0.27854691286272704076e+02, -0.13253292968240430127e+02, + -0.22658407908335533421e+02, 0.29701683100837634299e+02, + -0.10606330678763351560e+01, -0.19646561169928080659e+02, + 0.67827947393377518992e+01, 0.12461057409163512233e+02, + -0.40016666021346809501e+01, -0.19933995397273712058e+02, + 0.20683066471661309293e+02, 0.84810711223467922792e+01, + -0.31080007044811626571e+02, 0.18562281450981345188e+02, + 0.11804873604747383453e+02, -0.22192665262613054722e+02, + 0.51597763558347713442e+01, 0.10828791312852629858e+02, + -0.33385077714148270189e+01, -0.13654061578514211206e+02, + 0.11759210562111242382e+02, 0.11451026495749738743e+02, + -0.27578229903889820207e+02, 0.14467339361177833368e+02, + 0.15223553916252150486e+02, -0.28933944584776238429e+02, + 0.13472281545645710565e+02, 0.11390592998440355998e+02, + -0.18345853628354245046e+02, 0.46787185313701691314e+01, + 0.83604512077319750318e+01, -0.39499316245583129259e+01, + -0.96471191420468684896e+01, 0.11415141309130502734e+02, + 0.50668448085978399220e+01, -0.22170453369249763398e+02, + 0.18723535427340834758e+02, 0.50759443383764999425e+01, + -0.26309623155212207735e+02, 0.23851222375331836645e+02, + -0.28869359141894995746, -0.21255256989551785551e+02, + 0.21666106609467700395e+02, -0.39404703417510069663e+01, + -0.12256061775399526681e+02, 0.12522673904901123976e+02, + -0.10699044671189259503e+01, -0.64785575576132004016e+01, + 0.18241415401923886108e+01, 0.75928864357197518586e+01, + -0.79875452153237391784e+01, -0.40447632469565579783e+01, + 0.16855911850051963796e+02, -0.15446471916779549005e+02, + -0.20279932874427712974e+01, 0.21032290513982687230e+02, + -0.23653758326235465148e+02, 0.59891060203500137149e+01, + 0.17692764353038846536e+02, -0.27294996204014257302e+02, + 0.14879942776501609458e+02, 0.88426305724889999738e+01, + -0.24188998242840472841e+02, 0.19682073355380609314e+02, + -0.75399423676964505425, -0.16161089658723117424e+02, + 0.18376674773861136458e+02, -0.65974750321415269738e+01, + -0.74744590847893590535e+01, 0.12560352658862333541e+02, + -0.68490014089783359807e+01, -0.21663908100177438065e+01, + 0.60387474982414071079e+01, -0.29039900306948700504e+01, + -0.19457738005707665430e+01, 0.24980860762121537277e+01, + 0.18045591663884463784e+01, -0.56362376694811873179e+01, + 0.36312865954910069632e+01, 0.38162993457487557336e+01, + -0.10133239808468108123e+02, 0.85459139641510368790e+01, + 0.13325808262068217225e+01, -0.12112547618683043638e+02, + 0.14468436113374915308e+02, -0.51255047968372675626e+01, + -0.95640104008521422685e+01, 0.18164277917678820273e+02, + -0.13162241102729643316e+02, -0.25327382312692927613e+01, + 0.17330815323210032375e+02, -0.19642930497005000490e+02, + 0.70631564238896507035e+01, 0.11424256297049176112e+02, + -0.21942218822651756938e+02, 0.16277708001871552312e+02, + 0.17383798833859216426e+01, -0.18841454883369461726e+02, + 0.22219311678789701148e+02, -0.91391406649801023576e+01, + -0.10855693594886863806e+02, 0.22985132025845032899e+02, + -0.18209338146837712458e+02, -0.56971847389975778242e+01, + 0.26308956416995602723e+02, -0.20328046601368363611e+02, + 0.72867006907987241782, 0.21187477795456405971e+02, + -0.25806004386353109226e+02, 0.12491975868910769165e+02, + 0.12040677363171184311e+02, -0.26041262626825702142e+02, + 0.21671142762405949611e+02, 0.11062663209370109385e+01, + -0.21709552862308537868e+02, 0.27043940490705807633e+02, + -0.95353021500466734750e+01, -0.14192024488791121328e+02, + 0.28375590273010878661e+02, -0.18358040399393189546e+02, + -0.50856996858376906090e+01, 0.26180613293886036530e+02, + -0.24533965549881354917e+02, 0.41749086933098675800e+01, + 0.21399101667946268890e+02, -0.27879141658283430161e+02, + 0.12534951435195013758e+02, 0.15094793693656297862e+02, + -0.28687459977221891450e+02, 0.19385335195692459109e+02, + 0.82349811952310254526e+01, -0.27531524467694193703e+02, + 0.24520505023226839114e+02, 0.15688691692721603577e+01, + -0.25085956331764752036e+02, 0.28038472623879005852e+02, + -0.44081476789331661692e+01, -0.22000736359598679570e+02, + 0.30225448496422007594e+02, -0.94302440713390467408e+01, + -0.18829760691969351427e+02, 0.31452479767250125064e+02, + -0.13404212316362226431e+02, -0.16005849727952384143e+02, + 0.32096531336823893810e+02, -0.16341487855648814786e+02, + -0.13847381485812562119e+02, 0.32487015044788130069e+02, + -0.18293058031079315384e+02, -0.12581028776474836306e+02, + 0.32871821267734240735e+02, -0.19294303124805544769e+02, + -0.12366989732113836453e+02, 0.33393919678232933279e+02, + -0.19322553321758544342e+02, -0.13315451997813854135e+02, + 0.34069641017057357146e+02, -0.18269112787580237267e+02, + -0.15484657857550896409e+02, 0.34762263395515532238e+02, + -0.15929778468383060996e+02, -0.18851836932229517174e+02, + 0.35149738855260565629e+02, -0.12023129721333656761e+02, + -0.23249802924741047150e+02, 0.34694400865549020807e+02, + -0.62529383761132883990e+01, -0.28267223105310712583e+02, + 0.32636706203413353933e+02, 0.15631508053618892173e+01, + -0.33124416267838483918e+02, 0.28054579497760393281e+02, + 0.11278896584465206487e+02, -0.36565050783704172943e+02, + 0.20050019763006435625e+02, 0.22121963576465372370e+02, + -0.36850702109162888576e+02, 0.81300553985534698143e+01, + 0.32377765307803244355e+02, -0.32001383539847459758e+02, + -0.71918142239702476104e+01, 0.39229881527716422340e+02, + -0.20454183522346855995e+02, -0.23681493228338624135e+02, + 0.39075496627245449588e+02, -0.22318008179813517700e+01, + -0.36927126960645743736e+02, 0.28714525537766196095e+02, + 0.19598004727292948957e+02, -0.40845789186403600013e+02, + 0.76121807859757746328e+01, 0.38007206069821414474e+02, + -0.30006279136651180295e+02, -0.19337726080005520402e+02, + 0.43196807785487386866e+02, -0.40064541892716363236e+01, + -0.40548493526728698555e+02, 0.27495064028780014098e+02, + 0.27851699762854877918e+02, -0.41270738478236879132e+02, + -0.64751879552126991868e+01, 0.46399379766665404645e+02, + -0.14089891006032148724e+02, -0.39771857125181753645e+02, + 0.32936100635678648985e+02, 0.27852264208658233713e+02, + -0.43732292614698408784e+02, -0.10437150708730166926e+02, + 0.49601474287738142266e+02, -0.55725371879422480603e+01, + -0.47735846645409068856e+02, 0.21635163678939665743e+02, + 0.43548539109081332299e+02, -0.32876145331162675234e+02, + -0.35226141440238990299e+02, 0.42763186800220161388e+02, + 0.28160230933157262001e+02, -0.47981884693460663982e+02, + -0.19955044466768999456e+02, 0.52931954102628445469e+02, + 0.15231983961968241559e+02, -0.54658685823781546276e+02, + -0.10926802711926816514e+02, 0.57444652176735161220e+02, + 0.11201073970495553311e+02, -0.57872848816792618720e+02, + -0.12760366207087967538e+02, 0.59458626526146296953e+02, + 0.19630575409910356655e+02, -0.57744555336193350570e+02, + -0.28260882702948439515e+02, 0.54927650827841702608e+02, + 0.41901758001645958984e+02, -0.45126730760798984932e+02, + -0.55220869941262954228e+02, 0.29506533461097756543e+02, + 0.68181192979003853338e+02, -0.27453859335198913527e+01, + -0.70734546736497392772e+02, -0.29886581416375541664e+02, + 0.58328878591776991414e+02, 0.63944662145735435388e+02, + -0.21259093916223097409e+02, -0.79138913517280926158e+02, + -0.32087206877417159490e+02, 0.58744229560641407772e+02, + 0.80133798541674579496e+02, 0.70704930087884774181e+01, + -0.76202720772393789161e+02, -0.79205182978500559443e+02, + -0.23506898448873564389, 0.82444319776193196958e+02, + 0.93764396156707334740e+02, 0.26595373225027614694e+02, + -0.63691034072482715089e+02, -0.11217289862096015440e+03, + -0.90845894773713425252e+02, -0.17209270041762568582e+02, + 0.68247495674759861117e+02, 0.13033964257159107092e+03, + 0.15430025594008793632e+03, 0.14469608704525612097e+03, + 0.11573958972665244005e+03, 0.81714990544477942080e+02, + 0.51917147381040130938e+02, 0.30049338393269799496e+02, + 0.15977577556609400489e+02, 0.78513904647691861172e+01, + 0.35815663433983528918e+01, 0.15217720703573420771e+01, + 0.60379648358821980114, 0.22415419562835628420, + 0.77976073041270133057e-01, 0.25445259763996076058e-01, + 0.77949444176182922095e-02, 0.22427711820849436514e-02, + 0.60620131783036511341e-03, 0.15392209167180170870e-03, + 0.36705680669841300235e-04, 0.82170685163160044837e-05, + 0.17256894323665637191e-05, 0.33969381247401081140e-06, + 0.62605415592287848294e-07, 0.10788289113957527915e-07, + 0.17354647710318162789e-08, 0.26012724284849101639e-09, + 0.36250237415628775281e-10, 0.46847311084324966635e-11, + 0.55978763699268486967e-12, 0.61636059322864700313e-13, + 0.62284575359589699751e-14, 0.57494100943654835372e-15, + 0.48212552092584731622e-16, 0.36486279488194696296e-17, + 0.24722023251965085146e-18, 0.14852761154963399648e-19, + 0.78170957052080021464e-21, 0.35489009222886608166e-22, + 0.13618398842011690728e-23, 0.42956615708871798645e-25, + 0.10695332885935199808e-26, 0.19710707329331085300e-28, + 0.23906097606190215810e-30, 0.14314561635110096207e-32, + 0.58057707960313172796e-02, -0.68406223181650075565e-02, + -0.21534509133839438953e-02, 0.90958446933852264704e-02, + -0.71092807642582625180e-02, -0.28857007526301498750e-03, + 0.73259284053281770524e-02, -0.58298307774764454581e-02, + -0.28443404545128421826e-02, 0.14345655166527769564e-01, + -0.20125460620614467333e-01, 0.19561967310463408004e-01, + -0.14572674069922820009e-01, 0.12007453878351479620e-01, + -0.12049183572032114153e-01, 0.13403656734603412726e-01, + -0.10388603646555165036e-01, 0.40501627289130934587e-02, + 0.34090739550903734201e-02, -0.60179185418350704395e-02, + 0.51903665237073882965e-02, -0.36652436404966673086e-02, + 0.72117460815780392441e-02, -0.12859709105966917950e-01, + 0.15468086943590036650e-01, -0.77014055482805040403e-02, + -0.64963715302415606448e-02, 0.18353300400071066029e-01, + -0.16306604857467179442e-01, 0.24255189415374046706e-02, + 0.12578560902759064466e-01, -0.12865179479034972304e-01, + -0.26526435916708291859e-02, 0.22641045112102915760e-01, + -0.27284893183549482204e-01, 0.11387331130858812170e-01, + 0.14654120532027591767e-01, -0.28129790736513265309e-01, + 0.19492684862170209931e-01, 0.34428554693453727702e-02, + -0.17343575853666928777e-01, 0.99286962721976679269e-02, + 0.13621371460628270075e-01, -0.31027936957604734108e-01, + 0.29267768323484984888e-01, -0.11352896407728718317e-01, + -0.34991100480229473182e-02, 0.50392937216673060197e-02, + 0.32982572867414298307e-02, -0.57876790596483578683e-02, + -0.16089089182529671927e-02, 0.10796021036732973697e-01, + -0.70777660795348648973e-02, -0.71677895975260589451e-02, + 0.17490342787094305399e-01, -0.87537080178505203426e-02, + -0.10902505358773413591e-01, 0.21021086915148937124e-01, + -0.63232999781691187277e-02, -0.19674410390853182967e-01, + 0.31922734424001668330e-01, -0.16120780029726895777e-01, + -0.10156403357039489599e-01, 0.21127675625048986802e-01, + -0.65660071169845917252e-02, -0.13457232425355054525e-01, + 0.18430620253456979352e-01, -0.74103442546891691925e-02, + 0.22177485318496089131e-02, -0.12144454985922476312e-01, + 0.23697730286712223591e-01, -0.13070592667594627817e-01, + -0.15784464816598113568e-01, 0.35901777511941755650e-01, + -0.24957052142801514072e-01, -0.74166010607114405285e-03, + 0.95761338961078360660e-02, 0.97135747833988796140e-02, + -0.28995506395438339076e-01, 0.22433781797123252683e-01, + 0.33105852561686540010e-02, -0.14990777014321112273e-01, + 0.43594721197489933601e-02, 0.45162432766089307193e-02, + 0.11899556557481748634e-01, -0.33631791900695692799e-01, + 0.26377064141525265878e-01, 0.11658040520288969616e-01, + -0.37813560808181469197e-01, 0.26788467877102591780e-01, + -0.14732398992815731384e-02, 0.15435912205798354036e-02, + -0.19139695995488020114e-01, 0.17113619913544413781e-01, + 0.12119907052652416357e-01, -0.25457739643897959320e-01, + 0.48586562064306974482e-03, 0.28230320705210219800e-01, + -0.16495395280454201031e-01, -0.14426907822051837291e-01, + 0.15303653503627707641e-01, 0.13162660469001960170e-01, + -0.17976269465653414714e-01, -0.94301926809336883428e-02, + 0.18853837621439540478e-01, 0.13357223997688556436e-01, + -0.32713655752883305516e-01, 0.31515103477108524603e-02, + 0.29422915016745963129e-01, -0.13490293869548914199e-01, + -0.10653357349050896277e-01, -0.88768131350407137453e-02, + 0.35957632375763756705e-01, -0.96833044249532967268e-02, + -0.28320408141704146721e-01, 0.10225064679519280109e-01, + 0.28110371318882266395e-01, -0.12858026525538936852e-01, + -0.14476230019906544816e-01, -0.13148354498122349909e-01, + 0.42526977478160372936e-01, -0.16502205194615178398e-02, + -0.38720295887251399147e-01, 0.12880744351179473917e-01, + 0.10350596838407783405e-03, 0.47115086116128218618e-01, + -0.50215984412000598536e-01, -0.66326261272646042100e-02, + 0.45625287810192151697e-02, 0.38910200708418211935e-01, + -0.68391210386183664063e-02, -0.24371634619671050243e-01, + -0.30919618083182304202e-01, 0.44255010459102607501e-01, + 0.13155345686717983406e-01, 0.12255584869809422327e-01, + -0.49019099383041227214e-01, -0.16047588052021055649e-01, + 0.21105015291626592205e-01, 0.37447968493639849363e-01, + 0.18075670802173562229e-01, -0.33907808983597444163e-01, + -0.37198390361033131790e-01, -0.19564181567734300476e-01, + 0.37330474699638217795e-01, 0.38475358644366491889e-01, + 0.36603883416932436745e-01, -0.21294056429655702084e-01, + -0.46459967878435662336e-01, -0.46653283422753669130e-01, + -0.37490613414215188948e-01, 0.28245167732350289630e-01, + 0.34255114110174345043e-01, 0.81005183507829300882e-01, + 0.67456560691266723162e-01, 0.63678030455770209817e-01, + 0.52318981645496802357e-01, 0.29682535490236455072e-01, + 0.21072111129263725732e-01, 0.16512896493884928611e-01, + -0.29277493083385611704e-02, 0.14120034033960915734e-01, + -0.78934493741726480254e-02, 0.50803796229294808859e-02, + 0.16691128499964774396e-02, -0.56705687424521535392e-02, + 0.62354671906019948704e-02, -0.17503348227712288432e-02, + -0.67810494416345118776e-02, 0.16999005423601984410e-01, + -0.25647067373723457517e-01, 0.29776600434136706042e-01, + -0.27834433073933160380e-01, 0.20214069622947004184e-01, + -0.92229857157302141957e-02, -0.17311036447493518935e-02, + 0.92432571402123551302e-02, -0.11116082577816413859e-01, + 0.70446640261085874749e-02, 0.12682505322484584776e-02, + -0.10781781524768751720e-01, 0.18153563558280495782e-01, + -0.20937669727202588843e-01, 0.18362885377012017757e-01, + -0.11573328149618455560e-01, 0.31158070752933943008e-02, + 0.39961210305573596421e-02, -0.74253657192341910448e-02, + 0.63303569033073964212e-02, -0.16796518137103155950e-02, + -0.41507979151425532238e-02, 0.82536870174285230373e-02, + -0.83119829306628201238e-02, 0.34819051472186825398e-02, + 0.52086927646047024784e-02, -0.15160548172491346980e-01, + 0.23046707696156250311e-01, -0.25960974857740605481e-01, + 0.22431180931045610616e-01, -0.12978855640426610260e-01, + 0.29008317431839764078e-01, -0.47800258913253325377e-01, + 0.26966321883046640712e-01, -0.21633038102122449653e-01, + 0.14713530282815773242e-01, -0.27442046058758818444e-01, + 0.35543275832977026807e-01, -0.53515780010486450891e-01, + 0.53604462100495478549e-01, -0.51736940020522224903e-01, + 0.26250261569520299404e-01, -0.16628338323037487705e-02, + -0.35862200458928426838e-01, 0.57815102303094334513e-01, + -0.79449554230306404512e-01, 0.78460594009658185533e-01, + -0.78454872829645638799e-01, 0.64048936212499310572e-01, + -0.61325362167777813793e-01, 0.51851551083855175472e-01, + -0.54556568752584029547e-01, 0.43199332585606591006e-01, + -0.32283839712336892536e-01, -0.26289930038423049881e-02, + 0.38795947139793715563e-01, -0.88770748396844498251e-01, + 0.11917818968318011352, -0.13825339779137110763, + 0.11764716934136652815, -0.79385737102160805478e-01, + 0.13341799255940168037e-01, 0.42561731789753476374e-01, + -0.91254629470965048510e-01, 0.10037223569342973439, + -0.88587102573754933355e-01, 0.48050777979515062188e-01, + -0.99614337145803658058e-02, -0.82867882546120274351e-02, + 0.23067403695719086720e-01, 0.55792438410093958545e-01, + 0.84510636455474782980e-02, 0.23616512336435355190, + 0.14699765775876927343, 0.45782577670278751247, + 0.59463555170223714175, 0.66377508494024251018, + 0.10423479383464735459e+01, 0.64139262033565258569, + 0.74346114294368925712, 0.90646127213549726465e-01, + -0.36623944868344998627, -0.47156336244317015316, + -0.78584723929802924314, 0.17323904524105038227e-01, + 0.20685129791918094311, 0.57489570928402344840, + 0.46069289742851232683, -0.34606958741682669611, + -0.31867035129384435610, -0.48927606099025816588, + 0.20544237153656438877, 0.53108432740315281162, + 0.15055938537162255608, -0.15741279835182739322, + -0.50557155720035640289, -0.76398036253973969356e-01, + 0.46816497191218664486, 0.20722431131248661429, + -0.13094337914591899774, -0.40794434348143909785, + -0.90996380686993005860e-01, 0.51949529873100985800, + 0.50734834847780574396e-01, -0.22423635286065762839, + -0.28281018905866478486, 0.96236973783064297394e-01, + 0.51266820261641399270, -0.28941994499835982380, + -0.19282606220331877100, -0.97419628729948484769e-01, + 0.42333224864822749378, -0.55692312773207280213e-02, + -0.30635114469535079662, -0.10708368647664777418, + 0.35719548514066484790, 0.90465223121366553083e-01, + -0.39069852255383191730, 0.65740970131644829721e-01, + 0.11346206420970021689, 0.26322974928903564162, + -0.44442611262013820284, -0.13845201702622596945e-01, + 0.41015091830675853846, -0.19881589951092781821, + -0.90619233493001924429e-01, -0.90177595126735579645e-01, + 0.32216479526764807417, -0.46046686874603934281e-01, + -0.39524651368873059409, 0.33309678308045509443, + 0.10067248088882549406, -0.23217810476963418598, + -0.43806772804689600442e-01, 0.17139920838865577157, + 0.80424218823874557560e-01, -0.25139253119045595897, + -0.15055695848883650020e-01, 0.36488091392070465258, + -0.28557550749831506209, -0.10620735532554911873, + 0.25840422043678851205, -0.13125514205839943632e-01, + -0.21072823300295118187, 0.87453795895681654682e-01, + 0.14551519384407893276, -0.95908267771915522992e-01, + -0.17159301188831083129, 0.23041440403228702349, + 0.69016667851658913824e-01, -0.36633226169659499627, + 0.27868521736654050525, 0.86554258582522192178e-01, + -0.29533015593267153420, 0.15884273793991504631, + 0.63414624674998684717e-01, -0.63500700955667510605e-01, + -0.10282457131189547128, 0.13280240097949636002, + 0.70756774762128549217e-01, -0.24724559817204652679, + 0.11901158846965259608, 0.22858280650522611044, + -0.42948906831986688459, 0.26906517265756374480, + 0.67868439231328528405e-01, -0.22875991644749743559, + 0.98763978136487115544e-01, 0.98869290232347639691e-01, + -0.99817547351785232412e-01, -0.94666609949106625410e-01, + 0.25256118302133712117, -0.21495797636643607098, + 0.78717319754156536704e-01, -0.53560706977923089323e-01, + 0.18244007954749805189, -0.27672857420508678583, + 0.14022909549863263323, 0.17889097400130299365, + -0.40969579008702217138, 0.33313855447376056196, + -0.15483002541630333515e-01, -0.25449469378850625434, + 0.25022110889618542906, -0.20025046027203077803e-01, + -0.18499888515711959691, 0.17137513140440910342, + 0.16798052734858480439e-01, -0.16984176040466422708, + 0.13439526493763959136, 0.46016947956369833039e-01, + -0.20244886881452001104, 0.22185382392993457934, + -0.14554259646865780331, 0.92876901672266004573e-01, + -0.11458705460811309529, 0.13756544310150314869, + -0.59538906148827466791e-01, -0.11846975623885290518, + 0.26747083098157142800, -0.25041074994081169436, + 0.64906053349603282099e-01, 0.13601399196187999308, + -0.17765083772276663021, 0.26494643600941596845e-01, + 0.17096076030820295255, -0.21810109487480203172, + 0.49182759591195293614e-01, 0.20122336614096195118, + -0.30884341266199366594, 0.15367384899868968828, + 0.16967420227556442858, -0.42392469053588288652, + 0.42105514733363119673, -0.17432031581318002678, + -0.11708954848654160030, 0.23309688628528327237, + -0.11018878725157561782, -0.11499034710870147113, + 0.22555633728998544796, -0.10665769422395239563, + -0.16038445093429004595, 0.36448759948292069888, + -0.33572109532323390901, 0.81300601646372525066e-01, + 0.21938405360847734737, -0.35464256574354552365, + 0.24242345509680171545, 0.11480736566550001423e-01, + -0.20208202792796153835, 0.18794375779055216835, + -0.42454016490727053412, 0.31667474348554081054, + 0.32586334309833864253, -0.61351680364760841080, + 0.16777814694036791154, 0.53533512600212129762, + -0.99590898957725870755, 0.68353284396012725654, + 0.79075074755753996247e-01, -0.83130431570037610634, + 0.94315808672741852092, -0.57447092181206360628, + 0.65171632254594352718e-01, -0.17814792631133342937e-01, + 0.31100882370527649368, -0.65003038077053321153, + 0.45666945900144140236, 0.12541687668736584138, + -0.75643635742310788572, 0.80365992778641159866, + -0.39034235900957470200, -0.11062686387577691516, + 0.23506636218087583606e-01, 0.50771435415510524081, + -0.10048720776555100098e+01, 0.68277227496736336843, + 0.30112364856712314776, -0.12819482883046107169e+01, + 0.12186393597177420656e+01, -0.14003270034115145037, + -0.11678570631233242683e+01, 0.13694740591360106130e+01, + -0.25643087162081368291, -0.13711994443163280089e+01, + 0.19266755881966977082e+01, -0.92617254185313657722, + -0.90470268897299488398, 0.18091975372071846806e+01, + -0.10503097820733351409e+01, -0.77495540715050081904, + 0.18398410070325157406e+01, -0.12314992808908471478e+01, + -0.59357160864015179325, 0.18491486795382545694e+01, + -0.15797681244667503009e+01, 0.13552387390048423188, + 0.87358036962523089031, -0.69525787397770832943, + -0.23822925508644918202, 0.50882663286326967889, + 0.21453492500166237988, -0.11527622769345715614e+01, + 0.94252867191791978030, 0.29178234231777333552, + -0.13182933903937910092e+01, 0.76584289563229657194, + 0.79513359976623698699, -0.17060170218705410505e+01, + 0.65048338409939543414, 0.13364265332824700749e+01, + -0.22594064859118065947e+01, 0.96468108554254228260, + 0.11102292414053533953e+01, -0.19040960274971074906e+01, + 0.66083250158832040899, 0.89211913413867649503, + -0.10835841298827615375e+01, -0.48753513015825242216e-01, + 0.54799360372045891054, 0.42841795414050420909, + -0.17187209698281440406e+01, 0.12171492579012752611e+01, + 0.86972790798561971926, -0.23641839819841390380e+01, + 0.14016395010496691675e+01, 0.70258053612438420288, + -0.13730290648331018311e+01, -0.28446116251620723325, + 0.19100562468545740913e+01, -0.13872780593138265282e+01, + -0.66320125183335754127, 0.14238504098660533792e+01, + -0.24369960337173390830, -0.76068461345834581522, + -0.49624236726268894371, 0.24017175525158180882e+01, + -0.20631706680726549230e+01, -0.76016251011579516472, + 0.26132417159228173986e+01, -0.14846129543839250431e+01, + -0.65421077563474583361, 0.50003935251184461475, + 0.11968144412551600109e+01, -0.12144855709767650165e+01, + -0.11525604104444842068e+01, 0.22897603460726454472e+01, + -0.26727054013119488918, -0.20822365645324358852e+01, + 0.10976907560034461220e+01, 0.14268183316470093303e+01, + -0.13946545143005288914e+01, -0.10768074042208894969e+01, + 0.14906648551535546243e+01, 0.87502654761080933543, + -0.17610099409733535047e+01, -0.88840300226563873043, + 0.25541741747776338656e+01, -0.22561700899014583421, + -0.22762787411362386258e+01, 0.69634069663964803798, + 0.15009808608988015610e+01, 0.90856534998967661276e-01, + -0.24353023981303074663e+01, 0.36408857792555487931, + 0.26997063763363269295e+01, -0.11189651201447730067e+01, + -0.20792050082905713104e+01, 0.73045347302873597783, + 0.16032379229435524959e+01, 0.78669977772890464784, + -0.34754681430179981128e+01, 0.40088297794085231418, + 0.25605717039189674900e+01, 0.11244418334896142883e-01, + -0.13841164426319143566e+01, -0.24697199606331823318e+01, + 0.27789462321319136073e+01, 0.18444838142247523827e+01, + -0.14990584369776465135e+01, -0.22715959780335834850e+01, + -0.39178954016402256499, 0.30585957524220930281e+01, + 0.15138820935745791463e+01, -0.25975908076052101059e+01, + -0.21790573941442663575e+01, -0.98167504706953206961e-01, + 0.34036881256850430866e+01, 0.18145044603920401638e+01, + -0.20101254904222272124e+01, -0.30883272549061846490e+01, + -0.14513953571791218256e+01, 0.26971277348630113835e+01, + 0.33420881043112515840e+01, 0.13631729012800157808e+01, + -0.28015328813770961069e+01, -0.35890004611630765829e+01, + -0.27554617411039599162e+01, 0.15861709453932928415e+01, + 0.39146146725514414655e+01, 0.41374052232263043294e+01, + 0.27126885041779322805e+01, -0.17850028421471217932e+01, + -0.35145160732876519205e+01, -0.62218661930903484958e+01, + -0.61229154228511859515e+01, -0.50358267384756505436e+01, + -0.46030808914306318158e+01, -0.23159230475891039447e+01, + -0.19934410995772675612e+01, -0.10711920645466976865e+01, + -0.16070949342754251021, -0.73605953231195353492, + 0.23803798051320176898, -0.81716548058016577616e-01, + -0.39571956101206262613, 0.69192159916979345535, + -0.79859092325509095645, 0.59703988526183926488, + -0.14582759996031938177, -0.42107416909650419168, + 0.91206784277849073383, -0.11522224670507166255e+01, + 0.10480013744512810536e+01, -0.62011719580790114481, + 0.25670469219679008070e-02, 0.60607951638771129232, + -0.10074312596635248696e+01, 0.10752455500906923369e+01, + -0.79519469224474315094, 0.27171393062392851236, + 0.31296599855470086382, -0.76050879949550997949, + 0.92844133141725504466, -0.77577681814145571515, + 0.37702637273489686409, 0.10986193804685130682, + -0.50016195412578645652, 0.65200368776266426352, + -0.51562314339990444889, 0.15262896734340364313, + 0.28870521735072351976, -0.62634767224784171358, + 0.71289934838090940339, -0.48937811538635883624, + 0.10352310488148922310e-01, 0.57330405583653187840, + -0.10641853860012693289e+01, 0.12870019685073776916e+01, + -0.11492729667826364626e+01, 0.67536418208884119174, + -0.11388128019710529182, -0.36985653844741139817, + 0.10771508877007252014e+01, -0.12072626480497796742e+01, + 0.11576010535878364927e+01, -0.48672024989082457447, + -0.13318497678915913740, 0.93885250742584136496, + -0.12024464814367636922e+01, 0.12800687305061548837e+01, + -0.69958226975462212138, 0.11665079213168105809, + 0.70909013506087914536, -0.10472327689846490095e+01, + 0.12503468024347195175e+01, -0.84492010336712919383, + 0.48374480470365721629, 0.84072941401626313795e-01, + -0.15422937961385788097, 0.12295025867380761364, + 0.42644879979142774618, -0.78527473836152417164, + 0.11668226095627134420e+01, -0.86489234989092322881, + 0.31705821310846404870, 0.81269510136147060653, + -0.17143173906123221339e+01, 0.25045260832644902216e+01, + -0.24121928278151449909e+01, 0.18576107800708023809e+01, + -0.53746439523440814323, -0.67212417520186007458, + 0.18097440941578690765e+01, -0.20530150300206360114e+01, + 0.17764664250185093763e+01, -0.75109974897818243544, + -0.29241675698186841981, 0.91160396001192633975, + -0.14149095414145373972e+01, -0.37187930564195054162, + -0.10190405632625185728e+01, -0.49635806865377540831e+01, + -0.35721165869016617833e+01, -0.10987850380783408255e+02, + -0.13179391750616593626e+02, -0.16417137462880063481e+02, + -0.23370938591156907194e+02, -0.15716247598072822456e+02, + -0.16963469113937840405e+02, -0.20576603983676182708e+01, + 0.80896636249690985210e+01, 0.11715990789409671535e+02, + 0.17576220198944177753e+02, 0.18743397241320430835, + -0.50750131012612076375e+01, -0.13593608907014223419e+02, + -0.10157304981019116497e+02, 0.71815279122342676743e+01, + 0.84628999155561679402e+01, 0.10439575222122678966e+02, + -0.40156969248988154675e+01, -0.12883603486662549287e+02, + -0.33153420836856786202e+01, 0.37142290329732587928e+01, + 0.11613678693809086795e+02, 0.20089176288335504061e+01, + -0.11117268803066480132e+02, -0.47049167776793430207e+01, + 0.29798729440427398352e+01, 0.95755684332687600602e+01, + 0.20542470089945576994e+01, -0.12035491648266738451e+02, + -0.12424998693435445052e+01, 0.51756584676358503572e+01, + 0.68904753938653184875e+01, -0.28856576214105573719e+01, + -0.10897588105393255731e+02, 0.52638425470840672915e+01, + 0.63267573388413813618e+01, 0.28180743622150816741, + -0.79519872004956049238e+01, -0.14833105674019217979e+01, + 0.82406499341699781525e+01, 0.20576718086705545474e+01, + -0.85637883391457219062e+01, -0.13040978892243224596e+01, + 0.79220653607320219436e+01, -0.19407645818037613794, + -0.38842919148379420058e+01, -0.52085574639809379960e+01, + 0.98602133163959884143e+01, 0.39119822322594277608, + -0.92699276873028750856e+01, 0.41138904574604229225e+01, + 0.26948182697746885239e+01, 0.16283679539276278980e+01, + -0.72567920424899288179e+01, 0.10775592935558311325e+01, + 0.89761623280155706794e+01, -0.73506971788333927975e+01, + -0.28524997824388198531e+01, 0.59187736322587927162e+01, + 0.57845719911270254698, -0.36221473893945121958e+01, + -0.22181844407792157270e+01, 0.62329918317108043979e+01, + -0.10489617885969830524, -0.79223197103803544294e+01, + 0.59306046822230884530e+01, 0.33146374537927196791e+01, + -0.68892399270171233994e+01, 0.10880696418807809245e+01, + 0.43158368859717430865e+01, -0.16945961207650999114e+01, + -0.34546752626537977626e+01, 0.20349526429073234723e+01, + 0.43970339907414253133e+01, -0.58518494057624987903e+01, + -0.11692316117069863068e+01, 0.82458138855269886847e+01, + -0.64088221248488617121e+01, -0.18790797415107214352e+01, + 0.65357454675228785490e+01, -0.31862583198136045226e+01, + -0.20986900651670405971e+01, 0.21418708801014441079e+01, + 0.17354314968883146619e+01, -0.24375124974229964714e+01, + -0.23277096015563896181e+01, 0.64942910463140188781e+01, + -0.35757594507761605307e+01, -0.44603065604069787042e+01, + 0.91150672335481939257e+01, -0.54235580287003752886e+01, + -0.22629628479693164600e+01, 0.57026091108423120346e+01, + -0.22244670317784609459e+01, -0.29204186756227974442e+01, + 0.35009050384639865960e+01, 0.53446238561089098873, + -0.38483240947322570058e+01, 0.27955084667135463583e+01, + 0.33411128935564693432, -0.65151085887603377156, + -0.28010356446196742475e+01, 0.55512307561320941574e+01, + -0.29318151240390588619e+01, -0.40183017362579311893e+01, + 0.90466284471146263257e+01, -0.70775003107959060245e+01, + -0.34251136882658939076, 0.65135104033089090692e+01, + -0.62115471546131102443e+01, 0.64199590330733335986, + 0.42654501293515867388e+01, -0.39434391487216911010e+01, + -0.59819903910461713625, 0.44524523683538328456e+01, + -0.39916252733967079180e+01, 0.16182547535373756342, + 0.31738398062592518833e+01, -0.34454862765680909220e+01, + 0.16633672838937707539e+01, -0.62390313509538142256, + 0.14883067961322904438e+01, -0.24954071570361384680e+01, + 0.11853529795993542617e+01, 0.24981931291869869938e+01, + -0.56131581578999538706e+01, 0.50068044818878867375e+01, + -0.63474212399760432390, -0.39533661185526143278e+01, + 0.47320290455004947461e+01, -0.98576980851325746169, + -0.37969006452463305301e+01, 0.49717111152199127133e+01, + -0.97123071542644545673, -0.50652895690564365694e+01, + 0.78749232258902006620e+01, -0.46009553223271373312e+01, + -0.26187069537214204829e+01, 0.83181456539654430316e+01, + -0.81651201085926405909e+01, 0.24987693138823843242e+01, + 0.40365070233252193788e+01, -0.63403171547183889700e+01, + 0.29920223446922542543e+01, 0.27451403827905251909e+01, + -0.57349169573985410153e+01, 0.32365794348918206502e+01, + 0.28883956841216980038e+01, -0.77184679071540758244e+01, + 0.72609619515869425754e+01, -0.16303887362906899217e+01, + -0.50557420958711629666e+01, 0.79277034495605374076e+01, + -0.51277998356142004965e+01, -0.84195016318843929337, + 0.51948834796984186823e+01, -0.46569057235994613109e+01, + 0.44161278791558116197e+01, -0.78556459695106786723e-01, + -0.77625999392420013123e+01, 0.90647802447122707292e+01, + -0.73578432684621175586, -0.90779930769530405854e+01, + 0.13558008270052271271e+02, -0.71715895879345206154e+01, + -0.37011135597457940349e+01, 0.11977960090774677937e+02, + -0.10123430248589322389e+02, 0.23625651792814252872e+01, + 0.50367747808041558599e+01, -0.38213968087008289842e+01, + -0.29630905404880905074e+01, 0.94916194573802741274e+01, + -0.70266851246189245828e+01, -0.19357798616637311717e+01, + 0.11270357329193421592e+02, -0.11144242604682577991e+02, + 0.31518569383077381652e+01, 0.64129115868432045033e+01, + -0.67134980307953142642e+01, -0.13189649417886046834e+01, + 0.10826290087532575157e+02, -0.96632869932741165542e+01, + -0.17453632907567746546e+01, 0.15168017038889525239e+02, + -0.15912747709563875631e+02, 0.28083797807976909056e+01, + 0.14901451887002323815e+02, -0.19420931125661091698e+02, + 0.68319499537428356462e+01, 0.13736245631173636284e+02, + -0.21952449534901617767e+02, 0.10977760981223758208e+02, + 0.10898822083807887751e+02, -0.21661418278338082644e+02, + 0.12052927667740025441e+02, 0.10624943312605893198e+02, + -0.23374348278288689329e+02, 0.15215585106313822550e+02, + 0.75812548375266803902e+01, -0.22091886886578276261e+02, + 0.17017845558303218212e+02, 0.19558182940210355749e+01, + -0.13361214991100952787e+02, 0.82332477888970334590e+01, + 0.62388544165903425665e+01, -0.10167805675779820973e+02, + -0.78898593065213940001, 0.15270812523915445524e+02, + -0.13815541531353373372e+02, -0.26717339659839760557e+01, + 0.17606200759153587398e+02, -0.11734327849160150592e+02, + -0.84299199027349853708e+01, 0.21334936581947076206e+02, + -0.90664187197325567524e+01, -0.15590098862279939240e+02, + 0.27116398878817904006e+02, -0.10570560207293342003e+02, + -0.15316599552924950345e+02, 0.24177607755126537370e+02, + -0.70334232424236473591e+01, -0.12593124111157180778e+02, + 0.12883036480427451309e+02, 0.45289538347822642095e+01, + -0.12312194490882598430e+02, -0.14130204456692947446e+01, + 0.20933953168579083837e+02, -0.17190666172021359159e+02, + -0.82220544297118891564e+01, 0.27053995840155277364e+02, + -0.14469528874403886576e+02, -0.12590602051795375615e+02, + 0.20619337966238138193e+02, 0.18006009313308326547e+01, + -0.23273386020067501789e+02, 0.16183029313990651588e+02, + 0.10508845805010549768e+02, -0.18903745913104941678e+02, + 0.67130692698110583372, 0.15074852305831765165e+02, + 0.53186448489597215605, -0.26634836519161890322e+02, + 0.24582521548007544965e+02, 0.96950159280394085926e+01, + -0.31355126642158985817e+02, 0.14660120089314721881e+02, + 0.13672029552573933486e+02, -0.99311201063604528372e+01, + -0.14954223430250282334e+02, 0.17013344254780765397e+02, + 0.13829995397040251603e+02, -0.29409361167389040048e+02, + 0.34883464548028908503e+01, 0.26911163721992988229e+02, + -0.13514280526425771711e+02, -0.19660129978925990457e+02, + 0.18381630096487032944e+02, 0.15189372755188081499e+02, + -0.20613401011721425249e+02, -0.11787351029000314284e+02, + 0.24833502041090639523e+02, 0.95535708032745834117e+01, + -0.31690132072692449583e+02, 0.16328240066144990017e+01, + 0.29996375407261290036e+02, -0.71373022316477081617e+01, + -0.23278956716834045437e+02, 0.20847117328636959321e+01, + 0.30148324011463191852e+02, -0.39307461606325762027e+01, + -0.35867780133678287768e+02, 0.14709902041595874778e+02, + 0.26902057714031318625e+02, -0.71764660969277667135e+01, + -0.25586351989985004707e+02, -0.55625590033256395728e+01, + 0.42145738474488126712e+02, -0.32732244026950034765e+01, + -0.33304903857438333148e+02, -0.37474519163417108203e+01, + 0.23807460313409958275e+02, 0.27306145779389481731e+02, + -0.32541621091747259698e+02, -0.27190429518305183620e+02, + 0.20698513096282798784e+02, 0.30728274721077124099e+02, + 0.47098830808534923875e+01, -0.41125518294978895995e+02, + -0.18554186539014370538e+02, 0.31931373126265224727e+02, + 0.32131031291684124085e+02, -0.12745493667156027051e+01, + -0.43961943755812995960e+02, -0.24194594844913346776e+02, + 0.25572435260265905299e+02, 0.43184092277780621316e+02, + 0.17041443431089042804e+02, -0.33615540208328674510e+02, + -0.46937091235530694178e+02, -0.15598457668177186264e+02, + 0.34439580618101253151e+02, 0.51019776268263470342e+02, + 0.33717905337625460049e+02, -0.18884022048110345793e+02, + -0.53093497475722600143e+02, -0.55959874628434576493e+02, + -0.33817550338201478155e+02, 0.20515197037617411979e+02, + 0.50156804424411575383e+02, 0.80564280335216764684e+02, + 0.82556254527801030463e+02, 0.67743842402939193903e+02, + 0.59754714493085032245e+02, 0.32709111590959231819e+02, + 0.25329385515865144640e+02, 0.14517318893732294782e+02, + 0.28285100304822217154e+01, 0.87963910922315893259e+01, + -0.26428619490320195418e+01, 0.17331785049883490224e+01, + 0.32420139600777511113e+01, -0.62089595667220223163e+01, + 0.75996781183528572257e+01, -0.60524589645368411794e+01, + 0.21446559650585501622e+01, 0.29339000943237185659e+01, + -0.74126440890668314765e+01, 0.96689616631067050179e+01, + -0.88234925882748740378e+01, 0.50459303677074567318e+01, + 0.44593622092451085104, -0.58414237901247458851e+01, + 0.93299464893463017745e+01, -0.97720186134968400893e+01, + 0.70598975913471928578e+01, -0.21824522972085418360e+01, + -0.31639136398063403277e+01, 0.71462673857095095897e+01, + -0.84686391830010183668e+01, 0.67893140048400031361e+01, + -0.28496992605792574871e+01, -0.18349308573518761101e+01, + 0.55068613800554411242e+01, -0.68240568753102586186e+01, + 0.53199399066093358002e+01, -0.15869382828730760338e+01, + -0.29582553316465132198e+01, 0.65698401936839605497e+01, + -0.78189827441864245827e+01, 0.61004640534808816099e+01, + -0.18759312996876733592e+01, -0.34823867097128533565e+01, + 0.81501040231936627833e+01, -0.10489865072823777226e+02, + 0.96166558238825725624e+01, -0.57185180357767260162e+01, + 0.21713345971470290885, 0.47695593588163367471e+01, + -0.10155289427717107742e+02, 0.10982729751367898530e+02, + -0.98229073197832086350e+01, 0.41125174900072973827e+01, + 0.13367653299792647825e+01, -0.75852573875033506567e+01, + 0.96231364246240698179e+01, -0.97184482768483153592e+01, + 0.50660948528530012069e+01, -0.33940629165216257279, + -0.55472191953989931079e+01, 0.75430186410228881044e+01, + -0.78556783444749624934e+01, 0.36501463029093552670e+01, + 0.39991263777134861135, -0.53705008542154315521e+01, + 0.62500068584377004299e+01, -0.53684841132909237871e+01, + 0.11193930263113703594, 0.45756528168785113309e+01, + -0.95246190781890138766e+01, 0.96041958185098668110e+01, + -0.72108600745706805668e+01, -0.11682215625805989628e-02, + 0.66881878160689609558e+01, -0.13256980451011466826e+02, + 0.14266826774097678410e+02, -0.12003117102213128220e+02, + 0.42383780110322186729e+01, 0.34124704958300791091e+01, + -0.11022867552071025088e+02, 0.12970625077072014619e+02, + -0.11347993605757908497e+02, 0.44560641570085088858e+01, + 0.30033706996724971461e+01, -0.80142725827654466286e+01, + 0.12168198424716756278e+02, -0.11944107107690422609e+01, + 0.97846633980218307158e+01, 0.29630278475108816849e+02, + 0.23212622535123692558e+02, 0.71998375882945410353e+02, + 0.80876865138513366560e+02, 0.10961177970844838114e+03, + 0.14496015450263325874e+03, 0.10420085540522184431e+03, + 0.10676197092117438103e+03, 0.12761961067847796159e+02, + -0.49318380101420132178e+02, -0.78858685656274786879e+02, + -0.10815599364344733146e+03, -0.49838137850268742213e+01, + 0.34885779187199545959e+02, 0.86389354460872425534e+02, + 0.63849936824012424097e+02, -0.43513521661869255297e+02, + -0.57183988068994572984e+02, -0.64012803133200989691e+02, + 0.23736517537621015350e+02, 0.83244895039341258780e+02, + 0.21570520451819863439e+02, -0.24967190132723967366e+02, + -0.72760932740204140146e+02, -0.14357358129334413022e+02, + 0.72283737490521090763e+02, 0.29389869516678057693e+02, + -0.18605272515595032701e+02, -0.61800026599985415032e+02, + -0.12308357839808671486e+02, 0.75727353536554304014e+02, + 0.95821255096887618663e+01, -0.34715076021778941140e+02, + -0.43118264504437220808e+02, 0.18676990546550207739e+02, + 0.67899217629355504755e+02, -0.30092964257071496803e+02, + -0.45567735407672373071e+02, 0.40720383491475944382e+01, + 0.45157083353100212264e+02, 0.14048732624847621864e+02, + -0.55242469228442480755e+02, -0.13258954023938358091e+02, + 0.57525929425469975342e+02, 0.34524990074150823105e+01, + -0.44515339898021956344e+02, -0.51433661526586904600e+01, + 0.30340808304401843287e+02, 0.29608514935373950294e+02, + -0.61601799368107243993e+02, -0.18063866870356151129e+01, + 0.56865991843478226997e+02, -0.22856403628862569377e+02, + -0.20886286485391000411e+02, -0.73847469559829104213e+01, + 0.44509720725113545825e+02, -0.62457201626418257234e+01, + -0.56984385750982774255e+02, 0.45866758198211627473e+02, + 0.19626018467753301167e+02, -0.38982445196470557391e+02, + -0.31723591410097857768e+01, 0.23274861582111029179e+02, + 0.13647652236283386529e+02, -0.39232146005817561729e+02, + 0.28042895464419087537, 0.50506687629711642273e+02, + -0.37041848626838721259e+02, -0.22771291758912280301e+02, + 0.45998696586199194769e+02, -0.88101100712065871789e+01, + -0.26285132837883310231e+02, 0.10363018939996743839e+02, + 0.21562278984373058677e+02, -0.11508004036134183323e+02, + -0.30367815803067809810e+02, 0.39978111617552286816e+02, + 0.50951185790363258121e+01, -0.50907240557070480236e+02, + 0.39890677762450437172e+02, 0.12373316800091538781e+02, + -0.41551650505991212015e+02, 0.19750095269150332200e+02, + 0.14140659678231472185e+02, -0.14269627539001044525e+02, + -0.10774957037714695929e+02, 0.15395231629833924458e+02, + 0.15214617307941292523e+02, -0.42319071708119267328e+02, + 0.24363793687099949636e+02, 0.26183783706696630134e+02, + -0.55159904197043310603e+02, 0.31026197845922204976e+02, + 0.18141101627764228965e+02, -0.39478175254482671619e+02, + 0.15886304283802999748e+02, 0.18866557328981979680e+02, + -0.24636183558207264355e+02, 0.73420112486420674447, + 0.19022585159859922044e+02, -0.11595837085881827377e+02, + -0.82216446172045607454e+01, 0.91527213721942448643e+01, + 0.14730737481550638890e+02, -0.34488951801398428643e+02, + 0.19846575262727469635e+02, 0.22923920876297696481e+02, + -0.54111608653296507043e+02, 0.41370747765495480053e+02, + 0.54235199049621449774e+01, -0.43601219364010447066e+02, + 0.40048092446385709309e+02, -0.28691903375341811788e+01, + -0.29635994652343441658e+02, 0.27972611231305680946e+02, + 0.14909894260287255285e+01, -0.27284359819856295104e+02, + 0.25952204594949719763e+02, -0.32170316001787266913e+01, + -0.16579894140444743300e+02, 0.17317877540495459243e+02, + -0.56897479050654453658e+01, -0.35080816291743560642, + -0.65265605736202978449e+01, 0.14789624290829300080e+02, + -0.83522508269963449123e+01, -0.13522448445513880699e+02, + 0.32316468803847463676e+02, -0.28056236367010193078e+02, + 0.49410901492387010459, 0.27769111903046852063e+02, + -0.31233530964925215301e+02, 0.56557241404593661116e+01, + 0.26282098251976268699e+02, -0.34570860473566511928e+02, + 0.90051020826213026282e+01, 0.30335481654779911764e+02, + -0.49630835921549099510e+02, 0.30325999047508020112e+02, + 0.14233508296589006292e+02, -0.49412785332465332999e+02, + 0.47759673559482614280e+02, -0.11603022000182031448e+02, + -0.29333503431110894866e+02, 0.42555769615728294752e+02, + -0.19248617848938518904e+02, -0.19362060672589450405e+02, + 0.40056914874932850523e+02, -0.25017895292447171585e+02, + -0.14003262607151372166e+02, 0.45517365860253882204e+02, + -0.43833450555975893792e+02, 0.94230139487829465139e+01, + 0.31688684710576549008e+02, -0.48667019125867653884e+02, + 0.29889600454517154304e+02, 0.84773599270423343199e+01, + -0.35791544189189991698e+02, 0.31234667229915949349e+02, + -0.18454043334687376898e+02, -0.12235398353318320375e+02, + 0.48105249693231428409e+02, -0.45729301104027392455e+02, + -0.25236373856784033443e+01, 0.50807141360910080152e+02, + -0.65782629436065619188e+02, 0.26529162409663562983e+02, + 0.28642117139536164672e+02, -0.62305587138804717995e+02, + 0.41504362463900754676e+02, 0.56969248611254288406e+01, + -0.42862471530089926830e+02, 0.29680901274542044632e+02, + 0.13733995635975981386e+02, -0.52249176630996309711e+02, + 0.40009779487327747916e+02, 0.87921466885399421898e+01, + -0.58709823310890811854e+02, 0.57126043667091003897e+02, + -0.11294573578274746950e+02, -0.43907818592405376990e+02, + 0.49848370263347639764e+02, -0.74810449987435587715e+01, + -0.48429948653275125992e+02, 0.53356102511762102836e+02, + -0.32493115354948742812e+01, -0.64534053576725113999e+02, + 0.76151833814665579325e+02, -0.19915519598722582373e+02, + -0.64680523482868679253e+02, 0.92407444887099586595e+02, + -0.40292633319237893375e+02, -0.53637692261001994609e+02, + 0.94981814993346219467e+02, -0.49676498814096582635e+02, + -0.47454891779871225310e+02, 0.95748166102303244429e+02, + -0.52726768861052356385e+02, -0.49159952601918945447e+02, + 0.10462411185700696592e+03, -0.65399101348663336353e+02, + -0.37844200614746164035e+02, 0.98514590014603157897e+02, + -0.67920438632537695867e+02, -0.22742062757951270413e+02, + 0.70315788404038329418e+02, -0.35723101402834778639e+02, + -0.41209623820613884959e+02, 0.61294060197941988122e+02, + -0.38907708157003741967e+01, -0.72935472355817594803e+02, + 0.71018150734608624930e+02, 0.80665539302604827299e+01, + -0.84146894820657180958e+02, 0.61221474559980897823e+02, + 0.33413765285983181741e+02, -0.98328245790830152373e+02, + 0.46069564593431181265e+02, 0.65825090105075744873e+02, + -0.11894805949764541708e+03, 0.43164513671083646784e+02, + 0.73334047243817920503e+02, -0.10831082857502421746e+03, + 0.22935446655746577704e+02, 0.67872078497227064986e+02, + -0.60991928003665236702e+02, -0.31594096411460302676e+02, + 0.74065545834823652172e+02, -0.69325575760937496739e+01, + -0.93708423636910225696e+02, 0.84878686330428379847e+02, + 0.29862574755134886573e+02, -0.11765015450055769008e+03, + 0.59177074648879788299e+02, 0.66570995854353000709e+02, + -0.10191798062017275583e+03, -0.61135063010794992167e+01, + 0.10718782390449865716e+03, -0.71194491924187431664e+02, + -0.56093068994317810905e+02, 0.91301234235741247858e+02, + 0.44201852595005126645e+01, -0.88133674513057954414e+02, + 0.17370305605243242297e+02, 0.11017626829911496600e+03, + -0.10876176706763867230e+03, -0.44235920784462649635e+02, + 0.13796660350867244915e+03, -0.52772600796407296286e+02, + -0.81647293222825993553e+02, 0.56814664418298733040e+02, + 0.71303332685182624573e+02, -0.87891654594422945479e+02, + -0.57861200877067929582e+02, 0.13474640024265073635e+03, + -0.14835209913765323719e+02, -0.12708330097157707428e+03, + 0.61383055939844105353e+02, 0.96218312464822389529e+02, + -0.86883675390821977658e+02, -0.76760699134706513291e+02, + 0.10271572882365046553e+03, 0.55763162383654737653e+02, + -0.12288581258868893542e+03, -0.38536080635039091646e+02, + 0.14407202404893584458e+03, -0.27262817222818340746e+01, + -0.14370799260367098782e+03, 0.28575132078664761792e+02, + 0.12020700250969177603e+03, -0.17241118139101050843e+02, + -0.14227513879109864092e+03, 0.22486255157930273185e+02, + 0.16420706419147157362e+03, -0.62424991720656237248e+02, + -0.13289548434324115078e+03, 0.30678458989334068008e+02, + 0.13412739565739946102e+03, 0.11055797424799356676e+02, + -0.18761783568387755849e+03, 0.71830620299498715298e+01, + 0.15917304332842121539e+03, 0.27565393277752416878e+02, + -0.12926719617027586651e+03, -0.11590217295488848492e+03, + 0.14571147528471854571e+03, 0.13360966394916297872e+03, + -0.95407487613090367518e+02, -0.15553647656335581928e+03, + -0.14670853828519359041e+02, 0.19319360600391411253e+03, + 0.87801531610196605016e+02, -0.14721484505468606585e+03, + -0.16261318373973463736e+03, 0.13722847499726947618e+02, + 0.20656598959020581674e+03, 0.11656241435654551708e+03, + -0.11990400738458410501e+03, -0.21173744077597714863e+03, + -0.77393453013620643333e+02, 0.15779472408400147287e+03, + 0.22827467535887953431e+03, 0.71478462291050817612e+02, + -0.16059566731978259213e+03, -0.25102049004089252549e+03, + -0.15542546666799822219e+03, 0.85914983525262414332e+02, + 0.25579147341206720512e+03, 0.27261337429699545964e+03, + 0.15378980475146406093e+03, -0.87527591111943294777e+02, + -0.25099139718774992502e+03, -0.38020565844011133549e+03, + -0.39730468910257866355e+03, -0.32937871925454555821e+03, + -0.27953073274917960589e+03, -0.16416832186207267341e+03, + -0.11755343123673935679e+03, -0.69038023359882302543e+02, + -0.18331316611230125346e+02, -0.35868565524012659296e+02, + 0.81536953459053798099e+01, -0.85541401482436896231e+01, + -0.94220397761517027391e+01, 0.19031900285673788886e+02, + -0.24495054572785875280e+02, 0.20227485238568874593e+02, + -0.83741916856887979037e+01, -0.74739018082750767746e+01, + 0.21665655859529817207e+02, -0.29033169962070509484e+02, + 0.26739924458141128838e+02, -0.15264750227137092509e+02, + -0.15799041437909067120e+01, 0.18109479013644442347e+02, + -0.28632793545594541484e+02, 0.29601636454789844066e+02, + -0.20735003872577607353e+02, 0.52329243414399053691e+01, + 0.11488780158059423542e+02, -0.23610473859138455310e+02, + 0.27071696208146040163e+02, -0.20882400964772614316e+02, + 0.75337589400702738018e+01, 0.80189417874248984930e+01, + -0.20060596269778560696e+02, 0.24245112825539976598e+02, + -0.19064847136375764336e+02, 0.64497056079263463957e+01, + 0.89957654190327822619e+01, -0.21577766161576406034e+02, + 0.26600889290349787331e+02, -0.21998700211895865664e+02, + 0.91343466369183268228e+01, 0.76896936846919867747e+01, + -0.22682623093694814997e+02, 0.30607874321440345255e+02, + -0.28588282254936487448e+02, 0.17139933336841789213e+02, + -0.67174559376031328650, -0.14456178539727629229e+02, + 0.29791526955056621517e+02, -0.31815052703278702495e+02, + 0.27251448699353520766e+02, -0.10035741994557220380e+02, + -0.64201501696217961879e+01, 0.23974773063902382830e+02, + -0.29067870271252608916e+02, 0.27591333858939975698e+02, + -0.12821482658835774870e+02, -0.21719359588947342310e+01, + 0.19217798288841198229e+02, -0.24493757112422592570e+02, + 0.23552883716162785532e+02, -0.94568144639935098894e+01, + -0.47608970811725539463e+01, 0.20794145242640254878e+02, + -0.24675341703931319870e+02, 0.21931025353556428570e+02, + -0.58462517725091611709e+01, -0.10113601656996962674e+02, + 0.27106793551629248640e+02, -0.30760648937237711209e+02, + 0.26487287696775201340e+02, -0.78635615132774550062e+01, + -0.11040924151425819844e+02, 0.30638538084770942760e+02, + -0.35958365015673088294e+02, 0.32144670290910369204e+02, + -0.12944746936390956193e+02, -0.71086018442550447105e+01, + 0.27820539250700587530e+02, -0.33960325169957293667e+02, + 0.30293304946657027443e+02, -0.11964698400791599298e+02, + -0.88534310015227113411e+01, 0.24024486438764032670e+02, + -0.36821089720284113866e+02, 0.98082311008834590638e+01, + -0.31531010053514243907e+02, -0.71862207823025144648e+02, + -0.60574646571393088834e+02, -0.18826350850384889668e+03, + -0.20120363075419558641e+03, -0.29088088093444270044e+03, + -0.36341980511390602260e+03, -0.27546315337300239889e+03, + -0.27047087726844932831e+03, -0.32565881093829133874e+02, + 0.12252080706532110810e+03, 0.20995900660248349823e+03, + 0.26991063015304172268e+03, 0.20115906523961129437e+02, + -0.94478916805561524939e+02, -0.22071216913087613420e+03, + -0.16230812194761870160e+03, 0.10760825953608100747e+03, + 0.15238769846968230581e+03, 0.15969502676122021967e+03, + -0.57676817334423112982e+02, -0.21528851675352220241e+03, + -0.56214659701520361068e+02, 0.66287855858077733728e+02, + 0.18463593464324213755e+03, 0.38928670260596163644e+02, + -0.18689949084914755417e+03, -0.75495796192942464131e+02, + 0.48264755245420694507e+02, 0.15876480383044409450e+03, + 0.30837840555214768301e+02, -0.19253892862041712419e+03, + -0.28033152682065644257e+02, 0.93182268122753598050e+02, + 0.10759112991563939943e+03, -0.46585133993240035011e+02, + -0.17318473266531628951e+03, 0.72738451376721727115e+02, + 0.12469840302529888731e+03, -0.19702302619340414935e+02, + -0.10686174718666465822e+03, -0.43487597741511443417e+02, + 0.14590760834258119871e+03, 0.34752292757193572470e+02, + -0.15314140349839939859e+03, 0.41599218048991949692e-01, + 0.10352530281507485199e+03, 0.24152348998846619565e+02, + -0.86888187913018043673e+02, -0.70834983574782967253e+02, + 0.15742878954008392611e+03, 0.15072000552872248935e+01, + -0.13997044146911858320e+03, 0.50991190298352982779e+02, + 0.61305661066828491812e+02, 0.13093731388600447829e+02, + -0.11118018706327301004e+03, 0.15658304212273080225e+02, + 0.14454924382033567554e+03, -0.11452476546101263466e+03, + -0.54122183332373310805e+02, 0.10308876099456813336e+03, + 0.68255489199731993466e+01, -0.60180567120445132900e+02, + -0.33428256850768441666e+02, 0.98624979166090128047e+02, + 0.12849852449271639276e+01, -0.13086012765667302915e+03, + 0.94811175664943505126e+02, 0.60429298438804480043e+02, + -0.12114511109140741496e+03, 0.25808053914861165623e+02, + 0.64965819010935504707e+02, -0.25198442016815032929e+02, + -0.55348765513926174719e+02, 0.28011242894433024730e+02, + 0.80754863097370673586e+02, -0.10587318515629702631e+03, + -0.10322841630071916796e+02, 0.12900964839685332208e+03, + -0.10182459872963771375e+03, -0.31495148216800696872e+02, + 0.10587850567028996807e+03, -0.49753560404460131394e+02, + -0.36843924561709563648e+02, 0.36240399185281020777e+02, + 0.29171365501142659582e+02, -0.41716586692268307957e+02, + -0.36976966435032018410e+02, 0.10750490836397064243e+03, + -0.62930559058103511916e+02, -0.64939020339832538298e+02, + 0.13731298407364832315e+03, -0.73595538223378184739e+02, + -0.53510565919446754890e+02, 0.10779586347829763326e+03, + -0.45225640281512440311e+02, -0.47087299388306760761e+02, + 0.65433499476906561654e+02, -0.73520577006343028614e+01, + -0.40855146092674168301e+02, 0.20522802224453005948e+02, + 0.30040861694735887966e+02, -0.30417453950616611280e+02, + -0.34248476439165806084e+02, 0.88938575313623360330e+02, + -0.55017792116880627873e+02, -0.52099683374193304530e+02, + 0.13088350966427915978e+03, -0.98401980445335908598e+02, + -0.20016550125453381526e+02, 0.11509135174231671783e+03, + -0.10231682039414654639e+03, 0.33267705574046217976e+01, + 0.82699340002384332138e+02, -0.79388895581200372931e+02, + 0.29394830250283878748e+01, 0.65590043271781595990e+02, + -0.65397259464707005350e+02, 0.10528507763047828760e+02, + 0.37199923654713330734e+02, -0.36988258948276893534e+02, + 0.65073044607545762474e+01, 0.79661808486191567624e+01, + 0.12217833894602023292e+02, -0.36879364219307717576e+02, + 0.23971309045972283513e+02, 0.29156039145496794873e+02, + -0.75501044838255310765e+02, 0.64108725927143879630e+02, + 0.55958138015212641747e+01, -0.75737473938327255496e+02, + 0.81286463682195133629e+02, -0.12012617329613721751e+02, + -0.73030944591701455693e+02, 0.96096686355649481470e+02, + -0.30580944410753438945e+02, -0.71911514865161663579e+02, + 0.12414733867653660582e+03, -0.77868680841465561571e+02, + -0.33282257638471293149e+02, 0.12094685123124500592e+03, + -0.11509024240350427704e+03, 0.22032166319391766507e+02, + 0.81783117750575584637e+02, -0.11307864743016087061e+03, + 0.49726386785005999513e+02, 0.53026995325814198168e+02, + -0.10907790842703090561e+03, 0.72066379518774638768e+02, + 0.28104588390063710790e+02, -0.11047311633731082736e+03, + 0.10869892395560887621e+03, -0.23470609017129639540e+02, + -0.78940255490385396797e+02, 0.11990391405809951664e+03, + -0.70060893657185133065e+02, -0.28719554949059379112e+02, + 0.97637089109945748078e+02, -0.83440581609258344997e+02, + 0.36443948594001739139e+02, 0.45969761784125132920e+02, + -0.12097422066506983640e+03, 0.10199138126074018373e+03, + 0.15071123074766029859e+02, -0.12033221316790132960e+03, + 0.14123688356219449247e+03, -0.42420490130687660724e+02, + -0.80955556095952573514e+02, 0.14296213060247083604e+03, + -0.78481391589124314123e+02, -0.39012812076710496001e+02, + 0.12072876776283902700e+03, -0.79235189858296763532e+02, + -0.32708146768695570472e+02, 0.12739163302991022420e+03, + -0.99706282180919544089e+02, -0.16103273427709392962e+02, + 0.13364492345551175845e+03, -0.13062703110337773182e+03, + 0.21669732622842975189e+02, 0.11083145496730125501e+03, + -0.13012455703020597753e+03, 0.32461431882737251442e+02, + 0.10445517636777030646e+03, -0.13167510380884721144e+03, + 0.30298107481221816073e+02, 0.12308977887561701436e+03, + -0.16419942471084769409e+03, 0.57290759047101126100e+02, + 0.12168218078233262247e+03, -0.19056881920905243533e+03, + 0.93111211051230100111e+02, 0.99226410957778981015e+02, + -0.18974681706262705916e+03, 0.10361650933405114472e+03, + 0.92808124971967302486e+02, -0.19210510284484965382e+03, + 0.10642761471748372060e+03, 0.99312276680964259867e+02, + -0.20824142244999694640e+03, 0.12450654798651630983e+03, + 0.85359470225725431192e+02, -0.19900530741122051381e+03, + 0.12181865259106187693e+03, 0.72519832825597404735e+02, + -0.16262517519503552421e+03, 0.71534501800764587642e+02, + 0.10629193901153982438e+03, -0.15178851219335402334e+03, + 0.20984308658584989615e+02, 0.15580317152397284985e+03, + -0.16015135515942156985e+03, -0.92183674953411944841e+01, + 0.17957713094537925258e+03, -0.13909610575211692662e+03, + -0.60397631167842753541e+02, 0.20490636314595840872e+03, + -0.10436225602900492504e+03, -0.12457611123182262247e+03, + 0.23523853254266617796e+03, -0.79990144594187540861e+02, + -0.15520585357533079218e+03, 0.21602432863073985914e+03, + -0.26740845522317112426e+02, -0.16271767575815513851e+03, + 0.13401295689226441255e+03, 0.80213796920987064709e+02, + -0.18095599805775586333e+03, 0.36451340143702523733e+02, + 0.18927354308942352645e+03, -0.18405104667707797717e+03, + -0.51228492990699002974e+02, 0.23632377539202457228e+03, + -0.11518385457817457507e+03, -0.14702683869338156342e+03, + 0.21789822535845468110e+03, 0.13064801540738486096e+02, + -0.22447841141399499065e+03, 0.14198732413699522681e+03, + 0.13135557038602141233e+03, -0.19981646050943544424e+03, + -0.18099785295778186622e+02, 0.21079583948367826451e+03, + -0.66306636202142485104e+02, -0.21018836924606463867e+03, + 0.22044892661843968540e+03, 0.89122606995646179939e+02, + -0.27398681569080014242e+03, 0.84191323194499332772e+02, + 0.20006053226181174409e+03, -0.13441301284181713527e+03, + -0.15511542551294229497e+03, 0.20182430587416328649e+03, + 0.10727903450565524679e+03, -0.27655072688191432917e+03, + 0.28281586440335903632e+02, 0.26817649342411942825e+03, + -0.12447487128953376612e+03, -0.21058061904626782734e+03, + 0.18486150537497942992e+03, 0.17067851931416720390e+03, + -0.22695659584223014349e+03, -0.11682163289888424629e+03, + 0.26758434598490299550e+03, 0.72644037749944828875e+02, + -0.29774824535634729727e+03, -0.33629376286542356222, + 0.30554625625022026725e+03, -0.50565664222634417513e+02, + -0.27176503000334821536e+03, 0.47663681031140022526e+02, + 0.30366646844253915560e+03, -0.58407362017277634436e+02, + -0.33349957453700227461e+03, 0.11473564976495903522e+03, + 0.29607135945565903512e+03, -0.63528217576589817384e+02, + -0.30347967064412915761e+03, 0.95122091940656960940, + 0.37780601929315639609e+03, -0.48849457313831257110, + -0.34126163267487356734e+03, -0.73251845329659559525e+02, + 0.29984484999085452728e+03, 0.22559740118023847799e+03, + -0.29765105293711508239e+03, -0.28822542234684499363e+03, + 0.19441683377359154861e+03, 0.35016466020179433372e+03, + 0.14953581592536437483e+02, -0.40410772780480471056e+03, + -0.18840687750366333830e+03, 0.30720929633985281271e+03, + 0.36108235202968018029e+03, -0.41194152784012693758e+02, + -0.43560986515043873624e+03, -0.25069747297341675107e+03, + 0.25315384207309395492e+03, 0.45931640739927843242e+03, + 0.16125567170170643294e+03, -0.33577595655842395672e+03, + -0.48996338984737366218e+03, -0.15187146546867322172e+03, + 0.34042016367299265767e+03, 0.54459291777763212394e+03, + 0.32493435238955765954e+03, -0.17766374987981950540e+03, + -0.54946256493594387393e+03, -0.58989696588159642943e+03, + -0.31734509470932255226e+03, 0.17223316626541569008e+03, + 0.55134332320140913453e+03, 0.80777205580754832681e+03, + 0.84929258794478164418e+03, 0.71609075903047846623e+03, + 0.58456199032719848674e+03, 0.36467212151700272216e+03, + 0.24576660566810113551e+03, 0.14483072738570848514e+03, + 0.50380029946554799380e+02, 0.62483096314090786905e+02, + -0.61425833746691775872e+01, 0.15568335285535951584e+02, + 0.12032004566408202706e+02, -0.23591346128242360436e+02, + 0.31989229569419105559e+02, -0.27052716941595235767e+02, + 0.12473634024716481861e+02, 0.75611665448855420735e+01, + -0.25729348546595037561e+02, 0.35426481918963602880e+02, + -0.32973649065226283028e+02, 0.18917204762117403760e+02, + 0.19300322636542281973e+01, -0.22375473025560530971e+02, + 0.35208046657213451169e+02, -0.35969173341445085157e+02, + 0.24363148836927958740e+02, -0.45429763027282685783e+01, + -0.16541307633074765704e+02, 0.31452686978346509505e+02, + -0.35060160458597522393e+02, 0.26196405305328209323e+02, + -0.81880324124715588852e+01, -0.12483416150661090782e+02, + 0.28373297697622813729e+02, -0.33837256661512903122e+02, + 0.26915941094520135835e+02, -0.10120102691591586819e+02, + -0.10564336676060019471e+02, 0.27712912089172789365e+02, + -0.35168904005729416440e+02, 0.30147001880156860665e+02, + -0.14286529333713556156e+02, -0.69705938322453873113e+01, + 0.26228109297456505544e+02, -0.36759741356743404594e+02, + 0.34825224801769444127e+02, -0.21007621665947482370e+02, + 0.11488229776411791327e+01, 0.17200472681804562569e+02, + -0.35397607973791124891e+02, 0.37446812172583442191e+02, + -0.30968158814499421538e+02, 0.96884989392744422787e+01, + 0.10542192058343035299e+02, -0.31046653043591533105e+02, + 0.36159569987668994884e+02, -0.32535295582592560493e+02, + 0.13162256638094685712e+02, 0.64362169340707708898e+01, + -0.27411005597426811420e+02, 0.33605807835852580467e+02, + -0.31073857624403391497e+02, 0.12389033361710737324e+02, + 0.70400776231938717586e+01, -0.28138919512676856982e+02, + 0.34373791498215204854e+02, -0.31445005652144452313e+02, + 0.11828794804720731193e+02, 0.88768138317136386917e+01, + -0.31153361324789614173e+02, 0.37999803351869402945e+02, + -0.34801744949007101582e+02, 0.14062644495886678087e+02, + 0.82848114611259884299e+01, -0.32177227765952473248e+02, + 0.40126509988743627844e+02, -0.37256952708769176752e+02, + 0.16181635380959772164e+02, 0.68091346920379534069e+01, + -0.31140215407814352488e+02, 0.39159723009766146617e+02, + -0.35621231481499826543e+02, 0.14683143116654019167e+02, + 0.10027066675602233303e+02, -0.29122912035175495760e+02, + 0.45465092417979931838e+02, -0.16785711881648644805e+02, + 0.40831538121916892692e+02, 0.75667443819796801563e+02, + 0.68544641790105615087e+02, 0.21145182757630382753e+03, + 0.21802559187998102175e+03, 0.33082494228022648031e+03, + 0.39575954124754514396e+03, 0.31264932955848672691e+03, + 0.29685764998992459596e+03, 0.36146869730941112664e+02, + -0.13259286049134280461e+03, -0.23935839254033913903e+03, + -0.29290139322654403031e+03, -0.28622940281820575592e+02, + 0.10910952245983051512e+03, 0.24393708246901803705e+03, + 0.17882547178997003812e+03, -0.11601827878527367943e+03, + -0.17374902413969181225e+03, -0.17340428091645281938e+03, + 0.61366889941838273614e+02, 0.24014945048040760867e+03, + 0.63107670777387802730e+02, -0.75295059689264064673e+02, + -0.20338300212939481071e+03, -0.44436173374563288974e+02, + 0.20783123701175571796e+03, 0.84630890017439043049e+02, + -0.54810180793423924683e+02, -0.17557244711314410779e+03, + -0.34053406724005036210e+02, 0.21222717067647164413e+03, + 0.34241292846125865879e+02, -0.10744055463198182565e+03, + -0.11586951338029631131e+03, 0.49428578841090782703e+02, + 0.19243626911364256671e+03, -0.78077945500943982893e+02, + -0.14385914884241893219e+03, 0.28831237613012575594e+02, + 0.11153573187493880425e+03, 0.54163186297359260379e+02, + -0.16524859985594974887e+03, -0.39066102471969600174e+02, + 0.17423123356765805170e+03, -0.70289480210218400202e+01, + -0.10655590762716289532e+03, -0.35097224075157370748e+02, + 0.10289723601869826553e+03, 0.75462876836824250404e+02, + -0.17534420629670862013e+03, 0.21134350363410878693e+01, + 0.14932865663105428666e+03, -0.49522785294757618146e+02, + -0.74670568643342491555e+02, -0.98980962815643689368e+01, + 0.12152962477207792347e+03, -0.18170507987684761275e+02, + -0.15761540429090584325e+03, 0.12299297798733486786e+03, + 0.64464517749509454347e+02, -0.11791785039042089522e+03, + -0.58759525774259282471e+01, 0.66996380150301988010e+02, + 0.35454758093196041102e+02, -0.10703052818426229464e+03, + -0.40382755561557717172e+01, 0.14729080415978933161e+03, + -0.10605345098568314199e+03, -0.67748425965162653029e+02, + 0.13623342404029082786e+03, -0.30809271412897128783e+02, + -0.70202826731640982416e+02, 0.26694598287942625348e+02, + 0.61800178503024227439e+02, -0.30457717783793523125e+02, + -0.91069568307110770888e+02, 0.11913267094320349315e+03, + 0.10332395867455987926e+02, -0.14297878325345320150e+03, + 0.11365638215548381140e+03, 0.33756182954853699130e+02, + -0.11615220479556886346e+03, 0.54111391519683870399e+02, + 0.41211484455189037135e+02, -0.39312709157132488258e+02, + -0.34627612279251344773e+02, 0.49447495568928097498e+02, + 0.37770747633441857261e+02, -0.11677856565244637466e+03, + 0.68682484300867713500e+02, 0.71396610434957196389e+02, + -0.14969869732948376395e+03, 0.77131994179173730686e+02, + 0.65041141407386660944e+02, -0.12521263787063841733e+03, + 0.54361139978121038041e+02, 0.50491660292878506766e+02, + -0.73714282869175988822e+02, 0.11969539834477043172e+02, + 0.39417142804217334628e+02, -0.15776182688244594132e+02, + -0.40091367244742876608e+02, 0.38824642241852110658e+02, + 0.35745200870230519286e+02, -0.99752368288997914192e+02, + 0.65140873358912756430e+02, 0.51573564065622832686e+02, + -0.13808607702111294202e+03, 0.10244653716683220068e+03, + 0.27265695935590873233e+02, -0.13003208478227929845e+03, + 0.11252826465779780563e+03, 0.50106378218416514070, + -0.98248829301344485998e+02, 0.95389778751980827565e+02, + -0.97767044388755017792e+01, -0.68399998667785212092e+02, + 0.71134264069213656967e+02, -0.13435578006912928473e+02, + -0.36710206722902370302e+02, 0.34549753794293209808e+02, + -0.13133167807419057760, -0.15033990164757341290e+02, + -0.95992631507955543668e+01, 0.40022493703099151219e+02, + -0.28908653310274196713e+02, -0.27365232892145957777e+02, + 0.77122880615774818125e+02, -0.64113578263433780080e+02, + -0.12249164404415832763e+02, 0.87872371883174551499e+02, + -0.90987847511273471923e+02, 0.10835912435157862177e+02, + 0.86314337942670860571e+02, -0.11355718291088807348e+03, + 0.41004222388213818817e+02, 0.74033528136659654706e+02, + -0.13439805793052877902e+03, 0.85984594436281298613e+02, + 0.34424182969045226343e+02, -0.12928010162230259539e+03, + 0.12126235730175710614e+03, -0.17693560053134273602e+02, + -0.96474062250999494950e+02, 0.12895146165624890955e+03, + -0.55627236634506026292e+02, -0.61528525014042813268e+02, + 0.12624199966767713477e+03, -0.86525281673804940397e+02, + -0.24675188496044409447e+02, 0.11740835902753326536e+03, + -0.11771641419280850016e+03, 0.25898577589601039506e+02, + 0.84986131440600971132e+02, -0.12815593461465903147e+03, + 0.71454278441600621363e+02, 0.38334015011566883402e+02, + -0.11365113197952862834e+03, 0.95582209505274562389e+02, + -0.33704423191559172324e+02, -0.60439321575332158432e+02, + 0.13291341540480564731e+03, -0.10364745234932165374e+03, + -0.21615212468309525917e+02, 0.12604841681424522903e+03, + -0.13776865596406076975e+03, 0.29618924773862154609e+02, + 0.94974519310978280373e+02, -0.14752684056164216031e+03, + 0.68766412027598477152e+02, 0.58784940779419009971e+02, + -0.13985261859542171692e+03, 0.88188894139042176334e+02, + 0.36724426419153530787e+02, -0.13910771086697252485e+03, + 0.11059802106316107029e+03, 0.12232944185654474722e+02, + -0.13654774002678587408e+03, 0.13498911794863795421e+03, + -0.20989632610254691514e+02, -0.11897003043341076989e+03, + 0.14241572289823815822e+03, -0.41202411681333465765e+02, + -0.10610885880034672368e+03, 0.14532680394207866925e+03, + -0.49922061994074070412e+02, -0.10787013230355040605e+03, + 0.16234388479147406770e+03, -0.69841381498429925045e+02, + -0.10250797310382894523e+03, 0.17706110515640119729e+03, + -0.93254383687455714380e+02, -0.87124450256663550363e+02, + 0.17629521983996252743e+03, -0.99798417130662429031e+02, + -0.83957929949888168153e+02, 0.17859751602654495173e+03, + -0.10067141668383916908e+03, -0.90151886506354628636e+02, + 0.18879106726035203678e+03, -0.10756360698941864484e+03, + -0.87957136834442238182e+02, 0.18530049022762389654e+03, + -0.99895046046694716324e+02, -0.90675380441676367127e+02, + 0.16958022899589994381e+03, -0.66996887870608944127e+02, + -0.11742164888757794472e+03, 0.16416672191544398629e+03, + -0.30390737323805410597e+02, -0.15189132836102393753e+03, + 0.16270416994985441761e+03, 0.28547707005798184099e+01, + -0.17517470108461014888e+03, 0.14225323033461222622e+03, + 0.50468030207129423559e+02, -0.19637121768460008298e+03, + 0.10736256985649140461e+03, 0.10783847896099953800e+03, + -0.21375094123099029275e+03, 0.68104780293752398279e+02, + 0.14971263580851157826e+03, -0.19723539814677627646e+03, + 0.64947259491715563229e+01, 0.17505947299586924260e+03, + -0.13597829890530849184e+03, -0.86333801655962403743e+02, + 0.19312655750322963399e+03, -0.52118255322501376270e+02, + -0.17566048543589155884e+03, 0.18045770183107902085e+03, + 0.42071469178141271072e+02, -0.22137197128202967633e+03, + 0.10662972324359336085e+03, 0.14397568497083170769e+03, + -0.20982789255438694909e+03, -0.14766889409410003609e+02, + 0.21625945568816558762e+03, -0.13012162512471715559e+03, + -0.13877268194506385157e+03, 0.20107326181502091345e+03, + 0.21601875629441266824e+02, -0.22043893723632706383e+03, + 0.85062872214777030422e+02, 0.18725490967906566198e+03, + -0.20706601826405301381e+03, -0.82024812236241146479e+02, + 0.25101162300435635188e+03, -0.60539564760487863282e+02, + -0.21373363650582282958e+03, 0.13928895728647981400e+03, + 0.15573836663744799580e+03, -0.20996320388915268040e+03, + -0.90329458833187530331e+02, 0.26022166588078243876e+03, + -0.25208579018110864212e+02, -0.25786613276264517935e+03, + 0.11455271274543621018e+03, 0.21111563474085582470e+03, + -0.18129772968018312440e+03, -0.17061644397603731704e+03, + 0.22674169193015839596e+03, 0.11205384581546940126e+03, + -0.26433035364605484574e+03, -0.64381123011862968042e+02, + 0.28403354778413597614e+03, 0.34356745321089778855e+01, + -0.29511787621488213063e+03, 0.39535123182873036285e+02, + 0.27790580991384126719e+03, -0.55386058771007526502e+02, + -0.29639623925909177160e+03, 0.66301510261424482451e+02, + 0.30994412940304351878e+03, -0.95282152877926378665e+02, + -0.30023842743301503333e+03, 0.61887398397472274780e+02, + 0.30836312709902631468e+03, -0.19841506910090760840e+02, + -0.35038152724036564223e+03, -0.11512132687759523364e+02, + 0.33422351057270827823e+03, 0.82329601171078195421e+02, + -0.31070292506127560728e+03, -0.20314274107557542948e+03, + 0.28007073125054142793e+03, 0.28274676617895283925e+03, + -0.18156674324190802849e+03, -0.35632652573975201449e+03, + -0.10076464893769956355e+01, 0.38676008530203654345e+03, + 0.18495876030889559161e+03, -0.29438819206402956752e+03, + -0.36251469362800906993e+03, 0.49090316542131745337e+02, + 0.42079484268656392487e+03, 0.24560420743338289640e+03, + -0.24458236171211297005e+03, -0.45309566704974037066e+03, + -0.15493163244813212032e+03, 0.32776313067344017327e+03, + 0.47806857835594189510e+03, 0.14926894918248663657e+03, + -0.33166902328513134535e+03, -0.53629959085312884781e+03, + -0.31232876340684532579e+03, 0.16907582505509373050e+03, + 0.53850226222535957277e+03, 0.58047559649384129443e+03, + 0.30205941044239011717e+03, -0.15816266440061551179e+03, + -0.54761546033342290229e+03, -0.78654258608865916358e+03, + -0.82674395760607524153e+03, -0.70991063075070246668e+03, + -0.55920913035877163111e+03, -0.36690471788778961582e+03, + -0.23615774309067973036e+03, -0.13768223408121008333e+03, + -0.60081888605559555572e+02, -0.47408149047355252037e+02, + -0.52023959275979674288e+01, -0.11188691733606193068e+02, + -0.65111007826169373658e+01, 0.98733816234017623970e+01, + -0.14665218115007645494e+02, 0.12472685233447638353e+02, + -0.62882833806532199006e+01, -0.25262784510907705382e+01, + 0.10584708283915514215e+02, -0.14998112271011020624e+02, + 0.14109585217841777549e+02, -0.81378574764779703088e+01, + -0.81132877413520299026, 0.95845166338554825813e+01, + -0.15015500186954513495e+02, 0.15161253375917638664e+02, + -0.99142279302781997075e+01, 0.11351850122513214014e+01, + 0.80916748044979183163e+01, -0.14476628214675518080e+02, + 0.15771752289421028692e+02, -0.11495970033236190488e+02, + 0.31729789367800669275e+01, 0.62765154139203849226e+01, + -0.13507828807147285843e+02, 0.15991204003806759104e+02, + -0.12846696403857622570e+02, 0.51995887822333504147e+01, + 0.42677778894927271836e+01, -0.12219526899565867240e+02, + 0.15877755114219267440e+02, -0.13959216268153740614e+02, + 0.71525984890244203029e+01, 0.21556313052450826184e+01, + -0.10695960652363547538e+02, 0.15481991620280194155e+02, + -0.14837626133950502449e+02, 0.89945478637049340875e+01, + -0.61558282773532746468, -0.71486431790067088698e+01, + 0.14758575195634644928e+02, -0.15473858728180683642e+02, + 0.12405746515228885940e+02, -0.31951330957797887677e+01, + -0.54985261750797569391e+01, 0.13970143227774336481e+02, + -0.15755484389656292166e+02, 0.13566603562207863121e+02, + -0.47519076435411644610e+01, -0.41336721696303317941e+01, + 0.13258804050121671736e+02, -0.15884067319395327900e+02, + 0.14393611604859621877e+02, -0.59003598174346549854e+01, + -0.31204553939388963713e+01, 0.12727454229882624759e+02, + -0.15959809869336023525e+02, 0.14949427231316120057e+02, + -0.66474475462936384318e+01, -0.25037449133511215926e+01, + 0.12450229094831202659e+02, -0.16055109941901338999e+02, + 0.15278030553384255086e+02, -0.69964412097348649411e+01, + -0.23154493915908322954e+01, 0.12475067764992907371e+02, + -0.16210926733815728795e+02, 0.15396762170400535297e+02, + -0.69391009623137742679e+01, -0.25822555441329955173e+01, + 0.12817601777955349718e+02, -0.16455646699208223538e+02, + 0.15224569745062797921e+02, -0.66362296194133048033e+01, + -0.38141811611751190725e+01, 0.12258099686983532806e+02, + -0.19571266731508231373e+02, 0.86228898928810480129e+01, + -0.18288392129690212329e+02, -0.28775003265070161262e+02, + -0.27990705125392086217e+02, -0.85132857338236462397e+02, + -0.85588288022727596172e+02, -0.13465442170884622897e+03, + -0.15580669076425792241e+03, -0.12712118151518366460e+03, + -0.11758757156164828928e+03, -0.14442953943947360429e+02, + 0.51908608243738591170e+02, 0.97681417242067880125e+02, + 0.11492514291800074488e+03, 0.13456380818732316840e+02, + -0.44968976200074735061e+02, -0.97149975371212349273e+02, + -0.71059463266945229520e+02, 0.45296778986151274182e+02, + 0.70886325914109718838e+02, 0.68107046245268477946e+02, + -0.23708762348112312424e+02, -0.96341192643410408891e+02, + -0.25441372943418993913e+02, 0.30597567412675594767e+02, + 0.80880993334981369003e+02, 0.18013454467686528915e+02, + -0.83005520100677443907e+02, -0.34292207736573431021e+02, + 0.22503653691138218562e+02, 0.69790817386040203019e+02, + 0.13672727864565267453e+02, -0.84388192543377172683e+02, + -0.14728178643657074076e+02, 0.44355213587138422326e+02, + 0.44967491758937583768e+02, -0.18763897434780087536e+02, + -0.77267085720805781079e+02, 0.30646394183245547538e+02, + 0.58974766979936347866e+02, -0.13532982108189976600e+02, + -0.42465011890127577487e+02, -0.23454489179370334284e+02, + 0.67101007759237958794e+02, 0.15692541438802832587e+02, + -0.70841162437238963889e+02, 0.48252341008415147172e+01, + 0.40188075791974227968e+02, 0.16368339596876690933e+02, + -0.42859432164086719297e+02, -0.29472094275192695534e+02, + 0.70563714704552111812e+02, -0.22833515239405954844e+01, + -0.57612068958745020097e+02, 0.17499283427497161370e+02, + 0.31873985970202280527e+02, 0.26804324734422011467e+01, + -0.48280470464401282982e+02, 0.79001861870936149757e+01, + 0.61667276084108877399e+02, -0.47418925376711982267e+02, + -0.27538524076033361609e+02, 0.48531253214262349616e+02, + 0.16320669135335312827e+01, -0.26792983893915021554e+02, + -0.13561083913990911398e+02, 0.41801099776844587552e+02, + 0.27375302688978124799e+01, -0.59868856546109604722e+02, + 0.43024359539878844316e+02, 0.26922789666933311992e+02, + -0.54679225477890639695e+02, 0.12733770832067735412e+02, + 0.27640302156898872710e+02, -0.10360640093672694562e+02, + -0.24812906906792118633e+02, 0.12062264068031621989e+02, + 0.36679637577416350780e+02, -0.47882123902936726267e+02, + -0.40682701556892109096e+01, 0.57400251892614704730e+02, + -0.45950810954024120747e+02, -0.12813486716727021886e+02, + 0.45748909926026293249e+02, -0.21112551912403986876e+02, + -0.16636705991471799848e+02, 0.15388112362674343458e+02, + 0.14683485136043323394e+02, -0.20968711242072473055e+02, + -0.13794531787768562481e+02, 0.45578938648544699674e+02, + -0.26801567449347803773e+02, -0.28559169880408962428e+02, + 0.59152256122274501138e+02, -0.29492808827556590501e+02, + -0.27748754476255097501e+02, 0.51839152080238640963e+02, + -0.23130481670032946084e+02, -0.19496758577257743639e+02, + 0.29666682697242080735e+02, -0.58483220237513391382e+01, + -0.14008957092714286574e+02, 0.42074768207212578375e+01, + 0.18055982435972769196e+02, -0.17029961515019319762e+02, + -0.13644247005162938535e+02, 0.40259204438293942019e+02, + -0.27371291902389536688e+02, -0.18606753415939969898e+02, + 0.52916914795667551630e+02, -0.38838395592488389241e+02, + -0.12417759622251374196e+02, 0.52579138746146604433e+02, + -0.44500509545916393961e+02, -0.16884922862553704004e+01, + 0.41470256390786218503e+02, -0.40563070620429705571e+02, + 0.60656122089212756165e+01, 0.25903587498042885073e+02, + -0.27991112760047311525e+02, 0.60045199721343243127e+01, + 0.13093681792138260889e+02, -0.11591135871805242630e+02, + -0.23559168492784290372e+01, 0.81150010223420334654e+01, + 0.24742525480295332052e+01, -0.15649716436970065203e+02, + 0.12280908034020496800e+02, 0.93068185735751232102e+01, + -0.28622780286172424979e+02, 0.23289145723842988644e+02, + 0.69117100157805060334e+01, -0.36410529015620511473e+02, + 0.36660518693944936786e+02, -0.35558675377088455605e+01, + -0.36179778562015926013e+02, 0.47614056479489484275e+02, + -0.18681914643026598100e+02, -0.27701495194579127457e+02, + 0.52598906839349162112e+02, -0.34209660549702988419e+02, + -0.12947399224706995113e+02, 0.50059080995206613807e+02, + -0.46358603459999137897e+02, 0.48743814465525963087e+01, + 0.40408261539065961188e+02, -0.52651382111269889208e+02, + 0.22365976783785363580e+02, 0.25469568230834585876e+02, + -0.52148246679322248553e+02, 0.36719599811018078128e+02, + 0.77294379373682318146e+01, -0.45220222184219480255e+02, + 0.46089475566608719248e+02, -0.10304313406929303198e+02, + -0.33099654037134435214e+02, 0.49601043061424626046e+02, + -0.26489038188779350236e+02, -0.17436174324397089919e+02, + 0.47151024790272479947e+02, -0.39172251306626080236e+02, + 0.11732535912882033458e+02, 0.26720149725128948148e+02, + -0.52930591532085294659e+02, 0.39104185195454633117e+02, + 0.97341704534687245598e+01, -0.48232525087836904731e+02, + 0.49954964318563305881e+02, -0.72316300218883995399e+01, + -0.39199718321164610302e+02, 0.55844932053739597677e+02, + -0.22480963706940727320e+02, -0.27639990517594007713e+02, + 0.57341802898257014931e+02, -0.35048255246482490577e+02, + -0.15172820281916443719e+02, 0.55438280676051881812e+02, + -0.44616232080917768599e+02, -0.30532453620688371210e+01, + 0.51278817228206136747e+02, -0.51353348135877716629e+02, + 0.78762509314461714993e+01, 0.45964657489454943118e+02, + -0.55731605520220064420e+02, 0.17145106582641084003e+02, + 0.40442576279829275165e+02, -0.58363573180814050545e+02, + 0.24565274177625081364e+02, 0.35463697439488079510e+02, + -0.59876271501482435156e+02, 0.30124830005061866700e+02, + 0.31590472071844565960e+02, -0.60823515112204624700e+02, + 0.33885391273463632444e+02, 0.29228889186033192971e+02, + -0.61628442028099662764e+02, 0.35894440735891230077e+02, + 0.28665633014347367435e+02, -0.62543617940091408514e+02, + 0.36117470340892253944e+02, 0.30093337160177700440e+02, + -0.63616065236654442572e+02, 0.34393018128604971650e+02, + 0.33609755986556969276e+02, -0.64648010411923451102e+02, + 0.30416235629076378899e+02, 0.39178492662023138848e+02, + -0.65151185549492680593e+02, 0.23763057257994120164e+02, + 0.46541467944066766904e+02, -0.64304268630751280966e+02, + 0.13975852378960214040e+02, 0.55080119893510342877e+02, + -0.60941012080617056768e+02, 0.73899183646145638615, + 0.63639048042231024738e+02, -0.53620968393255573403e+02, + -0.15828623271044035548e+02, 0.70359407725879819395e+02, + -0.40860770179560503834e+02, -0.34760974736985005507e+02, + 0.72624530228636572815e+02, -0.21616315432743490987e+02, + -0.53774887909678930953e+02, 0.67290699508943603746e+02, + 0.39275215512064471923e+01, -0.68929603283656248891e+02, + 0.51428707429024569819e+02, 0.33333471152982646402e+02, + -0.74778403137181072680e+02, 0.23757796328543729913e+02, + 0.61005357456799011118e+02, -0.65525177635043874602e+02, + -0.13316243519984213961e+02, 0.78159532094253947321e+02, + -0.37628232731294509961e+02, -0.51768233111819554892e+02, + 0.74786584340436377261e+02, 0.63181139077159667039e+01, + -0.77755501832512933902e+02, 0.44506531475508793960e+02, + 0.54017103984902576030e+02, -0.75459201859332296181e+02, + -0.83085398602643198984e+01, 0.83759756450878768419e+02, + -0.36406248832683353100e+02, -0.63036214286668041495e+02, + 0.72965168780348648170e+02, 0.28309151855636958572e+02, + -0.86452842223390049980e+02, 0.15927354669286536648e+02, + 0.82555343426322423284e+02, -0.52321132114479311781e+02, + -0.58533047248309451049e+02, 0.80714645616374212977e+02, + 0.28093463922053096837e+02, -0.91433616255329724254e+02, + 0.85602580573648427986e+01, 0.92108129021901333999e+02, + -0.38988026222412081268e+02, -0.78926993858787440672e+02, + 0.66669600425162769852e+02, 0.62673562536341172802e+02, + -0.83552116653402379143e+02, -0.40273178307924879960e+02, + 0.96934047563168832085e+02, 0.21572884768804346578e+02, + -0.10144369855266802460e+03, -0.17979067134366695235e+01, + 0.10580006754477174979e+03, -0.10995831093204492035e+02, + -0.10504159789898757538e+03, 0.22983551363323662997e+02, + 0.10756606194690692746e+03, -0.26953690826020494598e+02, + -0.10766279229425667552e+03, 0.29318158982851688421e+02, + 0.11266108359765860314e+03, -0.22642373607432560334e+02, + -0.11549328058864593061e+03, 0.12847490402890484162e+02, + 0.12167954544246741477e+03, 0.78421536699556977368e+01, + -0.12175945526570261279e+03, -0.33108877935056483466e+02, + 0.11822957305573650899e+03, 0.68621972848496156416e+02, + -0.98520855976057362113e+02, -0.10313139750014262574e+03, + 0.63498345240630577280e+02, 0.13373515289022429897e+03, + -0.37103422580718157242e+01, -0.13811540456538432409e+03, + -0.67520701732334273970e+02, 0.10533074918301936407e+03, + 0.13454241771829472896e+03, -0.20339636301726500278e+02, + -0.15164845585562554220e+03, -0.89289824045010206532e+02, + 0.87936749525226218793e+02, 0.16599987487503557304e+03, + 0.55575743672954722285e+02, -0.11918396403536728201e+03, + -0.17328844652205754073e+03, -0.54818511636682842436e+02, + 0.12057025535239939984e+03, 0.19587828453917180127e+03, + 0.11216476072949076581e+03, -0.60188160619586966504e+02, + -0.19621814331901336459e+03, -0.21203873929906220042e+03, + -0.10763082923245474376e+03, 0.54790903281301176264e+02, + 0.20128823124948146983e+03, 0.28544185984087408769e+03, + 0.29916716530027184717e+03, 0.26133570832892610269e+03, + 0.19952037452272512041e+03, 0.13646340071596810617e+03, + 0.84874656368074383295e+02, 0.48481679604604863698e+02, + 0.25612290675931681960e+02, 0.12578188185366302676e+02, + 0.57646053971187010134e+01, 0.24728498313519624574e+01, + 0.99519657123802629517, 0.37643220473571875617, + 0.13401025748247366587, 0.44949404109467933077e-01, + 0.14216189786237422993e-01, 0.42417848481242871259e-02, + 0.11944252703678141184e-02, 0.31744435007385467555e-03, + 0.79624800611630833030e-04, 0.18845143521172824370e-04, + 0.42067377229976457117e-05, 0.88519242354660661545e-06, + 0.17544999759235988058e-06, 0.32726002708936194838e-07, + 0.57382088048437018765e-08, 0.94457669290838109463e-09, + 0.14575241651194785801e-09, 0.21045009546748466862e-10, + 0.28376542059324942495e-11, 0.35648300413566988989e-12, + 0.41613099673817655407e-13, 0.44998994671769607791e-14, + 0.44918244288135477544e-15, 0.41220404153432356197e-16, + 0.34609758042625714060e-17, 0.26439042303980208927e-18, + 0.18254160379849375480e-19, 0.11299810330494218195e-20, + 0.62105665495269207827e-22, 0.29940841992589139869e-23, + 0.12466427130429185529e-24, 0.43925581985733106070e-26, + 0.12736756736808377847e-27, 0.29183394989022861173e-29, + 0.49546658967674641038e-31, 0.55415729740004106348e-33, + 0.30629557733336968134e-35, -0.64196991338683184053e-02, + 0.11164329060031081414e-01, -0.54814675808227955253e-02, + -0.18769196483900906468e-03, 0.45358076380122049065e-02, + -0.38118990335752060868e-02, -0.84977452608878535460e-03, + 0.95336614008245963020e-02, -0.17671143208485402820e-01, + 0.23536323498658796166e-01, -0.23146980534869000812e-01, + 0.17601829493396899118e-01, -0.69455555324221020241e-02, + -0.40078219163994215773e-02, 0.13213840434141593469e-01, + -0.16323557928800629113e-01, 0.14030266014451822990e-01, + -0.59447454370045449412e-02, -0.35494692463071656104e-02, + 0.12768031859268148820e-01, -0.17554706901443600103e-01, + 0.18526924291187778920e-01, -0.14886256117833325183e-01, + 0.10284477643033324706e-01, -0.54581673963653666234e-02, + 0.35894660366187648021e-02, -0.32869457265697118314e-02, + 0.49702684435566323040e-02, -0.51025165898666274139e-02, + 0.35196584846446535635e-02, 0.20920388121693140639e-02, + -0.94104032209259714375e-02, 0.18084431341897733853e-01, + -0.24101098058375205330e-01, 0.27113327710459555336e-01, + -0.24812343347934872478e-01, 0.19504793920330474460e-01, + -0.11489605250258039942e-01, 0.43211138779955544226e-02, + 0.14315003948783499004e-02, -0.49277127142653576880e-02, + 0.49570871247038321081e-02, -0.85702494899705539827e-02, + 0.20905689449379491821e-02, -0.17536155738932912573e-01, + -0.69997420609909672545e-02, -0.38330095294659541350e-01, + -0.30736447885336078828e-01, -0.65816370924771452899e-01, + -0.60720964272224120517e-01, -0.78176575504289982921e-01, + -0.51179278099406533276e-01, -0.43999400148876217920e-01, + 0.23980009581091293186e-01, 0.17395808281365818249e-01, + 0.78088955592615555412e-01, 0.13951183892969917441e-01, + 0.14123940895619102945e-01, -0.45087666663368032582e-01, + -0.45836137144961992818e-01, -0.10365468181971315698e-01, + 0.19606848745758166663e-01, 0.43461423945228762344e-01, + 0.24945573887206730357e-01, -0.33303485825942447107e-01, + -0.28034729471186150412e-01, -0.20160894562769818977e-01, + 0.27403481192045199555e-01, 0.41791824186916778916e-01, + -0.11756417181182168136e-01, -0.25995905896948213326e-01, + -0.21739776230684713237e-01, 0.85617640369711547899e-02, + 0.52280461461671819123e-01, -0.23082563604839883425e-01, + -0.13867657146829618156e-01, -0.23381211554236402267e-01, + 0.20655862211528347450e-01, 0.38522421668858872201e-01, + -0.31641063563260983516e-01, -0.13963168165491576800e-01, + -0.52979273578660970173e-02, 0.32822718319827630384e-01, + 0.49840289174800716729e-02, -0.28733543337611532759e-01, + -0.13269064656722354134e-01, 0.33505437764858009286e-01, + 0.37077039718290960568e-02, -0.14051260132899026298e-01, + -0.21740008351110649137e-01, 0.22928771438575534097e-01, + 0.17974315352818862057e-01, -0.20968347045653326632e-01, + -0.18234770534381574553e-01, 0.22344288388647225857e-01, + 0.16083562491815209250e-01, -0.27045966292485391219e-01, + 0.12425126836256657117e-02, -0.13641970143478409933e-02, + 0.36134750898242418149e-01, -0.41672512949075229960e-01, + -0.35797202658187983904e-03, 0.29982882184453905905e-01, + -0.14309601280577715493e-01, -0.23708435226676505617e-02, + -0.14970015954138710459e-01, 0.31108693124176377276e-01, + -0.78775412546015031318e-02, -0.24947173638561005726e-01, + 0.18217386078322336807e-01, 0.15489629793245968462e-01, + -0.23419618690910661701e-01, -0.32924246624834994403e-02, + 0.21167541363707208235e-01, -0.76188775275591105740e-02, + -0.61588145949499437798e-02, -0.89213158703653292619e-02, + 0.30849856013278123545e-01, -0.21619599291168394711e-01, + -0.11650118626767576313e-01, 0.25738334779378129608e-01, + -0.45799862959215479827e-02, -0.18711819927243064643e-01, + 0.11172680565839671063e-01, 0.15000637140430537683e-01, + -0.24392345641678483958e-01, 0.10264281249995035189e-01, + 0.96252553287915686110e-04, 0.10524494723920800598e-01, + -0.22766705101918440629e-01, 0.99552907185146699565e-02, + 0.20886746144449745005e-01, -0.34820940975332267953e-01, + 0.14158483531627205285e-01, 0.18579470263704045419e-01, + -0.29102029058889648111e-01, 0.12752959609851989564e-01, + 0.41748337834799364998e-02, -0.67649006176474758226e-03, + -0.13905528138462857832e-01, 0.16327442712023930438e-01, + -0.16839052074424612927e-02, -0.11240745020875440169e-01, + 0.66785899885898024342e-02, 0.65041965291658563816e-02, + -0.63957183101927298982e-02, -0.12279042248533980283e-01, + 0.29052636633665921556e-01, -0.21107326367788486338e-01, + -0.86301654869016270616e-02, 0.32722790086006564581e-01, + -0.28311386268515693204e-01, 0.11057090329380527514e-02, + 0.22179425266478591805e-01, -0.22554894759760999584e-01, + 0.65716403790934624710e-02, 0.46586262976937003327e-02, + 0.97719183395375821210e-04, -0.11798670550894693396e-01, + 0.14252323341891399641e-01, -0.31261354736728287629e-02, + -0.10644249561384433456e-01, 0.15161175781442529434e-01, + -0.11173178851746696366e-01, 0.94495518777681485750e-02, + -0.15845215206373459288e-01, 0.22617138809637706010e-01, + -0.16554428107024739270e-01, -0.47243829576559441888e-02, + 0.27137917649150033322e-01, -0.32438671680877460834e-01, + 0.16597055380066425695e-01, 0.50922659344684153074e-02, + -0.12034063325957066251e-01, -0.17980428937109450057e-02, + 0.21940619557023092329e-01, -0.27347005246047093041e-01, + 0.10937748507887536456e-01, 0.13097284196169808532e-01, + -0.22090322175011837397e-01, 0.58802568218910998207e-02, + 0.23627282537836882120e-01, -0.42785989123218487462e-01, + 0.36844787075598676995e-01, -0.12155015682594586673e-01, + -0.10342462720954490735e-01, 0.13896388334728041261e-01, + 0.56466959552276439966e-04, -0.14461784820604393562e-01, + 0.12738024366372479798e-01, 0.63315915136782962083e-02, + -0.27664217597766146972e-01, 0.33195813759968301193e-01, + -0.17461157620105423327e-01, -0.78174200124479526625e-02, + 0.23672566413715949440e-01, -0.19515664958749776026e-01, + 0.13036408668244399249e-02, 0.14269428569958240993e-01, + -0.14208281532611811981e-01, 0.17869229473484717075e-01, + 0.65887322684281768304e-01, -0.22460349379509161882, + 0.28874279615192272042, -0.14855151348678735657, + -0.94025161043475871669e-01, 0.27812647977544890932, + -0.25902100646016434915, 0.98116612591240340291e-01, + 0.64660775736345002529e-01, -0.74977907475306540541e-01, + -0.36119517993092098429e-01, 0.15892142766447781010, + -0.15288094549979694414, 0.43777138955864644543e-01, + 0.74069007176501583389e-01, -0.73368505789357704727e-01, + -0.17517949549229916428e-01, 0.11388455128371141600, + -0.10404852009428160187, 0.25901534068517494125e-01, + 0.43641284105971005214e-01, -0.18200156202663225063e-01, + -0.37955610585150165170e-01, 0.44930506753513108076e-01, + 0.51560584959299070318e-01, -0.13719946208533514986, + 0.10222995969937571925, 0.88998039598290556995e-01, + -0.26489490953257538441, 0.26414441399975652214, + -0.46467231309222999103e-01, -0.17477140025503815068, + 0.19307814226840455674, 0.35996053736490202235e-01, + -0.26014021869675119092, 0.23241921730924416933, + 0.91442094863927139703e-01, -0.41840234469297349351, + 0.45889865788099032384, -0.15703386375329433933, + -0.18102414329458416109, 0.25692405994235240074, + -0.18467726102757986428e-01, -0.23738910849513933377, + 0.25340620414467690535, -0.20800038993209132854e-01, + -0.17560895825047120877, 0.15844113776172946695, + 0.54262619984622312286e-02, -0.52388220609181274101e-01, + -0.74788001289068345434e-01, 0.20491391413570897440, + -0.10365018514656615389, -0.14295957762463543106, + 0.25907473755119048153, -0.62962174358101447025e-01, + -0.20958175511604618113, 0.21329271894326642944, + 0.13960087331727791260, -0.47355817737718292060, + 0.43011765963948611624, -0.35697634150846251078e-01, + -0.27102335032271218651, 0.23331115440282307327, + -0.13034258605154709285e-01, -0.49810102101829761834e-02, + -0.19646969403482159033, 0.30769807835926477058, + -0.95952018356439974789e-01, -0.17036076542656786170, + 0.12445058791983439062, 0.21729877462546240419, + -0.37097714025106892644, 0.96085929352313831364e-01, + 0.29220725290274796038, -0.27114009972075070465, + -0.11054051298373689105, 0.35265216663996512558, + -0.16076812894375591689, -0.96511064562572662640e-01, + 0.33052306131086076069e-01, 0.18676134851937578607, + -0.49971181955856043555e-01, -0.39620839863187262697, + 0.57412702824081462971, -0.18065084962802002710, + -0.25223154416302917546, 0.18893541440467145898, + 0.14784701469175542954, -0.11522987091264426385, + -0.22437604584734766044, 0.25530809589056224773, + 0.16218630308478473867, -0.33755444530807338088, + -0.39442935466445144810e-01, 0.35509568130175267475, + -0.36255605875950877581e-01, -0.38539812022988972906, + 0.22209662134250723886, 0.20043693902550055452, + -0.98567520906118866186e-01, -0.24656802677896472176, + 0.34560735951119365972e-01, 0.52613163512524885324, + -0.44823009270526986692, -0.14051687384487857035, + 0.23400149923553048570, 0.17586084934670373481, + -0.68148200355515928250e-01, -0.44377711781894457754, + 0.29616108036113225621, 0.34874067306231182339, + -0.25942815570159966088, -0.30844357744613509764, + 0.16903531819535305702, 0.27582573248176095460, + 0.13660880051382504052, -0.61285152500956230348, + 0.77989210637873437881e-01, 0.38807196984836672682, + 0.12243773872218594034, -0.20709578489647270660, + -0.48317617364672532654, 0.30694630535377964708, + 0.43643747685198525099, -0.40310732896174247819e-01, + -0.36867549011114569835, -0.35825758300486676422, + 0.38273649037479656743, 0.42112133019682673751, + 0.73762977268233984041e-01, -0.54470942519674636628, + -0.31399145950500206848, 0.13612091636792730820, + 0.54496816114631185801, 0.41476862298072353363, + -0.44728923813003745868, -0.36266885499171136464, + -0.57061514249938305454, 0.37614077309742249833, + 0.59997234750447936413, 0.44298364583064309130, + 0.20003394547434255601, -0.69138828122343454208, + -0.61372293366782104673, -0.59604350056646793199, + -0.13457296212681893466, 0.54091859927096530569, + 0.76001705857613843786, 0.10066197478702079149e+01, + 0.10413501589003442138e+01, 0.65036368633670149642, + 0.72694751481900821144, 0.31070283635308676429, + 0.20045224968876457217, 0.28914220251183975208, + -0.16155891498495203451, 0.26913056171917587589, + -0.14390038879340930067, 0.40129203368617652470e-01, + 0.10195932017542437553, -0.18924114498256738859, + 0.20945928209187272828, -0.15236956455924879905, + 0.45358513088521262846e-01, 0.69958039358652884809e-01, + -0.15057022265526293081, 0.16924394424244626478, + -0.12425350316392660965, 0.38049068436668290194e-01, + 0.52170559892766983634e-01, -0.11028246220147287782, + 0.11453957159276347000, -0.65773303047473682947e-01, + -0.14743750450820009706e-01, 0.94101705957821107917e-01, + -0.14166142736334352836, 0.14032231994674942976, + -0.92995654071524963546e-01, 0.20101052731400372020e-01, + 0.48628239487048814660e-01, -0.86417847101842679147e-01, + 0.79242843587882152989e-01, -0.31185013647431855666e-01, + -0.37997722446996923251e-01, 0.10037143062083360434, + -0.13077527625977042325, 0.11573866505053262421, + -0.58408035487060104562e-01, -0.23269915532307255956e-01, + 0.10311228514281456370, -0.15641299114602463805, + 0.16830838782796397890, -0.13866515586498140422, + 0.81180686274058014296e-01, -0.17887855297640843644e-01, + -0.29336688685966224449e-01, 0.46640044266595848121e-01, + -0.32998151604134363934e-01, 0.30014330127187704989, + -0.44095076591959153633, -0.17509072487484501207e-01, + 0.44827215424701399860, -0.77060408614939190919, + 0.69863754443020542606, -0.34708581744960753657, + -0.29596093318262406413, 0.87216004351837650432, + -0.12786294624486405080e+01, 0.12201175497621696842e+01, + -0.81410392770410178187, 0.60309253561316167325e-01, + 0.66701206954225011891, -0.12481550763597728526e+01, + 0.13714778308216031277e+01, -0.11373915713902800206e+01, + 0.52618221162219980247, 0.11034967466421810589, + -0.67537655570034760277, 0.87484216457285690627, + -0.81364307418132020278, 0.45705413972304015369, + -0.12029566737422550671, -0.15297558007128031488, + 0.12708452393097438571, 0.44791450946268566990e-01, + -0.37300205065680891447, 0.54948449800026055723, + -0.56698658633052578804, 0.24399648867938969476, + 0.21163176931178773188, -0.77119450369503816933, + 0.11125673218600204972e+01, -0.12375424735078286442e+01, + 0.98661806412300645519, -0.58352161171386751626, + 0.63844627121547592452e-01, 0.28520513453523466119, + -0.45189147841564752950, 0.41431185831120836971, + -0.12294818927976393363, 0.20815705283268140513, + 0.46114799303193543256, 0.79485110495274069464, + 0.12530808310570629160e+01, 0.25805920747412423033e+01, + 0.32194016352159757766e+01, 0.48434917814295408434e+01, + 0.58842609582350968722e+01, 0.56504914821131748681e+01, + 0.53492045911559804594e+01, 0.25450841422337857622e+01, + -0.82370274212380545364, -0.26207979243776868827e+01, + -0.54945774786439871562e+01, -0.21028107193860154922e+01, + -0.39914233180495001241, 0.31247700897392349795e+01, + 0.44230122735096806252e+01, 0.35039648934856154616, + -0.11547679058357689375e+01, -0.41201513434706811267e+01, + -0.16636980161923236032e+01, 0.24282530825202659486e+01, + 0.26383529637858607053e+01, 0.15031588215436793021e+01, + -0.21895347303302465924e+01, -0.35837234169530090000e+01, + 0.10739564402898884588e+01, 0.20313742409650519249e+01, + 0.20793494716938112354e+01, -0.10795685660839597908e+01, + -0.39531254262199091443e+01, 0.14808104421404537643e+01, + 0.15667937392038184807e+01, 0.16920763371986775603e+01, + -0.16480895917946247753e+01, -0.31161536527456692447e+01, + 0.23455922956242853950e+01, 0.16313959242801649996e+01, + -0.95878261873836162499e-01, -0.21996976428933616710e+01, + -0.94158852615338284320, 0.28744910052253893618e+01, + 0.71696750122198604771, -0.24629534786705122862e+01, + -0.64103983779069395599, 0.15038091265999116164e+01, + 0.15111171874857727282e+01, -0.16457736507178968299e+01, + -0.17101432000067942063e+01, 0.18277030840157499902e+01, + 0.16453270443229595088e+01, -0.21944810466760098500e+01, + -0.83955269743058480447, 0.16121699924670980231e+01, + 0.62708161155055330838, -0.59633100236247094106, + -0.24362757323349124583e+01, 0.30846949301364312568e+01, + 0.22341888729878237041, -0.24895220316828052809e+01, + 0.98611718140737614213, 0.53965067746704087348, + 0.86576264255159074423, -0.22408134947701694450e+01, + 0.36338125087344103070, 0.22869904221623538199e+01, + -0.16051843434817476552e+01, -0.13347612106621171701e+01, + 0.20905134938865077565e+01, 0.84663887511967642063e-01, + -0.15361187259011004347e+01, 0.36122187211316014732, + 0.82214707051364321888, 0.43001524710278665742, + -0.22751183027856489716e+01, 0.15283175299215892018e+01, + 0.12045258950060873104e+01, -0.22907273316350416081e+01, + 0.38532815820689136910, 0.17163265384598735963e+01, + -0.12256835768363025796e+01, -0.85581408809960002326, + 0.15727088727300562176e+01, -0.37146572820520268321, + -0.45571538557421681359, -0.52562520678993995826, + 0.16666342647364127405e+01, -0.69943773161350231149, + -0.18130026076777627786e+01, 0.29545490076001277302e+01, + -0.12466547878039684338e+01, -0.14264586968532178002e+01, + 0.22036233791464967524e+01, -0.72163611145770933941, + -0.78248494937858259490, 0.52084292040221913389, + 0.73326488270868761532, -0.10254559350243956928e+01, + -0.72460969124414825737e-01, 0.10076651552167692483e+01, + -0.48486737419393288739, -0.72614555884798703822, + 0.76856510121805143854, 0.80318533615741483089, + -0.22596123725516599201e+01, 0.16628424233434784263e+01, + 0.76655746934877100340, -0.27477589269082662859e+01, + 0.23756584079216045424e+01, -0.13319969663690309214, + -0.17461846340321076632e+01, 0.16884506891320094635e+01, + -0.27130550844444917269, -0.70591416977554699574, + 0.28074442984261738232, 0.79288600017689059296, + -0.11460574943937464898e+01, 0.39186005197451656556, + 0.58287205554820653575, -0.81364440162047124705, + 0.39315489489395349931, -0.24531304384312604960, + 0.86579516033923886731, -0.15927161349874334739e+01, + 0.12913037392251691671e+01, 0.27097032321004310695, + -0.19451117131482320577e+01, 0.22258949490298132190e+01, + -0.79152094926909355443, -0.10708814815026799216e+01, + 0.16420875555744554042e+01, -0.43705900272838021925, + -0.13038904702650333522e+01, 0.17889762906122288477e+01, + -0.40750727428757027582, -0.16535090540544299387e+01, + 0.24822078042798958464e+01, -0.12069499774142100623e+01, + -0.11968356634524595083e+01, 0.27677898128185942639e+01, + -0.22865887028135647441e+01, 0.29616802426332400344, + 0.14474672317810099997e+01, -0.15528462642258691329e+01, + 0.16561003328332005169, 0.12520176021668618649e+01, + -0.12790312753092609732e+01, -0.20816990971367699270, + 0.19529484568536339406e+01, -0.24357553079179217193e+01, + 0.11836313179483524127e+01, 0.84072360178704064193, + -0.20692669222238118110e+01, 0.16353249586202296406e+01, + -0.54926103150911696760e-01, -0.12642580817892434819e+01, + 0.12360947432086708542e+01, -0.16811638916703757207e+01, + -0.48103833417995867094, 0.53183847321667432340e+01, + -0.68362749194842837852e+01, 0.25066517538830854761e+01, + 0.38823139216932753826e+01, -0.76580535543696184320e+01, + 0.53152925268258304214e+01, 0.26367018790486534963, + -0.46169551429394655173e+01, 0.36828926508152513009e+01, + 0.51439465868240985547, -0.41024350613460223158e+01, + 0.30947142497968553876e+01, 0.77276240987929101234, + -0.39766072196515227510e+01, 0.27482277110020709721e+01, + 0.11270234714929963094e+01, -0.42238278742686956591e+01, + 0.29783351607321462140e+01, 0.64646302284628298640, + -0.33001145130143818562e+01, 0.18574359883526709858e+01, + 0.11708636988909106869e+01, -0.23305588495674487426e+01, + -0.79652381304279684660, 0.45040615955187233155e+01, + -0.45820875848013669085e+01, -0.93803906448997786960, + 0.69003895397019832103e+01, -0.77910974985771410672e+01, + 0.15747604234923742172e+01, 0.54557206663943293989e+01, + -0.66239218728599178476e+01, -0.12382333210788103173, + 0.74094939364985448194e+01, -0.75783145470136776822e+01, + -0.12083916702019346090e+01, 0.10371688331729453481e+02, + -0.11298305786166782383e+02, 0.22620150488629153784e+01, + 0.74632367484129229496e+01, -0.90693266917069017552e+01, + 0.13111235195332178183e+01, 0.64518675132215976831e+01, + -0.65771957720453002594e+01, -0.64243577253053330001, + 0.59427294458288004719e+01, -0.40584721481615231298e+01, + -0.21802203789611809270e+01, 0.38059785048113137229e+01, + 0.10314063454095760974e+01, -0.63808844254790573203e+01, + 0.40889441603108007683e+01, 0.34853358340530165016e+01, + -0.74322140630612256729e+01, 0.14606773456430575120e+01, + 0.73747966493613326122e+01, -0.81808595548898086491e+01, + -0.21812346822922048517e+01, 0.12300932808402446739e+02, + -0.11220881002704441443e+02, -0.14379220180812635199, + 0.81800593157484318141e+01, -0.53716442292129800151e+01, + -0.25350454093093586216e+01, 0.30779376515917316048e+01, + 0.39673852413144952145e+01, -0.81425183755181986811e+01, + 0.15626090193004158468e+01, 0.72461394236200584729e+01, + -0.62523998027318210546e+01, -0.44553841907881617246e+01, + 0.96509978947416659167e+01, -0.15571759906903750448e+01, + -0.10122560768665977093e+02, 0.90767670200074128672e+01, + 0.29511307055766162755e+01, -0.10158331046652685714e+02, + 0.36006362914707401579e+01, 0.44374372304275233603e+01, + -0.14084953667416000300e+01, -0.71957464463343994154e+01, + 0.43910673672665989642e+01, 0.89220056109669680922e+01, + -0.14615034234120159340e+02, 0.29085683532749664337e+01, + 0.96152470940059266979e+01, -0.63925787391556880834e+01, + -0.50428107491079874336e+01, 0.40398281783107812259e+01, + 0.71605728880977457251e+01, -0.84904315490075461526e+01, + -0.47921411908234938792e+01, 0.10604926006153135631e+02, + 0.11842103459605739513e+01, -0.11211260392288730614e+02, + 0.12684516443259870044e+01, 0.11739065818581474687e+02, + -0.61222754683939593079e+01, -0.73540769257773588308e+01, + 0.34470965440205256769e+01, 0.87038998377053093947e+01, + -0.30836794320040898931e+01, -0.14126679985950250540e+02, + 0.11663715821222469415e+02, 0.63683540961464917274e+01, + -0.80913173830132851805e+01, -0.62662625728728977847e+01, + 0.36003880774380783159e+01, 0.12633738351673517997e+02, + -0.82532141044753810633e+01, -0.11921938060726979813e+02, + 0.88706307191661295519e+01, 0.90182958616737529667e+01, + -0.38830324517772987214e+01, -0.11096756356442231350e+02, + -0.16873176534736273879e+01, 0.17111454645102494254e+02, + -0.78831744765854960821, -0.12989142544578735183e+02, + -0.44208945523704183955e+01, 0.77660378596934860340e+01, + 0.14299989632596862066e+02, -0.91791267571625017041e+01, + -0.13819477090796709717e+02, 0.40168310116062705406, + 0.13146961831445311830e+02, 0.99914404158571397119e+01, + -0.10895473794240116305e+02, -0.14622675268164657680e+02, + -0.13990325219102246468e+01, 0.16644549546096424564e+02, + 0.10549996393562592445e+02, -0.43320586178461466531e+01, + -0.18277926379345601049e+02, -0.11448089824778246992e+02, + 0.11596664432086278396e+02, 0.14800481111441600390e+02, + 0.15228541728989187121e+02, -0.98403699993834017334e+01, + -0.20103346793242987900e+02, -0.14638620395610516312e+02, + -0.49052997506578464026e+01, 0.20201564485746775546e+02, + 0.21350509260803438139e+02, 0.17997107495519490072e+02, + 0.46792055096488605059e+01, -0.17252407368130445064e+02, + -0.24361286590530433216e+02, -0.32570192667496378647e+02, + -0.32453257112487577274e+02, -0.21961146748976062781e+02, + -0.22327539188496754008e+02, -0.10120947034348374061e+02, + -0.73366031160998268490e+01, -0.72614343436357309258e+01, + 0.25409042487799613497e+01, -0.60407405434018555113e+01, + 0.27990760390491700171e+01, -0.70670308741415821530, + -0.25666162955998612638e+01, 0.44677746043404855669e+01, + -0.48858299903251021234e+01, 0.35244425247583572869e+01, + -0.10441621867087311770e+01, -0.15980978322218946097e+01, + 0.34074506029215720915e+01, -0.37610186736962125664e+01, + 0.26309970079723989933e+01, -0.55039054501355555438, + -0.16060802778446687800e+01, 0.29942076992393662493e+01, + -0.31080243551998831819e+01, 0.19726580697679612086e+01, + -0.90802159461517706340e-01, -0.17621482099677210353e+01, + 0.28663095901986244129e+01, -0.28194775881982807597e+01, + 0.16908756866766621041e+01, 0.38989807167291862244e-01, + -0.16682839667591151667e+01, 0.25629846396101392259e+01, + -0.23852101460631747187e+01, 0.12214248780961625140e+01, + 0.47410965134807958599, -0.20516594799957639239e+01, + 0.29219498725777488524e+01, -0.27628136512977294892e+01, + 0.16356956980846248939e+01, 0.56732921364394818531e-01, + -0.17212567832868135298e+01, 0.27997783851402497923e+01, + -0.29617867084167306402e+01, 0.22172874652695568898e+01, + -0.89369664377172297609, -0.49284465654104542276, + 0.14364581559794480370e+01, -0.16244730030302698687e+01, + 0.10489469776771058740e+01, -0.40234914110846986546e+01, + 0.54832507479948660034e+01, 0.62932198328931987508, + -0.60347825953760967366e+01, 0.99588469785651483335e+01, + -0.88941274360777509145e+01, 0.45897712797689038666e+01, + 0.31431017334416431197e+01, -0.97579074625439830015e+01, + 0.14295418019223935957e+02, -0.13203567469317443184e+02, + 0.83093273091189043811e+01, 0.42320376285771288405, + -0.82847227535415903787e+01, 0.14186089816139794806e+02, + -0.14491121870180748488e+02, 0.10957733051576207473e+02, + -0.34526794448102036128e+01, -0.34786449894411362038e+01, + 0.89695089105580425581e+01, -0.96113719061129749832e+01, + 0.72975053112455370297e+01, -0.18455791317070187052e+01, + -0.24861334912778745299e+01, 0.53231512804433096520e+01, + -0.38418360775830855403e+01, 0.43884008560771292640, + 0.48099166139178537449e+01, -0.77328900664729340875e+01, + 0.83654908125912470496e+01, -0.44844501901686797396e+01, + -0.93311295337494770674, 0.74461950869105226758e+01, + -0.10847663170357735751e+02, 0.11432757902104576431e+02, + -0.73946499316162315196e+01, 0.20207134374346509276e+01, + 0.40901342158714335540e+01, -0.71765851139736502873e+01, + 0.73895308352109143613e+01, -0.48547688943735627376e+01, + -0.63182642475781169988, 0.35355275012631748321, + -0.92683889645760100251e+01, -0.82086672796804602825e+01, + -0.17964362257781392174e+02, -0.34250048923655981525e+02, + -0.42391011213480524589e+02, -0.65156642895277826710e+02, + -0.78488353334965964336e+02, -0.74235831168491571930e+02, + -0.73612313078806707267e+02, -0.30702651581341694254e+02, + 0.73464333601971985033e+01, 0.38344117831255921658e+02, + 0.70670912986960118474e+02, 0.29490055509929714361e+02, + 0.50385299332549502438e+01, -0.42290634081623366569e+02, + -0.57849037840533043209e+02, -0.58594380312443536951e+01, + 0.16357247545622456641e+02, 0.54287506478620286998e+02, + 0.22657278164480342042e+02, -0.32936648616448216842e+02, + -0.34265265419784959988e+02, -0.21429737506002442871e+02, + 0.30968985811192915492e+02, 0.45944541348652521151e+02, + -0.12879873425863486602e+02, -0.27643530655418334874e+02, + -0.28372028448457506045e+02, 0.16313086705953686817e+02, + 0.49781311967633229187e+02, -0.16336942889553661473e+02, + -0.24090764180138460659e+02, -0.20221312715020097528e+02, + 0.20965608605027476585e+02, 0.41076438954466638620e+02, + -0.29501519383922964579e+02, -0.24358576333275003378e+02, + 0.41221462212200341568e+01, 0.26822158234254722231e+02, + 0.14346797819062592438e+02, -0.39294313833849265905e+02, + -0.92339380138296824896e+01, 0.32781762276546430712e+02, + 0.87793357658090513951e+01, -0.20792013089575043239e+02, + -0.18779652529576651432e+02, 0.20120289044944595247e+02, + 0.24665087515914436267e+02, -0.25707137999903434178e+02, + -0.21665530509412189275e+02, 0.30424334429545975667e+02, + 0.85269849282248344480e+01, -0.17592567675687938333e+02, + -0.12928768503225985143e+02, 0.12444313811779947443e+02, + 0.28823460792648564421e+02, -0.38897480642736688594e+02, + -0.34597717240402467986e+01, 0.31945890178912712543e+02, + -0.10499014974887481699e+02, -0.10691615398628453448e+02, + -0.78324245259060507607e+01, 0.26539021115508298010e+02, + -0.22988066535719671180e+01, -0.32034286643224945124e+02, + 0.21940599037064718146e+02, 0.18114797786796362544e+02, + -0.28823817356347024798e+02, 0.24747975802905114451, + 0.18828809906166949162e+02, -0.29526083224764807511e+01, + -0.13014880576344598495e+02, -0.35071632388360547417e+01, + 0.28013579005897092600e+02, -0.18124166762444822609e+02, + -0.17986323764548547643e+02, 0.31840314756455061485e+02, + -0.55231901507958713893e+01, -0.23579097152754080469e+02, + 0.18115003153082305687e+02, 0.87769410989727791872e+01, + -0.17871280498515993429e+02, 0.19079413183243465468e+01, + 0.85508138601686880520e+01, 0.55135873799997341393e+01, + -0.21898377632419744998e+02, 0.10106751711559075702e+02, + 0.22614620498366861057e+02, -0.37559567572675319980e+02, + 0.15082165769113288434e+02, 0.19773909806448987325e+02, + -0.29048904367242272428e+02, 0.81744931870793973161e+01, + 0.12748822155453096272e+02, -0.96569854329693232131e+01, + -0.72421852600829206281e+01, 0.11863876677467295906e+02, + 0.16687943344374691623e+01, -0.12901083737879474711e+02, + 0.48503772245771905602e+01, 0.11981561873242176475e+02, + -0.12690303645316678427e+02, -0.86685236821992006639e+01, + 0.28911303110688738371e+02, -0.21963895316393859503e+02, + -0.95055770237894527952e+01, 0.35343225857079382024e+02, + -0.30308953561877434169e+02, 0.88107795391154164477, + 0.23271211917481736009e+02, -0.21380532163585549199e+02, + 0.14423705216772302329e+01, 0.12270179034483804870e+02, + -0.67073914377260157593e+01, -0.81632115853035127628e+01, + 0.14032084137693100701e+02, -0.55375824995551070629e+01, + -0.57887740586296345668e+01, 0.74186744206547317049e+01, + -0.87385476628248037745, -0.13376200352961771234e+01, + -0.74340808829513163047e+01, 0.18259724782618210526e+02, + -0.15773708460618797389e+02, -0.34275587147316781689e+01, + 0.24338685501713296588e+02, -0.27138276220592576493e+02, + 0.76757247470080782747e+01, 0.16890943101151915329e+02, + -0.23770969752135535202e+02, 0.67318942045980634248e+01, + 0.17416543257303505499e+02, -0.24529745885749395740e+02, + 0.62948283645794367303e+01, 0.21517571897727062691e+02, + -0.33339496735636423352e+02, 0.17365853342981125707e+02, + 0.13651357802661115315e+02, -0.33820409030755058666e+02, + 0.27096182476328213085e+02, -0.82940480182680786925, + -0.21576038331339915999e+02, 0.21701406829045328806e+02, + -0.17140654381974034237e+01, -0.18616872955379001553e+02, + 0.20086819560370535953e+02, -0.85533844994455332511, + -0.22406469818109226111e+02, 0.29401342650914894961e+02, + -0.13673782228518026827e+02, -0.12164811127006778690e+02, + 0.27458670292643443389e+02, -0.20873005708776048550e+02, + -0.56762386008554577277, 0.18058070969678706064e+02, + -0.17192740420208334484e+02, 0.18347934540619416310e+02, + 0.21896016257391348603e+01, -0.43179340885033774100e+02, + 0.51270674053328605169e+02, -0.10757013352644694493e+02, + -0.40282424858803700829e+02, 0.62764783016380498282e+02, + -0.32629903319854058452e+02, -0.18085011456764206628e+02, + 0.49583157965681792234e+02, -0.31540684634292116328e+02, + -0.10635355338008364967e+02, 0.39734119885092432867e+02, + -0.23689361227750513450e+02, -0.15202463920636471784e+02, + 0.41442362091097045607e+02, -0.23031941408749695199e+02, + -0.17914226177687858410e+02, 0.45587980390668022324e+02, + -0.27897682315984031476e+02, -0.12357153616825977238e+02, + 0.38961692912366672203e+02, -0.21384404147670746710e+02, + -0.14500896510120705685e+02, 0.31308334941187229816e+02, + -0.25280543536173207819e+01, -0.38060769090296346917e+02, + 0.47606865026983797407e+02, -0.25133142093795166616e+01, + -0.53182854938375911047e+02, 0.67384652361063487547e+02, + -0.16463393875406396205e+02, -0.46787989295182875082e+02, + 0.61932007441399619552e+02, -0.61522353379676584240e+01, + -0.58967454725215198152e+02, 0.66307368779971668005e+02, + 0.35306052901280557954e+01, -0.78730542564381806869e+02, + 0.86126189359157294234e+02, -0.10377501597468697270e+02, + -0.68896486101274049929e+02, 0.77723274808975901351e+02, + -0.78766009088266306648e+01, -0.57497547541717850095e+02, + 0.53951170880891531567e+02, 0.11603579236042161682e+02, + -0.54426641121316365002e+02, 0.29735193558268214531e+02, + 0.32396967029738526378e+02, -0.47647512923110731720e+02, + -0.75760851752097257972, 0.56075160201185354936e+02, + -0.40545754534873942987e+02, -0.27074289503095876341e+02, + 0.65735045952961058902e+02, -0.15216139671944414857e+02, + -0.64615540246312249906e+02, 0.76917764686702867039e+02, + 0.88766717121279317126e+01, -0.94403660081021712358e+02, + 0.84814209725602211165e+02, 0.10972210376377903529e+02, + -0.73192759348446756462e+02, 0.38920569946767351155e+02, + 0.36305007126327616618e+02, -0.39360813001951157730e+02, + -0.29459556712255775324e+02, 0.72221294881116364195e+02, + -0.14938389663276204544e+02, -0.66039847631144866114e+02, + 0.60353666495265308356e+02, 0.34260063792842572639e+02, + -0.82540373854963220879e+02, 0.13881436814575621952e+02, + 0.87119622226898300710e+02, -0.76607608754581377752e+02, + -0.28432339070061519948e+02, 0.87252441991405774502e+02, + -0.22792433633248105451e+02, -0.50801361005512205793e+02, + 0.19085742349206771706e+02, 0.67097897557094313470e+02, + -0.51076205166711169170e+02, -0.63175684026099439450e+02, + 0.11493329826255981629e+03, -0.15624648717508849316e+02, + -0.88514953152211077736e+02, 0.52301842018566276238e+02, + 0.53793876413673253012e+02, -0.43544642939553092731e+02, + -0.60994688095245109594e+02, 0.76522923418807948792e+02, + 0.41602171026975881318e+02, -0.94746379076541899167e+02, + -0.97583184453579043804e+01, 0.99662043706025144729e+02, + -0.12133360972632296182e+02, -0.10132867633110588201e+03, + 0.47693041562205728212e+02, 0.73796645071555161621e+02, + -0.34748446169015863916e+02, -0.81663309642225442531e+02, + 0.38617801555158436599e+02, 0.11154789844081234662e+03, + -0.89632933015787017439e+02, -0.67397710014255551414e+02, + 0.74902890443805233645e+02, 0.61687411023573446300e+02, + -0.41489343030932261058e+02, -0.10544584807345442812e+03, + 0.70289077244233354236e+02, 0.10638609082859164801e+03, + -0.76265346419311640602e+02, -0.83567152086562629165e+02, + 0.32899659099683908892e+02, 0.10738917481245080410e+03, + 0.40744850922063768905e+01, -0.14319092351102477778e+03, + 0.72520092452492035395, 0.11636083896684262129e+03, + 0.47018849150537164405e+02, -0.81064658849299860321e+02, + -0.11753085256717433538e+03, 0.74921437665663717098e+02, + 0.12690418128460210312e+03, -0.13800917703709882911e+01, + -0.12345865602186914600e+03, -0.83982430412160795186e+02, + 0.92636265818436612562e+02, 0.13637549190483048278e+03, + 0.78840195286893406390e+01, -0.14471322487700132342e+03, + -0.99882349783681874555e+02, 0.42109674353998457264e+02, + 0.16538837175839333327e+03, 0.96576874383432482318e+02, + -0.92467749154536349465e+02, -0.14828380907545292189e+03, + -0.12264378392915369886e+03, 0.78920469086721098506e+02, + 0.18307504950221860440e+03, 0.13734339815617971681e+03, + 0.33232209629894164493e+02, -0.16967822990299976027e+03, + -0.20136635444164625142e+03, -0.15818025011748585484e+03, + -0.40557387346851719201e+02, 0.15084249249558277484e+03, + 0.22293102677878277973e+03, 0.29327451708726545121e+03, + 0.28708614324288771513e+03, 0.20594978222667077716e+03, + 0.19288227655848896802e+03, 0.94921067117853212380e+02, + 0.69140955720972257836e+02, 0.55178356755895123342e+02, + -0.83122585251114884386e+01, 0.40013469366442272701e+02, + -0.15792317852939380174e+02, 0.50469396145701965750e+01, + 0.16020769229158332791e+02, -0.27332507996877623668e+02, + 0.29798496774218243388e+02, -0.20935736399381863038e+02, + 0.51767925939255015066e+01, 0.11469843315978485165e+02, + -0.22676952465116215762e+02, 0.24530454491178119270e+02, + -0.16919263487647210553e+02, 0.33023080752877396193e+01, + 0.10687596013553262608e+02, -0.19644297411171944390e+02, + 0.20341286629991028434e+02, -0.12976561929165841391e+02, + 0.80807719782077791493, 0.11151857206003109368e+02, + -0.18259399106745259900e+02, 0.17911163988736308994e+02, + -0.10545571108054318188e+02, -0.75245475727966160129, + 0.11457284879563289337e+02, -0.17468613995767160674e+02, + 0.16569088550694303308e+02, -0.92626781190821070311e+01, + -0.15886193336449450086e+01, 0.11851939171167218845e+02, + -0.17764962879767935533e+02, 0.17248545694235900783e+02, + -0.10660362869587189039e+02, 0.52058016287758646090, + 0.94403627422691407389e+01, -0.15724010096401233483e+02, + 0.16282330879794105982e+02, -0.11237065734087604341e+02, + 0.27211274972653178850e+01, 0.59461895831076816421e+01, + -0.11537815857838950251e+02, 0.12086708562582115789e+02, + -0.75981311346942321805e+01, 0.19185331119712781600e+02, + -0.24226090208103506995e+02, -0.51305910783702524114e+01, + 0.29647015870669275017e+02, -0.46795507958716250130e+02, + 0.40921745824964197880e+02, -0.21331354501286117653e+02, + -0.12943524846732938016e+02, 0.40872228135998341259e+02, + -0.59379133491999077421e+02, 0.52833827566968906808e+02, + -0.31026372157317712919e+02, -0.62969109509438601080e+01, + 0.37490449053293453119e+02, -0.59159173488489059878e+02, + 0.55702294228157256839e+02, -0.37091720132535861865e+02, + 0.31380043028393331817e+01, 0.24848326419562752676e+02, + -0.44252911306341147224e+02, 0.40525014990752183053e+02, + -0.24508121071576603356e+02, -0.37567363139430853813e+01, + 0.23715978411960492167e+02, -0.34450353833880122068e+02, + 0.23633213410728110659e+02, -0.41166191766120512341e+01, + -0.22989491330842106720e+02, 0.37489659940939702665e+02, + -0.40183159623571448549e+02, 0.21264465590487869662e+02, + 0.40355215198115015340e+01, -0.33246097567255127103e+02, + 0.46356081196376941023e+02, -0.45716134027139361251e+02, + 0.23782661646043901982e+02, 0.25149079926567092791e+01, + -0.29805582323091954322e+02, 0.40186570048388858822e+02, + -0.35425291772417175196e+02, 0.17534502293277540730e+02, + 0.12887602808031047630e+02, -0.12978720181938564693e+02, + 0.54168227254314032848e+02, 0.33719025319791192885e+02, + 0.86733431465066630039e+02, 0.16860789558406810329e+03, + 0.19637361614774926011e+03, 0.32006176225998746077e+03, + 0.37184360212498313558e+03, 0.35695540389917448465e+03, + 0.35747607683845092197e+03, 0.13935528474409503019e+03, + -0.25386341339380496862e+02, -0.19338508771209222914e+03, + -0.33259071535867974490e+03, -0.14426842109228135769e+03, + -0.25478008133588566864e+02, 0.20727508233602983978e+03, + 0.27200527191985332820e+03, 0.33497417879126480500e+02, + -0.82469450285906361842e+02, -0.25837723567630217758e+03, + -0.10976770840649750482e+03, 0.15896473491915330101e+03, + 0.16260581601779074390e+03, 0.10635761509419086224e+03, + -0.15365839757760053885e+03, -0.21502256760602250552e+03, + 0.57340474268855231799e+02, 0.13447895010416979744e+03, + 0.13822165318364000086e+03, -0.84422735914986162697e+02, + -0.22964023294566152344e+03, 0.67705082897758614990e+02, + 0.12542444771810725967e+03, 0.90341391915145095481e+02, + -0.98440286199735240302e+02, -0.19456175633577103667e+03, + 0.13509889287968439930e+03, 0.12543802196680529448e+03, + -0.28049615405888278730e+02, -0.12280939783364280515e+03, + -0.71256917616491520562e+02, 0.18733415307873366373e+03, + 0.48222638909960977571e+02, -0.16207689996944512245e+03, + -0.38656211036588430829e+02, 0.99170392925350483893e+02, + 0.87178985861886317821e+02, -0.90478743409494327921e+02, + -0.12614758207894938380e+03, 0.13062456841633388649e+03, + 0.99492976223827668036e+02, -0.14595371548645641724e+03, + -0.35976200122717699514e+02, 0.75025995621700090510e+02, + 0.74223380848305211543e+02, -0.72270843052621927427e+02, + -0.12797220678176664421e+03, 0.18049938847890524585e+03, + 0.17520754822605976386e+02, -0.14901018784268524087e+03, + 0.41885996583240398650e+02, 0.62181881289389039580e+02, + 0.26421179162526662765e+02, -0.11774829971659325167e+03, + 0.41459115907582155813e+01, 0.15741352014664232684e+03, + -0.10598142495355355663e+03, -0.88566048187620253884e+02, + 0.14135402499338070470e+03, -0.48496304971513248816e+01, + -0.86481491522894046398e+02, 0.10071630895621572321e+02, + 0.66951471993971935603e+02, 0.11748258261155202220e+02, + -0.12879418401002027394e+03, 0.81101500041291274101e+02, + 0.91669065349456062108e+02, -0.15660825310861383741e+03, + 0.27711823013948215788e+02, 0.11520526864783016663e+03, + -0.92288700464839180881e+02, -0.34153900064575182682e+02, + 0.76478059771805305900e+02, -0.28233769547806636391, + -0.47732390637446648896e+02, -0.23354893430433214974e+02, + 0.10618895086491090751e+03, -0.53471301227954306512e+02, + -0.10094438013146691446e+03, 0.17187895668790767445e+03, + -0.65263425224877011033e+02, -0.99009878385714088722e+02, + 0.13943483499682727711e+03, -0.35100180408703216983e+02, + -0.68521319245130513309e+02, 0.55107938312070352538e+02, + 0.26684882012500338533e+02, -0.51523048664339910374e+02, + -0.94609972625397187329e+01, 0.59026869871337680706e+02, + -0.16740617245878517849e+02, -0.66118543284845245012e+02, + 0.69482186861196396421e+02, 0.35151413776921792476e+02, + -0.13599666335926283978e+03, 0.10696116040541930658e+03, + 0.40211972639399931495e+02, -0.16179295183589911744e+03, + 0.13726055147564011349e+03, 0.21193076311182075244e+01, + -0.11434566013853124389e+03, 0.10056481323698673691e+03, + -0.28117566764095686116, -0.68903375650986788514e+02, + 0.43483879065094818372e+02, 0.29066871893542884919e+02, + -0.60712605658756238824e+02, 0.25012595006119376251e+02, + 0.23723171241476318727e+02, -0.26562508756812235333e+02, + -0.81516616797791545679e+01, 0.19681238355880193325e+02, + 0.24045606986911661096e+02, -0.79799745858008705568e+02, + 0.72972432492444070817e+02, 0.13866261975379071458e+02, + -0.10982570108248448548e+03, 0.12064259324205913515e+03, + -0.26875003832353122846e+02, -0.89177192466156952833e+02, + 0.11864741999658961902e+03, -0.32530956124898096959e+02, + -0.87445562379586988300e+02, 0.12441772633758967004e+03, + -0.37837353064406634928e+02, -0.96814393536584859135e+02, + 0.15652418142316662397e+03, -0.83940014304158680147e+02, + -0.60688206864464724788e+02, 0.15406368979816875253e+03, + -0.11998527044725456392e+03, -0.58238926408693902914e+01, + 0.11103053339506392660e+03, -0.10769508386682062451e+03, + 0.70268197306724937690e+01, 0.95098839180291804496e+02, + -0.10557426178495053648e+03, 0.14880080601328668166e+02, + 0.97244817328816267832e+02, -0.13321279132616174934e+03, + 0.61461368334919789902e+02, 0.58321407807759214847e+02, + -0.12792628144200962481e+03, 0.93759084209022944378e+02, + 0.99448742286277802549e+01, -0.92816424163416726856e+02, + 0.86030719682424631856e+02, -0.72237511994140817251e+02, + -0.18042414529483338015e+02, 0.16587371223801613951e+03, + -0.17733923229496366503e+03, 0.14320970279872959452e+02, + 0.16537818107179899130e+03, -0.22125432423679851013e+03, + 0.83673748844935900593e+02, 0.10734872478172435706e+03, + -0.20179355906016397171e+03, 0.10325582604943025444e+03, + 0.69648166333428150665e+02, -0.16839938122162246259e+03, + 0.82966996932227971229e+02, 0.80728124505121186871e+02, + -0.17540441935537336349e+03, 0.84583732282912379219e+02, + 0.89190426079217715483e+02, -0.19431568990981463685e+03, + 0.10820372204191498611e+03, 0.66964592933183027412e+02, + -0.17518083766588532058e+03, 0.93086431211754643300e+02, + 0.70528690702439845950e+02, -0.15405193774697448816e+03, + 0.42100644641843722127e+02, 0.13510022797249015980e+03, + -0.19897391879135284398e+03, 0.41456872454895901114e+02, + 0.17697709860701004914e+03, -0.25034446634668194065e+03, + 0.72249480066257561361e+02, 0.16812870755067018536e+03, + -0.23982560546613129304e+03, 0.42940364114530105155e+02, + 0.20241706980893860646e+03, -0.24600693685242740116e+03, + 0.54054220874067686609e+01, 0.26184617667868775470e+03, + -0.28985529882791797718e+03, 0.20253986418176243234e+02, + 0.25575350119197494791e+03, -0.27281999747110847920e+03, + 0.86980442678925715683e+01, 0.22334677002513527100e+03, + -0.19145759755082340803e+03, -0.64457958892101387960e+02, + 0.21675741846702416638e+03, -0.10221037574560105554e+03, + -0.15108383776726441283e+03, 0.21108765656211855344e+03, + -0.13550535568142271003e+02, -0.21595599387003463221e+03, + 0.16829831820101833273e+03, 0.91987917443903356229e+02, + -0.25292429615430344825e+03, 0.73540421483211318332e+02, + 0.22950821512361579835e+03, -0.29117530446242250264e+03, + -0.12110312066571667700e+02, 0.31901897391069252308e+03, + -0.28010011669728993411e+03, -0.68181526573283520065e+02, + 0.27752559774670214665e+03, -0.12228071692711185392e+03, + -0.17457612278819570406e+03, 0.17920250435066429873e+03, + 0.10026257911225853547e+03, -0.27931100925276086855e+03, + 0.67049045791449799481e+02, 0.24663231166327148003e+03, + -0.23488872095904491744e+03, -0.12028565412806148061e+03, + 0.30892696509692154905e+03, -0.60086711086960953310e+02, + -0.31250432786576402577e+03, 0.26995352095660501845e+03, + 0.11894900493497449645e+03, -0.32253727607131361310e+03, + 0.57799626336897759415e+02, 0.22925078332239164070e+03, + -0.97746081400664280636e+02, -0.25467941282315712215e+03, + 0.21983586878028307865e+03, 0.19945273936488970890e+03, + -0.39821950239129859028e+03, 0.37347985814929252513e+02, + 0.33503801378200404315e+03, -0.17745976198445839600e+03, + -0.23387412824326011673e+03, 0.18873709254659866019e+03, + 0.22277396972690974053e+03, -0.29399565584642397198e+03, + -0.15121664702582339146e+03, 0.35638149626690466221e+03, + 0.36206797627187569333e+02, -0.37684112924289939883e+03, + 0.48662440695682647629e+02, 0.37286549123154861718e+03, + -0.15883983587641861845e+03, -0.30555067822522340748e+03, + 0.14645493693635049226e+03, 0.31666508174680569709e+03, + -0.17379311133827158642e+03, -0.38539320768978001297e+03, + 0.30353292663802625384e+03, 0.27869724658636096137e+03, + -0.28398069156298635107e+03, -0.25678446894097322684e+03, + 0.18857347582528635144e+03, 0.37696345856316656864e+03, + -0.25933378310431260161e+03, -0.39590247010650688253e+03, + 0.27095722845185389360e+03, 0.33539919003706881995e+03, + -0.12868937866263624414e+03, -0.42366086862104094735e+03, + 0.12101219283214220468e+02, 0.51613047471425977619e+03, + 0.15793250913344222042e+02, -0.44318562173273244298e+03, + -0.19789517310893648983e+03, 0.33882989134416754951e+03, + 0.41746046908719154089e+03, -0.26453846145387791466e+03, + -0.49049790378008390235e+03, 0.30051043268870532982e-01, + 0.48222150478668231699e+03, 0.30724508715961263761e+03, + -0.34263772368732134055e+03, -0.52799629315277263686e+03, + -0.20491968283666235351e+02, 0.53835363011513231868e+03, + 0.39587370041577247548e+03, -0.17347918706776351883e+03, + -0.62614490147011815679e+03, -0.35733963678133312669e+03, + 0.32664452060453726290e+03, 0.59978324174155261517e+03, + 0.43351685539250752299e+03, -0.27952110778868882335e+03, + -0.69857614512901375292e+03, -0.54225867640419028248e+03, + -0.94855878348084374352e+02, 0.61412256644951651197e+03, + 0.78796264042810457795e+03, 0.59978775330163944091e+03, + 0.14056366542533569941e+03, -0.55259452543932627577e+03, + -0.86742772416412253733e+03, -0.11129984666100697268e+04, + -0.10804913973433810952e+04, -0.81044564219156882245e+03, + -0.70733477274682525149e+03, -0.37786530298511240744e+03, + -0.26734745685657708236e+03, -0.18487331321321045152e+03, + -0.76191060027008825628e+01, -0.11257221555204812091e+03, + 0.33819666503699416182e+02, -0.15814966408501438977e+02, + -0.40487979986833906310e+02, 0.67233045116323779666e+02, + -0.73580327200166863122e+02, 0.50564542275033389274e+02, + -0.10486087062358359745e+02, -0.31630395426724735586e+02, + 0.59557072800403268786e+02, -0.63405710393840699624e+02, + 0.43034311703571056285e+02, -0.74399228811739526179e+01, + -0.28818867961014767332e+02, 0.51839115365616088127e+02, + -0.53353606082016710843e+02, 0.33961675444526377987e+02, + -0.21381556420141478725e+01, -0.29105535523304453704e+02, + 0.47734317854093731626e+02, -0.46970857528664019753e+02, + 0.27914431341180982571e+02, 0.15019316188040670035e+01, + -0.29583944816279988288e+02, 0.45710980292835728278e+02, + -0.44069947245847203021e+02, 0.25852540444316762347e+02, + 0.16870990552538613905e+01, -0.27990477692199863924e+02, + 0.43426271701033222428e+02, -0.42639641427205155821e+02, + 0.26508808048000020108e+02, -0.14275997788652143861e+01, + -0.23117000873570312081e+02, 0.38254708783815679851e+02, + -0.38836811948379143189e+02, 0.25283006434167859311e+02, + -0.31504380482739535729e+01, -0.18987278589574295040e+02, + 0.32840127341793589721e+02, -0.33397856797492053715e+02, + 0.20760998504165659284e+02, -0.40280041090136570858e+02, + 0.47137805955117158874e+02, 0.15538681252794694032e+02, + -0.65147072011721121498e+02, 0.98416882753552044960e+02, + -0.83890165153139150789e+02, 0.43206654616085771181e+02, + 0.25750846000208202469e+02, -0.79170548701674221093e+02, + 0.11308224990716873037e+03, -0.96401411732933752319e+02, + 0.51943361741072038740e+02, 0.20917857209342400893e+02, + -0.77294400017564029781e+02, 0.11296252872988182503e+03, + -0.97521602168813529943e+02, 0.54915586141884119797e+02, + 0.14568214147876307862e+02, -0.66098111403983537571e+02, + 0.96699460251741768957e+02, -0.78162468425509729286e+02, + 0.36629684343616908393e+02, 0.26425097562410165608e+02, + -0.66883352341494500592e+02, 0.84442708110535150468e+02, + -0.54853093042185541606e+02, 0.80380681131384719151e+01, + 0.52392611791315999881e+02, -0.82909817212441083711e+02, + 0.86456823668988448617e+02, -0.43632803386390456524e+02, + -0.11108085108261377627e+02, 0.71723618934298556837e+02, + -0.95467541425803162269e+02, 0.88896037921439599927e+02, + -0.37689751413706261474e+02, -0.19878671735910447893e+02, + 0.75715284497424576671e+02, -0.91592148287392475936e+02, + 0.72983745211029955158e+02, -0.26441966512005365075e+02, + -0.44166576374209398637e+02, 0.45403112369717000263e+02, + -0.12977399096877118723e+03, -0.66203679015478130054e+02, + -0.18258368622150817373e+03, -0.37274581323716330417e+03, + -0.40457988923814849613e+03, -0.70200573501376152308e+03, + -0.78531077747416134116e+03, -0.76847978253131395832e+03, + -0.77115409671086877097e+03, -0.28634839072414916927e+03, + 0.38573199103044110814e+02, 0.42957422257987258263e+03, + 0.70195584840438755236e+03, 0.31335130918909464981e+03, + 0.57088883620435638022e+02, -0.45153197067801397679e+03, + -0.57342791161211664530e+03, -0.80292094953360674481e+02, + 0.18232052138175816935e+03, 0.55160002725253411882e+03, + 0.23474256837542478138e+03, -0.33949524377939252417e+03, + -0.34812470704147602873e+03, -0.23096996424858465957e+03, + 0.33514671798971568251e+03, 0.45353546162554715693e+03, + -0.11666130832704857312e+03, -0.29069621496906313496e+03, + -0.29916258330946743627e+03, 0.18982249664840804826e+03, + 0.47866725660270321896e+03, -0.13000194410631644359e+03, + -0.28181718593179493837e+03, -0.18586137749633786598e+03, + 0.21065128105091062594e+03, 0.40970093311798586910e+03, + -0.27662304244226135097e+03, -0.28383933650679722405e+03, + 0.73346936074711777565e+02, 0.25525368106948141644e+03, + 0.15336985591281106167e+03, -0.39495005580272317047e+03, + -0.11476162084030738697e+03, 0.36015561257397376949e+03, + 0.72582601907017320286e+02, -0.20803608478950096128e+03, + -0.18387868685955942283e+03, 0.18411783486163832890e+03, + 0.28446647913700661547e+03, -0.29462045691801421299e+03, + -0.20191910810797210729e+03, 0.30816137211967327403e+03, + 0.73519274235877247747e+02, -0.14951869707931626863e+03, + -0.17550062970108689342e+03, 0.17287687320502541866e+03, + 0.25867577150317623591e+03, -0.37693910627083641884e+03, + -0.39804590749777176484e+02, 0.31398280523830101174e+03, + -0.78430525956468159166e+02, -0.14777624601009139838e+03, + -0.41955289500235032563e+02, 0.24025154291906079607e+03, + -0.10537610835934814180e+01, -0.34044018284018068243e+03, + 0.22625689465967448655e+03, 0.19324232879323633938e+03, + -0.30738962903980507235e+03, 0.14772597587658550466e+02, + 0.18157598934269256574e+03, -0.18226786552275761721e+02, + -0.14708404696160692993e+03, -0.20525960937501341874e+02, + 0.26999395673282771213e+03, -0.16675865636785746915e+03, + -0.20337588440640820409e+03, 0.34086480310483796075e+03, + -0.61272262973925812446e+02, -0.24954688156301861568e+03, + 0.20531636932609109181e+03, 0.61697771816649336074e+02, + -0.15044548293238460701e+03, -0.12016585503585483607e+02, + 0.11131701899285006618e+03, 0.46802180611072323302e+02, + -0.23100267170829158658e+03, 0.12416135387461102368e+03, + 0.20271518573111515593e+03, -0.35378659683552524484e+03, + 0.12783797280924935080e+03, 0.21880222035181333240e+03, + -0.29838784720137294926e+03, 0.67848357081921406575e+02, + 0.15943613132933694487e+03, -0.13284480388885199886e+03, + -0.43881690124876783443e+02, 0.10190873471375154224e+03, + 0.21810686217346880511e+02, -0.12054553467713492410e+03, + 0.23823362945650419675e+02, 0.15698815530810307450e+03, + -0.16370362863332400138e+03, -0.64653985976731505048e+02, + 0.28764154195443461504e+03, -0.23339028972296671327e+03, + -0.74808305638760060674e+02, 0.33075438712338768710e+03, + -0.27730585855108142823e+03, -0.18208119754211782748e+02, + 0.25219937659443687039e+03, -0.21425681962709703043e+03, + -0.90070196722220057239e+01, 0.16368910693605087658e+03, + -0.11216623636687292276e+03, -0.44518187418568409441e+02, + 0.11752172478414732382e+03, -0.49024189681635057525e+02, + -0.46327010257137352767e+02, 0.44283120442521706650e+02, + 0.35527459055672359511e+02, -0.61754960291210096557e+02, + -0.34585975120442462583e+02, 0.16025253406964080227e+03, + -0.15392583834948618460e+03, -0.23577472654184099099e+02, + 0.22226326863774866638e+03, -0.24160258497632355557e+03, + 0.40727854631644163419e+02, 0.20414193526945047097e+03, + -0.26064986607361947790e+03, 0.68230248108763419168e+02, + 0.19619602847649383648e+03, -0.28052852983483637672e+03, + 0.96770746232304688306e+02, 0.19370960437544817978e+03, + -0.32681320452280630207e+03, 0.17846257373310714911e+03, + 0.12389163772828692345e+03, -0.31773387919008092695e+03, + 0.24118834621820698771e+03, 0.28431118030030649635e+02, + -0.25040049130770020724e+03, 0.23706796424552612734e+03, + -0.13810713410298856019e+02, -0.21225926661013380681e+03, + 0.24006657394890200408e+03, -0.48061493993352470966e+02, + -0.19334479577312478682e+03, 0.27474069208129571962e+03, + -0.12748684693440507942e+03, -0.12197381114813576630e+03, + 0.26480489958304298170e+03, -0.18754785887267809130e+03, + -0.35563048327970818718e+02, 0.21072404608760305678e+03, + -0.19103449379535163644e+03, 0.13008623161945070024e+03, + 0.61154034238855025762e+02, -0.31963703434281012505e+03, + 0.30970610272891042314e+03, 0.57479429592174247077e+01, + -0.31767145826591939795e+03, 0.38037362740187796817e+03, + -0.98360965378326170594e+02, -0.24533485572175314360e+03, + 0.37859038592067287254e+03, -0.15341142308333570554e+03, + -0.18009896662342046625e+03, 0.34003264737491429059e+03, + -0.14340899861909056767e+03, -0.18336811535981661336e+03, + 0.35169706462556490578e+03, -0.15570077918232090042e+03, + -0.18924806294850461086e+03, 0.38237797288697481690e+03, + -0.19804302579565234055e+03, -0.15381909162578091355e+03, + 0.36065725224263644577e+03, -0.18605119301820815281e+03, + -0.15493489903659201445e+03, 0.33727834136981289248e+03, + -0.12795613976218221808e+03, -0.23160967259134051233e+03, + 0.39075546494665724140e+03, -0.12375236554000652234e+03, + -0.28622558572625104034e+03, 0.45032216965512043316e+03, + -0.14865936852235049059e+03, -0.29009054890940842597e+03, + 0.44184294762402436163e+03, -0.10425393114227993863e+03, + -0.34059900075851220436e+03, 0.44215303961183570891e+03, + -0.36625863963333664231e+02, -0.42744932834542612454e+03, + 0.48140820868658937570e+03, -0.17735764887905805409e+02, + -0.44827504956849338669e+03, 0.45521043839246141260e+03, + 0.24064380250656160598e+02, -0.42058158780377578978e+03, + 0.33025677611266814893e+03, 0.15282542753629476806e+03, + -0.41999991047958326362e+03, 0.18247360370521798245e+03, + 0.30516311924866175787e+03, -0.41816248866913974780e+03, + 0.38243010096762922956e+02, 0.40729299680722539279e+03, + -0.33280419806451095610e+03, -0.15305984339823996265e+03, + 0.47289503713630688253e+03, -0.16694286565550027035e+03, + -0.38505713497344282814e+03, 0.51989073978318469926e+03, + -0.18886177939498469125, -0.53194021223778759122e+03, + 0.45415600381727085733e+03, 0.16250658379477934545e+03, + -0.50754410053481933573e+03, 0.18805692615686618296e+03, + 0.37031636784860717171e+03, -0.36781677157325401595e+03, + -0.17019926764979825862e+03, 0.52197802487921694592e+03, + -0.14090857598472058498e+03, -0.44265388332221419887e+03, + 0.43637431836248475747e+03, 0.20695718972338548269e+03, + -0.56027143008605469277e+03, 0.12374392094659185659e+03, + 0.54055764754118160909e+03, -0.45855560838639081567e+03, + -0.23726324569325038283e+03, 0.57890447571261529447e+03, + -0.63328339313341103889e+02, -0.47480831510977071730e+03, + 0.21968629917879485447e+03, 0.46080049219669058402e+03, + -0.43489347763350843934e+03, -0.31042575969053621066e+03, + 0.67695311903465380965e+03, -0.40411922614915532392e+02, + -0.60752852792005387528e+03, 0.29130944313946866941e+03, + 0.47146216572914818244e+03, -0.37783779330037083355e+03, + -0.39755388985300953664e+03, 0.54647673083319546095e+03, + 0.26317401924445204031e+03, -0.64465798059631856631e+03, + -0.65087120739951572546e+02, 0.68506278188604733259e+03, + -0.89881158460898888052e+02, -0.66758551550757215409e+03, + 0.26052348013747712230e+03, 0.59430061951352695360e+03, + -0.28898335664910536025e+03, -0.58712941127341082392e+03, + 0.35434648251701537447e+03, 0.65373602777115331719e+03, + -0.50756453913846348769e+03, -0.53544125371932705093e+03, + 0.51093341382725753874e+03, 0.50919896094661999086e+03, + -0.39440490157875211708e+03, -0.65444677130303591639e+03, + 0.46666761997991869748e+03, 0.70493166679984642542e+03, + -0.45850369455519182793e+03, -0.65018482326430967078e+03, + 0.25018038267409983177e+03, 0.79112163447168632047e+03, + -0.58956303325724370268e+02, -0.90351367841535716252e+03, + -0.58869500267233661361e+02, 0.81739708826978119305e+03, + 0.38391002201601850174e+03, -0.65830247617027566776e+03, + -0.72734804217723876718e+03, 0.45940129557136123140e+03, + 0.90673424531979276253e+03, 0.77502948245102896152e+01, + -0.89874793267949087294e+03, -0.55005945556546862463e+03, + 0.62030761681053888879e+03, 0.97265413501874024860e+03, + 0.30538894187707374073e+02, -0.97290812333046847016e+03, + -0.74633088567228787724e+03, 0.33846949315212009424e+03, + 0.11379452014501564463e+04, 0.64619928292872282327e+03, + -0.56924717692358410659e+03, -0.11424099878983329290e+04, + -0.75318214080543179989e+03, 0.48793889120033730933e+03, + 0.12779968167786939830e+04, 0.10238758462831515317e+04, + 0.12852360919051236010e+03, -0.10827644393236926135e+04, + -0.14682893584592563911e+04, -0.11042627606813418879e+04, + -0.22781433968354502895e+03, 0.97207635645063464835e+03, + 0.16235130967034187961e+04, 0.20307927964362768307e+04, + 0.19615932240204983827e+04, 0.15269790923606794877e+04, + 0.12509273877435443865e+04, 0.72340896915163523317e+03, + 0.48910993664490877109e+03, 0.30768164545134783339e+03, + 0.67194125471995477028e+02, 0.15064502562856642953e+03, + -0.24537226256772164845e+02, 0.23868061903852026973e+02, + 0.45269528023312588516e+02, -0.71188910100393698599e+02, + 0.79100910850925131967e+02, -0.53252669586619823860e+02, + 0.93787411547754366836e+01, 0.36662873320894433959e+02, + -0.66748178084431700086e+02, 0.70102793813065687800e+02, + -0.46695459101358444798e+02, 0.66219658984354516917e+01, + 0.33871328040499236067e+02, -0.59339005414969598462e+02, + 0.60624748558432457912e+02, -0.38486185706744798551e+02, + 0.24365280612909070435e+01, 0.32941206956513227055e+02, + -0.54177254776794356417e+02, 0.53649343179212500843e+02, + -0.32540503797254281437e+02, -0.34936252058020550448, + 0.31984327950787033501e+02, -0.50503008188598741413e+02, + 0.49347696503657665801e+02, -0.29748441412088521218e+02, + -0.33686262731354349453, 0.29247878774101657484e+02, + -0.46337427467788259605e+02, 0.45664104551028643186e+02, + -0.28186097800253264722e+02, 0.94798253107823138297, + 0.25585168903392929707e+02, -0.41655515505068542836e+02, + 0.41635091716169284837e+02, -0.26078825208622191667e+02, + 0.12231720970162498485e+01, 0.23368303497466225593e+02, + -0.38484499707591517392e+02, 0.38588858900678594921e+02, + -0.23855264356975922624e+02, 0.38369559907424438450e+02, + -0.41681182916082228473e+02, -0.19174728256432189255e+02, + 0.64963551795957059198e+02, -0.94288875116641804652e+02, + 0.78097368094228698965e+02, -0.39009605243456213941e+02, + -0.25046262685610003018e+02, 0.72157866364474045895e+02, + -0.10054929252721971977e+03, 0.81732148011407232957e+02, + -0.39552677853774923733e+02, -0.26633896234982074702e+02, + 0.74022976681221479112e+02, -0.10086879928364494674e+03, + 0.79758713656691242022e+02, -0.36130091738168538029e+02, + -0.29249453765429507257e+02, 0.73188519541142028402e+02, + -0.94882345717000973195e+02, 0.69036897143221608530e+02, + -0.23485328914162980851e+02, -0.39347744597445299064e+02, + 0.76333940458022908615e+02, -0.88627875904441864918e+02, + 0.54288004782741104748e+02, -0.45444273364791554215e+01, + -0.56113733949895276965e+02, 0.84926542870497456761e+02, + -0.85846438378100387467e+02, 0.41250342673323615372e+02, + 0.13595395352105297704e+02, -0.72113848058551937470e+02, + 0.92503028286176444794e+02, -0.82349919645094530551e+02, + 0.29065775205412251125e+02, 0.28310432337866725305e+02, + -0.81169501097292453551e+02, 0.92163312056152108198e+02, + -0.67949458634164614068e+02, 0.16618793347609607025e+02, + 0.56034867882061107025e+02, -0.57472248365684237115e+02, + 0.13639267061530924252e+03, 0.61611912250029739369e+02, + 0.17410111780354827715e+03, 0.37532440009778815693e+03, + 0.38112714417339071815e+03, 0.70049861073550982837e+03, + 0.75783577111919566960e+03, 0.75475551083196205582e+03, + 0.75789468730875807978e+03, 0.27020695851603369420e+03, + -0.25002947879436906220e+02, -0.43224482110304722937e+03, + -0.67773515231353394483e+03, -0.30973011308884605342e+03, + -0.57883336844917316455e+02, 0.44744854392824822753e+03, + 0.55315631613079904128e+03, 0.85121837228991651614e+02, + -0.18231727119438386353e+03, -0.53842116311574977772e+03, + -0.22811267504246384874e+03, 0.32971929621678293643e+03, + 0.34164495765330610766e+03, 0.22669500962836846725e+03, + -0.33089302863291447920e+03, -0.43894641823975621264e+03, + 0.10996351401137847859e+03, 0.28592284993988266706e+03, + 0.29460526589555513510e+03, -0.19181433308658571946e+03, + -0.45881731379487291633e+03, 0.11704507939609675304e+03, + 0.28368874685497758037e+03, 0.17793819560805920332e+03, + -0.20798019719266000038e+03, -0.39296637100463016168e+03, + 0.25889846697940475906e+03, 0.29010993176362973145e+03, + -0.82054711933232425736e+02, -0.24430632528402696835e+03, + -0.14875652033122281637e+03, 0.37871005073798301055e+03, + 0.12392630543015508238e+03, -0.36504147287259763743e+03, + -0.60400912587113467112e+02, 0.19795441270719368276e+03, + 0.17862984637998266635e+03, -0.17257889973801081851e+03, + -0.28997428809405556649e+03, 0.30117075700889176915e+03, + 0.18638257044731062706e+03, -0.29512778305583634619e+03, + -0.71770632241642758231e+02, 0.13988355430721156836e+03, + 0.18239521402825101859e+03, -0.18165166974852684234e+03, + -0.24152959388114575745e+03, 0.36086450952571118478e+03, + 0.41425389568784289906e+02, -0.30425606527876112750e+03, + 0.69792469402589460969e+02, 0.15350370703407000406e+03, + 0.32088579157522637786e+02, -0.22797328147533104925e+03, + -0.28676156647641652953e+01, 0.33356881413802028646e+03, + -0.21947292452678459540e+03, -0.19198782400311972651e+03, + 0.30360510361708838900e+03, -0.16668466571378115049e+02, + -0.17642774365150700078e+03, 0.17414321552575913188e+02, + 0.14425523391352646740e+03, 0.18740097831733773859e+02, + -0.26131336154137500216e+03, 0.15908059271992982531e+03, + 0.20334059923187018626e+03, -0.33709273178083805078e+03, + 0.61645985913571742287e+02, 0.24533986594503429046e+03, + -0.20553839692979545362e+03, -0.52698748320959325042e+02, + 0.13803846952462237141e+03, 0.20210228088531948742e+02, + -0.11464558681239043381e+03, -0.44260807078649442303e+02, + 0.22931138541921760066e+03, -0.12930506643240900644e+03, + -0.18752026875846053144e+03, 0.33484266833413983022e+03, + -0.11618423606823296268e+03, -0.21832189823840454324e+03, + 0.29049857789970792510e+03, -0.59626145584798351251e+02, + -0.16658860063582977773e+03, 0.14202733512861064469e+03, + 0.32244083419554705472e+02, -0.93126689517910591576e+02, + -0.22021841071513236443e+02, 0.11239763493480002410e+03, + -0.12854758506628312986e+02, -0.16652759847314152353e+03, + 0.17257900726176586659e+03, 0.54220822316824758502e+02, + -0.27803510260584420166e+03, 0.23166175074292627301e+03, + 0.63647394731261307754e+02, -0.30997100366244069392e+03, + 0.25679509975113126075e+03, 0.29753808835883166495e+02, + -0.25338902379356431993e+03, 0.20949942862484303419e+03, + 0.15644967720895254004e+02, -0.17225659021325051867e+03, + 0.12450916414510679431e+03, 0.29364902929140175303e+02, + -0.10459850500391047490e+03, 0.43745886085735790516e+02, + 0.42449963544630236356e+02, -0.34118961660187665075e+02, + -0.48162073941352105066e+02, 0.75001830373943391805e+02, + 0.21257827841370747990e+02, -0.14897383895788667019e+03, + 0.14926561006668529785e+03, 0.17625126130703069549e+02, + -0.20655759889838216736e+03, 0.22260935635175965785e+03, + -0.26447302037799225616e+02, -0.20975112144337182940e+03, + 0.25953791510842785328e+03, -0.64971236637580560114e+02, + -0.19952919539502912016e+03, 0.28612129206173716511e+03, + -0.10788490600963025656e+03, -0.17770044513574697476e+03, + 0.31199776039925666282e+03, -0.17274311575074747793e+03, + -0.11677540576200640032e+03, 0.30122752077447023566e+03, + -0.22346825196657741230e+03, -0.40297400902941475920e+02, + 0.25468310723955261210e+03, -0.23683943197817171722e+03, + 0.12659431221787830424e+02, 0.21401885743527262207e+03, + -0.24535008040261197948e+03, 0.59348892038377456970e+02, + 0.17771624635811741655e+03, -0.26084401009740679456e+03, + 0.12210703904144536125e+03, 0.11603405037850855308e+03, + -0.25067729770509993159e+03, 0.17199316721629770655e+03, + 0.46738417946685629545e+02, -0.21590359593015890027e+03, + 0.19234063865523597769e+03, -0.10926590699237810611e+03, + -0.79947105615518694322e+02, 0.29647917862140837997e+03, + -0.26440378161716893146e+03, -0.24752301274180517510e+02, + 0.28654426051119344265e+03, -0.31485995868690866928e+03, + 0.49263289996527348080e+02, 0.24439349576627103033e+03, + -0.33104139412478491522e+03, 0.10243987964005542324e+03, + 0.19945263432314857255e+03, -0.32192995618000804825e+03, + 0.11922887687059005657e+03, 0.18719743987002462404e+03, + -0.33169812635722934147e+03, 0.13990945548315667679e+03, + 0.18029861740117812019e+03, -0.34979537377355546823e+03, + 0.17073298337528194679e+03, 0.15744745133524992298e+03, + -0.34300782845139684696e+03, 0.17231606323982313711e+03, + 0.15540696341934832958e+03, -0.33566825899217906226e+03, + 0.14953514181392279170e+03, 0.19010446608000813740e+03, + -0.36012916611501640318e+03, 0.14321794667347882068e+03, + 0.22157027035770633461e+03, -0.38676626531014977672e+03, + 0.14226788536500066584e+03, 0.23842555097785631801e+03, + -0.38501486703210980522e+03, 0.10711640775408527304e+03, + 0.27722361452984682728e+03, -0.38076638072917432964e+03, + 0.51390353451518059558e+02, 0.33638887111989612322e+03, + -0.38699933349197857524e+03, 0.58780521364522924088e+01, + 0.37100932406732988511e+03, -0.35943732247375044153e+03, + -0.54336941367469854924e+02, 0.37769437762988451368e+03, + -0.27352113763230903487e+03, -0.16057398458704693667e+03, + 0.38715885199672430872e+03, -0.16149791297054733263e+03, + -0.28018107517187451094e+03, 0.38108908834890632988e+03, + -0.37671145935202055455e+02, -0.36736882581999685726e+03, + 0.30942922110413149994e+03, 0.12329050994637856320e+03, + -0.42259270334391544566e+03, 0.17380082440315879921e+03, + 0.30453545849063965534e+03, -0.43811409266915455873e+03, + 0.11787969688533058488e+02, 0.42899317008977436672e+03, + -0.35473688893113740050e+03, -0.16926251889990876975e+03, + 0.44361652302815508619e+03, -0.14039729150420055248e+03, + -0.35681448107235036105e+03, 0.34680223460975156513e+03, + 0.14078995750838180356e+03, -0.46405996037193182246e+03, + 0.13645912552475331836e+03, 0.37973012895159382651e+03, + -0.38579849495733196818e+03, -0.16988289703337588321e+03, + 0.48388982552590903197e+03, -0.11770770753689778587e+03, + -0.44785008229473658048e+03, 0.37290448844870979883e+03, + 0.22211010547805904025e+03, -0.49724628305340917223e+03, + 0.24940931076279071021e+02, 0.45393702689278325124e+03, + -0.22181290936422601590e+03, -0.39639202018023581786e+03, + 0.40090608847359948186e+03, 0.23270466889700699653e+03, + -0.55391109714042227097e+03, 0.16006805691652569834e+02, + 0.52503833585476934331e+03, -0.23018018509046308395e+03, + -0.44091302425484821015e+03, 0.35064377470642608614e+03, + 0.34153171050970422584e+03, -0.48461352392930223232e+03, + -0.21792544091819559071e+03, 0.55580430553291364504e+03, + 0.55081472223050361947e+02, -0.59166619373173000440e+03, + 0.76003055541871844980e+02, 0.57437466793546764166e+03, + -0.20834991286639353802e+03, -0.54088735185216864920e+03, + 0.26571057614941952352e+03, 0.51702368017723449611e+03, + -0.33343980575579047354e+03, -0.53537139953886844523e+03, + 0.41165717051436701013e+03, 0.48043927520513443596e+03, + -0.43450570836459712609e+03, -0.47568323875312427162e+03, + 0.38138511008963342874e+03, 0.54461967275168149172e+03, + -0.40296054196874143827e+03, -0.59627360799420489457e+03, + 0.36741538804606830126e+03, 0.59845441447462428641e+03, + -0.23372832001130657886e+03, -0.69697880215183602104e+03, + 0.75924807859761116902e+02, 0.75770485201230178518e+03, + 0.74910674228726435331e+02, -0.72047061453410719878e+03, + -0.34562606789202931168e+03, 0.59622961215131829249e+03, + 0.61213166249056939705e+03, -0.38629134820033129927e+03, + -0.79442197153200140747e+03, -0.12866932517220098120e+02, + 0.79348704814447876288e+03, 0.47368139076426899692e+03, + -0.54008109872910551985e+03, -0.84731901462446114692e+03, + -0.26223052807901598982e+02, 0.84256799426535599196e+03, + 0.66408040845842663202e+03, -0.30985651891991216189e+03, + -0.98438478061744933711e+03, -0.56056201254122356659e+03, + 0.47950894268394910114e+03, 0.10233884003058492453e+04, + 0.63163269685693069277e+03, -0.41172750939336543752e+03, + -0.11110177892843473728e+04, -0.91584686901244788260e+03, + -0.80268298961188875751e+02, 0.91626778322976235813e+03, + 0.12947940408515507897e+04, 0.97156956088919105241e+03, + 0.17262038388610088191e+03, -0.81467828913572895999e+03, + -0.14437989986204750039e+04, -0.17639597806127874264e+04, + -0.16976573749630410930e+04, -0.13642651960442206018e+04, + -0.10555199240188985641e+04, -0.65721750817744441520e+03, + -0.42231042466163944482e+03, -0.24931403715812641053e+03, + -0.94554753738909255389e+02, -0.92705739526060838784e+02, + -0.52451662471980426972e+01, -0.16537844897084106321e+02, + -0.19991851958062433425e+02, 0.26478868324811884349e+02, + -0.30990837815245456000e+02, 0.20254407359507037967e+02, + -0.30998094849370820825e+01, -0.15055307719189206850e+02, + 0.26721665233858502120e+02, -0.27728476091206278653e+02, + 0.18088501777824088634e+02, -0.18790093451280136527e+01, + -0.14378217820248126557e+02, 0.24506528482124014801e+02, + -0.24853617641620250112e+02, 0.15755728608417358672e+02, + -0.10522371066283437990e+01, -0.13377798953450550812e+02, + 0.22111063110988709468e+02, -0.22063513726642170809e+02, + 0.13692360335544298877e+02, -0.50853197283101980730, + -0.12261980347583563145e+02, 0.19857213171762481352e+02, + -0.19621959543066708420e+02, 0.12017554463337352999e+02, + -0.19159963869004786874, -0.11217282621902262107e+02, + 0.17971943495018503967e+02, -0.17702317038523602832e+02, + 0.10790792388343570352e+02, -0.39857058638472803169e-01, + -0.10384761316448690494e+02, 0.16608613173237323224e+02, + -0.16407782976898715788e+02, 0.10031648508830535604e+02, + 0.58164123647595367822e-02, -0.98662452061967904626e+01, + 0.15863608335224805401e+02, -0.15790330258791573925e+02, + 0.97327332634432295322e+01, -0.13564561408044541579e+02, + 0.13701629795405118273e+02, 0.82252402088898755039e+01, + -0.23946140988291048757e+02, 0.33524136716169962824e+02, + -0.26918216335718174292e+02, 0.12825997613925817831e+02, + 0.95005932820850400589e+01, -0.25078975891950342714e+02, + 0.33906761068189190667e+02, -0.26193906858483792632e+02, + 0.11098088331246607652e+02, 0.11618899606586131412e+02, + -0.26689624439452543925e+02, 0.34189176862877566521e+02, + -0.24818437100916199256e+02, 0.84337583971588401255e+01, + 0.14559245607190687721e+02, -0.28642840680301372203e+02, + 0.34166311022445505330e+02, -0.22602207770622467109e+02, + 0.47501482326491961672e+01, 0.18243387740538928199e+02, + -0.30713091000327704450e+02, 0.33550311484322868694e+02, + -0.19320578596106418701e+02, -0.20826891226014992466e-02, + 0.22501357256692855913e+02, -0.32564423731813327834e+02, + 0.31976599333037981410e+02, -0.14746981230704159671e+02, + -0.57910074337510639708e+01, 0.27029858530896625268e+02, + -0.33737919112838191893e+02, 0.29024230614396913097e+02, + -0.87209022994805636131e+01, -0.12479153184006950283e+02, + 0.31238554396117390155e+02, -0.33965405911190138966e+02, + 0.23469430031218596611e+02, -0.31769107607328006537e+01, + -0.24203925477077838480e+02, 0.24689382367532616058e+02, + -0.52227443103481142828e+02, -0.21741301815755647908e+02, + -0.61687715620051442045e+02, -0.14001423724003112170e+03, + -0.13402761847177924892e+03, -0.25910332583941362827e+03, + -0.27250402457414912760e+03, -0.27544506358681235270e+03, + -0.27683850389618544341e+03, -0.95211805253487469258e+02, + 0.51698528886848515995e+01, 0.16092225843204946045e+03, + 0.24384253442483384333e+03, 0.11359062053076134191e+03, + 0.21766398126409722380e+02, -0.16462488876836115992e+03, + -0.19875290930088152663e+03, -0.33040668695070884553e+02, + 0.67555072694573553349e+02, 0.19555441374256568565e+03, + 0.82396400469327389260e+02, -0.11901320584617248244e+03, + -0.12488854766421998477e+03, -0.82378865316374557892e+02, + 0.12097340561875324738e+03, 0.15853677766438869412e+03, + -0.38953925464602747297e+02, -0.10437751583987821391e+03, + -0.10773561197748799145e+03, 0.71466967781044687058e+02, + 0.16435139384379061767e+03, -0.39919742005858125822e+02, + -0.10514169447091191500e+03, -0.64060323956383925292e+02, + 0.76714744006336303528e+02, 0.14019338356835393711e+03, + -0.90373725112701478679e+02, -0.10940297837376898826e+03, + 0.32887419849603162447e+02, 0.87505077621217495221e+02, + 0.53306248465080713572e+02, -0.13490851087364413274e+03, + -0.49221065468114133523e+02, 0.13726098095104475760e+03, + 0.18209327681787602415e+02, -0.69893446018830346134e+02, + -0.64873679065103573294e+02, 0.60575433467172778990e+02, + 0.10916012817533751900e+03, -0.11380824237801371623e+03, + -0.63940712861138422340e+02, 0.10484610077205159939e+03, + 0.26716784405812827430e+02, -0.49592519428608717647e+02, + -0.69034482789562943594e+02, 0.69452117164660876369e+02, + 0.84625582310491566318e+02, -0.12893866824407390936e+03, + -0.15978112676280089133e+02, 0.11014874599735172467e+03, + -0.23781940241902045585e+02, -0.57957712634007279462e+02, + -0.95906364026256945010e+01, 0.81401830881796442441e+02, + 0.17053598983476967454e+01, -0.12112377153483019754e+03, + 0.79064205315124908680e+02, 0.70759703855761628688e+02, + -0.11116221343132049526e+03, 0.64080821604616629017e+01, + 0.64275199147798360855e+02, -0.67446121686113080784e+01, + -0.52028671383801956551e+02, -0.69395146088813746132e+01, + 0.94656420339332626668e+02, -0.56963803160027509875e+02, + -0.75131658211657352808e+02, 0.12372650442405145554e+03, + -0.23094072850297632016e+02, -0.89331059570421885496e+02, + 0.75800576210243676201e+02, 0.17303024842826243201e+02, + -0.47912328265797221150e+02, -0.94823057631793083999e+01, + 0.43092107692929857876e+02, 0.15890538853938501518e+02, + -0.84553389497262031682e+02, 0.49408777688941000861e+02, + 0.65080787815199428792e+02, -0.11863760750798020638e+03, + 0.39889942257567973627e+02, 0.80365646264387194719e+02, + -0.10489737027420646598e+03, 0.19322312395806651608e+02, + 0.64083681256579765773e+02, -0.55504202606888888738e+02, + -0.84084060703187724073e+01, 0.31902508740380202568e+02, + 0.81160661792778299173e+01, -0.39036996188510862282e+02, + 0.12828228660508163017e+01, 0.64757694567106483419e+02, + -0.66799910380283563427e+02, -0.16763969996625590397e+02, + 0.99950301923250307823e+02, -0.85168933529760550982e+02, + -0.20317766168993870224e+02, 0.10863159451621275764e+03, + -0.88957447134372458208e+02, -0.14561623406954300464e+02, + 0.94352187683917719596e+02, -0.76346646939594307923e+02, + -0.76017286671840267331e+01, 0.66198697261117374069e+02, + -0.49664631880448375512e+02, -0.64531374661436258222e+01, + 0.34937012367093856824e+02, -0.14624103424601093693e+02, + -0.14620421021337149270e+02, 0.96969280355942295557e+01, + 0.21496157085101952333e+02, -0.31614577890537756133e+02, + -0.40060261128077998549e+01, 0.51901714025536605845e+02, + -0.53951059591052199949e+02, -0.47368259989187206926e+01, + 0.71843089765211658460e+02, -0.76831345019966477139e+02, + 0.55884118589830640289e+01, 0.79316238043808169778e+02, + -0.95762233050702903370e+02, 0.23067819179151523912e+02, + 0.74910948777319845249e+02, -0.10764270320726376440e+03, + 0.43256770300538754270e+02, 0.61072896026449100759e+02, + -0.11117090464111433334e+03, 0.62292211867141276116e+02, + 0.41135438301919769799e+02, -0.10667267694396767297e+03, + 0.77519441629790293291e+02, 0.18430913355268131681e+02, + -0.95580206891789487145e+02, 0.87631361525836368287e+02, + -0.43273245861676334911e+01, -0.79805241818353707117e+02, + 0.92448091713577753126e+02, -0.25329379446020094946e+02, + -0.61195896786105237197e+02, 0.92507321675761616575e+02, + -0.43655750278346417304e+02, -0.41183839905646117074e+02, + 0.88622272952862729767e+02, -0.59057497426784330230e+02, + -0.20652207908581523554e+02, 0.81521557784833689198e+02, + -0.71636267913253504958e+02, 0.34740304855286858299e+02, + 0.35330386591862655621e+02, -0.10497228029713427588e+03, + 0.87493043921813040242e+02, 0.13177238751305596409e+02, + -0.97985688460406066724e+02, 0.10050187523034861670e+03, + -0.69269718741196095735e+01, -0.88869375624874251685e+02, + 0.10928437203151520407e+03, -0.24132423927294105681e+02, + -0.79261365215658074135e+02, 0.11485749952515948280e+03, + -0.38059757524454759903e+02, -0.70480268792010107859e+02, + 0.11827252691791835559e+03, -0.48631412960149830838e+02, + -0.63529963350948705170e+02, 0.12046877059397927212e+03, + -0.55907588497270289452e+02, -0.59144852918957980137e+02, + 0.12217493573382392924e+03, -0.59944702719844784156e+02, + -0.57844852660545740264e+02, 0.12383998061566362026e+03, + -0.60685032233696226456e+02, -0.59974314823104563743e+02, + 0.12557514293916241854e+03, -0.57882979775090980468e+02, + -0.65703444058159206520e+02, 0.12709354496017031977e+03, + -0.51076242326500675972e+02, -0.74974090390529781303e+02, + 0.12764355884457479817e+03, -0.39618190737747958963e+02, + -0.87376040955648136332e+02, 0.12594798597807887575e+03, + -0.22799021395005894419e+02, -0.10194931345562859804e+03, + 0.12018471082269398664e+03, -0.93209417110057715683e-01, + -0.11692922288611744364e+03, 0.10807604431992898242e+03, + 0.28429523791259668997e+02, -0.12949246138330866529e+03, + 0.87188449466236917829e+02, 0.61518762861752009030e+02, + -0.13563037104837164293e+03, 0.55565355920727647288e+02, + 0.96046950187431917811e+02, -0.13036542904185634484e+03, + 0.12788354374508266176e+02, 0.12641010784786540455e+03, + -0.10860726424821848468e+03, -0.38570273273936727776e+02, + 0.14444963697049641382e+03, -0.66935954063183672247e+02, + -0.91441812854640119212e+02, 0.14054348063213825526e+03, + -0.63638386586424955382e+01, -0.13352879815598527102e+03, + 0.10656474339866913681e+03, 0.64502646640254724275e+02, + -0.14871213885396213072e+03, 0.40944497634378464568e+02, + 0.12755568151689439560e+03, -0.12211306146774001036e+03, + -0.45290230527674637528e+02, 0.15736122709741104586e+03, + -0.49277409654590144328e+02, -0.12496565222488405311e+03, + 0.13040520863014336328e+03, 0.53139541546222666568e+02, + -0.15943917394818313937e+03, 0.41662414964077967738e+02, + 0.14270790054877207353e+03, -0.11662308123581830444e+03, + -0.78368496319628249580e+02, 0.16364041236181975592e+03, + 0.11699828077373577995, -0.16241662758000066447e+03, + 0.82478643406861309018e+02, 0.13034814717212137225e+03, + -0.13942821324781220937e+03, -0.67032344397422903626e+02, + 0.17441793334132171367e+03, 0.45524611298866861364e-01, + -0.17367875446664803007e+03, 0.70261575265941004886e+02, + 0.15479589238484524572e+03, -0.12218789480040231865e+03, + -0.11290370955650365659e+03, 0.16419593731921497692e+03, + 0.69044416984663016024e+02, -0.18334324933159183502e+03, + -0.17565888838859823551e+02, 0.19487417104085591291e+03, + -0.23829137595621652679e+02, -0.19004862604560003092e+03, + 0.64964133754625152051e+02, 0.18587453238371008979e+03, + -0.91995456578461300978e+02, -0.17363964848033558042e+03, + 0.11756144754367970506e+03, 0.16931182371841862278e+03, + -0.12941471703603684773e+03, -0.16271884127950164611e+03, + 0.14055200893981995591e+03, 0.16822536104663336687e+03, + -0.13808403554275383840e+03, -0.17403130208671635160e+03, + 0.13354152260091143489e+03, 0.19257795581422317355e+03, + -0.11211776619703265112e+03, -0.20946937166337315261e+03, + 0.83418003329350469244e+02, 0.23325150442603248280e+03, + -0.31672259967544480475e+02, -0.24394687124763427732e+03, + -0.32012635705773043071e+02, 0.24298372028713131954e+03, + 0.11707896203898775411e+03, -0.20362636946533729088e+03, + -0.19883639641188295855e+03, 0.12558254095920254656e+03, + 0.26510321196760844487e+03, 0.61367981990752129562e+01, + -0.26673084868973944594e+03, -0.15684022444405871966e+03, + 0.18070160645048616743e+03, 0.28083812271359130364e+03, + 0.97474046921557579992e+01, -0.27993933469768131772e+03, + -0.22436479452551347435e+03, 0.10719161798809251707e+03, + 0.32541352444374257402e+03, 0.18652974831968555236e+03, + -0.15586808878972979642e+03, -0.34752287175086149773e+03, + -0.20432327654768553771e+03, 0.13412125000095258542e+03, + 0.36854922953348602732e+03, 0.31177870164182229473e+03, + 0.17927228596435458741e+02, -0.29783754101541001091e+03, + -0.43460814284650689387e+03, -0.32696723703676588002e+03, + -0.49252161969674048692e+02, 0.26129226236940581884e+03, + 0.48939202890080144925e+03, 0.58539522604075136769e+03, + 0.56176794860544009680e+03, 0.46406373960349952768e+03, + 0.34101608682682484641e+03, 0.22711603268806226197e+03, + 0.13872710102065659044e+03, 0.78354854322802054867e+02, + 0.41165206062913895835e+02, 0.20206001516128065276e+02, + 0.92981486975915803583e+01, 0.40219393375886447473e+01, + 0.16387416276994786202e+01, 0.63000552680084875856, + 0.22882718940146185016, 0.78604098455570231563e-01, + 0.25556180993605386725e-01, 0.78687773062186064377e-02, + 0.22953322103530719549e-02, 0.63446011592344293047e-03, + 0.16619188326214026185e-03, 0.41250097904100868932e-04, + 0.96995630145883839622e-05, 0.21599036527417060653e-05, + 0.45525590363692216558e-06, 0.90769503142381905895e-07, + 0.17106063709384483069e-07, 0.30442770688490395270e-08, + 0.51106030481320411491e-09, 0.80829612718499939319e-10, + 0.12026956918747616118e-10, 0.16808010810062693799e-11, + 0.22021266535971284452e-12, 0.26990623315383259547e-13, + 0.30873149605502071741e-14, 0.32866479341535152187e-15, + 0.32461314985581069773e-16, 0.29638403528392506045e-17, + 0.24912267297125638682e-18, 0.19184148642923203872e-19, + 0.13458052867506586548e-20, 0.85431450628575419999e-22, + 0.48680177306538879861e-23, 0.24656030256071147339e-24, + 0.10965645155008207404e-25, 0.42163857242171073104e-27, + 0.13733384267059644806e-28, 0.36846717460970464630e-30, + 0.78191467384498369374e-32, 0.12305848189769688946e-33, + 0.12769708352203998749e-35, 0.65539676099790361990e-38, + -0.26050914013125846432e-02, 0.49898978694554716774e-03, + 0.82811675121073242967e-02, -0.14619062690500558149e-01, + 0.12975220745024971386e-01, -0.79872343079138916067e-02, + 0.48247368225540843492e-02, -0.76620469447699251012e-02, + 0.11426481811970357755e-01, -0.11811284262246653232e-01, + 0.60322528379363237264e-02, 0.24260657099184511549e-03, + -0.34380492357465449946e-02, 0.18200700370264674167e-02, + -0.71155046059015849072e-03, 0.13811629919112877133e-02, + -0.29010398699532246973e-02, -0.44650924993610983027e-03, + 0.69876574889968503732e-02, -0.11481112666752120444e-01, + 0.61051673861716344860e-02, 0.55078279328458143449e-02, + -0.13992943300708366935e-01, 0.92655548796473311685e-02, + 0.32879570873175592051e-02, -0.10614942924948980729e-01, + 0.13612870828796121148e-02, 0.15901692533864079937e-01, + -0.23191538333983092307e-01, 0.73805136299332184391e-02, + 0.19567734107315062908e-01, -0.34164808328180605590e-01, + 0.20540908534256344109e-01, 0.77647791587003179431e-02, + -0.24404128907246445263e-01, 0.12951069561955536741e-01, + 0.11607006421734998927e-01, -0.22964378638938024585e-01, + 0.78400786942891386583e-02, 0.15677645102420232487e-01, + -0.22478630285707582037e-01, 0.40564793100483593699e-02, + 0.19081222711695728506e-01, -0.25643290589532737739e-01, + 0.12797368960512261679e-01, 0.14672119726306880158e-03, + -0.18979794015567235787e-02, -0.11893633571634948821e-02, + -0.70481357633270956195e-02, 0.23334407080064265699e-01, + -0.29754821677730580731e-01, 0.13662139557734924444e-01, + 0.81972794989197666354e-02, -0.11344954496015776171e-01, + -0.87178493707282186942e-02, 0.23953445155718598031e-01, + -0.11699983506076132994e-01, -0.18566722614945685432e-01, + 0.30479627753182601813e-01, -0.93940447990250100507e-02, + -0.22938006607777679247e-01, 0.32391878119733721886e-01, + -0.18723691301442618035e-01, 0.72870695751635046825e-02, + -0.13786510177908176122e-01, 0.18617588336326644505e-01, + -0.27541442993707361368e-02, -0.22012905005087273630e-01, + 0.22192441488840752850e-01, 0.40071656455627898893e-02, + -0.22562769928531834634e-01, 0.63169283336862143766e-02, + 0.20805363164861503250e-01, -0.19991357947713186971e-01, + -0.97650260220395121435e-02, 0.26735816024263604068e-01, + -0.12383123672433559576e-01, -0.60480032090967812686e-02, + -0.18262511689690797030e-02, 0.15910634975719855494e-01, + -0.31814311349902674175e-02, -0.25517472842485469653e-01, + 0.22682688695344843666e-01, 0.15595739983205771095e-01, + -0.40409544062358054850e-01, 0.20715676022514593196e-01, + 0.54857154148648347089e-02, 0.22217681828479919517e-03, + -0.15436840629374844192e-01, -0.29768802397071481187e-02, + 0.33348123890022993154e-01, -0.26294439848683476973e-01, + -0.73170355456148254009e-02, 0.57397744649709909678e-02, + 0.31515980487582168079e-01, -0.42922376961260673423e-01, + 0.12167572917408910754e-01, 0.20860447549553014050e-03, + 0.23428624011202853206e-01, -0.25143482120560410598e-01, + -0.15617323334908240692e-01, 0.29931795771402786022e-01, + 0.63826860539008311093e-02, -0.22869152915405182441e-01, + -0.12367006371045315832e-01, 0.26371270190860000154e-01, + 0.48212725744958152135e-02, -0.74361326565980543843e-02, + -0.32236186513882124360e-01, 0.25122051253438248963e-01, + 0.29282611506435036325e-01, -0.35728332333489432049e-01, + 0.21441749297146386020e-02, -0.19974853008805415477e-01, + 0.47820871900926993636e-01, -0.37576936180266024348e-02, + -0.37102488991209520153e-01, 0.53952919821065358288e-03, + 0.12569233881049187568e-01, 0.29528181787592540364e-01, + -0.11050734301077898281e-01, -0.41460884682859147632e-01, + 0.76137036555569866103e-02, 0.21776447770089461808e-01, + 0.28314268070813296274e-01, -0.21859338098111632392e-01, + -0.30097370859298394619e-01, -0.15006287434390228747e-01, + 0.38912074404865708288e-01, 0.23460263564748614490e-01, + 0.12774052060193633647e-02, -0.37241103748971965404e-01, + -0.32760368337488188217e-01, 0.99343590007702608363e-02, + 0.40908006624968851206e-01, 0.25366165734596952258e-01, + 0.11940259134093737792e-01, -0.54620449056714662217e-01, + -0.29052729169101513401e-01, -0.27982938873054124390e-01, + 0.26894581900782581207e-01, 0.45194682555422249770e-01, + 0.54544643464529404819e-01, 0.10192928453074182743e-01, + 0.72155927281449304747e-02, -0.71282919907243266766e-01, + -0.42008016624738228617e-01, -0.86426061075502796927e-01, + -0.57578126789318034850e-01, -0.44905086101219356121e-01, + -0.45110673281754325170e-01, -0.15366274887223327003e-01, + -0.13252609532597365780e-01, -0.18925896872285994516e-01, + 0.15312227336069022740e-01, -0.23316953819413961668e-01, + 0.15121270964782435389e-01, -0.59155307852496886306e-02, + -0.61320431137125187837e-02, 0.13783093256018657397e-01, + -0.15184680810718916358e-01, 0.98056992201379557933e-02, + -0.45694143707104904577e-03, -0.87168703340990468659e-02, + 0.13851035483462675532e-01, -0.13032222946668982344e-01, + 0.70369110214297094300e-02, 0.11775402783978064676e-02, + -0.78051834684200105050e-02, 0.99104389508569892125e-02, + -0.65992126152679747228e-02, -0.64957789266295877430e-03, + 0.87615749799260043279e-02, -0.14395334221368100147e-01, + 0.15392696612021529792e-01, -0.11576221524536885535e-01, + 0.47481229074511736854e-02, 0.22088169770556036892e-02, + -0.65598548518939862884e-02, 0.68811007997697315811e-02, + -0.35482320708220579757e-02, -0.14873264308704157045e-02, + 0.56204554484424384606e-02, -0.66815079712658331096e-02, + 0.38473056684429161184e-02, 0.20877765453844645410e-02, + -0.90570906313848509317e-02, 0.14602998980277583779e-01, + -0.16828773888205878634e-01, 0.15123295414742691720e-01, + -0.10313404239836938478e-01, 0.42877841707409398292e-02, + 0.79484282609118106066e-03, -0.33249477373963054472e-02, + 0.28250316707185939291e-02, -0.38467755293369571381e-04, + -0.34402840674274070241e-02, 0.58632125633526514449e-02, + -0.60367885491627235051e-02, 0.37889176478766994904e-02, + -0.14073775870372062791, 0.23274657593631148389, + -0.93280417443639157549e-01, -0.67253860672934054343e-01, + 0.21159413740811028326, -0.27436718135725152168, + 0.26221677964317047227, -0.17420835196804912437, + 0.74782796835168890981e-01, 0.95438723620208630594e-02, + -0.27489064671697122089e-01, -0.10500530313825966189e-02, + 0.69223798728394556057e-01, -0.11351261959360338383, + 0.11740293395610479354, -0.45897318088126942692e-01, + -0.63599580250627174571e-01, 0.19090912128668593994, + -0.26706684210152614734, 0.27859452731728562291, + -0.19943125056925442573, 0.77266315991487477532e-01, + 0.60545680034683774240e-01, -0.14342488367825673157, + 0.16127550285243066885, -0.93312105732308303629e-01, + -0.96253246441820039525e-02, 0.12193843596290969422, + -0.17973425372965101676, 0.18155718487025940266, + -0.11258708709802753289, 0.22930118271889850246e-01, + 0.70436591748659821421e-01, -0.11750459139900309991, + 0.13027250476138635404, -0.10056990299140319833, + 0.74164456797561492674e-01, -0.52973919469888788858e-01, + 0.65957291846183194184e-01, -0.82289650620158277805e-01, + 0.99413777314052612089e-01, -0.76808671130268652005e-01, + 0.20713821153796257296e-01, 0.63071103778645928872e-01, + -0.16447576328224117193, 0.18883459084273304662, + -0.28016003680692441735, 0.84936861167813598739e-01, + -0.31788130709936690543, -0.25841139270366098035, + -0.50718752526160504335, -0.70018643111907752363, + -0.85875722699579415398, -0.10207386828825393277e+01, + -0.83058131504648546883, -0.79673954428222959478, + 0.27669148393228332888e-01, 0.95803698494737118962e-01, + 0.86360321685940988345, 0.61013615025673029191, + 0.23164537739171908726, -0.44813146124037681051e-01, + -0.87422176046375899006, -0.30472436395423607713, + -0.13396361890046887266, 0.43195845811932187530, + 0.70326245872287918015, -0.71676483767172574635e-01, + -0.30655728455552555545, -0.49657529365427682810, + -0.18916187056776001540, 0.64815562781609992182, + 0.25114764292754576669, -0.38611665952882935626e-01, + -0.43356690901280375838, -0.37851761620895668647, + 0.44793679839428984790, 0.38204989328557231731, + -0.10793505495557206841, -0.29451511291605048104, + -0.37001089986585472547, 0.45538624790987869417, + 0.34205162000207584017, -0.26880845620103194227, + -0.28479524990193749723, -0.80247000831333736848e-01, + 0.43491732541127470224, 0.16457501328238119398, + -0.45104791784164799395, -0.15376345903026070183, + 0.31867281564081378908, 0.20936185006201787906, + -0.18155796048684103017, -0.34313745844294202270, + 0.19364931259635551064, 0.35267259449416632489, + -0.15374301481475752262, -0.44989490629165440616, + 0.38598336561093338215, 0.36157101420891603338e-01, + 0.98564512936219553230e-01, -0.42483794275112962691, + 0.88014526119069250165e-01, 0.50370490854927385538, + -0.40563335502174013847, -0.13644075786466983158, + 0.21214968984990406620, 0.10901740867918467692, + -0.58048919593269340811e-01, -0.31736072821247746090, + 0.25398888315104611868, 0.29085138460100495861, + -0.51103712063684436639, 0.12597231044010467893, + 0.18009407665925378228, 0.62235714411318185380e-01, + -0.37768758954778663961, 0.22711086795126081417, + 0.10045887765804437097, -0.47538482087461579606e-01, + -0.23562019161999747663, 0.15254560631342156674, + 0.32175648868891981724, -0.54835610203133933194, + 0.19735667602223805339, 0.26353688993965967979, + -0.27907542059986156779, -0.17714484425746027801e-01, + 0.10884961287027464238, 0.92560968719506100943e-01, + -0.17224541613502419857, -0.72668102827492336848e-01, + 0.28798433678069496056, -0.10073339929344250765, + -0.28732339152172170493, 0.34989757294837287027, + 0.33413070058873305113e-01, -0.40234938774675432782, + 0.33021774341212101200, 0.38521250977061417820e-01, + -0.22713197586228259239, 0.65121638690135180694e-01, + 0.14759888498296483417, -0.10446817975602108730, + -0.97970786145592500538e-01, 0.14906150125773218185, + 0.69425156829002613104e-02, -0.89574436374385529858e-01, + -0.10490813155165311377, 0.38015101506582760216, + -0.35688880780537540760, -0.35614273612881067188e-01, + 0.43229062740123880282, -0.44004498329930141765, + 0.90067294872064496136e-01, 0.20906015513607256739, + -0.14319977719955753748, -0.17055626645957847054, + 0.35542357331330437509, -0.21376602173972578114, + -0.79803654630249173940e-01, 0.21835568385778744704, + -0.11069777554678603138, -0.61225173143788551300e-01, + 0.98116123206995170536e-01, -0.10340173492504633676e-01, + -0.41515103983650256114e-01, -0.15304004518905947249e-01, + 0.66571592441177399047e-01, 0.30337248359638555734e-01, + -0.23445953438625952159, 0.33261166590559265721, + -0.17593441260598671749, -0.12879485951847211012, + 0.30899275836302536602, -0.21285887427996105781, + -0.17570816694807249447e-01, 0.88426467742137790373e-01, + 0.13030862295447551147, -0.44691663768948852731, + 0.52518228630664054446, -0.22307031850587885624, + -0.24874598032779315915, 0.51506296334349255250, + -0.38777930729882381655, 0.38476782814819768253e-01, + 0.17521114518652194936, -0.55466147066579492286e-01, + -0.25203496429137067780, 0.41005212664349871554, + -0.22359181698972618868, -0.16608116964515640124, + 0.41110975232375640553, -0.28320159515652915116, + -0.11171712416113813160, 0.43006254203143090553, + -0.40426034175576575080, 0.81545803521711243689e-01, + 0.23038569575727194105, -0.25454948450459180531, + 0.54489447803313795227, -0.38081484966866990804, + -0.41624481132171986530, 0.68469763300536312656, + -0.15138190187511310625, -0.38611556460634405274, + 0.38261696796705757517, 0.33127292105123989918, + -0.89411613283999014090, 0.79185261786124438999, + 0.53581747648228046643e-01, -0.73364060607614756115, + 0.79280165329282314968, -0.24674900105181393761, + -0.19558876287327223858e-01, -0.24085318144983192123, + 0.75123240194823925897, -0.55945945537893115862, + -0.33540469189301369557, 0.12639580728971953061e+01, + -0.10691264041219399328e+01, -0.85100013728569900984e-01, + 0.11694903240920395682e+01, -0.85373108694965615939, + -0.48842145062907993402, 0.14545981592540937477e+01, + -0.60990603307683544099, -0.13252087156623189035e+01, + 0.24465654040414834824e+01, -0.11560129625053212621e+01, + -0.14811915810604532329e+01, 0.30544009905112980974e+01, + -0.17865593747321624196e+01, -0.10136688872159469454e+01, + 0.26516289220737307986e+01, -0.14007437153558393028e+01, + -0.11538800805416096207e+01, 0.22734588152165531305e+01, + -0.61173243266879318014, -0.18400408628373234876e+01, + 0.24482211179050104022e+01, -0.42653081689167060553, + -0.19163791229608269084e+01, 0.23677586227249078910e+01, + -0.84550640587184711094, -0.35619887765258184675, + 0.47330222523905833565e-01, 0.82837856832478784508, + -0.22047082614838361958, -0.15980835236163757340e+01, + 0.25288678942235480740e+01, -0.96022966236094453585, + -0.13808655620871197467e+01, 0.17614067033940965512e+01, + 0.43959783401618834908, -0.22089426276351540324e+01, + 0.10316424318317305442e+01, 0.21482159610235358471e+01, + -0.34344575480888432928e+01, 0.12955296188780982547e+01, + 0.18866673137070659738e+01, -0.24883576358115573335e+01, + 0.71336309751958115744, 0.47562936117278692416, + 0.62806659660046548765, -0.16376637610987694327e+01, + 0.21572647552902729506, 0.24228687084884930059e+01, + -0.24853099442654844609e+01, -0.36125675823495878580, + 0.24251581425164441264e+01, -0.68326403845489536160, + -0.22687860856102672891e+01, 0.22012451472947605069e+01, + 0.94693641599124100949, -0.25637660870460123874e+01, + 0.72013801575771563268, 0.13952731183825322070e+01, + -0.34177652254894813622, -0.15340441533738562452e+01, + 0.35953092668259495346, 0.28016771069207546674e+01, + -0.26626105550119447685e+01, -0.13182292970720992376e+01, + 0.38474018554893247845e+01, -0.16063734599877359521e+01, + -0.10993534877124777616e+01, 0.47625773230401874381e-01, + 0.21003243110492930690e+01, -0.37844635423057199075, + -0.28302987674926289863e+01, 0.19422177032230305560e+01, + 0.19248974080227065908e+01, -0.19204160313396352322e+01, + -0.20293202026194556709e+01, 0.31322333774099657688e+01, + 0.32136711909435333734, -0.14876527171600164579e+01, + -0.15718997106201713088e+01, 0.22486167587912260224e+01, + 0.19025009514378015130e+01, -0.32526171515194031159e+01, + -0.90689921877788870486, 0.27630935851829834249e+01, + 0.11619736747246303121e+01, -0.26515581898575786290e+01, + -0.94033002106497187711, 0.12523698888524841255e+01, + 0.33490062196548042728e+01, -0.29143882266830876127e+01, + -0.26878520269527634845e+01, 0.29458593432494786235e+01, + 0.10867516533236136755e+01, 0.92998093012837912408, + -0.43403201156816759720e+01, -0.15685731197921751190, + 0.43240888788484594940e+01, 0.76662372893973517937e-02, + -0.14848882739490809612e+01, -0.34017027085724049762e+01, + 0.15744085204884405993e+01, 0.41074476529480792308e+01, + -0.22050639792508569537, -0.30725189433092738867e+01, + -0.25725946015348730711e+01, 0.18594562498528526273e+01, + 0.40008297149839524565e+01, 0.98352902053840762786, + -0.36214542187708036458e+01, -0.33304230367307985361e+01, + 0.45105619752460479610, 0.37115655679786287990e+01, + 0.40462853937454834607e+01, -0.15240576824306075743e+01, + -0.40046701173960990161e+01, -0.36671388582567727710e+01, + -0.26594755144016113402, 0.48896721586992493158e+01, + 0.45113523086192959255e+01, 0.19473913009859835643e+01, + -0.19191519930881000278e+01, -0.61232729528934441987e+01, + -0.49703689687029868338e+01, -0.24449943805692657683e+01, + 0.66668378964067498416, 0.64339132019398119766e+01, + 0.61614725792347062594e+01, 0.84860271122253898568e+01, + 0.72867809747126148778e+01, 0.45163353813754163468e+01, + 0.53877272439795156345e+01, 0.13609324133480364960e+01, + 0.20395294261900946964e+01, 0.13071530281024195119e+01, + -0.71965768159542664595, 0.16145476981118487281e+01, + -0.90509164569097211306, 0.23269124923670631011, + 0.73123145776112052907, -0.13087945788559385285e+01, + 0.13798996843427655534e+01, -0.89170928338031696381, + 0.87016185216848535022e-01, 0.68695025733898884557, + -0.11065232588592988083e+01, 0.10138549600957940111e+01, + -0.47821552272480810641, -0.24778622390873286663, + 0.84013123411868428914, -0.10489187160005912780e+01, + 0.79639476445262691318, -0.20548867513552426800, + -0.46626317528838617799, 0.93801851672414759964, + -0.10283978586432362956e+01, 0.72225358916284010391, + -0.17131624945646878322, -0.38180914708968677340, + 0.70652333988100324280, -0.68270120575828519005, + 0.34170498716125574656, 0.15159085823708362550, + -0.57637629589376515593, 0.74692032766488558604, + -0.58962133811777672765, 0.16583357678723376072, + 0.35620721835482432871, -0.77501490210267576231, + 0.93483147254209419952, -0.78621496383056188595, + 0.39827443749559049424, 0.72699544049081285535e-01, + -0.44963646584016236929, 0.60271053378643313359, + -0.49767679357560062892, 0.20233086576979492088, + 0.14519773279521117071, -0.39571250710132166439, + 0.44859362543733638518, -0.29099969559182531365, + 0.39122376089420836109e+01, -0.63839016757649114098e+01, + 0.26084924761046122121e+01, 0.14482599735513326245e+01, + -0.48969657548752660858e+01, 0.59539312386650582454e+01, + -0.50628328610162389722e+01, 0.22620316954892256689e+01, + 0.46680444279396421381, -0.24724684643776058124e+01, + 0.23229497203241171732e+01, -0.81252861972662016044, + -0.18009595700852152333e+01, 0.35418518222034185428e+01, + -0.40038066744716953593e+01, 0.21631126193836252014e+01, + 0.75486333687160567241, -0.41866132876891617443e+01, + 0.60750730008398834414e+01, -0.61634704319367248360e+01, + 0.37247046893657693722e+01, -0.28825554001047415387, + -0.34009812237111010091e+01, 0.52930666715637340047e+01, + -0.52969326296313496982e+01, 0.29028206432319079155e+01, + 0.22463514873038376018, -0.33782378195427940071e+01, + 0.47202123810591594122e+01, -0.44490690882938048745e+01, + 0.22712033173381565021e+01, 0.14107803657457074209, + -0.23271773654246770136e+01, 0.28764800720552345936e+01, + -0.24215911184497120878e+01, 0.91220831089078302512, + 0.61203765081193184372e-01, -0.44268980813207448044, + -0.58907178362288703521, 0.18747016883108174046e+01, + -0.31717990140995730997e+01, 0.30717906581677221212e+01, + -0.17512745111191070357e+01, -0.56700209963417058656, + 0.34872760279995405064e+01, -0.39363911517153948871e+01, + 0.65300751335021995914e+01, -0.39542899458015041969e-01, + 0.74556853392429740524e+01, 0.10695381469528578933e+02, + 0.14477706161173303556e+02, 0.23137431076598172552e+02, + 0.27964620451228963560e+02, 0.30990329866214359811e+02, + 0.29165522954907622477e+02, 0.22460459444966943465e+02, + 0.20432472399182390888e+01, -0.53849569007309039392e+01, + -0.26263929479792832211e+02, -0.19851551100839785136e+02, + -0.79897766019038156671e+01, 0.25970954657730773718e+01, + 0.26607718487762475945e+02, 0.10986340019133347568e+02, + 0.33808609555256574630e+01, -0.13275794417861993324e+02, + -0.22812326987611474038e+02, 0.25569745769016480885e+01, + 0.94020601568419781557e+01, 0.16546768456728610630e+02, + 0.51571615146298626087e+01, -0.19721901263589732167e+02, + -0.90127253778757943081e+01, 0.20155495160890226636e+01, + 0.13362714228228734115e+02, 0.12386242570100144178e+02, + -0.14498410163449946708e+02, -0.11999400490614981152e+02, + 0.30133041463392280512e+01, 0.10146344464858048084e+02, + 0.10882702663526499620e+02, -0.13535049499155508812e+02, + -0.11848337813235106708e+02, 0.91604758021167747017e+01, + 0.90291870929121191836e+01, 0.21645443826660697439e+01, + -0.13139999747196959845e+02, -0.62211357164711875711e+01, + 0.15347948323353232780e+02, 0.42040037369991418714e+01, + -0.97247763065674082128e+01, -0.70212046366884912629e+01, + 0.61810717208571599457e+01, 0.10307589538379726690e+02, + -0.50061590562678137672e+01, -0.13104862631291609887e+02, + 0.73230486674346986220e+01, 0.11604903934945529187e+02, + -0.94779973143422715509e+01, -0.37762969128307828370e+01, + -0.10737591203797411943e+01, 0.12212900537711671944e+02, + -0.21402688649777430463e+01, -0.16224894867920799157e+02, + 0.12735885682600201818e+02, 0.47320737668118919572e+01, + -0.71196282696932069456e+01, -0.32291537699174597265e+01, + 0.15683493553020764200e+01, 0.10676557656651789685e+02, + -0.91211945142992743030e+01, -0.76479444441670638710e+01, + 0.13950119666366765259e+02, -0.96779116921682240005, + -0.92472418471574968635e+01, 0.15580574285579364968e+01, + 0.88632151471451194880e+01, -0.47189479988975042701e+01, + -0.48647438314624169564e+01, 0.22104189420390421006e+01, + 0.77046545141791185074e+01, -0.56642477501071581969e+01, + -0.92015753842391969641e+01, 0.16440636755332256769e+02, + -0.54309929994430516942e+01, -0.89685983926388885834e+01, + 0.91015882940209120733e+01, 0.68104798017340106853, + -0.37535664507556387726e+01, -0.26735123543135173030e+01, + 0.53119734762878652035e+01, 0.23774024240578777167e+01, + -0.91110379618807950663e+01, 0.29852169862337776252e+01, + 0.95314310212506168085e+01, -0.11608189434834619291e+02, + -0.59233029555528782240, 0.12328466367361865963e+02, + -0.99524652381736533613e+01, -0.18895364587283260960e+01, + 0.79007879938602583181e+01, -0.25863280596634083963e+01, + -0.44829711274413286404e+01, 0.34893799282816440055e+01, + 0.25208473945504494829e+01, -0.36874227296880897065e+01, + -0.16759180003056990405e+01, 0.44967373399385728305e+01, + 0.18117342270204555010e+01, -0.10988316613815657163e+02, + 0.10859169453015578455e+02, 0.92626922661544053295, + -0.12810074524857476774e+02, 0.12342975059553694450e+02, + -0.63458672697105844573, -0.91756510200878302896e+01, + 0.70248258306156712294e+01, 0.32935254106273963437e+01, + -0.96385301246562189448e+01, 0.55847052494638989018e+01, + 0.33679533365400651235e+01, -0.74547155973698560061e+01, + 0.37692304561270040253e+01, 0.18925385302368435969e+01, + -0.32060519920887271539e+01, 0.55591333529837394511, + 0.88586107533916658152, 0.12019256733034104911e+01, + -0.31158601950857880425e+01, 0.20851680537150074635, + 0.63029180617402529307e+01, -0.96752653125017484825e+01, + 0.51782709518948237815e+01, 0.37989000664742000879e+01, + -0.86290450995059835293e+01, 0.46019083668042979340e+01, + 0.35631652070763926154e+01, -0.63004258324233113342e+01, + -0.66619808502502886327, 0.11240637688788481796e+02, + -0.14616600951378481810e+02, 0.61202555467749961693e+01, + 0.76895485428877998757e+01, -0.15007411438293445372e+02, + 0.99903783308899232196e+01, 0.17532147234326227458e+01, + -0.87432232557278108942e+01, 0.46966529219639268078e+01, + 0.56092807907533384082e+01, -0.11231275530383578953e+02, + 0.57784265138475801038e+01, 0.63426812598642925423e+01, + -0.14053671815141187906e+02, 0.10032194349448630533e+02, + 0.24086146727001054302e+01, -0.12386360566656229310e+02, + 0.11453469658441349566e+02, -0.12072595983551908105e+01, + -0.84729998824245207345e+01, 0.87517872806502445826e+01, + -0.83202468085215368632e+01, 0.71106139859329564601, + 0.11572029104373468655e+02, -0.10568167799714670352e+02, + -0.38677194762925348748e+01, 0.13506671809899946979e+02, + -0.89781703570017263871e+01, -0.86858839887929253365e+01, + 0.19983571927547298941e+02, -0.15334131108644912800e+02, + -0.33224507481126259734e+01, 0.15772325474422327574e+02, + -0.13087301617457049119e+02, -0.14288355449343286274e+01, + 0.76850340670733405801e+01, 0.33531834053840359200, + -0.15304657507940222061e+02, 0.15721473081712311171e+02, + 0.11317213656466147409e+01, -0.22191326834359383469e+02, + 0.22868779268774073188e+02, -0.29090402020193653065e+01, + -0.19280621178236053481e+02, 0.16837750024703669993e+02, + 0.67380147066045124049e+01, -0.26975541865574339084e+02, + 0.15617524834423775815e+02, 0.17902482171630694552e+02, + -0.41047735167033877701e+02, 0.23428079931612529663e+02, + 0.19505973223494368796e+02, -0.47400962760985954958e+02, + 0.28293703070587085335e+02, 0.17085059132364992962e+02, + -0.43716018931048395757e+02, 0.21991923737004192674e+02, + 0.20941010084821641613e+02, -0.38728713231971461539e+02, + 0.90949170986967811103e+01, 0.32658450496234536331e+02, + -0.41716856236248986534e+02, 0.63378734827698641752e+01, + 0.31694700372671746891e+02, -0.34947868625036086598e+02, + 0.52712871012051554231e+01, 0.14106173613772256203e+02, + -0.26903668818145631825e+01, -0.19416283417688781299e+02, + 0.12049807627110540764e+02, 0.21120468417538493355e+02, + -0.41030050193865655217e+02, 0.15984354438405608434e+02, + 0.24906798233172029455e+02, -0.32443160540214698528e+02, + -0.63277235568451306591e+01, 0.39046332558497859111e+02, + -0.20824715048535544781e+02, -0.32996011845084268543e+02, + 0.54827042634810702282e+02, -0.18741849903423734247e+02, + -0.33008756849361667207e+02, 0.37831198282281896184e+02, + -0.25291097852371415833e+01, -0.17901074954983901222e+02, + -0.65459250201889549459e+01, 0.30303643679541487188e+02, + -0.85335988452505588953e+01, -0.38231014004410262430e+02, + 0.40982996919230743060e+02, 0.82375138903893958542e+01, + -0.44723678112517738725e+02, 0.14333466362122200266e+02, + 0.37420690651016236927e+02, -0.36130469773724172455e+02, + -0.18474608830555691696e+02, 0.44122026750365968439e+02, + -0.80494851768072184228e+01, -0.30502902729386008218e+02, + 0.91116988896111195118e+01, 0.28630714811964296018e+02, + -0.10599112873588486750e+02, -0.46150292667170027983e+02, + 0.46893166739090709427e+02, 0.19575674034955831360e+02, + -0.60552115833555731683e+02, 0.18497325463890028630e+02, + 0.28415265575199658343e+02, -0.53277080573302209032e+01, + -0.37746039512571599062e+02, 0.95783381294218887803e+01, + 0.47457478743435643764e+02, -0.31983251184332772254e+02, + -0.37434546002642484552e+02, 0.38556911846788224807e+02, + 0.30057314680755194303e+02, -0.47440484944484666130e+02, + -0.15576553232256765469e+02, 0.34870172467415152084e+02, + 0.24061671856504375455e+02, -0.40777152988459420158e+02, + -0.30505413163064684312e+02, 0.53483775582412818039e+02, + 0.20824064641303596801e+02, -0.53059032819177581075e+02, + -0.17961617844860445103e+02, 0.43674280945068282733e+02, + 0.22947247448255364333e+02, -0.29885109065801923833e+02, + -0.53824021695987212865e+02, 0.49664630310279797243e+02, + 0.45595218430592694858e+02, -0.44781839654979229692e+02, + -0.30914023107562609738e+02, -0.59793744331650007240e+01, + 0.71429045508467453374e+02, 0.36533480911838274174e+01, + -0.73330378697198824511e+02, -0.75549141893060269837e+01, + 0.33970023805250320947e+02, 0.56519161819086825460e+02, + -0.26941881286505140025e+02, -0.72809499159923745992e+02, + 0.19140053231383558074e+01, 0.56888423097574715825e+02, + 0.45702918947006992312e+02, -0.33431211608185549267e+02, + -0.72306463183032690267e+02, -0.16684020458772099715e+02, + 0.63739885196646902443e+02, 0.60827869303682795987e+02, + -0.73539656682255261089e+01, -0.69681106580097122105e+02, + -0.68433801707235588196e+02, 0.22956707406964355300e+02, + 0.74977877591868477225e+02, 0.65719779746196451242e+02, + 0.26069704949224816737e+01, -0.84611402307368692277e+02, + -0.84138425884289077317e+02, -0.33831572751227696472e+02, + 0.35134049632731148449e+02, 0.10894210778405776807e+03, + 0.89649218182120833376e+02, 0.46382356963779969306e+02, + -0.17213399372386934516e+02, -0.10897244386471700750e+03, + -0.11709614644335221101e+03, -0.14955065494378305857e+03, + -0.13007109717055678288e+03, -0.86256802894541763749e+02, + -0.90200593103985482912e+02, -0.30245734065890719222e+02, + -0.34413980827431373655e+02, -0.21447095872110718773e+02, + 0.74649545054135213462e+01, -0.22632969003751689741e+02, + 0.11813548135371782166e+02, -0.37494042163111385157e+01, + -0.91558790358428829848e+01, 0.16506532712006677599e+02, + -0.17316142743824077144e+02, 0.10685692449902527201e+02, + 0.46105195505318816163e-01, -0.10273296672275645136e+02, + 0.15683606369346959397e+02, -0.14196242293845051208e+02, + 0.67663935344513665981e+01, 0.32082236987533474526e+01, + -0.11377649476353688840e+02, 0.14392706111216222453e+02, + -0.11205479622673813367e+02, 0.34578666060892171430e+01, + 0.54101101365002968180e+01, -0.11640354252645565225e+02, + 0.12805688503583976257e+02, -0.86965912996752088304e+01, + 0.13393030845691247244e+01, 0.60240743410078279041e+01, + -0.10302596255818162518e+02, 0.98793675909540947799e+01, + -0.51570773454888030329e+01, -0.16711451132630241734e+01, + 0.76578725144730395158e+01, -0.10307908307859204200e+02, + 0.86113075505856588876e+01, -0.33463036234554546233e+01, + -0.32852172995139246048e+01, 0.86370299274339465967e+01, + -0.10661078704074114398e+02, 0.87134667718294984695e+01, + -0.37110077017267926180e+01, -0.22842359415513984189e+01, + 0.69502827266100313253e+01, -0.86040838049470931281e+01, + 0.68408143895836026616e+01, -0.26098825524766637862e+01, + -0.22134492276362824903e+01, 0.56251114149309673351e+01, + -0.62886466257888349318e+01, 0.40578049102491453581e+01, + -0.28052463202746281468e+02, 0.43554787784448713239e+02, + -0.13698330567698464577e+02, -0.16085088194961514318e+02, + 0.39770834932309846010e+02, -0.43289792880645379114e+02, + 0.32111843879866178497e+02, -0.69309976573165119618e+01, + -0.15040476428442570267e+02, 0.29345969668443640188e+02, + -0.24504884153907738664e+02, 0.86824678894263289664e+01, + 0.15674747162215126650e+02, -0.31328802954144666870e+02, + 0.35642933936993948407e+02, -0.20206055211967512975e+02, + -0.36362544205290361354e+01, 0.31328624377755286190e+02, + -0.45368447357804043918e+02, 0.44686503140638109244e+02, + -0.23516719050293133364e+02, -0.42840363361768725170e+01, + 0.32870610269113015534e+02, -0.45184981762943479566e+02, + 0.41994114513157541069e+02, -0.19756976185786939482e+02, + -0.62877587775237859802e+01, 0.30575702855410245462e+02, + -0.38010719265101883479e+02, 0.32116828503569372799e+02, + -0.11533819815629062333e+02, -0.81496719199733842487e+01, + 0.23309757762996152763e+02, -0.22486931491700921981e+02, + 0.13033909950662518895e+02, 0.41194297913237800657e+01, + -0.13838035942670533274e+02, 0.15704398592497980758e+02, + -0.30543341204735461325e+01, -0.12505408487630200298e+02, + 0.27771702324711988297e+02, -0.29409604676593062322e+02, + 0.19018376486435162320e+02, 0.97085327384222130931, + -0.26305243131439997484e+02, 0.28886184776643794692e+02, + -0.50199774449003434995e+02, -0.10261421703972548158e+02, + -0.55271486911399662745e+02, -0.10751634792186723644e+03, + -0.12190924303947426210e+03, -0.21153999360817704201e+03, + -0.25480541558845385453e+03, -0.26937692770735327485e+03, + -0.27684625612535074879e+03, -0.18575049053683835609e+03, + -0.33481030473633744293e+02, 0.59308018522098954861e+02, + 0.23162006738684650031e+03, 0.17710751731300760525e+03, + 0.78478153138478404571e+02, -0.32547636168230653197e+02, + -0.23038919545816764867e+03, -0.10560997863302762312e+03, + -0.27204460533356641605e+02, 0.11969858129245713485e+03, + 0.20281138248061344598e+03, -0.19887905646143618554e+02, + -0.86785034959966523616e+02, -0.14862757971956074243e+03, + -0.44782384040433754535e+02, 0.17472436288020935535e+03, + 0.83840396205488445958e+02, -0.19675294350278591082e+02, + -0.12050883388231096660e+03, -0.10959015713641943535e+03, + 0.12782041809090169693e+03, 0.11023656797371319271e+03, + -0.27801343414428142609e+02, -0.92779265911132270617e+02, + -0.94491542684169104405e+02, 0.11728099396307915470e+03, + 0.11094579465761253800e+03, -0.85236352220612616293e+02, + -0.80759188185752577738e+02, -0.17689756184260417626e+02, + 0.11500758345805034821e+03, 0.59349922065111677227e+02, + -0.14013740711450310528e+03, -0.38184506853205263610e+02, + 0.90428808012247500869e+02, 0.58503647055704419699e+02, + -0.50682471332973676681e+02, -0.96101521522010656895e+02, + 0.45169684264396721574e+02, 0.12191505698488316511e+03, + -0.73738811688990423932e+02, -0.94010281046436801944e+02, + 0.74276821799363901278e+02, 0.43434910533952916012e+02, + 0.35601168725649188218e+01, -0.10799520637964077707e+03, + 0.21266394411951615950e+02, 0.14137984130020907969e+03, + -0.10919526470746700397e+03, -0.46902617941919011457e+02, + 0.65956556037510011947e+02, 0.30006329823958573400e+02, + -0.17190367636974585253e+02, -0.92402429109802724838e+02, + 0.79717645580398396987e+02, 0.68185492516649389927e+02, + -0.12088537637277316605e+03, 0.94540214669850769491e-01, + 0.94661953392451366085e+02, -0.26320469117423801464e+02, + -0.68874067894202013917e+02, 0.35019827863766678888e+02, + 0.46503253277500675722e+02, -0.17603862360275094545e+02, + -0.75858972989198250048e+02, 0.60154163866500461211e+02, + 0.72949021117811525983e+02, -0.13926606701049848880e+03, + 0.42712953122899818936e+02, 0.83742494995854684703e+02, + -0.81941637216092104268e+02, -0.83404758533391625264e+01, + 0.37182917906925922580e+02, 0.20525072958687879066e+02, + -0.44910531450845503798e+02, -0.23247335507044869729e+02, + 0.82776123700120749049e+02, -0.26758603261018642172e+02, + -0.86516345758585472936e+02, 0.10568199824089390404e+03, + 0.36535725715711859785e+01, -0.10867974099726852444e+03, + 0.86586157308973625391e+02, 0.20663898293996634692e+02, + -0.75098493740390182438e+02, 0.26958817808511625458e+02, + 0.37859741520881755150e+02, -0.31012820388193048871e+02, + -0.20299667231487294572e+02, 0.27820931590660034516e+02, + 0.23016687826506448289e+02, -0.49926773389242626422e+02, + -0.68158055909813244355e+01, 0.91030625577472349619e+02, + -0.92937087022222570454e+02, -0.91447115622984043171e+01, + 0.11195738583717289316e+03, -0.10423801238110557676e+03, + -0.33733741855375356522e+01, 0.92291566658261771749e+02, + -0.71973153818021884831e+02, -0.23046010912258335424e+02, + 0.82889927762461766747e+02, -0.49040334627485599128e+02, + -0.29547957037185145879e+02, 0.65288687203826981431e+02, + -0.31970728778239838164e+02, -0.18574913473526592611e+02, + 0.29952369351483191906e+02, -0.61296548487523780935e+01, + -0.60009073241746344607e+01, -0.14470963469293316450e+02, + 0.33901283941623340468e+02, -0.98491533447541925739e+01, + -0.47461164226885635742e+02, 0.78011677138788414254e+02, + -0.39609521191989458089e+02, -0.37270898660645492839e+02, + 0.75489885355719820836e+02, -0.33536080495882984565e+02, + -0.45015158320392195890e+02, 0.73018673378956620468e+02, + -0.11210561238215305480e+02, -0.85835173272793781507e+02, + 0.12059859471484804772e+03, -0.50221410305062740065e+02, + -0.67406049889285156951e+02, 0.12728838337088315313e+03, + -0.77913561299046563136e+02, -0.29565970072361764664e+02, + 0.91703001357466348509e+02, -0.52372144735655950853e+02, + -0.44567928265160794865e+02, 0.99552062356527358133e+02, + -0.54025698866361359762e+02, -0.53095891573166987598e+02, + 0.12240458959038436149e+03, -0.87793489107633590152e+02, + -0.21541835079693459676e+02, 0.10852548182912273944e+03, + -0.97996171552341095889e+02, 0.49737282005334355617e+01, + 0.81375993062545859402e+02, -0.81727384258160086006e+02, + 0.46572868983856913871e+02, 0.31338424802133896918e+02, + -0.10355127342961034742e+03, 0.66537898661299195169e+02, + 0.55593549404821239079e+02, -0.12073053474349991632e+03, + 0.68624003274861451018e+02, 0.72503822491824294616e+02, + -0.15180704974799309070e+03, 0.10419083892299899219e+03, + 0.39250706413722873833e+02, -0.12302749621314873707e+03, + 0.83915167967482133804e+02, 0.39589001128643424465e+02, + -0.90792134291960437054e+02, 0.20697100546833969048e+02, + 0.10977597980835837177e+03, -0.13416749058514861304e+03, + 0.19889910666981602816e+02, 0.14094814195011053926e+03, + -0.16488693780872318939e+03, 0.33771082225098503216e+02, + 0.12979815869030528575e+03, -0.13079884991487978141e+03, + -0.24707340254341580987e+02, 0.17751269144277989653e+03, + -0.12579856726994096050e+03, -0.86964111766582774976e+02, + 0.25377279305097320616e+03, -0.16383407802430818379e+03, + -0.99407516419426244170e+02, 0.28314959774617466337e+03, + -0.17464888099457161275e+03, -0.10250148437627747455e+03, + 0.26627727339666563466e+03, -0.12665709562320887471e+03, + -0.14305361660780937427e+03, 0.24963641721409834417e+03, + -0.54833636479647502426e+02, -0.20922187395079444627e+03, + 0.25807557327453594098e+03, -0.26737691137666143248e+02, + -0.20464449192429194113e+03, 0.19917720403435092180e+03, + 0.12993824158884295983e+02, -0.13302109038247874651e+03, + 0.28765899173448154613e+02, 0.14969789704701335609e+03, + -0.11769605333121126023e+03, -0.10660820957509831430e+03, + 0.25582933573589218668e+03, -0.10449055184817717645e+03, + -0.16348086614005211459e+03, 0.21956940013480871698e+03, + 0.32589449252142280500e+02, -0.25436235821599470341e+03, + 0.14880827412098327045e+03, 0.19061847717291914250e+03, + -0.32708640647904974230e+03, 0.96945606463201968950e+02, + 0.22095596760328157870e+03, -0.22283455908216211583e+03, + -0.29623977445583385304e+02, 0.16112377671138864343e+03, + 0.24591289103913744896e+02, -0.21007690716559429234e+03, + 0.82110318130715569396e+02, 0.22903841433541666106e+03, + -0.25885277033339053787e+03, -0.56633299259352838817e+02, + 0.29561410239325306293e+03, -0.98638233552811982463e+02, + -0.23744827243459562283e+03, 0.22611462406724092489e+03, + 0.12967010736240220581e+03, -0.28499098193465584927e+03, + 0.31607202047463985650e+02, 0.22592283322744876273e+03, + -0.68863111216489613753e+02, -0.20498652197032214417e+03, + 0.10204333014738827501e+03, 0.27501050923616440969e+03, + -0.29692524994782723979e+03, -0.11875640655426532533e+03, + 0.36766626371385751781e+03, -0.77703354152819770206e+02, + -0.22659873325298269719e+03, 0.52502560378516143658e+02, + 0.25520269545933896893e+03, -0.78545222868689791085e+02, + -0.30251755837915044367e+03, 0.20709198461440308847e+03, + 0.24989810427809828752e+03, -0.25984098324103717914e+03, + -0.18688967321981041891e+03, 0.29029370613724080386e+03, + 0.13576872812961451586e+03, -0.25875395743338731336e+03, + -0.14958443596320572055e+03, 0.27897786048111299806e+03, + 0.18449695178088305170e+03, -0.33675351039333475001e+03, + -0.15069745935815657845e+03, 0.35618083582361146000e+03, + 0.12031469638389613408e+03, -0.28480606613152656337e+03, + -0.17270610163792500202e+03, 0.23018002235880854300e+03, + 0.32781974209131016096e+03, -0.31496161454286010439e+03, + -0.29423234754980023808e+03, 0.26234398500626514306e+03, + 0.25775224871310075514e+03, -0.90152053604022750477e+01, + -0.44733429893898130558e+03, -0.24427082511369267337e+02, + 0.46335169258383598390e+03, 0.88737093571331527642e+02, + -0.26179407902531539776e+03, -0.35621870842534042367e+03, + 0.17704243559512269712e+03, 0.47502035272249224818e+03, + 0.15018048698545127806e+01, -0.38967519068033647045e+03, + -0.30069821883400391016e+03, 0.22270455516626577719e+03, + 0.48335559075265211959e+03, 0.10560335162217323557e+03, + -0.41606214645632809379e+03, -0.41264938009838152766e+03, + 0.48682756214294066410e+02, 0.47512582568161855079e+03, + 0.43794415252071729583e+03, -0.13405956609688865910e+03, + -0.51146417506885433113e+03, -0.43865047284423411611e+03, + -0.59421518809799156458e+01, 0.54857925438203619706e+03, + 0.57156555238993325929e+03, 0.22600568148187960560e+03, + -0.24570461171148156154e+03, -0.71049945319254243259e+03, + -0.60750753623098353273e+03, -0.31372386463504716403e+03, + 0.13560036767867478602e+03, 0.69555666939557124806e+03, + 0.80954309466925519700e+03, 0.98279754310952716878e+03, + 0.85945518458625588210e+03, 0.60272244211060626640e+03, + 0.56436144994562744159e+03, 0.23291619408625530241e+03, + 0.21672782418730398035e+03, 0.13205909250419148293e+03, + -0.20202834494472021731e+02, 0.11558873440265888632e+03, + -0.52896715431028120236e+02, 0.19546451221537818554e+02, + 0.43958863626484550480e+02, -0.77790255668401954381e+02, + 0.81497868117658512688e+02, -0.49237430565300890350e+02, + -0.23034641609404458151e+01, 0.51210489386628395891e+02, + -0.76760992391713585903e+02, 0.69054282505703881156e+02, + -0.32774961420142510349e+02, -0.15682479344634110419e+02, + 0.55353329851912036474e+02, -0.70131083338232372171e+02, + 0.54973962605598153175e+02, -0.17807253886182810021e+02, + -0.24807790065976632832e+02, 0.54756459833438697160e+02, + -0.60340913974697791389e+02, 0.40516227010514384688e+02, + -0.50212045884293958764e+01, -0.30549144153951868219e+02, + 0.51280945020639791210e+02, -0.49336752431180165956e+02, + 0.26564017944308261576e+02, 0.65572529573273898862e+01, + -0.35898838954938348422e+02, 0.49441725217753798916e+02, + -0.42259576934392903524e+02, 0.17960730874425820502e+02, + 0.13021099886869388129e+02, -0.38123727244134187231e+02, + 0.47617006448018003084e+02, -0.38468421648618566167e+02, + 0.15065519264070323047e+02, 0.12765426116753943120e+02, + -0.34013260935189244094e+02, 0.40764470585404389169e+02, + -0.31256173741493771701e+02, 0.10201991706967989515e+02, + 0.13282414809955280788e+02, -0.29531809887421893279e+02, + 0.32157085142702847236e+02, -0.20554611470716569244e+02, + 0.86826488708150563411e+02, -0.12593115992828781202e+03, + 0.22761673657229668066e+02, 0.72706500293012780389e+02, + -0.14325566869683376581e+03, 0.14093480033306451560e+03, + -0.90778052130644198314e+02, -0.38164580090392132838e+01, + 0.79308883858469670258e+02, -0.12308514625401754472e+03, + 0.95588590283186263719e+02, -0.30878438399759726707e+02, + -0.61633957086036311068e+02, 0.11819482180509467639e+03, + -0.13219609203220679206e+03, 0.74257313388267348842e+02, + 0.11215612909158977573e+02, -0.10837829007818626792e+03, + 0.15358838868959148272e+03, -0.14665345506412901955e+03, + 0.68058762443357736061e+02, 0.28955117055978366380e+02, + -0.12463645481955715866e+03, 0.15810167573607790814e+03, + -0.13707772943390133946e+03, 0.51218240630122203072e+02, + 0.40578641817924776092e+02, -0.11952910437557102341e+03, + 0.13242743563667096396e+03, -0.97979760912704122688e+02, + 0.14873733010371793739e+02, 0.55785280117055080495e+02, + -0.10170429841620428135e+03, 0.82801079673369912371e+02, + -0.31976168191352137171e+02, -0.43253157335946276874e+02, + 0.82882242632250523684e+02, -0.85745773924066469363e+02, + 0.28695277092772428773e+02, 0.40495267793141920265e+02, + -0.10668816993619647349e+03, 0.11728904167439509365e+03, + -0.78760452951678388445e+02, 0.19799395111723627760e+01, + 0.94373400260367176884e+02, -0.10164818047730031481e+03, + 0.17747440791685079375e+03, 0.59426435855597055991e+02, + 0.18503285721315722867e+03, 0.43584696469450528866e+03, + 0.44366179517721781167e+03, 0.81474231002188923867e+03, + 0.97773104825284690378e+03, 0.10029219310305803674e+04, + 0.10899656376802072373e+04, 0.66782638413313554793e+03, + 0.16268057027764680811e+03, -0.24850301324513259260e+03, + -0.87702319589131764133e+03, -0.66289123712541663735e+03, + -0.32348956825758102696e+03, 0.15370898040728741307e+03, + 0.85083421721667900783e+03, 0.41980073807014764498e+03, + 0.98457188068878338072e+02, -0.46221545671009937450e+03, + -0.75923963766691861110e+03, 0.60902295964683020202e+02, + 0.34164070998639823529e+03, 0.56205441784050640308e+03, + 0.16762322547937719719e+03, -0.65805672606279767933e+03, + -0.32763277845874239347e+03, 0.79980283485862770476e+02, + 0.45948352569936656664e+03, 0.41166712938076352657e+03, + -0.47803381981900491837e+03, -0.42845064473799163807e+03, + 0.11055585343659492992e+03, 0.35454873763045776514e+03, + 0.35331888501401579106e+03, -0.43703926675626865972e+03, + -0.43189183055395858446e+03, 0.32983837872769743171e+03, + 0.30868491437226094831e+03, 0.60367155421187185027e+02, + -0.42775181504105819386e+03, -0.23571379165905452169e+03, + 0.53835584004958809601e+03, 0.14897219589397562345e+03, + -0.35646261792991583661e+03, -0.20496490423604018360e+03, + 0.17397328054041233258e+03, 0.38062816583847506990e+03, + -0.17715522155282693006e+03, -0.47139832253105942073e+03, + 0.29913471356933547440e+03, 0.33253107450780646559e+03, + -0.25612773058129124593e+03, -0.18700308465123507062e+03, + -0.25318870308687806414e+01, 0.41312860651668046330e+03, + -0.94294294347875592166e+02, -0.51816359131766580504e+03, + 0.39458309351271248033e+03, 0.19475343061501280317e+03, + -0.25758070428666667340e+03, -0.11923217229589967303e+03, + 0.79629992491071362792e+02, 0.33338169038455737336e+03, + -0.28677969296061786508e+03, -0.26921861802527087093e+03, + 0.45878867434223724331e+03, 0.13128806069215235297e+02, + -0.38325557976577721320e+03, 0.12684575219750891506e+03, + 0.23810469540527137156e+03, -0.11720050394923127612e+03, + -0.18163570598860761152e+03, 0.58964030093632125329e+02, + 0.30748446350978650798e+03, -0.25369240671207865034e+03, + -0.25279456993984646829e+03, 0.50988444473398487844e+03, + -0.15007467190716573668e+03, -0.32235639154345790303e+03, + 0.30704846393932922410e+03, 0.42743164807206255773e+02, + -0.15519908184484251024e+03, -0.65204358796607351678e+02, + 0.16080849025043468714e+03, 0.95185641244812401851e+02, + -0.31856014211273969750e+03, 0.10262754211234847901e+03, + 0.33041329011793510517e+03, -0.40439817210836150707e+03, + -0.11116262251689686735e+02, 0.40961508656085010216e+03, + -0.32319990854960735760e+03, -0.87907263799305269458e+02, + 0.29719012938614002906e+03, -0.11413251682398595221e+03, + -0.13490019477903092593e+03, 0.11354996895146527436e+03, + 0.75022567301820672014e+02, -0.95890634210411207050e+02, + -0.10478417921068398755e+03, 0.21173402622406626961e+03, + 0.38212706172593193799e+01, -0.32837675465038751099e+03, + 0.34312096884349597303e+03, 0.35979660046052899247e+02, + -0.41768898934579721072e+03, 0.38026078087932944527e+03, + 0.34046271346582685169e+02, -0.37274493478248700740e+03, + 0.29119136701125268019e+03, 0.77684720444163701814e+02, + -0.31339397636546721060e+03, 0.19093013556764611849e+03, + 0.10474092371866234430e+03, -0.24065632922839608909e+03, + 0.11651400946679771664e+03, 0.71558685792288670768e+02, + -0.11065194057127165195e+03, 0.17717340578742753365e+02, + 0.27311163799173165501e+02, 0.55435716547126652642e+02, + -0.13690018530783237338e+03, 0.53476400734979307572e+02, + 0.15825758709090621323e+03, -0.27195091397156983248e+03, + 0.12832376588715263210e+03, 0.15627256881445833869e+03, + -0.28917768909640039965e+03, 0.11462575315437996437e+03, + 0.19826595619998539632e+03, -0.31447004434329414835e+03, + 0.82091121798480770622e+02, 0.29189374338656500640e+03, + -0.43532060510739393067e+03, 0.18271608094369398145e+03, + 0.24857789591977868326e+03, -0.46209801400176274910e+03, + 0.26457900187666643887e+03, 0.14731330751722776995e+03, + -0.37932467478789681081e+03, 0.21906243279486486131e+03, + 0.16370561623691168052e+03, -0.38643999310833703476e+03, + 0.22302104402275008965e+03, 0.18040423926383061826e+03, + -0.44584693400596000856e+03, 0.32063343172630720801e+03, + 0.86105406751857060499e+02, -0.40735325748041191218e+03, + 0.35952617276358517984e+03, -0.18472273525661875304e+01, + -0.32525767996399650883e+03, 0.32026526279418823151e+03, + -0.12534056710310960625e+03, -0.19141480652044361932e+03, + 0.39716169583786000885e+03, -0.20535607541912457918e+03, + -0.24460190747553937740e+03, 0.45327333343830929380e+03, + -0.23675132640852757504e+03, -0.26230911640138765506e+03, + 0.51726621189285810942e+03, -0.32157431996398912588e+03, + -0.17961610939219357874e+03, 0.44389232937886231412e+03, + -0.26333953007863851781e+03, -0.19805209943318317301e+03, + 0.38817552516985250577e+03, -0.12915482631963985227e+03, + -0.35751360195033254286e+03, 0.48964439511236338376e+03, + -0.12765779644378200430e+03, -0.42669720135725219734e+03, + 0.54745251505816702320e+03, -0.13641117270284178176e+03, + -0.42049587057017583902e+03, 0.46862733006925373047e+03, + 0.17448871892755093427e+02, -0.54719405806381553248e+03, + 0.45089076763292018768e+03, 0.18573373337836096653e+03, + -0.73869321668225472877e+03, 0.52513264663468430626e+03, + 0.24255970993411378345e+03, -0.81181488912484655884e+03, + 0.51545946597731517613e+03, 0.29460236426573459312e+03, + -0.77757462261433840922e+03, 0.35418006471075824493e+03, + 0.45110892733387959197e+03, -0.75753896751973400114e+03, + 0.15642361269534416124e+03, 0.63172612321131180124e+03, + -0.75086326666284969633e+03, 0.31910939739665401760e+02, + 0.63969556514798932767e+03, -0.55167796008284562959e+03, + -0.15534483427599920446e+03, 0.51404000823218473215e+03, + -0.11974666058709574656e+03, -0.51577925808909844818e+03, + 0.45531131587998834220e+03, 0.25947885062519350186e+03, + -0.77016626385764334373e+03, 0.33183323256271114587e+03, + 0.50276420359242479208e+03, -0.69890464167056506994e+03, + -0.73157855012177634535e+02, 0.77681567742377933428e+03, + -0.48541018560384173952e+03, -0.52997464586461433100e+03, + 0.93211668121631657868e+03, -0.23114303497068308957e+03, + -0.70291538113689750844e+03, 0.63469064357948377619e+03, + 0.20071377071671528824e+03, -0.60208025264511547903e+03, + -0.37703946103749892416e+02, 0.68614020797230159587e+03, + -0.32283601950112313261e+03, -0.65895478170367982784e+03, + 0.78686220814806017643e+03, 0.16884908281670305996e+03, + -0.90760311554090901609e+03, 0.30353622811248965263e+03, + 0.72753352590205554407e+03, -0.68160571837327654521e+03, + -0.41911387329449576100e+03, 0.87052975903000879043e+03, + -0.43936583598512804372e+02, -0.76470793132670337400e+03, + 0.23262073167249101857e+03, 0.68600925946636914432e+03, + -0.40759228744433363545e+03, -0.77318792020423495615e+03, + 0.88417988333568791859e+03, 0.35365110131105689106e+03, + -0.10757648504456783485e+04, 0.14169172470329414182e+03, + 0.79193132244781418194e+03, -0.19341366891209784740e+03, + -0.82400530041196361708e+03, 0.29276506310937463695e+03, + 0.91348308281256072405e+03, -0.64124080539733870410e+03, + -0.77207912082178995661e+03, 0.80245655686673455875e+03, + 0.57922911370643305418e+03, -0.87440785122692727782e+03, + -0.48111508791257148232e+03, 0.85776289004300394936e+03, + 0.45772371236079140999e+03, -0.90098152065854299053e+03, + -0.53574537913987717275e+03, 0.10213780327099290162e+04, + 0.48275956644268666196e+03, -0.11000248882259315906e+04, + -0.40602163844992048780e+03, 0.90225923646839271441e+03, + 0.57596167897797670321e+03, -0.79345427480654541341e+03, + -0.95136509989765090722e+03, 0.94101887012313488867e+03, + 0.91345983703929289277e+03, -0.74901194114946645186e+03, + -0.92447510756889437289e+03, 0.13754330854355569613e+03, + 0.13439300310100047682e+04, 0.70308865310008314964e+02, + -0.13899047444897721562e+04, -0.37308437022644403669e+03, + 0.90543955420229849551e+03, 0.10765318846777506678e+04, + -0.55937774508383040484e+03, -0.14587801076805105822e+04, + -0.45599649303484788732e+02, 0.12520293103703318138e+04, + 0.93749951773531574872e+03, -0.70439713417951190877e+03, + -0.15168794005667853071e+04, -0.32218356388683235991e+03, + 0.12872946474979125924e+04, 0.13159209318936871114e+04, + -0.15627654986215804911e+03, -0.15132513279823531320e+04, + -0.13387022203733381502e+04, 0.38251598659057850682e+03, + 0.16281498323050886938e+04, 0.13868403126844632425e+04, + -0.14299071786202377510e+02, -0.16845765260435252912e+04, + -0.18195839927201855062e+04, -0.71883516650987519370e+03, + 0.81122492578524440887e+03, 0.21820370770906288271e+04, + 0.19445820196925033088e+04, 0.98914582243873610423e+03, + -0.47362118394113730346e+03, -0.21100734625666400461e+04, + -0.26175132544605698968e+04, -0.30513659612599067259e+04, + -0.26835504768854862050e+04, -0.19627970046157961406e+04, + -0.16810590613266376749e+04, -0.81072285573981514517e+03, + -0.64933375743423607673e+03, -0.38690688957468563558e+03, + -0.12150810370099801361e+02, -0.27282198178082751383e+03, + 0.99447448795978544922e+02, -0.46074121935829353447e+02, + -0.96888382349879577760e+02, 0.16551225951239416645e+03, + -0.17390903956572353195e+03, 0.10387183892329163371e+03, + 0.65837570897288140159e+01, -0.11123665819208541450e+03, + 0.16550886794989187933e+03, -0.14836448974074440343e+03, + 0.69989552446921777573e+02, 0.34361100994948543530e+02, + -0.11964034084896613308e+03, 0.15131641594193320088e+03, + -0.11859184983865078777e+03, 0.38559585658200767000e+02, + 0.53185387355269931220e+02, -0.11767029463455247651e+03, + 0.12973670982721131395e+03, -0.87067966358246252412e+02, + 0.10560723345355411240e+02, 0.66304053634266850281e+02, + -0.11141441946192925627e+03, 0.10782469078102252524e+03, + -0.59316376411235950172e+02, -0.11760591634219315083e+02, + 0.75196974905455206795e+02, -0.10518984211560825770e+03, + 0.91073221359401614450e+02, -0.40375691705893281380e+02, + -0.24764343571964385404e+02, 0.77666348821651894241e+02, + -0.97653956472065175376e+02, 0.78340034930060681972e+02, + -0.29116398469824936512e+02, -0.29064709651101829024e+02, + 0.72821274885729650350e+02, -0.85459761257063462381e+02, + 0.63497108467242320273e+02, -0.17289132257131253567e+02, + -0.33441337452368799177e+02, 0.67908245452425376243e+02, + -0.72462711133433771238e+02, 0.45974445974810485893e+02, + -0.13306862771147527269e+03, 0.17759495752669175772e+03, + -0.21414240013222398673e+01, -0.14868786690195531719e+03, + 0.25162010939601947257e+03, -0.22675121757685769808e+03, + 0.12595993453599838574e+03, 0.43752362330817746283e+02, + -0.16906521146860046656e+03, 0.23351078491620268096e+03, + -0.17069495905482978060e+03, 0.47355794048044067779e+02, + 0.11944954275785163134e+03, -0.21595997822033774582e+03, + 0.23557345735271883314e+03, -0.12860544696484294036e+03, + -0.21532909854446600662e+02, 0.18804877719904482092e+03, + -0.25878571211312578271e+03, 0.23937711045059000980e+03, + -0.97823167852864983729e+02, -0.67357795070823470951e+02, + 0.22362805296927791687e+03, -0.26535008438565171218e+03, + 0.21390886087422063611e+03, -0.55018910940064387205e+02, + -0.10193073588221578518e+03, 0.22605607814208372019e+03, + -0.22608019198010478590e+03, 0.14416351344042368510e+03, + 0.16410003973885668671e+02, -0.14096724455182371116e+03, + 0.20920056656155171027e+03, -0.15276396181960024023e+03, + 0.39140050416570836944e+02, 0.11222882991638026340e+03, + -0.18799730962725374184e+03, 0.18690553839387999346e+03, + -0.69923950109247229534e+02, -0.69977055413195444089e+02, + 0.20081217755396511393e+03, -0.22364192380745910782e+03, + 0.15123129902602730112e+03, -0.62557807754451868476e+01, + -0.17290897830538133917e+03, 0.18438312965680569278e+03, + -0.31624973604578974573e+03, -0.12816326591247909050e+03, + -0.31081498444039948481e+03, -0.83096065377355955661e+03, + -0.78657637701975181699e+03, -0.15061995258063668643e+04, + -0.18003427148873311125e+04, -0.18096273495311118040e+04, + -0.20429733589204070086e+04, -0.11743447307726755753e+04, + -0.34090960449665277565e+03, 0.48015791875617958340e+03, + 0.16074691568103062309e+04, 0.11924001648902872148e+04, + 0.63227288842039990868e+03, -0.32596011161993499172e+03, + -0.15225452062526044301e+04, -0.79093376896812060295e+03, + -0.17884329474329689447e+03, 0.86319433949933477379e+03, + 0.13658951925839271553e+04, -0.84546890297614055498e+02, + -0.64602187148182656529e+03, -0.10229809833932965830e+04, + -0.30218379365223762534e+03, 0.11928349574160868087e+04, + 0.61644228999135350477e+03, -0.15814928237209076656e+03, + -0.83904598150560525482e+03, -0.74932217575757624672e+03, + 0.86533587046350044147e+03, 0.79727789713424579077e+03, + -0.21006863540823772496e+03, -0.64995680517239532037e+03, + -0.64048967344419031633e+03, 0.78998733073851701647e+03, + 0.80207566233416832802e+03, -0.60896748171359308799e+03, + -0.57039159306736439703e+03, -0.97924559978843532804e+02, + 0.76725915791768670715e+03, 0.44718896406792464404e+03, + -0.99368644877257122516e+03, -0.27888501935751520477e+03, + 0.67225381683006537514e+03, 0.34805049080253542115e+03, + -0.28945488575198771741e+03, -0.72039035030859076869e+03, + 0.33320810552905629720e+03, 0.87371931256858783854e+03, + -0.57444586222551686205e+03, -0.57307310810400190348e+03, + 0.43186033875903274293e+03, 0.37184907362104223694e+03, + -0.78870098901859968521e+01, -0.76451969177036789915e+03, + 0.19755748436057425010e+03, 0.91476973474006240394e+03, + -0.68741856833200199617e+03, -0.38387776296500095441e+03, + 0.48284197263358612418e+03, 0.22674182756565090813e+03, + -0.16998940554702721784e+03, -0.57850193454007035143e+03, + 0.49396588062914810280e+03, 0.51542977168540812727e+03, + -0.84678689230477971250e+03, -0.36127654439697820976e+02, + 0.72923647235631938202e+03, -0.26651345354707626711e+03, + -0.40404269718054854366e+03, 0.19220621882182578588e+03, + 0.34043599558623282064e+03, -0.98862121932882885744e+02, + -0.58673834114121075345e+03, 0.49592463332100379603e+03, + 0.43236782814278262776e+03, -0.91026026108291750916e+03, + 0.26187234789708537619e+03, 0.59158182659854116991e+03, + -0.55245602286704809103e+03, -0.95880644888197380737e+02, + 0.30430412722708894080e+03, 0.10192627773843508976e+03, + -0.28209040613165512923e+03, -0.18147109607342704862e+03, + 0.58619373465238970766e+03, -0.18731901033229203790e+03, + -0.60768539625228595469e+03, 0.74343522580969010960e+03, + 0.18160284719670944042e+02, -0.74740115675056313194e+03, + 0.58623588800624781925e+03, 0.17120049266865365212e+03, + -0.55829950864740101224e+03, 0.22433381447318848245e+03, + 0.23377238627032934914e+03, -0.19981297225303737264e+03, + -0.13752252377500136049e+03, 0.16590134163339257611e+03, + 0.21115552135739494588e+03, -0.41315015848724470970e+03, + 0.18923259958352968368e+02, 0.58083766710324073301e+03, + -0.61743924821955306470e+03, -0.65191649009342171439e+02, + 0.75277340503282357531e+03, -0.67497978422763230810e+03, + -0.88419298324868350392e+02, 0.70708004978496148851e+03, + -0.54982937384505510181e+03, -0.13737384067296162016e+03, + 0.58067498089822015572e+03, -0.36443639253191753369e+03, + -0.17440217805777106719e+03, 0.42625622125082441016e+03, + -0.20625911092416643555e+03, -0.12833576507874411732e+03, + 0.19045504835278887867e+03, -0.14245402594844213340e+02, + -0.68190203764604916614e+02, -0.90060816915507331260e+02, + 0.25114022539537236867e+03, -0.11216116719062490859e+03, + -0.26351844589269768449e+03, 0.46461548706204206383e+03, + -0.20160963474051681033e+03, -0.31143573178641014465e+03, + 0.53943713766800692611e+03, -0.20005539429617797964e+03, + -0.39222919477708768454e+03, 0.61879517210219398748e+03, + -0.19773054983942162721e+03, -0.49294813579219010080e+03, + 0.77012292287777813726e+03, -0.32736154626846274596e+03, + -0.44135593593019922309e+03, 0.81414018529934764956e+03, + -0.44081057547049101686e+03, -0.31564146855406045233e+03, + 0.73236214483229082362e+03, -0.42219294275716708853e+03, + -0.29958293711256271763e+03, 0.72686932972239890205e+03, + -0.44069708286056521729e+03, -0.29391823480101311361e+03, + 0.78480324310069056537e+03, -0.56720372409704646088e+03, + -0.16217013147761616665e+03, 0.73482591378332460863e+03, + -0.63507395080047433567e+03, -0.25487469439255367121e+02, + 0.62169573378859342938e+03, -0.60190552397761973680e+03, + 0.17514903309927311170e+03, 0.43039685205176078853e+03, + -0.73650418747915944095e+03, 0.33267535467709711838e+03, + 0.47422813831925111572e+03, -0.81485189984639782779e+03, + 0.40196198936509694022e+03, 0.46531869094431647227e+03, + -0.87541457003188725139e+03, 0.49663921015881192034e+03, + 0.37467733775961738729e+03, -0.79843326683502687047e+03, + 0.42995282975316570173e+03, 0.41047702324804345153e+03, + -0.75875462340929357197e+03, 0.29737005617906982025e+03, + 0.58037786207064607424e+03, -0.86476649048101671724e+03, + 0.28310345141829276372e+03, 0.66606291152954281642e+03, + -0.91610229090489031023e+03, 0.25622994120254020345e+03, + 0.69440557909103642942e+03, -0.83200433328875897132e+03, + 0.56539542004475165982e+02, 0.85997796591029327828e+03, + -0.79784263461317596011e+03, -0.17454628767416394908e+03, + 0.10953787750668175249e+04, -0.84553373716799649173e+03, + -0.30128826783243670207e+03, 0.11973165953970330975e+04, + -0.77766011191971222161e+03, -0.44214158245005683057e+03, + 0.11765255855631073700e+04, -0.52148183102449036141e+03, + -0.71120088541113989322e+03, 0.11668069125516985878e+04, + -0.22520293951084642003e+03, -0.97377311865705678429e+03, + 0.11124211216914836768e+04, 0.31758554063853743799e+02, + -0.10343925762830247095e+04, 0.79848946652045856354e+03, + 0.38976391093209326755e+03, -0.94437462635942006273e+03, + 0.23107192230137837896e+03, 0.87924853380436957195e+03, + -0.83138306423586993787e+03, -0.32759503809800264662e+03, + 0.11998695944949063232e+04, -0.54531439956054930462e+03, + -0.78458107728396851144e+03, 0.11303209518228870820e+04, + 0.72797487870335800153e+02, -0.12040199972899881686e+04, + 0.79025442489476915853e+03, 0.76482708866144287185e+03, + -0.13694330492768763179e+04, 0.27318720939499473843e+03, + 0.11394456880238697067e+04, -0.93564579886982710377e+03, + -0.45420724524604855787e+03, 0.10798277755844583226e+04, + 0.17241148585932936754e+02, -0.11388212429024322319e+04, + 0.60507877449737372899e+03, 0.97557251328287611614e+03, + -0.12297863219068387934e+04, -0.24885671855988221068e+03, + 0.14133490177785470223e+04, -0.46733824197750766416e+03, + -0.11469489897964615466e+04, 0.10572272022308543455e+04, + 0.68324650649677357706e+03, -0.13585865244902922768e+04, + -0.30580792160541849789e+01, 0.12956620239176477298e+04, + -0.39346014048191324264e+03, -0.11528808539167496292e+04, + 0.76714459598571522747e+03, 0.11161304231824929047e+04, + -0.13484315356331294424e+04, -0.54314187611198428840e+03, + 0.16216270428241202808e+04, -0.10024312396269529302e+03, + -0.13602883186573926650e+04, 0.33268466194953089143e+03, + 0.13618296884307515029e+04, -0.54095267432600144275e+03, + -0.14055752011609183683e+04, 0.10136202833094005200e+04, + 0.12096558114963895605e+04, -0.12500052727603983840e+04, + -0.93639971953662029591e+03, 0.13718778274980359129e+04, + 0.81922269388434051507e+03, -0.14122807893464048448e+04, + -0.72882210579473121470e+03, 0.14783475193753104122e+04, + 0.80311076670151851431e+03, -0.15981401565717792437e+04, + -0.76475289463105514187e+03, 0.17107334996758518173e+04, + 0.71040321727807042862e+03, -0.14734148617955925147e+04, + -0.95163098507347513078e+03, 0.13567223894989199380e+04, + 0.14147023204231668387e+04, -0.14306079961544155594e+04, + -0.14619978470238872887e+04, 0.11161281603100042048e+04, + 0.16135184549449686529e+04, -0.35051648485523531917e+03, + -0.20776295357586614045e+04, -0.10021050449181933573e+03, + 0.21380782380200794250e+04, 0.71456858454271457504e+03, + -0.15475317487144848201e+04, -0.16775451442292608135e+04, + 0.91013466513762318755e+03, 0.22805802370536916897e+04, + 0.13096501622852582614e+03, -0.20383799600321622165e+04, + -0.14954671878176056907e+04, 0.11414593662808727004e+04, + 0.24144513148975920558e+04, 0.51131875740898334470e+03, + -0.20388170568212294711e+04, -0.21282682320163635268e+04, + 0.25601770203048687335e+03, 0.24423915505439390472e+04, + 0.21000588366322685943e+04, -0.57011045044504305679e+03, + -0.26229826780745884207e+04, -0.22377722584090802229e+04, + 0.71730117334038595800e+02, 0.26413999948504606436e+04, + 0.29398378675725052744e+04, 0.11671494877025738788e+04, + -0.13577319141019650033e+04, -0.34146966648499487746e+04, + -0.31664967917497001508e+04, -0.15802894128139519125e+04, + 0.81686825887920201694e+03, 0.32763811006920582258e+04, + 0.42866210643197418904e+04, 0.48294035246019102487e+04, + 0.42742415396941805739e+04, 0.32275882760460776808e+04, + 0.25698736684345540198e+04, 0.13995158429578411869e+04, + 0.99770898722843105588e+03, 0.58169240554190150760e+03, + 0.11914826499159882189e+03, 0.31756166909541371979e+03, + -0.71624567447924448516e+02, 0.54248264776093428452e+02, + 0.99910070206785420055e+02, -0.16045559968464274903e+03, + 0.17046507514692538621e+03, -0.10080407937732188373e+03, + -0.70308335114740554417e+01, 0.10933477964354545975e+03, + -0.16208534085790469703e+03, 0.14494805833711350829e+03, + -0.67969436930295970001e+02, -0.34285533945503289033e+02, + 0.11768274048716060065e+03, -0.14846115599185085898e+03, + 0.11607883083884486553e+03, -0.37354918417297831468e+02, + -0.52813116115602177558e+02, 0.11618112649819863691e+03, + -0.12807455855741790174e+03, 0.86161351212353466167e+02, + -0.10902425247651491347e+02, -0.64910871753022291841e+02, + 0.10974342359859525686e+03, -0.10689473454403673713e+03, + 0.59902577107078414542e+02, 0.94781736982862323515e+01, + -0.71778964453927954992e+02, 0.10174172603774368895e+03, + -0.88861288376860045446e+02, 0.40339139216560035095e+02, + 0.22350842061322836685e+02, -0.73316873221069542410e+02, + 0.92486456066760126760e+02, -0.73715105332344862177e+02, + 0.26188673744073334149e+02, 0.29674729772980981579e+02, + -0.71171492766339994773e+02, 0.82177425011815330436e+02, + -0.59514258694810557415e+02, 0.13505007614806215699e+02, + 0.36415853160239493036e+02, -0.69863225974050095601e+02, + 0.73519376688905637707e+02, -0.46401574754630907194e+02, + 0.99577361047294928653e+02, -0.12057220038256838279e+03, + -0.23696303100215551751e+02, 0.13918738535549812241e+03, + -0.21147194825668694307e+03, 0.17637021310917160122e+03, + -0.83356984418328437414e+02, -0.61106944753469967679e+02, + 0.16047609421674553687e+03, -0.20529439095504420720e+03, + 0.14197546311392227381e+03, -0.31827569971838588714e+02, + -0.11060563491849129036e+03, 0.18842910513734551614e+03, + -0.20009491680774019073e+03, 0.10535697841418172516e+03, + 0.21412509420648312641e+02, -0.15850047133115072029e+03, + 0.21130170244823739267e+03, -0.18921241835049377755e+03, + 0.67110225915452772938e+02, 0.68207379131267103389e+02, + -0.19096915064750174906e+03, 0.21322724349846379255e+03, + -0.15892436270459373304e+03, 0.18982378068670541893e+02, + 0.10999358384184732529e+03, -0.20358534179047919110e+03, + 0.18654480566758022064e+03, -0.10134342956095274246e+03, + -0.45115914306629598229e+02, 0.15079819741656436349e+03, + -0.19960669950384854587e+03, 0.13549963354715771402e+03, + -0.22499273904010756553e+02, -0.11849900940324053522e+03, + 0.18625118805547808165e+03, -0.18045875659438235061e+03, + 0.69573548572908151755e+02, 0.61290573580898950468e+02, + -0.18122971860804250355e+03, 0.20213470234150992155e+03, + -0.13601379936517682268e+03, 0.47939115595891053090e+01, + 0.15479225437499846407e+03, -0.16446951502268964873e+03, + 0.27482503076885399196e+03, 0.12047490329379758123e+03, + 0.25522378560867130659e+03, 0.74499583091344027252e+03, + 0.66877149380967136949e+03, 0.13235793905456241646e+04, + 0.15751468925505323568e+04, 0.15614607788168420939e+04, + 0.18110473502139839184e+04, 0.99352211458640408637e+03, + 0.32353238359993474660e+03, -0.43248505386697428321e+03, + -0.14059589887373813326e+04, -0.10220360729193301950e+04, + -0.58069552902589543919e+03, 0.31541056935628114388e+03, + 0.13041321544139318576e+04, 0.70227832193604092481e+03, + 0.15884574880632362692e+03, -0.76880063743868129222e+03, + -0.11696271024217228387e+04, 0.51453708921873804627e+02, + 0.57958344865763558573e+03, 0.88713520602934534054e+03, + 0.25901784379657857471e+03, -0.10291527745733762913e+04, + -0.55214535950464960479e+03, 0.14940093059535163889e+03, + 0.72687187514181016468e+03, 0.65257469020275209459e+03, + -0.74904689393096055028e+03, -0.70332843732242645274e+03, + 0.18852088445564268682e+03, 0.56656645797147086796e+03, + 0.55495949126247967342e+03, -0.68295315990894869174e+03, + -0.70561521880161831177e+03, 0.53278020469629609579e+03, + 0.50255284997005287551e+03, 0.75073211297043016543e+02, + -0.65661591140590883242e+03, -0.40146869164767662141e+03, + 0.87200525303836354851e+03, 0.24786524276607909201e+03, + -0.60066927855484004795e+03, -0.28331728496244545568e+03, + 0.23102530131834191707e+03, 0.64507794483995314749e+03, + -0.29674925595706935155e+03, -0.76965862238485635771e+03, + 0.52043139479224078059e+03, 0.47357517570030870502e+03, + -0.34983847400116297877e+03, -0.34485444117662746066e+03, + 0.14793951821068446861e+02, 0.67396333306651183648e+03, + -0.19219148550742099246e+03, -0.77086766206451193284e+03, + 0.57204241724001894909e+03, 0.35583522716321692769e+03, + -0.42979003959579563343e+03, -0.20391703407421996985e+03, + 0.16677060903684972004e+03, 0.47929118794173393781e+03, + -0.40546877644299985377e+03, -0.46871996176281373891e+03, + 0.74630768396799680886e+03, 0.37283270244862407594e+02, + -0.65325570186143579576e+03, 0.25556450780463379147e+03, + 0.32971195446248833605e+03, -0.15087105569976745301e+03, + -0.30400692196630723174e+03, 0.81991358086064380473e+02, + 0.52568127026516401656e+03, -0.45176709870580850748e+03, + -0.35814118097239867211e+03, 0.77954209174619325040e+03, + -0.22109949100875618910e+03, -0.51554452949615256330e+03, + 0.47449541406613411709e+03, 0.95315272651079965271e+02, + -0.27787145597079614845e+03, -0.78945630398512832926e+02, + 0.24008890753825858155e+03, 0.16032414864489732054e+03, + -0.51049373983611081940e+03, 0.16098407790204126400e+03, + 0.53260188741259844392e+03, -0.65001463632778938972e+03, + -0.15638303412862189390e+02, 0.65203012152408848578e+03, + -0.51003543576990381325e+03, -0.15346403613485426831e+03, + 0.49394287082526932409e+03, -0.20426431708326904868e+03, + -0.19572442803898329089e+03, 0.16866359463007117370e+03, + 0.12093528385057864227e+03, -0.13976577017994242169e+03, + -0.19492403653649910211e+03, 0.37481555741640954693e+03, + -0.31205755824618254479e+02, -0.49544400369123002292e+03, + 0.53363441960296847810e+03, 0.54229054295204797143e+02, + -0.64684202426064234714e+03, 0.57384570260748444070e+03, + 0.93634250593105491589e+02, -0.63055110112622458018e+03, + 0.48669781630340918355e+03, 0.12149944907769668134e+03, + -0.51646758752204664233e+03, 0.33317344468622178510e+03, + 0.13583899208963245542e+03, -0.35908837301301667821e+03, + 0.17436182154874325079e+03, 0.10840938343453892401e+03, + -0.15398749794360449528e+03, -0.54256263342567958574e+01, + 0.78220213275725726021e+02, 0.64263265897616051348e+02, + -0.21357991631591048076e+03, 0.10322327500426294478e+03, + 0.21427742464160203895e+03, -0.38281087787359894037e+03, + 0.15168014128032461940e+03, 0.29155191740991961069e+03, + -0.48078490648144605757e+03, 0.17179071970532498881e+03, + 0.35787251225922335607e+03, -0.56519482851026975823e+03, + 0.20165315023317887722e+03, 0.40393544797183989203e+03, + -0.65490719723077404524e+03, 0.28174057376460751811e+03, + 0.37480915905813105837e+03, -0.68816207747609246326e+03, + 0.35554371652840455909e+03, 0.30461475503182089142e+03, + -0.66151747264548805560e+03, 0.37893723607863523739e+03, + 0.26504392339776705967e+03, -0.65080004897276364773e+03, + 0.40958801974433868054e+03, 0.22927791168965393354e+03, + -0.66214437458470649744e+03, 0.48214127826914938169e+03, + 0.14163784715492212740e+03, -0.62906109720589711287e+03, + 0.53318602214419934171e+03, 0.46396520728070569817e+02, + -0.56338505431826388303e+03, 0.53728030693498578785e+03, + -0.12250308812245468459e+03, -0.42269691927700665701e+03, + 0.65191507216500042432e+03, -0.27161726020452022112e+03, + -0.42116756816539304964e+03, 0.69473388678218236691e+03, + -0.32734659056847226566e+03, -0.39869798239208944324e+03, + 0.71984618710771053429e+03, -0.37479893741932022522e+03, + -0.35974866410896402158e+03, 0.69453870619667532083e+03, + -0.35011842935822244272e+03, -0.38231947184140170748e+03, + 0.68870632970686335739e+03, -0.29640169665406267541e+03, + -0.45943700255245875042e+03, 0.73137628937485453662e+03, + -0.27181664960886416793e+03, -0.51625589147808636881e+03, + 0.74942109607917302583e+03, -0.22644750246774250968e+03, + -0.56334914471273964409e+03, 0.71232074047753769719e+03, + -0.10212735281837721857e+03, -0.66743099466797912100e+03, + 0.68154680691141277293e+03, 0.52176483814967596686e+02, + -0.80092078198008027812e+03, 0.66551371278291264844e+03, + 0.18230089761269019277e+03, -0.87605819321659055277e+03, + 0.57884177022732046680e+03, 0.33414141238119691479e+03, + -0.88927829668123354168e+03, 0.38893988523559892201e+03, + 0.54572019075342893757e+03, -0.88372401139328519548e+03, + 0.15855986643338769682e+03, 0.74088693743433657346e+03, + -0.81188365403041564150e+03, -0.88236765208549499562e+02, + 0.83151096765320698978e+03, -0.58190634819775857522e+03, + -0.39429818820429971993e+03, 0.82155282967972073038e+03, + -0.20837301115936642759e+03, -0.72516206791546051136e+03, + 0.71724991858090118058e+03, 0.20751371484622120533e+03, + -0.93145049297158914214e+03, 0.44533681140421867894e+03, + 0.60145077481587031798e+03, -0.89830210005827586883e+03, + -0.25162969997661157606e+02, 0.91771309653066862211e+03, + -0.62558865276341509798e+03, -0.55312155879409851877e+03, + 0.10022236087254963195e+04, -0.15321191791726647580e+03, + -0.90775319060385697867e+03, 0.68641699495494322036e+03, + 0.44238035407359279816e+03, -0.92352049978071136138e+03, + 0.10476033858029746071e+02, 0.92808437095834096908e+03, + -0.53757214593710341433e+03, -0.71617451720769088297e+03, + 0.95107027465250166642e+03, 0.17923296214955593086e+03, + -0.10847670077641776061e+04, 0.35347677524785797232e+03, + 0.89386111773857112439e+03, -0.81128985102894114334e+03, + -0.54714023036781929932e+03, 0.10484107790264981759e+04, + 0.50546328342499577957e+02, -0.10688208694606830704e+04, + 0.32511356940324446896e+03, 0.94310726483271912457e+03, + -0.67819880941137500940e+03, -0.80185256756408034562e+03, + 0.10207594156141842632e+04, 0.41165990332526052953e+03, + -0.12121858429620715469e+04, -0.20442297904798563124e+01, + 0.11283740773639831332e+04, -0.27055499073379229458e+03, + -0.11094694299621166920e+04, 0.48133935721883500491e+03, + 0.10653438987099088990e+04, -0.78871500684136651671e+03, + -0.93395887554771672967e+03, 0.95660437681984512892e+03, + 0.75278032010271124363e+03, -0.10731236621555306101e+04, + -0.66785543454704588839e+03, 0.11301833662568847103e+04, + 0.57799975025486844515e+03, -0.11914382150631683999e+04, + -0.59893731438542010892e+03, 0.12414003017502873263e+04, + 0.58800828178371921240e+03, -0.13039574270939756389e+04, + -0.61113731588541975270e+03, 0.11898145264427955681e+04, + 0.76395455414357218160e+03, -0.11252462571617788853e+04, + -0.10405798606418827603e+04, 0.10710624465121197773e+04, + 0.11608037298528251995e+04, -0.83420593592595650989e+03, + -0.13517026605328976530e+04, 0.35600937485809083682e+03, + 0.15925069471430203976e+04, 0.70315660352926542487e+02, + -0.16303956512538800325e+04, -0.63562950828294526673e+03, + 0.12777221442301436127e+04, 0.12994636326938641560e+04, + -0.73381252152615593332e+03, -0.17566838850082142471e+04, + -0.14354165551070772722e+03, 0.16281313013507469805e+04, + 0.11790982380300376917e+04, -0.91462709690812312147e+03, + -0.18875256135665083548e+04, -0.40606929205178869324e+03, + 0.15969971544463583086e+04, 0.16895913324891409957e+04, + -0.20574207104522602663e+03, -0.19360548541970385941e+04, + -0.16308997493416577527e+04, 0.42647931399566749633e+03, + 0.20731893641902261152e+04, 0.17802252229016498859e+04, + -0.92189558389152509221e+02, -0.20439488546397988102e+04, + -0.23344888245546330836e+04, -0.93337403763479778718e+03, + 0.11132076051220124100e+04, 0.26351836260183486047e+04, + 0.25355264994034841948e+04, 0.12403813799499639572e+04, + -0.68107638136702814791e+03, -0.25154090800172962190e+04, + -0.34438872368648148949e+04, -0.37679618484298507610e+04, + -0.33570579591989189794e+04, -0.25984879256978533704e+04, + -0.19470787663254147901e+04, -0.11693402854313444550e+04, + -0.75932641021067286147e+03, -0.43347475433111753773e+03, + -0.15962714584429667752e+03, -0.17200847137847276258e+03, + -0.70150092849373946180, -0.30781471168395167837e+02, + -0.41329139114290867951e+02, 0.56638219974563924097e+02, + -0.62657099302877206526e+02, 0.36315234828463665906e+02, + 0.26128241684243542764e+01, -0.39883811718291575232e+02, + 0.58955475603642319982e+02, -0.52632404206741334463e+02, + 0.24555161270254050265e+02, 0.12670440361228266113e+02, + -0.42972831521531965393e+02, 0.54079437941900252440e+02, + -0.42162994523372276490e+02, 0.13375512615203861699e+02, + 0.19563898505187999888e+02, -0.42703870178302771876e+02, + 0.47049580149835485088e+02, -0.31731740513029667028e+02, + 0.42015918419516085081e+01, 0.23599429895579049798e+02, + -0.40158906524468946486e+02, 0.39362050401208065864e+02, + -0.22442687975499282516e+02, -0.27204080494758819952e+01, + 0.25436112563820707066e+02, -0.36512379855198794587e+02, + 0.32108171339068348971e+02, -0.14793402442481324854e+02, + -0.76755246208862422108e+01, 0.25945098244032163137e+02, + -0.32761934651826912557e+02, 0.25925974200407829073e+02, + -0.87814629209402710330e+01, -0.11263417190064432205e+02, + 0.25997868199038776993e+02, -0.29615323093698656010e+02, + 0.21027116891362730655e+02, -0.40453831187635262978e+01, + -0.14217222851618835477e+02, 0.26328669428256336715e+02, + -0.27452397185907926769e+02, 0.17265378829205982214e+02, + -0.29059013370174625379e+02, 0.31464034633562249610e+02, + 0.14343750682335683067e+02, -0.48580017314083512758e+02, + 0.68066762069219095110e+02, -0.52914730424135825615e+02, + 0.20771973515205818472e+02, 0.26158883405508646547e+02, + -0.56364076038831406379e+02, 0.68097619547542237228e+02, + -0.44699161564224617393e+02, 0.74594536221226768191e+01, + 0.38918940110728961201e+02, -0.62831979792228729309e+02, + 0.65000400394734938914e+02, -0.32897277365637691560e+02, + -0.82136345504446310883e+01, 0.51580290954888539545e+02, + -0.66589119351524104218e+02, 0.57671979634246042679e+02, + -0.17257878243651362027e+02, -0.25448588239752616857e+02, + 0.62589836231802614464e+02, -0.66019365948984230386e+02, + 0.45219090322183760122e+02, 0.18862774572285172514e+01, + -0.42740889168002084375e+02, 0.69909038208213189591e+02, + -0.59510942022334788248e+02, 0.27294313258740139361e+02, + 0.23332216312593349272e+02, -0.57797626214740731143e+02, + 0.71202545651907598767e+02, -0.45851473863796030628e+02, + 0.45170825184373413208e+01, 0.44775003296432721811e+02, + -0.67642351517280417283e+02, 0.64254554298846372262e+02, + -0.24811886576606479338e+02, -0.21172357715531926914e+02, + 0.62573990063553615926e+02, -0.69534893322900927615e+02, + 0.46348758686074319257e+02, -0.95532786461206209427, + -0.53431597476899852950e+02, 0.56771586444948404448e+02, + -0.92317420327720412843e+02, -0.41574191146077843939e+02, + -0.81414194227851012897e+02, -0.25330960315386644766e+03, + -0.21819810134768832199e+03, -0.44385879868391367609e+03, + -0.52568768564132960819e+03, -0.51623102679522025937e+03, + -0.61060604514233693862e+03, -0.32342298020239570633e+03, + -0.11411529518635464342e+03, 0.14704620562620053192e+03, + 0.47016844565513844145e+03, 0.33511847767598487735e+03, + 0.20166920438942725013e+03, -0.11346782176517565688e+03, + -0.42844456323403187525e+03, -0.23659416375336954275e+03, + -0.54701767712985436276e+02, 0.26157921731806379739e+03, + 0.38273862490314314755e+03, -0.10261318905573306282e+02, + -0.19795428854326746659e+03, -0.29410769874315212746e+03, + -0.84737399981273213712e+02, 0.33919945243981243266e+03, + 0.18870651057878015422e+03, -0.53740081967575264343e+02, + -0.24006135822434251281e+03, -0.21773961277534601777e+03, + 0.24838694909181833737e+03, 0.23632753026228789395e+03, + -0.64272986213033192371e+02, -0.18850597036795528538e+03, + -0.18416050925011151662e+03, 0.22622007483972708997e+03, + 0.23636400514391812067e+03, -0.17756466190472602307e+03, + -0.16918168276175774167e+03, -0.21875078907082983193e+02, + 0.21510639577459298266e+03, 0.13697662508890525146e+03, + -0.29193004019526938464e+03, -0.84018761309410706417e+02, + 0.20431243831422082735e+03, 0.88553455881657498594e+02, + -0.70843789717857916344e+02, -0.21965705301598237043e+03, + 0.10055276820688256123e+03, 0.25865000161799179068e+03, + -0.17895654055742957667e+03, -0.15029204081378125579e+03, + 0.10896018492739648309e+03, 0.12063368857388891797e+03, + -0.70216756546590497479e+01, -0.22677812187149493184e+03, + 0.69926453961873534126e+02, 0.24889704528024415708e+03, + -0.18252222295036582977e+03, -0.12470833832172877464e+03, + 0.14575135418212755667e+03, 0.69699066064411510979e+02, + -0.60965026541031136276e+02, -0.15221342374186409074e+03, + 0.12746970703317835216e+03, 0.16210639305593139170e+03, + -0.25138025850827247609e+03, -0.13546471956672407444e+02, + 0.22211568177565666815e+03, -0.91457904608737521812e+02, + -0.10343609243042625678e+03, 0.45297849071198704962e+02, + 0.10373128073723755449e+03, -0.26742158204978895952e+02, + -0.17833722368972843242e+03, 0.15518068320155452966e+03, + 0.11466116130678406648e+03, -0.25620088076440265468e+03, + 0.71930230117573628945e+02, 0.17157578949256318879e+03, + -0.15622812108275437026e+03, -0.34564129749933556468e+02, + 0.95382982026110269658e+02, 0.24348265491094817747e+02, + -0.79214306574354623081e+02, -0.53137787926961600249e+02, + 0.16915694080295239132e+03, -0.52494635257707336962e+02, + -0.17833651528863154567e+03, 0.21685452571747003958e+03, + 0.56205580311670981786e+01, -0.21800312907821384556e+03, + 0.17047944548716600366e+03, 0.51299613450337027132e+02, + -0.16556676412512780416e+03, 0.69650896806482322177e+02, + 0.63496510793317177956e+02, -0.54895112793774451632e+02, + -0.40625003381319004347e+02, 0.45569112047121784315e+02, + 0.67281706762289388735e+02, -0.12803789271643651659e+03, + 0.13505656539663240423e+02, 0.16295915538023251656e+03, + -0.17733744814942357948e+03, -0.16610256075170891421e+02, + 0.21234581542608378868e+03, -0.18692203102092267386e+03, + -0.35562490804081370754e+02, 0.21336159198316801167e+03, + -0.16328530625298458290e+03, -0.41991829886429314911e+02, + 0.17597417435135304231e+03, -0.11632800804469133027e+03, + -0.39846884959598618536e+02, 0.11551876889447693486e+03, + -0.56335274408099884624e+02, -0.34951166709441487512e+02, + 0.47363847073172280489e+02, 0.76502708119402926812e+01, + -0.32352314770092100105e+02, -0.16289103627832353993e+02, + 0.68562241039999378245e+02, -0.35013243547874495221e+02, + -0.67642637195380842741e+02, 0.12152976778158026150e+03, + -0.43673685823720916233e+02, -0.10315217539740045538e+03, + 0.16379211500042507055e+03, -0.57413915881612837211e+02, + -0.12261173084284982338e+03, 0.19441694563295095577e+03, + -0.74457025654213879307e+02, -0.12798008552843859320e+03, + 0.21389508946754463636e+03, -0.92890147670167635852e+02, + -0.12227818530668997710e+03, 0.22367941609447055384e+03, + -0.11115094641220473193e+03, -0.10872921796946056361e+03, + 0.22573198658246462855e+03, -0.12825340078938168631e+03, + -0.90193911072183652777e+02, 0.22213117566536280378e+03, + -0.14379995648295832211e+03, -0.68879710936650042186e+02, + 0.21477070250216669933e+03, -0.15785348075747128860e+03, + -0.46267072118155091687e+02, 0.20516195695039399993e+03, + -0.17073888757950314243e+03, -0.23188022145741470581e+02, + 0.19433525289206048114e+03, -0.18282712888348473257e+03, + 0.33900859137146120759e+02, 0.15247097089110434354e+03, + -0.22071438956036027434e+03, 0.87952797522166548561e+02, + 0.13999746039839826039e+03, -0.22567764673205746817e+03, + 0.10205061465911919072e+03, 0.13187461985134794418e+03, + -0.22933660733052988689e+03, 0.11014355071505114836e+03, + 0.12905520843702433353e+03, -0.23249298313648094449e+03, + 0.11212570754287777675e+03, 0.13216575791780917370e+03, + -0.23538822625480861461e+03, 0.10761402099252019582e+03, + 0.14151214654981512808e+03, -0.23760765552593102257e+03, + 0.95897167122909635850e+02, 0.15700336692371828917e+03, + -0.23798056356314845061e+03, 0.75979070738343295943e+02, + 0.17797320324827035165e+03, -0.23449179830626476928e+03, + 0.46754463901942209247e+02, 0.20289304116115764032e+03, + -0.22425236259836577801e+03, 0.73672679664177227465e+01, + 0.22899731644298012156e+03, -0.20361878519130993936e+03, + -0.42196471002175165665e+02, 0.25189644009745535413e+03, + -0.16859766983456214007e+03, -0.10025952833237604978e+03, + 0.26533871955554121769e+03, -0.11570449407323340552e+03, + -0.16241481885561512399e+03, 0.26139981836685132066e+03, + -0.43424999822749875023e+02, -0.22053787713099509915e+03, + 0.23149426894205043936e+03, 0.45711736013227572073e+02, + -0.26236115713757061485e+03, 0.16863520535586226856e+03, + 0.14277731657252445530e+03, -0.27243404276172077516e+03, + 0.71162460697595292913e+02, 0.23071835180366619511e+03, + -0.23547218292180966159e+03, -0.52489044734635974976e+02, + 0.28491529762920936264e+03, -0.14279071667077630536e+03, + -0.17964179410916671031e+03, 0.27818638737438249109e+03, + -0.12271713027416153441e+01, -0.27314071901352548366e+03, + 0.19184265164607830911e+03, 0.15864207164608760081e+03, + -0.28942677310622087816e+03, 0.31662064957069599558e+02, + 0.28158848535574639982e+03, -0.19795671597596594893e+03, + -0.15787096935295892308e+03, 0.30259491830286640379e+03, + -0.87879111340535711605e+01, -0.29432744538104407184e+03, + 0.18183810285262930506e+03, 0.20642573613073449224e+03, + -0.28805155385799156420e+03, -0.50461636984143012796e+02, + 0.32595605719437531889e+03, -0.10477762794294247328e+03, + -0.27234247624527040443e+03, 0.24360172254609960873e+03, + 0.17112748296487177413e+03, -0.31724324578882260539e+03, + -0.27928258020775498238e+02, 0.34148691427745478677e+03, + -0.10433848749293176184e+03, -0.29866927265346555487e+03, + 0.22716455449331832028e+03, 0.22737864214089481152e+03, + -0.30410773544374563926e+03, -0.12166397849273610632e+03, + 0.35549612316750256014e+03, 0.21636641587040845280e+02, + -0.36118443556577949494e+03, 0.84078039582238275784e+02, + 0.35264093119705796653e+03, -0.16423252312898401328e+03, + -0.31544521406094372651e+03, 0.23940322057602526229e+03, + 0.28227139947816903032e+03, -0.28606273548898104764e+03, + -0.23705656111610119297e+03, 0.33004264438942971083e+03, + 0.20940946650317624744e+03, -0.35059926780055116069e+03, + -0.18004908287047112481e+03, 0.37407587447481290610e+03, + 0.17578738996299580322e+03, -0.37850337256222076121e+03, + -0.17527713021106893621e+03, 0.38752835787438931447e+03, + 0.20366480581182196374e+03, -0.37538275652184040609e+03, + -0.23782822890036749186e+03, 0.36094995448288642592e+03, + 0.29993092355702509622e+03, -0.31331336475337201364e+03, + -0.36145151084003424558e+03, 0.24684592963308793401e+03, + 0.43524640317479509122e+03, -0.12922260776796454707e+03, + -0.47894142749683624061e+03, -0.19512449319080776178e+02, + 0.48829966453271828186e+03, 0.21322813921154678951e+03, + -0.40672964326398340518e+03, -0.39580996385103890134e+03, + 0.23175422413078879913e+03, 0.52891765865708532601e+03, + 0.55149908166084067318e+02, -0.50643404316442695290e+03, + -0.36400062793624755386e+03, 0.28686048664760937754e+03, + 0.57530799457461193924e+03, 0.12727639021994149005e+03, + -0.49007369064799564740e+03, -0.52258345613509186478e+03, + 0.64285536804149060686e+02, 0.59834035883025717339e+03, + 0.49647651376508957810e+03, -0.12640841635558706457e+03, + -0.63841667979346686934e+03, -0.55335692412186210731e+03, + 0.38542346617900918204e+02, 0.61875466671986907841e+03, + 0.72303904146594834401e+03, 0.29129839768527847355e+03, + -0.35473179248223726745e+03, -0.79540117423909066474e+03, + -0.79174268942797414184e+03, -0.37973164808864618180e+03, + 0.21901877743054629377e+03, 0.75670380605453408407e+03, + 0.10773621962972008532e+04, 0.11492322311050340886e+04, + 0.10306772877796238390e+04, 0.81364073587779307672e+03, + 0.57909620135935517737e+03, 0.37704375042931792450e+03, + 0.22675600251593206735e+03, 0.12683215493614439140e+03, + 0.66314250007619946814e+02, 0.32536681435413470354e+02, + 0.15025925359784931601e+02, 0.65471290556018093554e+01, + 0.26967097755197202424e+01, 0.10516210098556102448e+01, + 0.38874228870186178231, 0.13635405420498769580, + 0.45416292656994025623e-01, 0.14372962316375331726e-01, + 0.43236947639012464004e-02, 0.12366811858909635378e-02, + 0.33636933924637843008e-03, 0.87003942368199242599e-04, + 0.21398439658262217306e-04, 0.50032624282119772966e-05, + 0.11117607720149642054e-05, 0.23467501846789328525e-06, + 0.47030704955192984118e-07, 0.89426592741012678386e-08, + 0.16120616698129359055e-08, 0.27525202659612138208e-09, + 0.44469135728497591491e-10, 0.67896617984374584474e-11, + 0.97838943229246235314e-12, 0.13285754055958886071e-12, + 0.16971623709331852545e-13, 0.20355410444892340095e-14, + 0.22871989197103298491e-15, 0.24017058262443752919e-16, + 0.23502164556657302175e-17, 0.21363873524672435569e-18, + 0.17974155191427463344e-19, 0.13937536912970879046e-20, + 0.99122863582198597733e-22, 0.64288446069101277669e-23, + 0.37768636908939022300e-24, 0.19936807401021074911e-25, + 0.93632859038201914269e-27, 0.38648999900147639284e-28, + 0.13804700453086651627e-29, 0.41803974428145852887e-31, + 0.10436400928343130195e-32, 0.20623878886624208292e-34, + 0.30249468731971744631e-36, 0.29275762599032078322e-38, + 0.14023892331232994203e-40, -0.13602817193372970534e-02, + 0.29667136575787411874e-02, -0.44627917965843295553e-02, + 0.42872920658554901710e-02, -0.22551428731654695262e-02, + -0.36746654631483661492e-02, 0.11313850637414806996e-01, + -0.19951499138193065641e-01, 0.25628373409563802443e-01, + -0.27782550998377661400e-01, 0.24575214085219423271e-01, + -0.18660846099284752325e-01, 0.11118150213993534953e-01, + -0.59614116220539341978e-02, 0.35333945542562637462e-02, + -0.54321019923764457191e-02, 0.90468867276322917359e-02, + -0.13792005770655018509e-01, 0.16493874571029357862e-01, + -0.17650192239827569574e-01, 0.16069733029219143705e-01, + -0.14042786874616398213e-01, 0.11128515165979322582e-01, + -0.91302979062111312009e-02, 0.63967917526500956554e-02, + -0.36866037544156494109e-02, -0.79359813058910947271e-03, + 0.53699017053675038302e-02, -0.10385286745602864689e-01, + 0.13083314936386978775e-01, -0.13850707001347750333e-01, + 0.11254280962620840864e-01, -0.77005823265517709536e-02, + 0.34419909049577313877e-02, -0.13210236591028271663e-02, + 0.50795761771218952019e-03, -0.18163496148315774487e-02, + 0.25741049190690220780e-02, -0.30132769397089483043e-02, + 0.15253577927378727131e-02, -0.46042598220844883515e-03, + 0.95074614401765580006e-04, -0.31030630758061387986e-02, + 0.80761285966169521489e-02, -0.14432656593381639268e-01, + 0.18161864995522612048e-01, -0.16990045584374547510e-01, + 0.10740165666109319914e-01, 0.24851179375663403313e-02, + -0.95564571008962748144e-02, 0.26180246211208089979e-01, + -0.91268064261209140564e-02, 0.32051026062267971850e-01, + 0.27769799410190407207e-01, 0.34501713856415296144e-01, + 0.69934522106783358897e-01, 0.55434465971835100717e-01, + 0.71326504928865622213e-01, 0.61255483761920519192e-01, + 0.19808289191191773976e-01, 0.32476643170175579708e-02, + -0.37576077220324514971e-01, -0.59791135920816293470e-01, + -0.24995466111523048647e-01, -0.18555287669872227302e-01, + 0.34477831266227082496e-01, 0.53462469397929313075e-01, + 0.75170335850005430209e-02, 0.12774779152551554717e-01, + -0.60805947342052205085e-01, -0.18805193944718044674e-01, + -0.12541600521021971631e-02, 0.35513044731765773532e-01, + 0.29885448648230970858e-01, 0.21454081515361919489e-04, + -0.45740430875089631291e-01, -0.12104824396034151793e-01, + 0.55139823738800889524e-02, 0.36040790847075968029e-01, + 0.18870864713917783612e-01, -0.38189629542664978168e-01, + -0.13885417594734926830e-01, -0.83550843253224326562e-02, + 0.47264148278606019082e-01, -0.57130587509393437190e-02, + -0.32424305985655505619e-02, -0.48647195578303187302e-01, + 0.35117682793392175633e-01, 0.14662019281445467719e-01, + 0.30956425573202398828e-02, -0.20699692441421117112e-01, + -0.23917858263394004698e-01, 0.34722925354805533882e-01, + 0.17413877187616933623e-01, -0.28687255243298747515e-01, + -0.75200279427427496257e-02, 0.15349292352431205370e-02, + 0.25266454327670714169e-01, 0.49397309044123798721e-02, + -0.47745718233586406654e-01, 0.26859411956889508305e-01, + 0.98714966712740402632e-02, 0.47309429957265187322e-02, + -0.24748673329286933337e-01, -0.17013535146965556247e-02, + 0.23010682926255264513e-01, 0.64001571963987228739e-02, + -0.30947449903314203090e-01, 0.23977514912974237996e-02, + 0.28020712135112785246e-01, -0.91983256924234417518e-02, + -0.18400792552254879864e-01, 0.69284585866313235653e-02, + 0.10151832113563560855e-01, 0.10852362302710935257e-01, + -0.37113724048762924967e-01, 0.19316122464338305459e-01, + 0.16520954942696435691e-01, -0.13080538459234642562e-01, + -0.20698915228782113068e-01, 0.28763643518103627905e-01, + -0.29628090728487255917e-02, -0.11646094388356682814e-01, + 0.45948839681703381084e-04, 0.12860249465523659797e-03, + 0.29073272192685493259e-01, -0.48661650947647051846e-01, + 0.24639734697281801684e-01, 0.14977998675578524726e-01, + -0.21796800002549538561e-01, -0.13560697223909438328e-02, + 0.10470941292144014811e-01, 0.95671308166462229461e-02, + -0.26464641715616916973e-01, 0.15629946154325776581e-01, + 0.26052422993306889425e-02, 0.57366136531596210058e-03, + -0.15207677954953676205e-01, 0.94587644464999599825e-02, + 0.17221222763288194374e-01, -0.28560817027120741912e-01, + 0.31935178303123140132e-02, 0.32352617401275214626e-01, + -0.37669240797590486380e-01, 0.10768545155074438560e-01, + 0.12810749835239975888e-01, -0.89534676381476177576e-02, + -0.74528930634454254936e-02, 0.95047343804905426445e-02, + 0.32152937830144316493e-02, -0.82929426939013627801e-02, + -0.40412210928755746414e-02, 0.16550778818012180926e-01, + -0.11169559014840324193e-01, -0.37246055014275593863e-02, + 0.44122094247982983697e-02, 0.13554944962400830230e-01, + -0.25698598319141310181e-01, 0.87782101780028865684e-02, + 0.27402478923500072500e-01, -0.48282683797452145835e-01, + 0.33708283670869455817e-01, -0.65712127106305664309e-03, + -0.17309201900889064490e-01, 0.79770689824159059234e-02, + 0.86134130985963588273e-02, -0.65677798175946613957e-02, + -0.15690833989170937385e-01, 0.35684342952776226809e-01, + -0.33964552913062280581e-01, 0.14484786827603332582e-01, + 0.31335663093404486114e-02, -0.66932883482276606113e-02, + 0.17231351381100158161e-02, -0.80493869496763831143e-04, + 0.40446493201792416139e-02, -0.57352930120862155236e-02, + 0.51814156964003042912e-04, 0.70944221997946057406e-02, + -0.61493224482264147862e-02, -0.31153394366624279598e-02, + 0.10115244442008845122e-01, -0.62069438024022873315e-02, + -0.38798030330914451934e-02, 0.65250189202574332414e-02, + 0.45142302632787782712e-02, -0.19078555507669740093e-01, + 0.20385292093399284136e-01, -0.39057189412471586369e-02, + -0.15774208094440085592e-01, 0.18809732043276922858e-01, + -0.78529951746091682541e-03, -0.21981423677539777689e-01, + 0.28804018515106149384e-01, -0.15902214209251176735e-01, + 0.91830621381085739217e-04, -0.72268684004341845160e-03, + 0.18626272262933410429e-01, -0.34350514492304272396e-01, + 0.27943570617335485723e-01, 0.54788718365772870467e-01, + -0.37587567227317139618e-01, -0.16058959527968102998, + 0.23158960005636364254, -0.64152135472139007466e-01, + -0.24678280928183340959, 0.40933808295042717340, + -0.27660573024033718870, -0.63819106910158657220e-01, + 0.29625105566901693832, -0.24379409102029586665, + -0.16633334443594206126e-01, 0.16443153167561552763, + -0.30192324338913091586e-01, -0.27436614461312147650, + 0.39077294222761926878, -0.15111208863392869284, + -0.28067568639766787841, 0.48326373053915749889, + -0.26866664039674792441, -0.16759763703471780572, + 0.36659877130104862042, -0.14261865651803298793, + -0.27701340119785039517, 0.42655146043679076362, + -0.16567187016757248252, -0.22455296031668134371, + 0.28500010047673257629, 0.52256340851624928645e-01, + -0.44437709541279585279, 0.45178765983293905917, + -0.78669858961083402593e-01, -0.31004572781513001223, + 0.34814462718096811367, -0.12048399861571000569, + -0.47628624393324554831e-01, -0.53049565016636275605e-01, + 0.22575820533754883956, -0.21969646004461562683, + 0.18837685453431358279e-01, 0.90886299019558886014e-01, + 0.13570094847735119509e-01, -0.15836596896109125798, + 0.55162867569905307819e-01, 0.20722547208261382634, + -0.28205765891362749587, -0.28402972045075726426e-01, + 0.38410916201078060261, -0.34140547499672280196, + -0.12219718087065936651, 0.46428729626802328623, + -0.29281738161297649059, -0.18882073290283640787, + 0.38183298242662555566, -0.12048644277009093462, + -0.19990444904475568322, 0.13892800642915859033, + 0.13623290178718028276, -0.19788265952579695006, + -0.32739181688925977909e-01, 0.11827213206032649584, + 0.14079658439433850869, -0.39045902404226329185, + 0.17915757950300062462, 0.24841485475130190008, + -0.28514771426231083629, -0.19261478337790785553, + 0.52263612298584571914, -0.24227971755626784289, + -0.28993272301639827493, 0.39031256313889933773, + -0.12305080368034379545, 0.64290536020453384336e-01, + -0.34799446226430230666, 0.37813055702469478003, + 0.72805901762560590318e-01, -0.41466570258374030322, + 0.10481328648139376369, 0.35146582722303854052, + -0.21858202778551830137, -0.29851932697897648472, + 0.33250633315615785168, 0.13007984973825942321, + -0.29776017412833993836, -0.52498452804575990172e-01, + 0.14178944217121600135, 0.27598087001093846160, + -0.40106333994063420034, -0.20258748562395509363, + 0.62976626586465567215, -0.22621858755931040230, + -0.27214078066963182101, 0.70307183929337241368e-01, + 0.16874868075248872223, 0.23871849288946619949, + -0.55848269807496420114, 0.74934489744620793802e-02, + 0.51276496628550560786, -0.12501392452822243651, + -0.31215072174600172472, -0.94701677362142536176e-01, + 0.38063812636471022754, 0.15988610971046221532, + -0.40894371685795527505, -0.21621194353661238319, + 0.32608359407255504969, 0.41686874487991293359, + -0.49812361931641552237, -0.15832572648994294728, + -0.64195901825841103494e-02, 0.48993484174007689846, + 0.12152933799519327618, -0.70073329733348632686, + 0.22486789202509967212e-01, 0.25106029662689227644, + 0.40752945817780128479, -0.12641616233424179949, + -0.57444777552855064151, -0.13431378850413916437, + 0.58965717039665732635, 0.22333995163895495328, + -0.60865485026182011841e-01, -0.55460757420096618020, + -0.40022018242688761624, 0.66839755658932464844, + 0.27745371008946245750, 0.25101983654258963607, + -0.47599907244306693954, -0.75829637160002083540, + 0.22039370118223566841, 0.24187985562679142904, + 0.80949305970314278103, 0.11531270722767339443, + -0.46448390146509832555, -0.64307404897139763822, + -0.57708737464525605709, 0.17188243815797521474, + 0.53614213277388367285, 0.92950680645682492997, + 0.45269462585150710421, 0.20738882045885762007, + -0.56370989417647965336, -0.89571435040496716340, + -0.10107922145825607441e+01, -0.11909065213933831551e+01, + -0.79785907642634512627, -0.73550043463194891835, + -0.51045590293704801166, -0.22388799116217744656, + -0.25098346985587205449, -0.98306143942401003066e-01, + 0.35481251869629554241e-01, -0.17553125086790455356, + 0.13561812609123943818, -0.81676576038720485884e-01, + -0.31709783494019566641e-01, 0.11531630960573860389, + -0.13586739808564193832, 0.73074735614795563454e-01, + 0.42829340304410642992e-01, -0.15295634631724683294, + 0.19494949274430842245, -0.13485817543830913579, + -0.13841930703346171788e-01, 0.19446015809557429255, + -0.33100678358452573224, 0.36329467572838308742, + -0.27404914824836040799, 0.97808665950169890180e-01, + 0.95140518150134245623e-01, -0.22975092641803185334, + 0.26004405180180062418, -0.18781618406336539340, + 0.60136293367890239492e-01, 0.54890237320870241544e-01, + -0.10026318307427413423, 0.57043828991491150882e-01, + 0.48231414036908136500e-01, -0.15684782382975676063, + 0.20712860000265739813, -0.16396881028782486767, + 0.36592742001881707614e-01, 0.12517969704184656043, + -0.25276105339469956412, 0.29004430405629355594, + -0.21841286842399346146, 0.65546772889784568616e-01, + 0.10701591336018582978, -0.23062838460105161698, + 0.25958531218529157236, -0.19009685477539586818, + 0.60897120660060873043e-01, 0.65297960017796030652e-01, + -0.13013492928941045035, 0.10571764012316026138, + -0.62743435147994738171e-02, -0.11899547578188887642, + 0.20889432436091262546, -0.21813270669708184624, + 0.13794956359735038864, 0.15907522155619518989, + -0.51285303258992276376, 0.85318183113893242275, + -0.98703021488417941320, 0.90507110285593028731, + -0.40816662933227604304, -0.23143023347310989757, + 0.93555873623554874907, -0.12954212189500458052e+01, + 0.13102575526839428388e+01, -0.83563065307844708318, + 0.20588206138986014926, 0.46842652924463212827, + -0.79207888426766348555, 0.81079049454607554637, + -0.42496465807866840025, -0.24719994495409385732e-01, + 0.47714556222235915417, -0.62837867229382038392, + 0.61601714821953612589, -0.38428203871605820519, + 0.23834967900453138401, -0.12931992569156317008, + 0.21824589422454962473, -0.25315835751227949713, + 0.25607071770647904518, 0.13805821823713605376e-01, + -0.37217594166102996311, 0.83317628320710834799, + -0.10502517446200840823e+01, 0.10398633792361069439e+01, + -0.63670590912582036847, 0.13322357652491637059, + 0.40649793440435333380, -0.63103614802185969967, + 0.62494856456512470899, -0.31903605358333242403, + 0.63533539324321500197e-01, 0.10825129087256017690, + 0.31840322860948656880e-01, -0.23427096581375042583, + 0.44272553359357291747, -0.29712707273124577823, + -0.11734378426645615534, 0.79780227514037116432, + -0.13220479160689615483e+01, 0.14206959776754002345e+01, + -0.10196734020826891953e+01, -0.16558250063542631625, + 0.73332494578790452522, -0.24835497510117625630e+01, + 0.57989728598118883696, -0.32412484639642888951e+01, + -0.33259741539082932071e+01, -0.37700062481615241872e+01, + -0.78472733556010512146e+01, -0.62253553942183339487e+01, + -0.79705207397208184261e+01, -0.68775016001923896525e+01, + -0.21819329438783876540e+01, -0.44428596299977857198, + 0.43393225009857516739e+01, 0.65453066303989615449e+01, + 0.29044548798124916189e+01, 0.21109335703442027032e+01, + -0.41201824073682971061e+01, -0.54459376325782482553e+01, + -0.16702737323307852435e+01, -0.37103735163400447528, + 0.56219764881699685333e+01, 0.33000089217847881073e+01, + -0.94528210869597517618, -0.30774254751311267420e+01, + -0.40296806804289246884e+01, 0.47216885386906676247, + 0.48260428606610252800e+01, 0.15024123799653485989e+01, + -0.61726461888368855391, -0.42110027856694856041e+01, + -0.17144063986719833004e+01, 0.36018384517228896335e+01, + 0.25346316687239167642e+01, -0.32939312383293761766, + -0.38138658253731088088e+01, -0.93836637953120294320, + 0.19040368977638586490e+01, 0.40706228231997565459e+01, + -0.28040929372010081622e+01, -0.24921319773574732714e+01, + 0.25016059641899218713, 0.19102773744159518010e+01, + 0.29746046923794651207e+01, -0.41314057619735242710e+01, + -0.17392209136873479913e+01, 0.30548756745100571486e+01, + 0.89311249277774740207, -0.50030139966785180938e-01, + -0.31737888371615872174e+01, 0.25311236118348463819e-01, + 0.45693623228916466772e+01, -0.21068078848978619710e+01, + -0.20298764425683959445e+01, 0.31882372321726870634, + 0.20719485879100738579e+01, 0.71064281651884664281, + -0.29311427365528683886e+01, -0.47856688924367768445, + 0.32748436178619315662e+01, -0.56223353955465835141e-01, + -0.34219795301207258653e+01, 0.14107180302746116229e+01, + 0.15826398542785526935e+01, -0.21485188905153138061, + -0.17597153891943682069e+01, -0.55024833757970825765, + 0.34646958168468908745e+01, -0.14600632256512251494e+01, + -0.25408094519872284067e+01, 0.21032932068580256768e+01, + 0.17897330713990384776e+01, -0.28717638906392188858e+01, + 0.22833182438443250240, 0.11153830718063304506e+01, + 0.48391386625539822841, -0.76031275093676198296, + -0.23465563168031575714e+01, 0.45072433136848095714e+01, + -0.19266641042134549089e+01, -0.22734039471413014510e+01, + 0.27160884766128781109e+01, 0.22231975925182584364, + -0.15496864487230772589e+01, -0.47666790822799193217, + 0.22661509528852454842e+01, -0.10607407912739439393e+01, + -0.89186876828192929167, 0.41110162079201079122, + 0.13390560998757190525e+01, -0.75469414612740437498, + -0.22419784442913126554e+01, 0.35815279946480873541e+01, + -0.84335891896881309826, -0.30382358089469900797e+01, + 0.35724698281399240862e+01, -0.55743278554480413245, + -0.20251930321580107197e+01, 0.14935216814118059681e+01, + 0.45343460411627650730, -0.76795026085074713507, + -0.62135807279712351736, 0.12111163969688196751e+01, + 0.10775499729154516815, -0.14370335517939600845e+01, + 0.79462281225072783908, 0.84433072479741178018, + -0.80198648036845943121, -0.14164505039156289889e+01, + 0.30406485240205789466e+01, -0.14180574464494664078e+01, + -0.24115576373948686140e+01, 0.46309812684249207493e+01, + -0.30175999058128750718e+01, -0.51962621511517370632, + 0.22448595905974126907e+01, -0.83814635345918198084, + -0.13931035903130675191e+01, 0.14855591864715329553e+01, + 0.78789183548621233300, -0.29368259088922994415e+01, + 0.27833638899254653509e+01, -0.74553343106265090867, + -0.10202451973190509449e+01, 0.11949645708624259122e+01, + -0.43884752126333020916, 0.10673364806865143217, + -0.46184739631313870278, 0.61236379846700850216, + 0.34359403172968150386e-01, -0.84116170058865413761, + 0.75876967948250784168, 0.22813741827910982707, + -0.93617284646676535154, 0.41014932181168350933, + 0.80211709424512700473, -0.11582941229406575889e+01, + -0.49930004681633818886e-01, 0.16825892685987589026e+01, + -0.18462317597648882916e+01, 0.12101436691468941270e-01, + 0.22093082965948633856e+01, -0.26123730256954149631e+01, + 0.70722041080841080429, 0.16899266054431347772e+01, + -0.22887881795860791634e+01, 0.70325333196012218551, + 0.11434172301384581960e+01, -0.10506546809998154046e+01, + -0.10930922769740876177e+01, 0.31073653049320850705e+01, + -0.27343882885355688117e+01, -0.27125383852555877695e+01, + 0.42879051795191251983e+01, 0.34575702118433588872e+01, + -0.81254869740046462567e+01, 0.39819416491134691505e+01, + 0.71592258805113901943e+01, -0.14341644370381759543e+02, + 0.10752981101957754362e+02, 0.17827686233749457934e+01, + -0.11256251828173473584e+02, 0.98225785411064823194e+01, + 0.78352880322962603632, -0.80304931912068688860e+01, + 0.41743931768144291183e+01, 0.77587907345907529688e+01, + -0.13822613480168653766e+02, 0.64435929953780108903e+01, + 0.92684528506379244561e+01, -0.17114031167443332748e+02, + 0.91943003088974606385e+01, 0.76868163576118746505e+01, + -0.15732592728909185809e+02, 0.74244743138690321160e+01, + 0.87611015767102582430e+01, -0.14594477249071939440e+02, + 0.45406457286364112491e+01, 0.10535437986592990356e+02, + -0.12679128465888641841e+02, -0.47894688835533172355, + 0.15416160656915451455e+02, -0.15186822299812783754e+02, + 0.86558476510206261434, 0.12719758710285866243e+02, + -0.11677921345429014721e+02, 0.89272628043088664285, + 0.58189597151009033738e+01, -0.64576442304557679641, + -0.69549927363971368877e+01, 0.60892896838051395747e+01, + 0.31996786486654165138e+01, -0.77761959786648953141e+01, + 0.19793061080896343640e+01, 0.62776707641690281392e+01, + -0.35932135923237895625e+01, -0.72483432016107247620e+01, + 0.11562087240214351525e+02, 0.51204926145893253642e-01, + -0.14494051919323650779e+02, 0.13511162540599119808e+02, + 0.45407053968787067788e+01, -0.18053065902539156440e+02, + 0.11289205575302680984e+02, 0.74914448098716190927e+01, + -0.14170701588591201769e+02, 0.27626519142722343325e+01, + 0.99745946584869962237e+01, -0.62901722295453765810e+01, + -0.57296718495418605954e+01, 0.75774378265370945229e+01, + 0.36849196997255240227e+01, -0.86809121751497979602e+01, + -0.18421722410328387198e+01, 0.13139407244096119598e+02, + -0.55600861554899321249e+01, -0.11535145136223919238e+02, + 0.13087995634194209416e+02, 0.64865251521051270345e+01, + -0.20284998035752558110e+02, 0.96156166512084180198e+01, + 0.10508648683416490499e+02, -0.12235583232716569668e+02, + -0.57522326806028434287, 0.30180805781837896085e+01, + 0.10363632020720537241e+02, -0.13624569941539359519e+02, + -0.38181297011531944996e+01, 0.17700727683330935491e+02, + -0.49986023515055029165e+01, -0.13751878153425201035e+02, + 0.82377018794892080678e+01, 0.12899246107554970919e+02, + -0.13718354643208780175e+02, -0.57433197422519368658e+01, + 0.12049591009950127329e+02, 0.37500530138205530051e+01, + -0.81404284135964939395e+01, -0.98445979415712443483e+01, + 0.16619392606366417908e+02, 0.68372843259751956424e+01, + -0.23520863111343725649e+02, 0.66784376335465953645e+01, + 0.12798887836820737718e+02, -0.22649526276793041646e+01, + -0.93903016568920421037e+01, -0.72871459667425293460e+01, + 0.21512570498660359419e+02, 0.20779892592435866838, + -0.20851267820599133529e+02, 0.41524910729391875108e+01, + 0.13804926527068950293e+02, 0.40675489545928238400e+01, + -0.16702618965776704130e+02, -0.57838259489470171815e+01, + 0.16270987632816247270e+02, 0.10138435767021181988e+02, + -0.15389232133140819059e+02, -0.14786580414331037758e+02, + 0.17290039162358507241e+02, 0.10434731855101563980e+02, + -0.25437876229427662800e+01, -0.19686657724720824092e+02, + -0.37842740420576959082e+01, 0.26436703474495285349e+02, + 0.26499765752437203226e+01, -0.13680258069932140330e+02, + -0.14965997447750870819e+02, 0.39686021004280247482e+01, + 0.25293887807178116134e+02, 0.40685374662049307304e+01, + -0.22717136575692293832e+02, -0.11334691352030173306e+02, + 0.34994275091006414868e+01, 0.24090729788386930466e+02, + 0.14220969810817093659e+02, -0.24466131233751770679e+02, + -0.14955395152913309786e+02, -0.88447024592674026167e+01, + 0.20614164550316136371e+02, 0.29061952502699060830e+02, + -0.52089083022792843636e+01, -0.14247687144181650609e+02, + -0.30892237403518521432e+02, -0.64693704525845205922e+01, + 0.19713628744274199533e+02, 0.27842995676453107023e+02, + 0.22760723199009937900e+02, -0.53048371832690719430e+01, + -0.24841807184013251941e+02, -0.36324046211643356230e+02, + -0.21916765945536191396e+02, -0.60602869191657049441e+01, + 0.21829587438800185595e+02, 0.38265592132090738176e+02, + 0.43027268828022464220e+02, 0.48638410012530968629e+02, + 0.35026910598924565932e+02, 0.29843219942211600682e+02, + 0.21774387864109915114e+02, 0.95544807793398760509e+01, + 0.10460932288316122651e+02, 0.35754805121371493470e+01, + -0.61539082629524149981e-01, 0.53089451556840270285e+01, + -0.36126138470175197526e+01, 0.20021741188843904524e+01, + 0.17330321399896932988e+01, -0.43540371476311090504e+01, + 0.49094306014897650670e+01, -0.26740939684047582148e+01, + -0.13634624436279711990e+01, 0.53046678072704915863e+01, + -0.71113930364156034969e+01, 0.56420563192698880428e+01, + -0.12671628371325553974e+01, -0.42575165197646924753e+01, + 0.85438812016382890135e+01, -0.96900831345357438806e+01, + 0.71404263236417992999e+01, -0.19725982108647837077e+01, + -0.36158882555951827875e+01, 0.72894697346814707473e+01, + -0.76505341519953056206e+01, 0.48251372541706460950e+01, + -0.37601327129539702243, -0.34828543827858107207e+01, + 0.49165671466434544001e+01, -0.33347630432746258045e+01, + -0.37644894046114990571, 0.42838976784242426277e+01, + -0.63523240945092345200e+01, 0.53961782220268412757e+01, + -0.16578049903408360599e+01, -0.33074708410916873191e+01, + 0.73242754787168262709e+01, -0.85977136626392010044e+01, + 0.65138687564891180060e+01, -0.19269943733930836594e+01, + -0.32344624179853553869e+01, 0.68166164704708478439e+01, + -0.73973435913378455808e+01, 0.48878894178491361089e+01, + -0.55050568099468466521, -0.35968329730282753154e+01, + 0.56859177189617113868e+01, -0.48320387418394021850e+01, + 0.15038246458232689129e+01, 0.27081395891511759189e+01, + -0.58296158645687681243e+01, 0.63971864657877262061e+01, + -0.41192501256052524994e+01, 0.64681152796862018128, + 0.40105723134714024170e+01, -0.11560358334621161802e+02, + 0.14742999875242592367e+02, -0.13671011788246602237e+02, + 0.53091295001652261121e+01, 0.49086591303779156803e+01, + -0.15461409557104870416e+02, 0.19358537250605102997e+02, + -0.17385515409728693470e+02, 0.77669114787798347876e+01, + 0.29468582743241351629e+01, -0.12868827936666736633e+02, + 0.15574541787493126677e+02, -0.12991718996694913812e+02, + 0.43635837080703323565e+01, 0.35512710771580660030e+01, + -0.97478294633922555334e+01, 0.94727593464614532337e+01, + -0.63283821798726069829e+01, 0.35232985255840965078, + 0.23240420237861010300e+01, -0.26187872124993374356e+01, + -0.17751762741544940827e+01, 0.53832917233002071100e+01, + -0.77569581771992002217e+01, 0.40597968296657542808e+01, + 0.23488815585183360213e+01, -0.11292685091077853343e+02, + 0.15905305650732971756e+02, -0.16027924233219923877e+02, + 0.85532880695775634905e+01, 0.96257949857268421123, + -0.10870184043172560706e+02, 0.14351169232005668519e+02, + -0.12766338600387971525e+02, 0.51136084200877158779e+01, + 0.16470864298813416848e+01, -0.61428612305449448172e+01, + 0.36290335127296811102e+01, 0.15719293529019084943e+01, + -0.80953357584549134884e+01, 0.86224946567428464306e+01, + -0.36968097969725493002e+01, -0.74836946649773565809e+01, + 0.17682605358143117513e+02, -0.21853036261772725624e+02, + 0.17923489870287365733e+02, 0.18968797414598068118, + -0.81620296867232511318e+01, 0.38896913660310190153e+02, + -0.53560708031110682015e+01, 0.55001378752266660399e+02, + 0.61153930372619178968e+02, 0.68243883887055901027e+02, + 0.13997296532182687656e+03, 0.11342827845266015174e+03, + 0.14245475721214233999e+03, 0.12448286222140356472e+03, + 0.38454083256750472231e+02, 0.95373678876098963997e+01, + -0.80760542640709161333e+02, -0.11414818095962246502e+03, + -0.56322921966945528993e+02, -0.34630911760031956703e+02, + 0.72581448228385767152e+02, 0.97020889348077247405e+02, + 0.33842196166305605232e+02, 0.62796819617473809139, + -0.93924314236616552876e+02, -0.66643879059762227257e+02, + 0.23157087594871136105e+02, 0.50918906747068312768e+02, + 0.75374691031038054234e+02, -0.10243640901913533270e+02, + -0.85499473145715157330e+02, -0.28600828461081466259e+02, + 0.12952044467275314332e+02, 0.74119435869289787888e+02, + 0.31493979134709871204e+02, -0.63447587226669242000e+02, + -0.49734837730655776511e+02, 0.12859931102860906904e+02, + 0.59526202502316948539e+02, 0.26948045820222901625e+02, + -0.43719032138264168452e+02, -0.65860327278900115289e+02, + 0.45984575255397594162e+02, 0.46286978137930979926e+02, + -0.34946718382658659152e+01, -0.36704351463533100741e+02, + -0.51172891095258471239e+02, 0.72911175502490408462e+02, + 0.31445061936473695852e+02, -0.54089503734910046262e+02, + -0.17215094035506236736e+02, 0.12549541799446510826e+01, + 0.58418442151570168619e+02, -0.37916435280335418767e+01, + -0.77096220187360913201e+02, 0.31742374356102295963e+02, + 0.42610986030281281955e+02, -0.10572457680211275743e+02, + -0.34531718342022031720e+02, -0.13183968913591696648e+02, + 0.51035999883769576968e+02, 0.11750895398685864635e+02, + -0.62592151400144210527e+02, 0.43044574648961848595e+01, + 0.59254669275544266327e+02, -0.24272539242191864872e+02, + -0.28425289192934297233e+02, 0.28201356379578133016e+01, + 0.33487334512821959720e+02, 0.74415981050777544326e+01, + -0.59258374175158550656e+02, 0.22491848789198318315e+02, + 0.50139692393640586943e+02, -0.42587259160112964196e+02, + -0.27762285738704786553e+02, 0.48348055128118147650e+02, + -0.27877978071786944092e+01, -0.18654612741945104659e+02, + -0.13170954868439524788e+02, 0.20862447115280318144e+02, + 0.33288681370035888563e+02, -0.71834286043608685191e+02, + 0.26629151387674760088e+02, 0.46326573667271304657e+02, + -0.50796549370828188330e+02, -0.56989964339744929589e+01, + 0.32519225692736036137e+02, 0.22938179627055665932e+01, + -0.34379953947599872777e+02, 0.13958706061064024340e+02, + 0.18980155388920028514e+02, -0.78705267671024978782e+01, + -0.25655821304454210718e+02, 0.16218040157633232923e+02, + 0.37770117996896608759e+02, -0.62909311532144023715e+02, + 0.15188151563838770741e+02, 0.53137022233800472293e+02, + -0.61754803878556622010e+02, 0.73334874332766410987e+01, + 0.38442226521804656159e+02, -0.27588790694823327243e+02, + -0.88348577002069674791e+01, 0.15444543654737797667e+02, + 0.94262582063173088187e+01, -0.20843310658755097364e+02, + -0.13568899302766972426e+01, 0.23468847350234128157e+02, + -0.10429318629026184340e+02, -0.19638385130461117001e+02, + 0.18162369863323338137e+02, 0.23795697680970871346e+02, + -0.56048119008206391811e+02, 0.30223299783061815305e+02, + 0.35726879796501449960e+02, -0.73819017473775346616e+02, + 0.44535658517615047458e+02, 0.17620554247216695387e+02, + -0.45663795142183644771e+02, 0.16419028968968049753e+02, + 0.27799011808967126314e+02, -0.32870909288165783835e+02, + -0.59021581440731090140e+01, 0.43991021312613675320e+02, + -0.42142654640909306352e+02, 0.75070558086939094267e+01, + 0.21672879824993369624e+02, -0.22283105759280303459e+02, + 0.67258179342574120341e+01, 0.30714703243089153117, + 0.59545866908894558023e+01, -0.92534612439962664610e+01, + -0.14431147611503072348e+01, 0.15062303992288574861e+02, + -0.13034931529447442600e+02, -0.47681553515286214662e+01, + 0.17091050065518150092e+02, -0.69533766041055304896e+01, + -0.15490559575252389024e+02, 0.22200497201617153564e+02, + -0.26600029561946658685, -0.29783303464213162215e+02, + 0.33671065430481007752e+02, -0.15554370068647223047e+01, + -0.37943346339960733360e+02, 0.45423909562051136390e+02, + -0.12207828291653028074e+02, -0.29095305346030567506e+02, + 0.37562024588890359666e+02, -0.67089621102081276049e+01, + -0.28319381891873181445e+02, 0.27449226958067868054e+02, + 0.11612198564979877347e+02, -0.49648431778560883743e+02, + 0.45778570355566188255e+02, 0.34164038906242360838e+02, + -0.71154212840921530869e+02, -0.16834565278486330442e+02, + 0.88552849440308477824e+02, -0.65286915481781321091e+02, + -0.51624096323423280808e+02, 0.14267538303154782398e+03, + -0.11953145093698759638e+03, -0.13983801322249576060e+02, + 0.12572071081095367617e+03, -0.11729982785894557651e+03, + -0.52863964070237239312e+01, 0.10112073460920171897e+03, + -0.71702384779023461192e+02, -0.62394158208416669709e+02, + 0.14441293238351261152e+03, -0.78691457274396867660e+02, + -0.90122625602514432330e+02, 0.18150875340027508287e+03, + -0.10021220276135173322e+03, -0.85974810972768921147e+02, + 0.17781491335308476209e+03, -0.87762944996335178871e+02, + -0.92940648329310988629e+02, 0.15854386026370980289e+03, + -0.46279038329848695810e+02, -0.12242960351677480446e+03, + 0.14493457478937375527e+03, 0.23350847078760832431e+01, + -0.16525176115328903848e+03, 0.15474047823973043592e+03, + 0.78174404211798877995e+01, -0.14925993002090575601e+03, + 0.11691486899961172696e+03, 0.18406465805232649302e+02, + -0.90055798522964082053e+02, 0.14311839761313120079e+02, + 0.83311896348123383405e+02, -0.68288415463046291620e+02, + -0.52074625582853585115e+02, 0.10910299148796785573e+03, + -0.29676627145060002988e+02, -0.86006660181010317956e+02, + 0.65381677499815623378e+02, 0.66630576260674644118e+02, + -0.13225832081581873467e+03, 0.80304275051557478804e+01, + 0.16017579478780388058e+03, -0.15669414967397500504e+03, + -0.45252371590805516632e+02, 0.19794469601598353847e+03, + -0.11980367453813373402e+03, -0.92674735733822799943e+02, + 0.15999304049387373539e+03, -0.19831200795879482257e+02, + -0.12505707687571522513e+03, 0.68676205970223634267e+02, + 0.81735639221933638510e+02, -0.98748298395034694863e+02, + -0.49635199075722638895e+02, 0.12160775658875203931e+03, + 0.18078874840982044336e+01, -0.14450023681536035269e+03, + 0.63851798528969553104e+02, 0.13660526421124237118e+03, + -0.16018410845450031843e+03, -0.64336790507246405468e+02, + 0.22342020698382464161e+03, -0.10048445316833330310e+03, + -0.12420343816241337720e+03, 0.12429121499123264982e+03, + 0.42907389620195431235e+02, -0.71689031226732936375e+02, + -0.10206124128448476540e+03, 0.15862873913789286462e+03, + 0.38391580625693698892e+02, -0.20245523773377789212e+03, + 0.54719276967395181543e+02, 0.16508877203793360877e+03, + -0.98783177448832461209e+02, -0.14976691673475568223e+03, + 0.15416580277339576810e+03, 0.79126842485115318482e+02, + -0.14686218140691968870e+03, -0.54427390566902495550e+02, + 0.11479417288456501467e+03, 0.10356572681130458591e+03, + -0.19790046570478696708e+03, -0.66609296396085511560e+02, + 0.25545200972941535156e+03, -0.54479617908373612067e+02, + -0.16576667455333793555e+03, 0.20542146102039477995e+02, + 0.13362531429523991733e+03, 0.63564750663475116710e+02, + -0.24303229253394019338e+03, -0.30724573312613667753e+01, + 0.23853510427155023876e+03, -0.33665342957432088156e+02, + -0.17846970789703030391e+03, -0.42864033779371780497e+02, + 0.19955726651603256983e+03, 0.69418720001961403909e+02, + -0.19690499314575251333e+03, -0.12014876142426558658e+03, + 0.18829869077858555215e+03, 0.16420134758002740227e+03, + -0.18478205468308550508e+03, -0.15130207537625145164e+03, + 0.50368072982596778786e+02, 0.23078064359818631601e+03, + 0.34330160980796890158e+02, -0.29486612629532993424e+03, + -0.55640963977188157230e+02, 0.18031678664649052735e+03, + 0.17475706255379529352e+03, -0.50792678599951997853e+02, + -0.30004612814740062277e+03, -0.45745273466668827211e+02, + 0.26145666823983111726e+03, 0.15001027491115098655e+03, + -0.49671798921711577179e+02, -0.29560094474877564608e+03, + -0.14824659278008581964e+03, 0.26138004722510021338e+03, + 0.20998973521406207965e+03, 0.88918033367761623254e+02, + -0.24996775879108710683e+03, -0.32765060657473276251e+03, + 0.30900607118075182456e+02, 0.20243963771569042365e+03, + 0.34795324718355726645e+03, 0.88100499396728608303e+02, + -0.23628688393771898291e+03, -0.34090821804824525998e+03, + -0.26370500777163533712e+03, 0.53165009901382866531e+02, + 0.31021818586746388746e+03, 0.42122830648064314119e+03, + 0.27944219323500522023e+03, 0.57632970714490809883e+02, + -0.25261860444657648372e+03, -0.45952103785137575187e+03, + -0.52497575124136483282e+03, -0.56988577708223226637e+03, + -0.43317315673612142746e+03, -0.35151573301176927089e+03, + -0.25983446289624117753e+03, -0.12155205616581065442e+03, + -0.11887116616994761387e+03, -0.43733566821042714423e+02, + -0.66766582672607688309e+01, -0.50307630386784978782e+02, + 0.29771416072017139243e+02, -0.16541223849446936356e+02, + -0.18980388115362902823e+02, 0.42961659398092905349e+02, + -0.48387176553132242418e+02, 0.27802061140777276194e+02, + 0.97089727869603592580e+01, -0.47083441142651032862e+02, + 0.65740354211262342687e+02, -0.55084790663851883608e+02, + 0.18071155666029046216e+02, 0.29884614661985796857e+02, + -0.67592554366657083165e+02, 0.78128994433432310984e+02, + -0.56514077457276371774e+02, 0.12316126107634715936e+02, + 0.34977957860598067441e+02, -0.64730399037506458626e+02, + 0.64802975749262330396e+02, -0.36739298578180495269e+02, + -0.50554367716772476982e+01, 0.40453080709902529577e+02, + -0.52880284736309739912e+02, 0.37131333575910232980e+02, + -0.14147588544774178931e+01, -0.36531447685738399400e+02, + 0.58014867362147882091e+02, -0.51992133026095153525e+02, + 0.20339927597930458347e+02, 0.23157397878970595428e+02, + -0.59007529396737794514e+02, 0.71027284530813247443e+02, + -0.53548559257699224645e+02, 0.14045423856562688769e+02, + 0.30386395284530994587e+02, -0.60617311021628040635e+02, + 0.64074152564629514472e+02, -0.40118675711955390284e+02, + 0.20162987631862075433, 0.37503842230669995672e+02, + -0.56233031425094971212e+02, 0.48120374973649674644e+02, + -0.17498076599550909549e+02, -0.21204861414828972244e+02, + 0.50130948709254255391e+02, -0.56052542383755785238e+02, + 0.36326157269276727391e+02, -0.14622853370641207604e+02, + -0.15138855119088903578e+02, 0.71124058691650503761e+02, + -0.93329121438852098436e+02, 0.84360854302846931319e+02, + -0.27314244480765115242e+02, -0.38253989046484647929e+02, + 0.10119487383509783740e+03, -0.11650297754204228795e+03, + 0.93497233491678045425e+02, -0.24659461228651970544e+02, + -0.43382735872478455974e+02, 0.98410995740965006462e+02, + -0.10095879734530872440e+03, 0.69486314027803402382e+02, + -0.41745236224547168646e+01, -0.46747992133994650032e+02, + 0.77198196497412851613e+02, -0.59257756239055090930e+02, + 0.22834824182937108361e+02, 0.26494196829822282524e+02, + -0.44658669109962353616e+02, 0.38216316172803935558e+02, + 0.49336778626042230300e+01, -0.43211153384806067379e+02, + 0.69201932357129280149e+02, -0.48124215349240451189e+02, + 0.28621747713666834123e+01, 0.62851239076419034291e+02, + -0.99589184856801509227e+02, 0.10366047176449073675e+03, + -0.53482341044261097807e+02, -0.12360099585019233004e+02, + 0.80172085087778327761e+02, -0.10167644680519366318e+03, + 0.84871401871276560769e+02, -0.24092749428206968076e+02, + -0.30981484870695947365e+02, 0.67277551359631374339e+02, + -0.49835222774964080372e+02, 0.65850342841791800197e+01, + 0.51623144497759838600e+02, -0.71681422684383136357e+02, + 0.52161195660127383178e+02, 0.16657455851556971282e+02, + -0.88292103014021449781e+02, 0.12798474289884171640e+03, + -0.11798888582178663853e+03, 0.12760340091374345661e+02, + 0.30189882219348774584e+02, -0.23262434269747427606e+03, + 0.14125574495040188694e+02, -0.35497019658028631284e+03, + -0.40863531620826472590e+03, -0.46187792136727017578e+03, + -0.92326364348039487595e+03, -0.76421203662784785138e+03, + -0.94619349265814707906e+03, -0.82913459600800467797e+03, + -0.25841828852048206500e+03, -0.64165750881051124566e+02, + 0.54481362060043670681e+03, 0.74807581009501097924e+03, + 0.39268701070843604839e+03, 0.21398622783130198854e+03, + -0.47248165142941280692e+03, -0.64873666288197910035e+03, + -0.23423705375935449524e+03, 0.12901531695448420933e+02, + 0.60529040574654004558e+03, 0.46352749826657884569e+03, + -0.16762612346143637865e+03, -0.33380879057094335849e+03, + -0.50200523724201696041e+03, 0.65588175916382127184e+02, + 0.57033441754591740391e+03, 0.19609930732336246706e+03, + -0.98075120887387456037e+02, -0.47875759240230212299e+03, + -0.22372964751134963990e+03, 0.42924061967179039812e+03, + 0.33739915728246603521e+03, -0.10497038862652560454e+03, + -0.36675117947821934195e+03, -0.21458520597709147637e+03, + 0.32361747192641087167e+03, 0.41676129279650518811e+03, + -0.29837041173879589451e+03, -0.30231035810353785109e+03, + 0.62551286071413425560e+01, 0.26619780277243802402e+03, + 0.32219116800784428278e+03, -0.47500229975988946762e+03, + -0.21057891133509085080e+03, 0.35293407310422014689e+03, + 0.12660471162590222605e+03, -0.18534604382496919328e+02, + -0.38607647158551333177e+03, 0.31516704594580289722e+02, + 0.49856899317026113749e+03, -0.19043656651060962304e+03, + -0.30571758551412500537e+03, 0.87173935054436398673e+02, + 0.22250153759966630673e+03, 0.85178183563270522427e+02, + -0.32832495126959241816e+03, -0.96075561852143962938e+02, + 0.43662594301269513153e+03, -0.45791714414986266490e+02, + -0.38259641362445410095e+03, 0.15477591294105215525e+03, + 0.19189493373831291478e+03, -0.17877610767912152312e+02, + -0.22633271358060881084e+03, -0.44632767505875236225e+02, + 0.38759783491160692392e+03, -0.13893782881355329550e+03, + -0.34943161120489389759e+03, 0.30266215166762077615e+03, + 0.16508986638564971372e+03, -0.30489737034779972191e+03, + 0.82883635978386660526e+01, 0.12363462680608260769e+03, + 0.10155313030043892297e+03, -0.16487360589513357922e+03, + -0.18811946986505537893e+03, 0.44354393196567872337e+03, + -0.14795871229511152478e+03, -0.32620616336461506535e+03, + 0.34008421559570246018e+03, 0.52517432940381894468e+02, + -0.24349066094913646907e+03, 0.16994506196220008576e+02, + 0.19904706508537105947e+03, -0.71797353962319547804e+02, + -0.13476774078202575424e+03, 0.47219099177335017714e+02, + 0.18670095316858382262e+03, -0.12856675941194927759e+03, + -0.23294188742563252958e+03, 0.40744356714364300842e+03, + -0.98921283555725366909e+02, -0.34743350579823993485e+03, + 0.39913115522174041416e+03, -0.35598296540491681128e+02, + -0.26524641787511188795e+03, 0.18521678823959240390e+03, + 0.65883394244387162075e+02, -0.11578031830709977612e+03, + -0.48895783730993926497e+02, 0.12945351510314048937e+03, + 0.94883453824050771885e+01, -0.14566408991141386764e+03, + 0.48681595688513176867e+02, 0.15742458888849597543e+03, + -0.14660535045547365485e+03, -0.14119422641037311905e+03, + 0.36999294643008977346e+03, -0.21425743352164971611e+03, + -0.21017774526415172431e+03, 0.45383834653842427542e+03, + -0.25585928762585697882e+03, -0.15288807956958476097e+03, + 0.32701787989058533412e+03, -0.11485339617906377896e+03, + -0.19767548379085607735e+03, 0.24597609485908046167e+03, + 0.42078065988889692406e+01, -0.25733198889346977012e+03, + 0.25126059724149413910e+03, -0.31586640276964882190e+02, + -0.14974637179895060513e+03, 0.14185286095557651720e+03, + -0.29944503273013296507e+02, -0.20020532289803735893e+02, + -0.23628840463383703252e+02, 0.51139989364363827917e+02, + 0.13214751675234712280e+02, -0.97872794712073783785e+02, + 0.80789223312499686358e+02, 0.38164164883503438830e+02, + -0.11765367354237193354e+03, 0.45817575277387447841e+02, + 0.10784530512233567379e+03, -0.15467007344164471760e+03, + 0.75197262783665932417e+01, 0.19683875834229064594e+03, + -0.22892345366353575287e+03, 0.21362481640783805403e+02, + 0.23713886186157279212e+03, -0.28571451241815117328e+03, + 0.67524270354103663294e+02, 0.20017583035551808734e+03, + -0.24587855323442911981e+03, 0.28603920592657789967e+02, + 0.21471967685254202252e+03, -0.21453398108453669124e+03, + -0.46001736275089108119e+02, 0.30576061951774386216e+03, + -0.29115978722501563425e+03, -0.18216887248269011934e+03, + 0.44689187851765706228e+03, -0.77807228851318104290e+01, + -0.43139241806286673864e+03, 0.41701142403963433480e+03, + 0.12986445510689708271e+03, -0.63268848561563095245e+03, + 0.59911632639134995770e+03, 0.29076681489173608952e+02, + -0.61073770734182119213e+03, 0.61144112520281271372e+03, + 0.26367662531267206383e+01, -0.53565448900869330373e+03, + 0.44941867989832883268e+03, 0.21484032238765811940e+03, + -0.68122554798482826754e+03, 0.42888209408248889076e+03, + 0.37856649679454011448e+03, -0.85338676745947122981e+03, + 0.49326229674257251645e+03, 0.40712352781452125328e+03, + -0.86579523590408120981e+03, 0.43540003065347264055e+03, + 0.45191603763999751209e+03, -0.77508082241622889796e+03, + 0.22190813447555979110e+03, 0.60955015609867712101e+03, + -0.71273362781887658457e+03, -0.14281939509217989936e+02, + 0.79812373817946718191e+03, -0.70844054986300557175e+03, + -0.10713487417234300381e+03, 0.76231889095794326749e+03, + -0.51698389063547836031e+03, -0.20670689949480379255e+03, + 0.53386359353339526024e+03, -0.70539669885234843605e+02, + -0.47272057885197784799e+03, 0.37411842481905063096e+03, + 0.29914949097187326288e+03, -0.61543385558048044004e+03, + 0.16813407857982915061e+03, 0.49732824699139672475e+03, + -0.42847345765323495925e+03, -0.27900412058866220377e+03, + 0.68646482445334095246e+03, -0.10122635581024124463e+03, + -0.76031634996802313253e+03, 0.78197904895311830842e+03, + 0.20812166767556217906e+03, -0.96317128161026266753e+03, + 0.56397426057196287275e+03, 0.49510816359488183025e+03, + -0.79290606867428414262e+03, 0.44629271960600512159e+02, + 0.67963451007660944470e+03, -0.33000845373859982601e+03, + -0.48845304404166597578e+03, 0.56148583171198220043e+03, + 0.26533317290113342324e+03, -0.68674693297351541332e+03, + 0.46985564871574155177e+02, 0.73371295959618214511e+03, + -0.35431905515082638658e+03, -0.68080639977391149387e+03, + 0.83440695977906739245e+03, 0.28574957309264021887e+03, + -0.10787372633744444101e+04, 0.44498212436790424817e+03, + 0.66922252873974662180e+03, -0.58695593130512713742e+03, + -0.34488458512084292806e+03, 0.49554272146314508518e+03, + 0.46585404768099471084e+03, -0.82993777190191804038e+03, + -0.15669173925288271221e+03, 0.10116975167249560172e+04, + -0.26265337204306814556e+03, -0.86377433967657782432e+03, + 0.51511419116823219611e+03, 0.76448152744958247240e+03, + -0.76324481272560001344e+03, -0.45835667699063020564e+03, + 0.77888060338793820847e+03, 0.32705663826251799264e+03, + -0.67864052298810304364e+03, -0.47300887423151772282e+03, + 0.10201308903218831574e+04, 0.29478322827428405617e+03, + -0.12360807782652127571e+04, 0.18758848670263364511e+03, + 0.91029341275284821222e+03, -0.71760032606240955033e+02, + -0.79407422468910056068e+03, -0.22873115339100485244e+03, + 0.12078741008040631186e+04, 0.18633167518712966171e+02, + -0.12001852515567418322e+04, 0.10909884568286632600e+03, + 0.98667171764334796080e+03, 0.20220371491478408643e+03, + -0.10432263678894976238e+04, -0.36528687948257800144e+03, + 0.10450075951861851991e+04, 0.61053053204311504487e+03, + -0.98379254165118049968e+03, -0.82588039883683063636e+03, + 0.89516145844107359153e+03, 0.88100881298682406850e+03, + -0.33024284425522120046e+03, -0.11962421742145993449e+04, + -0.13153456999429155871e+03, 0.14585732969092978237e+04, + 0.37394359665572653739e+03, -0.98683599163662859155e+03, + -0.92500950302681997073e+03, 0.30901097037629591568e+03, + 0.15326551005434730541e+04, 0.24183630114259165111e+03, + -0.13264719296842129097e+04, -0.85187155867243757257e+03, + 0.30842287965980625586e+03, 0.15549899296401847550e+04, + 0.70361701456002094801e+03, -0.12515427055539162211e+04, + -0.12168288779206452546e+04, -0.39666655464299287814e+03, + 0.13149179198919030114e+04, 0.16409509859569659511e+04, + -0.48570016539637741460e+02, -0.11696217779872681604e+04, + -0.17500042327257478973e+04, -0.48618412153962634648e+03, + 0.12243238527530124884e+04, 0.18171523517332007032e+04, + 0.13487664395181097916e+04, -0.25027618299261291668e+03, + -0.16536925701108627891e+04, -0.21699109192329201505e+04, + -0.15082682455537003534e+04, -0.25963901137791174278e+03, + 0.12998449345886556330e+04, 0.23988511416264673244e+04, + 0.27894723228604657379e+04, 0.29296670954688984239e+04, + 0.23160011322977215968e+04, 0.18236548624135932641e+04, + 0.13432542870024806234e+04, 0.67739620954064196212e+03, + 0.58400287339939268350e+03, 0.24180093933715843946e+03, + 0.57937892284381746322e+02, 0.21539138147512537103e+03, + -0.10827916828556351447e+03, 0.66689950510282244522e+02, + 0.78209449388969559891e+02, -0.17148097537945142221e+03, + 0.19588765672084747393e+03, -0.11810202319824388439e+03, + -0.26128796130170620415e+02, 0.17231021641229889951e+03, + -0.24900403752462000284e+03, 0.21502598638849678991e+03, + -0.80562150057297614580e+02, -0.96792185983304975139e+02, + 0.23723414339438193110e+03, -0.27693834127646772458e+03, + 0.19709121554700567458e+03, -0.33884162543772269771e+02, + -0.13917897324043246954e+03, 0.24446801008843948466e+03, + -0.23692239353215643405e+03, 0.12351665714949518815e+03, + 0.39946654622399783818e+02, -0.17625241968295154038e+03, + 0.22210755011833856543e+03, -0.15799132827336126184e+03, + 0.15813984551761723907e+02, 0.13592164543484216210e+03, + -0.22500568421436977928e+03, 0.20838291256601314672e+03, + -0.92437123924787641727e+02, -0.70826563744208726803e+02, + 0.20728904995018137924e+03, -0.25512859716884349837e+03, + 0.19227323431204757753e+03, -0.46552105124367486155e+02, + -0.11764939795435564918e+03, 0.22813582251911776666e+03, + -0.23756913919748066633e+03, 0.14385264537817951691e+03, + 0.92751622926073338249e+01, -0.15270437797958808801e+03, + 0.22285159493865765512e+03, -0.19014983628083061262e+03, + 0.71509469356268965612e+02, 0.77743346121759813627e+02, + -0.18934632033695689302e+03, 0.21281805569873097284e+03, + -0.13815237451332566820e+03, 0.61057565366816227481e+02, + 0.40664256658377709641e+02, -0.22905138877515773288e+03, + 0.29727169772823714311e+03, -0.25889527605876105554e+03, + 0.69990288939568273463e+02, 0.13569941825911445221e+03, + -0.31987719467144597729e+03, 0.34455374332819815208e+03, + -0.24924812905850717470e+03, 0.21298201555058021484e+02, + 0.18486478647934686137e+03, -0.33141684852356286228e+03, + 0.30233676168040983612e+03, -0.16954863297559077751e+03, + -0.53526004476392124332e+02, 0.20743917015935528525e+03, + -0.27487110827541067692e+03, 0.17761731252670870163e+03, + -0.24613790067172459430e+02, -0.15340797076009386046e+03, + 0.21012159961966656851e+03, -0.16775237814645902290e+03, + -0.30731098748410583532e+01, 0.15842871513728593413e+03, + -0.26381004064875179438e+03, 0.20360442554921218061e+03, + -0.51500626650102361737e+02, -0.17375135645028319686e+03, + 0.30686733293880109841e+03, -0.32916637963972516445e+03, + 0.17031999625766175654e+03, 0.44351133061074328623e+02, + -0.26470276072159475689e+03, 0.33127727964540537187e+03, + -0.26599375552965028646e+03, 0.53053738800927547459e+02, + 0.14339812439193624982e+03, -0.27258656593255034295e+03, + 0.21614484471236781360e+03, -0.59546089801902688521e+02, + -0.15896812620634995028e+03, 0.26178399755608063515e+03, + -0.23202124871443308507e+03, 0.28350082630189561428e+02, + 0.20718530274014250381e+03, -0.36229958449881763727e+03, + 0.37101159528353770156e+03, -0.77625785801841900025e+02, + -0.34436179241464742518e+02, 0.66772470362032493085e+03, + 0.28894693858628213157e+01, 0.10956418402137649082e+04, + 0.12760923770220886126e+04, 0.14788239559162766454e+04, + 0.28696326977493226877e+04, 0.24249052187989886988e+04, + 0.29672371053158517498e+04, 0.25962546393005059144e+04, + 0.82973050236781125477e+03, 0.18747541960969479646e+03, + -0.17114133695876819274e+04, -0.23348537437691861669e+04, + -0.12639529070898540795e+04, -0.63914142345836296499e+03, + 0.14598016447192039777e+04, 0.20463515825321801458e+04, + 0.74908542330107889029e+03, -0.69159345059922841870e+02, + -0.18687790053253058886e+04, -0.14831987552215327923e+04, + 0.53690266117060718898e+03, 0.10573744593880162483e+04, + 0.15567190730825868741e+04, -0.18399805553263595925e+03, + -0.18030312556249825775e+04, -0.62651199729806592131e+03, + 0.34039313040927959264e+03, 0.14579735610469322182e+04, + 0.74992077112503886838e+03, -0.13795852948263595863e+04, + -0.10590375837493756990e+04, 0.36216073596303027671e+03, + 0.10924144176160787083e+04, 0.74783319104520137444e+03, + -0.10846243185131709197e+04, -0.12660507207711832507e+04, + 0.92845065854878089340e+03, 0.92419350749720933891e+03, + 0.31754171536010154853e+02, -0.89705606843249461235e+03, + -0.96145197329491600158e+03, 0.14650083578207552364e+04, + 0.66041042158853406363e+03, -0.10824346467083419157e+04, + -0.43849563660990628478e+03, 0.97135125355440820272e+02, + 0.11901229102913102906e+04, -0.99744978430721687346e+02, + -0.15422529358201625200e+04, 0.55727780332533302499e+03, + 0.10061500618487856400e+04, -0.31043144377976176429e+03, + -0.68148934240747428248e+03, -0.26326875046556011739e+03, + 0.10079346757958936678e+04, 0.33760226464299307736e+03, + -0.14101119720711524224e+04, 0.17562657448351052381e+03, + 0.11814086225262706193e+04, -0.47644760293599324541e+03, + -0.60517827967848973003e+03, 0.54471324823456590991e+02, + 0.71374149690347235264e+03, 0.13732225265707867834e+03, + -0.12120864264692067991e+04, 0.42314419342077474084e+03, + 0.11225335746614302934e+04, -0.98672786071161033306e+03, + -0.47652255451414481513e+03, 0.91762081646168110183e+03, + 0.18377454187087132187e+01, -0.39373482063352759042e+03, + -0.34248099305891867061e+03, 0.56867629892938975900e+03, + 0.52222263803426722006e+03, -0.13212200211371491605e+04, + 0.40539528141954951934e+03, 0.10568249820974165232e+04, + -0.10641383314715965298e+04, -0.20550675622339653614e+03, + 0.83166653240532696145e+03, -0.12947146216694457621e+03, + -0.55860722744268821316e+03, 0.18362538216996256324e+03, + 0.43166379878073291820e+03, -0.12305334190703175068e+03, + -0.63633722093400263020e+03, 0.46244602419585817188e+03, + 0.68165116858285318813e+03, -0.12514950705065866714e+04, + 0.30948664948836949407e+03, 0.10680634517669693651e+04, + -0.12153846755862603004e+04, 0.72040216779203234410e+02, + 0.86004098051384778501e+03, -0.58560822940596460739e+03, + -0.22842606341895614719e+03, 0.40364551673988381708e+03, + 0.10830858961690684339e+03, -0.37141271489890533530e+03, + -0.41986596334514743489e+02, 0.43947119399810515006e+03, + -0.10571431829446956385e+03, -0.56091618869063893271e+03, + 0.52945255026296842971e+03, 0.39061565826313005800e+03, + -0.11403990457566578698e+04, 0.68950427563962261956e+03, + 0.60741266328332562807e+03, -0.13470718510245753805e+04, + 0.71615239667246510180e+03, 0.55740473144218367452e+03, + -0.10765365901151719754e+04, 0.37127826123161065652e+03, + 0.65048624281672471170e+03, -0.83379790629929846091e+03, + 0.64051916925569344130e+02, 0.73278171249199328940e+03, + -0.73138953184222373238e+03, 0.69613147789658881948e+02, + 0.46833838835442514892e+03, -0.41620001185713789482e+03, + 0.47802072356604725201e+02, 0.11237304332787651617e+03, + 0.34265828877298076804e+02, -0.13872136067023390638e+03, + -0.43049983020396673794e+02, 0.29219699621383477961e+03, + -0.22972596135428261732e+03, -0.14302551803865520696e+03, + 0.38313472542033781565e+03, -0.14295154047841947431e+03, + -0.35392859436607545831e+03, 0.50955385603135908923e+03, + -0.46837904635267719300e+02, -0.60500002130950633727e+03, + 0.72241488806099505382e+03, -0.89139767915510063290e+02, + -0.70735419882282587878e+03, 0.85223525101132656800e+03, + -0.16999370305722604257e+03, -0.65634975651002469021e+03, + 0.77628673655126078756e+03, -0.66285708923727639785e+02, + -0.72262656442676768620e+03, 0.73728125426149620125e+03, + 0.79268545827294289552e+02, -0.90738097333009659451e+03, + 0.88495013796961109165e+03, 0.48539420805876119402e+03, + -0.13384502951999054403e+04, 0.21887974931857729644e+03, + 0.10847888375533495946e+04, -0.12734153338875050849e+04, + -0.51628137325663587376e+02, 0.14593054017921103878e+04, + -0.15684374972471448473e+04, 0.48416156225987940331e+02, + 0.15039321679416379993e+04, -0.16192737845288042990e+04, + 0.59333901541916006295e+02, 0.14174449219892826477e+04, + -0.13294865101973311994e+04, -0.35958653665219713957e+03, + 0.16807810880882293532e+04, -0.12026566466327888065e+04, + -0.79236716326628754814e+03, 0.20625595623450572020e+04, + -0.12585195426074740226e+04, -0.97008939729716962574e+03, + 0.21420112441758465138e+04, -0.10886730376039517978e+04, + -0.11410926924080920344e+04, 0.19522708247401892550e+04, + -0.55125214221970770723e+03, -0.15506216552988400963e+04, + 0.17910387226647906118e+04, 0.52768747599428678541e+02, + -0.19923596356484010812e+04, 0.16780905502692478422e+04, + 0.41862005573257209790e+03, -0.19813793005999257275e+04, + 0.11683672860929348190e+04, 0.78214497205947725433e+03, + -0.15352456232536414973e+04, 0.14198815906358132111e+03, + 0.13824258965673557213e+04, -0.10739088721787384202e+04, + -0.82432945837185820892e+03, 0.17195780018444206689e+04, + -0.47297876305313030798e+03, -0.14183151682600359891e+04, + 0.13090964756487530849e+04, 0.62061805287455160851e+03, + -0.18503936536118380900e+04, 0.43121933449002762018e+03, + 0.18308897834506026356e+04, -0.19872488435406505687e+04, + -0.49344088735452817218e+03, 0.24011255292318260217e+04, + -0.13569312498289798441e+04, -0.13455977935219925712e+04, + 0.20129055704879824589e+04, 0.19805035720298107549e+02, + -0.18789354155092910332e+04, 0.82742088708751680315e+03, + 0.14260831371179799589e+04, -0.15927614842722052799e+04, + -0.71110052458634697814e+03, 0.19208650956792412217e+04, + -0.21819717767931567209e+03, -0.19455039143596463873e+04, + 0.10316947290916009479e+04, 0.16997577722536766487e+04, + -0.21866186870120241110e+04, -0.66136909088124014033e+03, + 0.26694394273799748589e+04, -0.98591715165450580116e+03, + -0.18587050831288684094e+04, 0.14629186302135581172e+04, + 0.11452050085376952211e+04, -0.15513136952896900311e+04, + -0.11173793142972006081e+04, 0.22274695918688876191e+04, + 0.31413551305830537785e+03, -0.25939794769957125027e+04, + 0.65784429683204086814e+03, 0.22880826731708525585e+04, + -0.13563358537598155635e+04, -0.20030625371031997020e+04, + 0.19417183803074058233e+04, 0.13183946584855746096e+04, + -0.20987418589676576630e+04, -0.96537278860383037227e+03, + 0.19837101652614314844e+04, 0.11015629586720945099e+04, + -0.26751849234125866133e+04, -0.67631737338876257581e+03, + 0.30800173986942409101e+04, -0.29125887887399193232e+03, + -0.25164262327724723036e+04, 0.11212309068147096980e+03, + 0.23219220508130665621e+04, 0.38582243268790432467e+03, + -0.30839518231092047245e+04, -0.50148112333797385531e+02, + 0.30905895713595832603e+04, -0.14714405649761053496e+03, + -0.27350383526633640940e+04, -0.50455909008396338322e+03, + 0.27926354420012394257e+04, 0.96604961912852604655e+03, + -0.28125256440494322305e+04, -0.15806459154003596268e+04, + 0.26012873937975573426e+04, 0.21523854507785222268e+04, + -0.22576880649865897794e+04, -0.25126608590566506791e+04, + 0.99960264966691568134e+03, 0.31804394941349346482e+04, + 0.23903617069642496062e+03, -0.37098537031578835013e+04, + -0.11545171311681087900e+04, 0.26887586041523109088e+04, + 0.25298309697297272578e+04, -0.95920957809132119110e+03, + -0.39696026335375972849e+04, -0.66622018085226625317e+03, + 0.34404795755051036394e+04, 0.24371216781214852745e+04, + -0.96272165078341777189e+03, -0.41193713943629518326e+04, + -0.17579613981672264345e+04, 0.31139949892810113852e+04, + 0.34790708099973917342e+04, 0.91301370544003987106e+03, + -0.35093110827575665098e+04, -0.42347584690204776052e+04, + -0.83608166981088572811e+02, 0.33170174339533909915e+04, + 0.45488424950250428083e+04, 0.13158569980915256110e+04, + -0.32129527053246151809e+04, -0.49215373774146773940e+04, + -0.35350014785130292694e+04, 0.62943822108326526177e+03, + 0.44393553119694461202e+04, 0.57435451924440376388e+04, + 0.40846128175080298206e+04, 0.62792698180521301765e+03, + -0.34334152330616043400e+04, -0.63712800277271689993e+04, + -0.75232592211954806771e+04, -0.77009422094574274524e+04, + -0.62639299086147575508e+04, -0.48414412946127986288e+04, + -0.35273094955497012961e+04, -0.19075458360461500433e+04, + -0.14658679636780741475e+04, -0.67434414294283317304e+03, + -0.20656678903995063479e+03, -0.46675661479816392330e+03, + 0.18506494442662585698e+03, -0.14056321126815265643e+03, + -0.14889166559539330592e+03, 0.32105248223861195811e+03, + -0.37475238624729428238e+03, 0.23483848120034048179e+03, + 0.29174017868123399921e+02, -0.30087019782352899711e+03, + 0.44817839770495754692e+03, -0.39459585346950512985e+03, + 0.15727624974176114847e+03, 0.15983551371810474961e+03, + -0.41181240121770224505e+03, 0.48267891845749278446e+03, + -0.33828198339066460676e+03, 0.44745280099026523146e+02, + 0.26409986266795039000e+03, -0.44721500655883340869e+03, + 0.42357991866970422734e+03, -0.20744850219538724900e+03, + -0.97608084821938504660e+02, 0.34931300568108133575e+03, + -0.43141348383545516754e+03, 0.30856324816639903474e+03, + -0.40131859148490967470e+02, -0.24702367852357127731e+03, + 0.41919039928523420713e+03, -0.39613652204390683664e+03, + 0.18861211971285570144e+03, 0.10863042282281189443e+03, + -0.35976223870219473611e+03, 0.45108899515322667639e+03, + -0.34137249412473624943e+03, 0.80678565487994063687e+02, + 0.21400582684730451888e+03, -0.41122462285359540601e+03, + 0.42488165166319157606e+03, -0.25145311736100379107e+03, + -0.28884742219393711338e+02, 0.28979615965553881551e+03, + -0.41529044497105462597e+03, 0.35187916165572869431e+03, + -0.13124438961047857788e+03, -0.14462709112983736759e+03, + 0.35027873017770764363e+03, -0.39311821236585296901e+03, + 0.25503591883296391529e+03, -0.10969059452305454272e+03, + -0.73118634125768295462e+02, 0.39008602548752736539e+03, + -0.49414886469421770698e+03, 0.41476476594194758718e+03, + -0.94458610321204531601e+02, -0.23934966209543637206e+03, + 0.52043407965613243960e+03, -0.53193671652236514547e+03, + 0.35050011088390107261e+03, 0.29687246922885613287e+02, + -0.35070359604875949344e+03, 0.55248309648974270658e+03, + -0.45941477490411546114e+03, 0.20464216910282672757e+03, + 0.17383643319040882602e+03, -0.41064238259675784093e+03, + 0.48069041212944074459e+03, -0.27135919085062221257e+03, + -0.23336491178437441363e+02, 0.33716072577937381993e+03, + -0.42594250513274681680e+03, 0.32792412470661776069e+03, + -0.78353002876935695653e+01, -0.28619060891285027992e+03, + 0.48424008593151017976e+03, -0.39316164615622358269e+03, + 0.13378221578188421859e+03, 0.25411423274922032078e+03, + -0.49222871022523469264e+03, 0.54097020917200552503e+03, + -0.28422409625940628075e+03, -0.71923043786834085722e+02, + 0.43756404171107374168e+03, -0.54667754828202691897e+03, + 0.42954257992754077122e+03, -0.62849576399210029365e+02, + -0.28051036112441204295e+03, 0.50681907100698998647e+03, + -0.41538191207016802764e+03, 0.13982049521764341193e+03, + 0.25363574287672088303e+03, -0.46700842080093934783e+03, + 0.45751590795723029714e+03, -0.14520730233275648402e+03, + -0.24742230929253406657e+03, 0.53642025445064234646e+03, + -0.60245037139000407933e+03, 0.17994548315993458232e+03, + -0.27248878891674280567e+02, -0.98646237997210698722e+03, + -0.60906236005264382527e+02, -0.17363408342738478041e+04, + -0.20191011318316645884e+04, -0.24140705273072894670e+04, + -0.45388541113900000710e+04, -0.39169357285739592953e+04, + -0.47372618149956924753e+04, -0.41376058030594294905e+04, + -0.13595969089082859682e+04, -0.26826692877036151685e+03, + 0.27217003992500613094e+04, 0.37303445822828434757e+04, + 0.20470343372612187522e+04, 0.99008522437654585246e+03, + -0.23095750441422774202e+04, -0.32821396512201617952e+04, + -0.12120102933573193695e+04, 0.13982267691575680146e+03, + 0.29585100741473297603e+04, 0.23923992791454993494e+04, + -0.85555645356942000035e+03, -0.17189660680684742147e+04, + -0.24488622476641612593e+04, 0.25449665077770794142e+03, + 0.29051612115642515164e+04, 0.10141331030673745772e+04, + -0.58964137198850346522e+03, -0.22649824814795069869e+04, + -0.12701825065210960020e+04, 0.22574745890578296894e+04, + 0.16827453034442332864e+04, -0.61281002269670011628e+03, + -0.16763868321768877649e+04, -0.12866670539036870196e+04, + 0.18188637035143046887e+04, 0.19728455729174013413e+04, + -0.14776994397532378116e+04, -0.14404224523686145858e+04, + -0.12220358332192405726e+03, 0.15177310940782397211e+04, + 0.14695463948334679571e+04, -0.23078926685456090127e+04, + -0.10517849586678387368e+04, 0.16910052779368377287e+04, + 0.76314729135564368789e+03, -0.21667950178424416663e+03, + -0.18622822481076798340e+04, 0.14899293030407659444e+03, + 0.24458191035914514941e+04, -0.84618417041040481763e+03, + -0.16634413047962909786e+04, 0.54211749877315207868e+03, + 0.10656245794198987369e+04, 0.42070218339769832028e+03, + -0.15901050508949197138e+04, -0.57526973457165752279e+03, + 0.22924684944220557554e+04, -0.30888771244742292765e+03, + -0.18751044052070644739e+04, 0.75887377772328466108e+03, + 0.96545723134341812965e+03, -0.84257059012072289761e+02, + -0.11406544274624145601e+04, -0.22495883117340594026e+03, + 0.19439892671759585028e+04, -0.67377060410067474550e+03, + -0.18134998715719998472e+04, 0.16127885404047990505e+04, + 0.71600033443020220147e+03, -0.14194376441452063773e+04, + -0.39963492158553940214e+02, 0.64201192229915238840e+03, + 0.56927125895211929674e+03, -0.96400159084166512002e+03, + -0.75851389066241131331e+03, 0.20317939486799168662e+04, + -0.58205663505620941578e+03, -0.17236653627088523990e+04, + 0.16916137411876588885e+04, 0.38235610827522185673e+03, + -0.14138334626612638658e+04, 0.29902535306597445697e+03, + 0.81686728183732054731e+03, -0.25129774827106467683e+03, + -0.68859505540147961256e+03, 0.15257102625164449705e+03, + 0.10910402217545067742e+04, -0.82001692620055416683e+03, + -0.10258540234086351575e+04, 0.19704762016857393974e+04, + -0.50338886975204263763e+03, -0.16651606250515119427e+04, + 0.18805801896743873840e+04, -0.51785737471382397246e+02, + -0.14184544512287402540e+04, 0.94454280548525969152e+03, + 0.39588253756479122103e+03, -0.70546140254196234309e+03, + -0.10223916529491671668e+03, 0.53378276451635667854e+03, + 0.97617866463123718290e+02, -0.69207389827342251465e+03, + 0.11684384189849417623e+03, 0.97901982243836482667e+03, + -0.93713050597946630660e+03, -0.55027566219591415120e+03, + 0.17857393299121113159e+04, -0.11115246573536066990e+04, + -0.91689844711660691701e+03, 0.20664326577714682571e+04, + -0.10443396208016856690e+04, -0.98141129892751189345e+03, + 0.17788335221340939825e+04, -0.60442321091668929967e+03, + -0.10774863080864340645e+04, 0.14075211964423810969e+04, + -0.19366060790729301289e+03, -0.10858674139120482778e+04, + 0.11083175978332592422e+04, -0.86852547015205416869e+02, + -0.73379490332475540981e+03, 0.61786939033176815883e+03, + -0.11001627299177815900e+02, -0.24436818031069523727e+03, + -0.75896662113302220121e+01, 0.20249524972830525371e+03, + 0.58650274034608315787e+02, -0.43402792929430819413e+03, + 0.32342393285307969109e+03, 0.26887212513621045673e+03, + -0.63622228817819939195e+03, 0.22812958188798563697e+03, + 0.59016967992630031858e+03, -0.85465592936501059285e+03, + 0.11714791030167837960e+03, 0.93685652358024753994e+03, + -0.11468224001802318526e+04, 0.16071526906485604513e+03, + 0.10891835527890641515e+04, -0.13062341533491990049e+04, + 0.21433259419279985991e+03, 0.10927956809205093123e+04, + -0.12574520974400797968e+04, 0.88465241860087061809e+02, + 0.12044036011214991504e+04, -0.12483162856714602640e+04, + -0.53196824162834644767e+02, 0.13903148206203593418e+04, + -0.13810386280040775091e+04, -0.67861786779276349080e+03, + 0.20541026194426922302e+04, -0.53231405946610004776e+03, + -0.14659481485279954995e+04, 0.19933056059018688302e+04, + -0.26152320172839068846e+03, -0.18242185125432044970e+04, + 0.22210068115316680633e+04, -0.24819449372484410787e+03, + -0.19643967591039340732e+04, 0.22781699190084300426e+04, + -0.17424745561710804509e+03, -0.19732297003292178488e+04, + 0.20104838679203041920e+04, 0.28824796557864499391e+03, + -0.22502965013544749127e+04, 0.17962084390778811667e+04, + 0.85595874044016136395e+03, -0.26745631617665248996e+04, + 0.17316250546689125258e+04, 0.12168765917762270874e+04, + -0.28171612943118907424e+04, 0.14406579123519125005e+04, + 0.15514466952065540681e+04, -0.26343498497549517197e+04, + 0.73147150712970733366e+03, 0.21129062489566908880e+04, + -0.24107218998259927503e+04, -0.94070095559998947010e+02, + 0.26687390089101090780e+04, -0.21364616582908452074e+04, + -0.74240033937363500627e+03, 0.27403404142904619221e+04, + -0.14032005227107583778e+04, -0.13789266094852860078e+04, + 0.22946622883589229787e+04, -0.12220193336590074296e+03, + -0.21338466677417732171e+04, 0.16399394113961723178e+04, + 0.11823918312049338510e+04, -0.25248471529877974717e+04, + 0.70486662871371368055e+03, 0.21058747721604536309e+04, + -0.20319365113369383380e+04, -0.75967136113461720015e+03, + 0.26732462578511390348e+04, -0.82301236432021005385e+03, + -0.23530172150260500530e+04, 0.27041253135125052722e+04, + 0.61348297050033886535e+03, -0.31870091369927886262e+04, + 0.17308195273778621868e+04, 0.19506635826518781869e+04, + -0.27359836762559034469e+04, -0.20164803155864638029e+03, + 0.27604789629981141843e+04, -0.11314631830326245563e+04, + -0.21493506914335966940e+04, 0.23574144364935864360e+04, + 0.10188448629966577528e+04, -0.28251907848298387762e+04, + 0.40213587401518310571e+03, 0.27743852328992556977e+04, + -0.16008258259549099876e+04, -0.22391691238244402484e+04, + 0.30292188218646615496e+04, 0.83147869252584928290e+03, + -0.35376097421241879601e+04, 0.11443717905170576614e+04, + 0.27487787288865165465e+04, -0.19820490376624024975e+04, + -0.18636397559632571301e+04, 0.24490306045553666081e+04, + 0.14535955479345220738e+04, -0.31848605071860029057e+04, + -0.32219407727504784589e+03, 0.35632088647123173359e+04, + -0.89571113937723350773e+03, -0.32114885102639468641e+04, + 0.18897278384272294716e+04, 0.28071005198847774409e+04, + -0.26457626792007881704e+04, -0.19845655104265781574e+04, + 0.30042399361303760088e+04, 0.14790389103059389981e+04, + -0.30217245941503156246e+04, -0.13682333857788055411e+04, + 0.37351329661112067697e+04, 0.83317860307092860239e+03, + -0.41135667758429290188e+04, 0.16450859501813400243e+03, + 0.36776699642604162364e+04, -0.70908601720349906827e+02, + -0.35270557874664186784e+04, -0.29140544384812358203e+03, + 0.42216170663577095183e+04, 0.63074029154833674227e+02, + -0.42489040774105651508e+04, 0.41696819988828977444e+02, + 0.39904702831665963458e+04, 0.69246571122889463368e+03, + -0.39937520047950347362e+04, -0.13421579228532204979e+04, + 0.40079198216635741119e+04, 0.21869107086132289623e+04, + -0.36536510689129554521e+04, -0.30116031432537688488e+04, + 0.30729612413055383513e+04, 0.37302690391545138482e+04, + -0.15340340076454021982e+04, -0.45171916854418104776e+04, + -0.19884745810956539458e+03, 0.50536390215851633911e+04, + 0.18047661339145281545e+04, -0.38502897550407419658e+04, + -0.36998047560596883159e+04, 0.15572427230450409752e+04, + 0.54619461901282975305e+04, 0.98406239875046821908e+03, + -0.47607786296390368079e+04, -0.36731265538675338576e+04, + 0.15651298569563352885e+04, 0.57698337805667488283e+04, + 0.23918670509909206885e+04, -0.41831375313245607686e+04, + -0.51916079473046311250e+04, -0.11287425111774250581e+04, + 0.49709345947522660936e+04, 0.58610631747231036570e+04, + 0.33845839745053552861e+03, -0.49007619113580158228e+04, + -0.63490201029711051888e+04, -0.18579447195226262011e+04, + 0.44755531542746311970e+04, 0.70741753334434042699e+04, + 0.49506141893018093469e+04, -0.87074774002085200664e+03, + -0.62998566703865399177e+04, -0.81273953030770289843e+04, + -0.58377515816376590010e+04, -0.83523325937492904814e+03, + 0.48410948009888224988e+04, 0.90050117036269111850e+04, + 0.10760795537214709839e+05, 0.10804588165686354841e+05, + 0.89690762853007145168e+04, 0.68584877140737426089e+04, + 0.49232873683748175608e+04, 0.28329541329642183882e+04, + 0.19704047086665686948e+04, 0.98411602479730402138e+03, + 0.36691898307876437002e+03, 0.52088535337570885986e+03, + -0.12907199127779324499e+03, 0.15134573363296877346e+03, + 0.13566896066504298801e+03, -0.28085107103442618381e+03, + 0.33792440845154891349e+03, -0.21798399515274783766e+03, + -0.10588383342704872803e+02, 0.24939969182612944110e+03, + -0.38188061109240527458e+03, 0.34081482641809441247e+03, + -0.14007129390660620061e+03, -0.13079092380936279483e+03, + 0.34629178473591628062e+03, -0.40601119698241024025e+03, + 0.28044508691650054288e+03, -0.27230192935064700066e+02, + -0.23741263382025445594e+03, 0.39121230586791642736e+03, + -0.36451712762770705467e+03, 0.17073350771342163057e+03, + 0.98894920184805542362e+02, -0.31972999944510206660e+03, + 0.39016587725360807326e+03, -0.27966216258304507392e+03, + 0.40607033263772002840e+02, 0.21543796855902118637e+03, + -0.37091429750706794266e+03, 0.35496200342198255839e+03, + -0.17638387390549718248e+03, -0.82459213907660767973e+02, + 0.30297871628019350965e+03, -0.38563780542381721261e+03, + 0.29385282853271297654e+03, -0.70631624653317317097e+02, + -0.18265981603105083764e+03, 0.35188316253639607112e+03, + -0.36231515282878115158e+03, 0.21100626847924422691e+03, + 0.32187460353707010086e+02, -0.25738337853286213885e+03, + 0.36386459810731042808e+03, -0.30554397567854687168e+03, + 0.11060598173295100821e+03, 0.13152798272496150389e+03, + -0.31116820496588559308e+03, 0.34752902111743054547e+03, + -0.22505738333179820643e+03, 0.91128064348534252304e+02, + 0.70525634860268652915e+02, -0.33055481464794917201e+03, + 0.40803052352600286667e+03, -0.33162238383933595287e+03, + 0.64834968803296206374e+02, 0.20373405785952255087e+03, + -0.41831579743453204401e+03, 0.41028635845422712691e+03, + -0.24887006559877639233e+03, -0.61002879485453973984e+02, + 0.30872184821176580272e+03, -0.44713236037623829588e+03, + 0.34419574480531832705e+03, -0.11664070564538147323e+03, + -0.19491157344159526588e+03, 0.37462289212355386780e+03, + -0.40461204312353817159e+03, 0.20434176049174982381e+03, + 0.60272536636949425315e+02, -0.32597694880495566849e+03, + 0.39386850807707230615e+03, -0.29615766952989372385e+03, + 0.12937064570479849479e+02, 0.24828667634883078108e+03, + -0.42278546866658012959e+03, 0.35304653638059863852e+03, + -0.13655103936900090389e+03, -0.18862122659147189552e+03, + 0.39364349225138437305e+03, -0.44074528761672945620e+03, + 0.23590790651415656498e+03, 0.54649031972988467487e+02, + -0.35352256145295854139e+03, 0.44350234604611665645e+03, + -0.34497717968653853404e+03, 0.40479142555357391586e+02, + 0.24836695980816472229e+03, -0.43965902916270590595e+03, + 0.36771571247975691676e+03, -0.13569339740516298320e+03, + -0.20116862236869422986e+03, 0.39917239312720272437e+03, + -0.41455246772067664551e+03, 0.17541741684109115340e+03, + 0.14573493676036679290e+03, -0.40097257081516920607e+03, + 0.48697524832155875174e+03, -0.18370415377827279713e+03, + 0.78731190887498257780e+02, 0.72297950419970925395e+03, + 0.82422727268595025407e+02, 0.13622446626571124852e+04, + 0.15688408871303192882e+04, 0.19413469488217249364e+04, + 0.35341505783907564364e+04, 0.31161614327828469868e+04, + 0.37223824726468610606e+04, 0.32494201220626155191e+04, + 0.10948584886085052403e+04, 0.18548514655497459103e+03, + -0.21268219781726470501e+04, -0.29428644051395713177e+04, + -0.16219636176777037235e+04, -0.76469157281284321925e+03, + 0.18067688174185946082e+04, 0.25890296119906242893e+04, + 0.96360704236448373194e+03, -0.12697748567030322420e+03, + -0.23144835558713607497e+04, -0.18919670154820473726e+04, + 0.66543618645923129407e+03, 0.13784678147397803514e+04, + 0.18963984774214329718e+04, -0.17028007841979820114e+03, + -0.23044104693568451694e+04, -0.80658275717326159793e+03, + 0.49581482085970532125e+03, 0.17369684738594580722e+04, + 0.10506613802154520272e+04, -0.18153048852797105610e+04, + -0.13149210352377824620e+04, 0.50243109494297380024e+03, + 0.12751640610525223565e+04, 0.10723637858793883879e+04, + -0.14876866849084997284e+04, -0.15198888829034031005e+04, + 0.11596996987674306183e+04, 0.11086053406326861932e+04, + 0.14473533560410351129e+03, -0.12516722396520247003e+04, + -0.11111773558273816889e+04, 0.17938164503905034053e+04, + 0.82522164580043317983e+03, -0.13039649935655811532e+04, + -0.64442898615055037226e+03, 0.21470992064833458812e+03, + 0.14352793526248260605e+04, -0.10577309980850259308e+03, + -0.19170940699045916062e+04, 0.64046538183729956017e+03, + 0.13433213544845532397e+04, -0.45599946570833583337e+03, + -0.82257559600797640087e+03, -0.33365639596634662212e+03, + 0.12421751709671943900e+04, 0.47072434409159569668e+03, + -0.18236039220085083343e+04, 0.25508046377426040863e+03, + 0.14733825820292272510e+04, -0.60022852786093471877e+03, + -0.75629400688493853977e+03, 0.64457156702322436104e+02, + 0.89523621386762090424e+03, 0.18559788740903169924e+03, + -0.15413365739579057845e+04, 0.53621716443634477400e+03, + 0.14328871165906875831e+04, -0.12867458435901580742e+04, + -0.53801834644085715809e+03, 0.10882930563068568972e+04, + 0.56418949042476583600e+02, -0.51679092840834232447e+03, + -0.45748443889749489699e+03, 0.78873117929264162740e+03, + 0.55384245307511628198e+03, -0.15533685231018366721e+04, + 0.42030947299347212720e+03, 0.13757837810467119652e+04, + -0.13239340106068482328e+04, -0.33570149975162837563e+03, + 0.11655145060323143298e+04, -0.29088888407072903419e+03, + -0.59960259780681667507e+03, 0.17728778491974924236e+03, + 0.53416678230667230309e+03, -0.85269814896569897655e+02, + -0.91130009867908393062e+03, 0.69982555381821191531e+03, + 0.76750771021008813477e+03, -0.15361876505875386556e+04, + 0.40893136306922411904e+03, 0.12749170616990049894e+04, + -0.14311157545429362017e+04, -0.83736627466661168739e+01, + 0.11507743202112649215e+04, -0.75162690519825764568e+03, + -0.33266693710186331145e+03, 0.59889874188408600730e+03, + 0.27409326116978562027e+02, -0.37274411434953867683e+03, + -0.10549487721623806635e+03, 0.54592580835879562073e+03, + -0.63989711029345457405e+02, -0.82102641144220910974e+03, + 0.79633968891804590839e+03, 0.38281286969640319739e+03, + -0.13772677326897385228e+04, 0.87519214741736516316e+03, + 0.69344782652472861173e+03, -0.15771648825140478039e+04, + 0.76306259379519121921e+03, 0.82639394831848881040e+03, + -0.14347198006637015624e+04, 0.48146022826362377600e+03, + 0.87217815925880563555e+03, -0.11539828161535135678e+04, + 0.20721742704820647418e+03, 0.80538452532138398965e+03, + -0.84000594363258710473e+03, 0.59604483105806586707e+02, + 0.56170364623336661225e+03, -0.45090299727488968529e+03, + -0.36192913142630217749e+02, 0.23398747356078365556e+03, + -0.21343106023760370249e+02, -0.15277926259462662983e+03, + -0.31930104925658827852e+02, 0.31186244956662704908e+03, + -0.21828269097936481558e+03, -0.24409291305724860877e+03, + 0.52006624613482699715e+03, -0.18003064534726863144e+03, + -0.48294029786749996447e+03, 0.70410561758708911384e+03, + -0.12682621820827961301e+03, -0.70988413846635080517e+03, + 0.88988366546495262810e+03, -0.13183065377308855659e+03, + -0.83497023139890450238e+03, 0.99385101062288651974e+03, + -0.13070486390492064288e+03, -0.89182591924953339912e+03, + 0.10057804069045788538e+04, -0.64566459439553398170e+02, + -0.97348243901727369121e+03, 0.10216760071935440237e+04, + -0.44555898152963807624, -0.10594112930143699032e+04, + 0.10675050775691283889e+04, 0.47572970734507947554e+03, + -0.15595694467522628202e+04, 0.51035535615890290728e+03, + 0.10108535719090457405e+04, -0.15426780791482744917e+04, + 0.38346034766027042906e+03, 0.11736854699815794447e+04, + -0.16091972486508245765e+04, 0.30338764455185832958e+03, + 0.12971011777734754560e+04, -0.16222015991399412087e+04, + 0.18626465852310514038e+03, 0.13814044997963935657e+04, + -0.15037158210323452749e+04, -0.87930506464177483394e+02, + 0.15481904262751404531e+04, -0.13546230442134665282e+04, + -0.44733217837070060341e+03, 0.17701991925742133844e+04, + -0.12197414411583024503e+04, -0.76412928590989827171e+03, + 0.18752802622499273184e+04, -0.96185532236154801922e+03, + -0.10776732574060249590e+04, 0.18093643011549636412e+04, + -0.49165132039689967769e+03, -0.14681338287519888581e+04, + 0.16550864613068083600e+04, 0.77272238634945679792e+02, + -0.18200164430219012957e+04, 0.13868525874710221615e+04, + 0.62056946624636361776e+03, -0.19211560186296981101e+04, + 0.84998035850492544796e+03, 0.11538779719391450271e+04, + -0.17140286238716544176e+04, 0.30487471795678640518e+02, + 0.16482711131662399566e+04, -0.12579152111299265471e+04, + -0.85186778515390778921e+03, 0.18653320634218089253e+04, + -0.53205511008668543127e+03, -0.15603862274639084262e+04, + 0.15542970268766425761e+04, 0.48386627023115522661e+03, + -0.19594534192304340650e+04, 0.72607796070917618181e+03, + 0.15405668724137024128e+04, -0.18783534820049819700e+04, + -0.37559854527548486658e+03, 0.21400015957223586156e+04, + -0.11107531775847016888e+04, -0.14354555843658788490e+04, + 0.18941805997646038122e+04, 0.25536546227232287265e+03, + -0.20506954635034330749e+04, 0.80034464291304107064e+03, + 0.16062492662194622426e+04, -0.17403025473820646312e+04, + -0.74594900160616145968e+03, 0.20920425961975051905e+04, + -0.34039207123180511871e+03, -0.20125133139455897435e+04, + 0.12488355007205345828e+04, 0.14866561542540187020e+04, + -0.21175148340883074525e+04, -0.53983508629328912320e+03, + 0.23893306906886573415e+04, -0.66135170290087773992e+03, + -0.20521354245680036001e+04, 0.13783491880847527682e+04, + 0.14723897151917547035e+04, -0.19002838550589281112e+04, + -0.97060029746726615940e+03, 0.23055860323528168010e+04, + 0.15679353086105780335e+03, -0.24919915661135064511e+04, + 0.62698548685938715153e+03, 0.22780032305024728885e+04, + -0.13300424354549572854e+04, -0.19984720168224107510e+04, + 0.18345500248313007887e+04, 0.14958705149985064509e+04, + -0.21753870957545314013e+04, -0.11282979982446272516e+04, + 0.22974108863382671188e+04, 0.86187724046383266341e+03, + -0.26432277058784261499e+04, -0.52342158635484952356e+03, + 0.27989203460427052050e+04, 0.34282548440255929734e+02, + -0.27093036837310633018e+04, 0.12416151771945143079e+01, + 0.26695511225308459871e+04, 0.59673942222163873339e+02, + -0.29447527592955166256e+04, -0.35167912620088706888e+02, + 0.29663868682542333772e+04, 0.69991615918866116886e+02, + -0.29265984513897792567e+04, -0.49328505428136389810e+03, + 0.28995166525416852892e+04, 0.93557637180946892386e+03, + -0.28816186303553067773e+04, -0.15392121657782636248e+04, + 0.25982957360123564285e+04, 0.21455965871514167702e+04, + -0.21397091062226791109e+04, -0.27661865396062212312e+04, + 0.11592514719558519118e+04, 0.32573354621832322664e+04, + 0.52240786779006995744e+02, -0.35031590762965465728e+04, + -0.13893983327141434074e+04, 0.27725346013243643029e+04, + 0.27425206617044536870e+04, -0.12560543244582004263e+04, + -0.38049824767571649318e+04, -0.73773361192916195250e+03, + 0.33445220713183562111e+04, 0.27788643186285939919e+04, + -0.12613847358359166719e+04, -0.40793927290364895271e+04, + -0.16742502685267595552e+04, 0.28764320505723089809e+04, + 0.38748890805012879355e+04, 0.71160609499746715301e+03, + -0.35605873473213728175e+04, -0.41308614661506135235e+04, + -0.36132091433589943108e+03, 0.36203748822779975853e+04, + 0.45133904812847958965e+04, 0.13151249179973624450e+04, + -0.31560289628105460906e+04, -0.51370227196525611362e+04, + -0.35228869134939754986e+04, 0.62436881232005896436e+03, + 0.45096497356292666154e+04, 0.58399886108952478025e+04, + 0.42054728206591926210e+04, 0.57429377684396808945e+03, + -0.34610324280178624576e+04, -0.64497037850536489714e+04, + -0.77735310445130198787e+04, -0.76968955191245859169e+04, + -0.64797053887301608484e+04, -0.49301479911887845446e+04, + -0.34788313769198548471e+04, -0.21149402928921881539e+04, + -0.13504348955749371726e+04, -0.71691798509186151023e+03, + -0.31832882893147814229e+03, -0.27715022973778894766e+03, + 0.19948551708762649604e+01, -0.73715113715403873584e+02, + -0.52104362148242834962e+02, 0.90921454637667835641e+02, + -0.11629838024684596576e+03, 0.75987605392912414004e+02, + -0.10036810417497696868e+01, -0.78973261182326382368e+02, + 0.12398872498149485466e+03, -0.11177447857226077588e+03, + 0.46581411688214366507e+02, 0.42035831549993325496e+02, + -0.11253747106693047897e+03, 0.13168241712927161302e+03, + -0.89733528995717847465e+02, 0.59046874791451680053e+01, + 0.81205609670379118370e+02, -0.13104384023653003055e+03, + 0.12066878524615367496e+03, -0.54798622627750653180e+02, + -0.35925706644981808324e+02, 0.10983780869786721723e+03, + -0.13302819346323283867e+03, 0.95400487550320946184e+02, + -0.14566095490967718717e+02, -0.72064354774139530946e+02, + 0.12508500516712591377e+03, -0.12066252239517433509e+03, + 0.61594361067871290061e+02, 0.24737704293358248719e+02, + -0.98770609338674987043e+02, 0.12722516664435303824e+03, + -0.97731966268998732517e+02, 0.24435886596672297344e+02, + 0.59072932395083086021e+02, -0.11489749193867048405e+03, + 0.11822716253359789107e+03, -0.68089206442918012385e+02, + -0.12288560569685291313e+02, 0.86409220655095666075e+02, + -0.12086540263018164865e+03, 0.10047880972613957340e+03, + -0.34804167126156109191e+02, -0.46231947268029358611e+02, + 0.10601563907322058355e+03, -0.11763706890730729526e+03, + 0.76001758497429136696e+02, -0.28682186673578573988e+02, + -0.26590804658003371230e+02, 0.10938773051345700082e+03, + -0.13187459320449860911e+03, 0.10437755570550146444e+03, + -0.18027160741047438819e+02, -0.66558980193342918596e+02, + 0.13121898619240784001e+03, -0.12456897523339553402e+03, + 0.70222578215970202109e+02, 0.27830279532394229136e+02, + -0.10279350611791834069e+03, 0.14018402093552901988e+03, + -0.10096185991730293097e+03, 0.24126006840251651653e+02, + 0.75081376210652280179e+02, -0.12847833454829572020e+03, + 0.13109156921538973961e+03, -0.60263727978889448877e+02, + -0.29525207019350435900e+02, 0.11596523572458139029e+03, + -0.13616458052749172225e+03, 0.10064898543938669206e+03, + -0.53766226863366171074e+01, -0.82612490596709974966e+02, + 0.14090194224400451617e+03, -0.11964236510596862217e+03, + 0.49510520171815485924e+02, 0.55958655532805835264e+02, + -0.12375833888057698573e+03, 0.14051507329461747986e+03, + -0.76598425933711936864e+02, -0.15794281275538331499e+02, + 0.11109023058535137807e+03, -0.14035875327709626958e+03, + 0.10890026984715696301e+03, -0.11477966526138695613e+02, + -0.82015083163132189270e+02, 0.14431263555702079771e+03, + -0.12243206799249033168e+03, 0.47549747320393620953e+02, + 0.62606164229232774687e+02, -0.13075667661716235557e+03, + 0.14089293733811092579e+03, -0.68617370239401509480e+02, + -0.33638909514276818413e+02, 0.11953781830737169400e+03, + -0.15480225645171759652e+03, 0.68917802268897503382e+02, + -0.40096368936025058360e+02, -0.20803855533408417955e+03, + -0.33883325749483070410e+02, -0.41876751657100226112e+03, + -0.47535867146676309858e+03, -0.60948821577472517674e+03, + -0.10746295537145265371e+04, -0.96823955548638105029e+03, + -0.11416634371703185025e+04, -0.99752939422779161305e+03, + -0.34323529720831561463e+03, -0.49572160741397539141e+02, + 0.64866867567314147891e+03, 0.90788322422918383836e+03, + 0.50002780596694776705e+03, 0.23256722123878148523e+03, + -0.55356876840967686348e+03, -0.79679874667519447939e+03, + -0.29897356839471586909e+03, 0.43258876965772657286e+02, + 0.70841886430612180447e+03, 0.58314947413547793076e+03, + -0.20151125538238946433e+03, -0.43142651961798827642e+03, + -0.57403757652456943106e+03, 0.43901634514612723592e+02, + 0.71338001793395005734e+03, 0.25020430483423319856e+03, + -0.16104332021901421967e+03, -0.52152058923427193804e+03, + -0.33687701184973366253e+03, 0.56863299487125516407e+03, + 0.40142448281541419419e+03, -0.15960039943301148924e+03, + -0.38035102642155089825e+03, -0.34549647953327001915e+03, + 0.47229398783806999518e+03, 0.45844715824512724112e+03, + -0.35557924292045470338e+03, -0.33411550530605705944e+03, + -0.57503035680665398388e+02, 0.40017481132350951611e+03, + 0.32922892017966444200e+03, -0.54510616122728822575e+03, + -0.25328584593292652016e+03, 0.39387248861278209233e+03, + 0.20976139322582434943e+03, -0.77998301526655865246e+02, + -0.43262903136800377979e+03, 0.28748508359402929813e+02, + 0.58808098653877868855e+03, -0.19093768558097619348e+03, + -0.42132214449288403557e+03, 0.14754764287151661506e+03, + 0.24865126537668655260e+03, 0.10358775030250566829e+03, + -0.38010924484856963090e+03, -0.14844534584914407560e+03, + 0.56452401171172073191e+03, -0.80366462275864861908e+02, + -0.45337277147234658514e+03, 0.18608621362313988357e+03, + 0.23118004781871005093e+03, -0.19430885196812081261e+02, + -0.27394362340473043105e+03, -0.60344567343753745092e+02, + 0.47817098584124488525e+03, -0.16790770976560457939e+03, + -0.44049688666268070847e+03, 0.39892966178162015467e+03, + 0.15948932166545583300e+03, -0.32723869630715023504e+03, + -0.24204708592257645705e+02, 0.16273306566254069594e+03, + 0.14183892658673420328e+03, -0.24879070487077220264e+03, + -0.16057485716220708127e+03, 0.46704784700673724274e+03, + -0.12051069256929777396e+03, -0.42720144984036613778e+03, + 0.40483107554832042752e+03, 0.11194970668144145520e+03, + -0.37121052594506846845e+03, 0.10261439849886207298e+03, + 0.17464393009984488003e+03, -0.50897702293044090993e+02, + -0.16051511873072431058e+03, 0.15767023002511400875e+02, + 0.29474804794326405499e+03, -0.22958390900625690279e+03, + -0.22598180102628055010e+03, 0.46952360974045427611e+03, + -0.13066056604965143606e+03, -0.38069230570965180505e+03, + 0.42518072882056736717e+03, 0.17153703354158519545e+02, + -0.36402199291985448326e+03, 0.23384004090064399861e+03, + 0.10787859420709247615e+03, -0.19632557284356826699e+03, + 0.68274542728581151252e+01, 0.10043750889184215680e+03, + 0.41835424754100870359e+02, -0.16994681209087539742e+03, + 0.13820855183248752951e+02, 0.26464689173468462968e+03, + -0.25983101971718849654e+03, -0.10425086738832474964e+03, + 0.41516809160041037785e+03, -0.26783927128172388166e+03, + -0.20739279673312177010e+03, 0.47365965505219105580e+03, + -0.22076195954368259322e+03, -0.26685635630435461962e+03, + 0.44924573019956363851e+03, -0.14914747766296346754e+03, + -0.27423861909187928632e+03, 0.36609518235933973074e+03, + -0.76828997320338359600e+02, -0.23624099366496221819e+03, + 0.25146963022994640369e+03, -0.17665991576798468543e+02, + -0.16715880626472903714e+03, 0.12841447685248763833e+03, + 0.23239944735898045991e+02, -0.82586014308271188611e+02, + 0.12862292709676914626e+02, 0.46588677584930792364e+02, + 0.44167600372424669075e+01, -0.86303132171877422252e+02, + 0.55952262721702375359e+02, 0.84853426058616875594e+02, + -0.16573188630614501449e+03, 0.55646276173220989847e+02, + 0.15375605612022644664e+03, -0.22571968128118706431e+03, + 0.49514455747294910282e+02, 0.20934627252018984223e+03, + -0.26853101280372248993e+03, 0.40429181315391701901e+02, + 0.25195733920970457120e+03, -0.29715000532826127255e+03, + 0.30237375631328358594e+02, 0.28303934293283202805e+03, + -0.31446245142366717573e+03, 0.19925444533644995460e+02, + 0.30438076708435613682e+03, -0.32278126099344092381e+03, + 0.98558300076049718541e+01, 0.31756317219374687966e+03, + -0.32361052267997251874e+03, -0.13185547154198962971e+03, + 0.46423269210454657241e+03, -0.17586988852980994125e+03, + -0.27898679983257028425e+03, 0.46743083188067009814e+03, + -0.15566628759565290352e+03, -0.30496613006244012922e+03, + 0.46701105558282517904e+03, -0.12082941912938035500e+03, + -0.34055018740416318224e+03, 0.45975604315165475100e+03, + -0.69632383911907211882e+02, -0.38325385125639309081e+03, + 0.44102811524244253860e+03, -0.70050035942850463755, + -0.42864733895297928257e+03, 0.40493735579444273753e+03, + 0.86113313865172614214e+02, -0.46976363569499193318e+03, + 0.34490825430349394765e+03, 0.18847222628665591060e+03, + -0.49668562266036673236e+03, 0.25488163900016974139e+03, + 0.29998994974330190644e+03, -0.49668278999415713315e+03, + 0.13137638090297681970e+03, 0.40864470281462939738e+03, + -0.45543233027796600254e+03, -0.23515979421183292430e+02, + 0.49580620388922466191e+03, -0.35994231708077069243e+03, + -0.19852153077380177137e+03, 0.53693831526697260870e+03, + -0.20362165382493768107e+03, -0.36998750430234571240e+03, + 0.50537703638697092856e+03, 0.67373149672628906970e+01, + -0.50111043256501915266e+03, 0.38044699077967243284e+03, + 0.24371350058154442308e+03, -0.54650648272425542018e+03, + 0.15998249900257926015e+03, 0.45551208623800630448e+03, + -0.46502796237248759326e+03, -0.12550993154883242653e+03, + 0.57154694614663821994e+03, -0.24145868764501287274e+03, + -0.40420637297761811624e+03, 0.52328829377136526091e+03, + 0.88069381443604754622e+02, -0.57120015895791607363e+03, + 0.28149533299219814353e+03, 0.42101151719170576371e+03, + -0.52458769495207388900e+03, -0.10121197399772661640e+03, + 0.60529801175739805785e+03, -0.22905615201639017187e+03, + -0.47083676150200585653e+03, 0.50571269527368150420e+03, + 0.21907248865497336965e+03, -0.61442902478255200549e+03, + 0.10943431250646187891e+03, 0.58211440510361069300e+03, + -0.38437371611099450774e+03, -0.39155787318219904591e+03, + 0.58788156729850459215e+03, 0.14218681534888173701e+03, + -0.64630971593504011707e+03, 0.14894207669671715166e+03, + 0.60721268143738234357e+03, -0.38485234404369481354e+03, + -0.45164414857465772002e+03, 0.57605146097361648572e+03, + 0.26066971023882518921e+03, -0.66406085586775759566e+03, + -0.26531050561710891600e+02, 0.69642168530591845865e+03, + -0.17629903004005595335e+03, -0.64284280934488879211e+03, + 0.37251085879300040915e+03, 0.56729417254396969383e+03, + -0.50811123722873480801e+03, -0.44525610807850563333e+03, + 0.62651537411215031170e+03, 0.33852960599928343299e+03, + -0.68806672893154905069e+03, -0.21610160448653473964e+03, + 0.74509280458301907402e+03, 0.13176579252967076172e+03, + -0.76205601112981105416e+03, -0.47291661735122893617e+02, + 0.79146689667578471017e+03, 0.11037526393625782362e+02, + -0.79531569111170449560e+03, 0.18315887723967946954e+02, + 0.82160717447319188977e+03, 0.64244016666153074269e+01, + -0.82635679800635296033e+03, -0.44148177789935587612e+02, + 0.84991958237047128932e+03, 0.14221299519060596594e+03, + -0.83895887820589143757e+03, -0.25797663803763856549e+03, + 0.82261279565810093573e+03, 0.43282037597718857569e+03, + -0.73565634970738040010e+03, -0.61069501005418544537e+03, + 0.59758892195123144120e+03, 0.80897029098849066031e+03, + -0.34250198014074669572e+03, -0.93651942019770820025e+03, + 0.86420158765381582811e+01, 0.97021672539226824483e+03, + 0.41845448320189956348e+03, -0.79133328995282636242e+03, + -0.80841757901269852482e+03, 0.39653383765849741849e+03, + 0.10554885174105122587e+04, 0.22015359394116464387e+03, + -0.93751605694820580084e+03, -0.83046653133464928942e+03, + 0.39719582553082352661e+03, 0.11464286083186227643e+04, + 0.47137617274488695784e+03, -0.79357642705801788452e+03, + -0.11415887947939684182e+04, -0.17946100270713677105e+03, + 0.10143044499225370600e+04, 0.11634924460908321180e+04, + 0.12926596430630732470e+03, -0.10560126294983119806e+04, + -0.12817081195826795010e+04, -0.36872580345129904345e+03, + 0.88651927192762934737e+03, 0.14816671332313912899e+04, + 0.10005997231755354733e+04, -0.18105712822392078465e+03, + -0.12818170270183049979e+04, -0.16730196075635883517e+04, + -0.12025632566274639430e+04, -0.15919698912077984687e+03, + 0.98528318563821892440e+03, 0.18402445313938505933e+04, + 0.22305017934812558451e+04, 0.21871595583540724874e+04, + 0.18583163478527819734e+04, 0.14126736914460980188e+04, + 0.97849859647679124919e+03, 0.62478308580999555488e+03, + 0.37070941002789083996e+03, 0.20559168570304223067e+03, + 0.10704243709196882151e+03, 0.52500920567367380443e+02, + 0.24322637006813248917e+02, 0.10666638043276888581e+02, + 0.44358687922286597072e+01, 0.17517929848213005251e+01, + 0.65772262546672499717, 0.23499867337220772812, + 0.79960552533103385064e-01, 0.25925581308612846709e-01, + 0.80133866926208711934e-02, 0.23619764519417405478e-02, + 0.66403855266165346186e-03, 0.17807742983325160224e-03, + 0.45553093475665774957e-04, 0.11114086765784721161e-04, + 0.25857665835955724681e-05, 0.57350481120854891031e-06, + 0.12121310059322900773e-06, 0.24401630204855643145e-07, + 0.46762257255732051178e-08, 0.85248549521593675106e-09, + 0.14772565271086752904e-09, 0.24311789815724972071e-10, + 0.37960646983427959170e-11, 0.56171266008030390691e-12, + 0.78669556980901884237e-13, 0.10413401800510394220e-13, + 0.13007078649010077954e-14, 0.15303588817247669988e-15, + 0.16926414654365305897e-16, 0.17559823102082442886e-17, + 0.17043608371008003979e-18, 0.15432973138133566332e-19, + 0.12995037403206521672e-20, 0.10137716377049156455e-21, + 0.72961494249399610657e-23, 0.48206333383821192572e-24, + 0.29072194152711729531e-25, 0.15895318185039031462e-26, + 0.78154160945136125563e-28, 0.34216591405495500497e-29, + 0.13176515712026948690e-30, 0.43941430356458021856e-32, + 0.12432840184849611651e-33, 0.29021510564060991753e-35, + 0.53660868014557132255e-37, 0.73691252503270639534e-39, + 0.66819247821700726699e-41, 0.30007749542706335153e-43, + -0.17220475588157743707e-01, 0.18855873202904088054e-01, + 0.13558073895864783745e-01, -0.31400932973985593022e-01, + 0.22837100398477687413e-01, -0.30752285792291348711e-02, + -0.52553638149286339976e-03, -0.16871461450217815209e-01, + 0.35845258381383485191e-01, -0.31218458303578673629e-01, + 0.42399839061537701948e-02, 0.21659620927882254626e-01, + -0.22323435627874026188e-01, 0.18722294138321538687e-02, + 0.16787042120030969822e-01, -0.13999167963395328651e-01, + -0.30395299525165209685e-02, 0.14894636262874353522e-01, + -0.99294012427029731960e-02, -0.56108936607038276839e-04, + -0.43198538259023663713e-03, 0.14652664613842288771e-01, + -0.27089772240801612835e-01, 0.26539445360056750089e-01, + -0.15247538632593489460e-01, 0.67433323436909345383e-02, + -0.36934444667164893945e-02, -0.47499312367070442532e-03, + 0.11740480818093014526e-01, -0.19472789587123704586e-01, + 0.12110833962464619823e-01, 0.78392482103780223440e-02, + -0.18533431740751258460e-01, 0.82070503918167010682e-02, + 0.10718833986331895158e-01, -0.11216471998370478730e-01, + -0.96932185706570320183e-02, 0.26636891892423981282e-01, + -0.12558123239015747327e-01, -0.21229393272730844033e-01, + 0.38216818348780226544e-01, -0.16843522819439252225e-01, + -0.18843270478446926680e-01, 0.32118170730393469370e-01, + -0.15224945497695041574e-01, -0.87690174167528588296e-03, + -0.65601320645450643745e-02, 0.26175998230917020548e-01, + -0.29031242464842281492e-01, 0.14289012668967737349e-01, + -0.46176786316864263174e-02, 0.12091665812567970947e-01, + -0.15624403327917001094e-01, -0.12934058418761387559e-02, + 0.22550126046259225815e-01, -0.16610817743361361992e-01, + -0.98593576460134779715e-02, 0.17883253784409480075e-01, + 0.11902321262584950740e-01, -0.43925193352040543815e-01, + 0.38702417852759955774e-01, -0.56056888978423561817e-02, + -0.97146999833127422458e-02, -0.31681559311560730102e-02, + 0.11778122272783315277e-01, 0.48832148852637532327e-02, + -0.18426680081939525446e-01, 0.49539353698513531252e-02, + 0.12019714729553486118e-01, 0.40180363707686987326e-02, + -0.32978003351892333506e-01, 0.27395928318085540493e-01, + 0.11358964153777705020e-01, -0.27173765593040320743e-01, + 0.21986821285227670618e-02, 0.17840428361620568748e-01, + -0.32829331315382118866e-04, -0.18701980038039734550e-01, + 0.61290292220130600936e-02, 0.62034160712354695713e-02, + 0.18451066943026867007e-01, -0.41091945650082520314e-01, + 0.13611520204150578603e-01, 0.31394002591476476149e-01, + -0.29109676134463875058e-01, -0.72729315475546631262e-03, + -0.15653902437411425577e-02, 0.22334751434856227326e-01, + -0.35004759577229012726e-02, -0.30786439764043552897e-01, + 0.18157212153145717293e-01, 0.15615598303075187842e-01, + 0.10036643945611264245e-02, -0.36936024353280590138e-01, + 0.19620034298553648555e-01, 0.19338804392424257389e-01, + -0.93742915530150277420e-02, -0.60135776703415097164e-02, + -0.29024788020027121604e-01, 0.49690429073516902136e-01, + -0.23056373801181103030e-02, -0.27179103065177394327e-01, + -0.47452134565472495198e-02, 0.10834708497285024109e-01, + 0.22668433140889489297e-01, 0.33736787487155371233e-03, + -0.47115093105827565712e-01, 0.18635170817649825831e-01, + 0.18160496576803318580e-01, 0.17092265351330893780e-01, + -0.24035202437102505535e-01, -0.20694256005489509304e-01, + -0.31699064769203483781e-02, 0.50871882934841121393e-01, + -0.10052560133184290300e-01, -0.84059111592435838828e-02, + -0.39540861083150420641e-01, 0.13327180516387277659e-01, + 0.26466860265331793034e-01, 0.30567531448492550605e-01, + -0.29710341659236503414e-01, -0.24295647861540897727e-01, + -0.20947890873126831512e-01, 0.22942759616191230054e-01, + 0.42872594509022372844e-01, 0.10374886576517460338e-01, + -0.23210662926173939585e-01, -0.34114204284256620381e-01, + -0.31958876218667997549e-01, 0.18910580559287289842e-01, + 0.45905153588371973294e-01, 0.24850233179587084137e-01, + 0.29716701078354449544e-01, -0.42332829450499140367e-01, + -0.42352857986616844477e-01, -0.38904671039256981391e-01, + -0.36013962952642579463e-01, 0.26888666177022884501e-01, + 0.38196542996993473884e-01, 0.54235522767969300550e-01, + 0.85927930293709861576e-01, 0.41213201368430055216e-01, + 0.64754519348057870687e-01, 0.35112336546308672847e-01, + 0.14890039687080603228e-01, 0.33049654346607913735e-01, + -0.77778927612259882857e-02, 0.16374669196680978478e-01, + -0.17362766072497141934e-02, 0.19162132167917728456e-02, + -0.15007683871085984121e-02, 0.80659202169114721515e-02, + -0.14448229707528034357e-01, 0.19048051491109080358e-01, + -0.19441419785338646259e-01, 0.16635006529079964660e-01, + -0.12973963573491962067e-01, 0.11076971372492685694e-01, + -0.12158343121245050733e-01, 0.15443059389534621872e-01, + -0.18754156047814891928e-01, 0.19781744617099177724e-01, + -0.17393082978092302276e-01, 0.12098541090825837285e-01, + -0.56561353385039068314e-02, -0.19884854485081329499e-04, + 0.37932918991106985042e-02, -0.57023791154241698295e-02, + 0.65091214869536281190e-02, -0.69197709898499238160e-02, + 0.68972273656264819139e-02, -0.56793125669048890800e-02, + 0.23804964904807252198e-02, 0.30784145521865948630e-02, + -0.94623518237620975191e-02, 0.14422544775245665222e-01, + -0.15522412954335880475e-01, 0.11471352427807789826e-01, + -0.29991240024542136292e-02, -0.72659103547436411363e-02, + 0.15830645933545377246e-01, -0.19903111901294574804e-01, + 0.18612395097093420437e-01, -0.13341956805057822791e-01, + 0.69128077559259945226e-02, -0.21176819627164414524e-02, + 0.29573118056230765071e-03, -0.76666078513037776675e-03, + 0.13519495025227350887e-02, 0.23873988231637796468e-03, + -0.49667471874184788289e-02, 0.11709527994389484773e-01, + -0.17683088000652828070e-01, 0.19815973412531297931e-01, + -0.16418838765721796569e-01, 0.82324326714977753838e-02, + 0.16997272191184359044e-02, -0.93574235328129674871e-02, + 0.11621176914302996583e-01, -0.77964903134405431559e-02, + -0.70387003402805778385e-01, 0.94982627816770026641e-01, + 0.17797103380132222455e-01, -0.16166505649091181263, + 0.24835373975086269538, -0.25256117518591592042, + 0.15028972145334129618, -0.36831982688276185267e-02, + -0.14223904991590705094, 0.20766612249015456437, + -0.18961362463053196836, 0.89512260113256081340e-01, + 0.14950903171104909517e-01, -0.82178263730586273428e-01, + 0.55314779896561687422e-01, 0.34920758098081275400e-01, + -0.15716978709255496893, 0.22132900925381321366, + -0.19729335904559758275, 0.59335980435767966823e-01, + 0.12441506863051599030, -0.29526048410998934068, + 0.35743826444495901962, -0.29801747807018547087, + 0.12128656043162995559, 0.78056232105687670120e-01, + -0.23250757402255275985, 0.26012472863913976839, + -0.17690481288008513827, 0.14822907928703119365e-01, + 0.12178612900684213094, -0.18194296861047609681, + 0.12078399944829074086, 0.54200422326179014190e-02, + -0.14190845822091294193, 0.19233261387569283718, + -0.14282893206271526920, -0.18234564192908108305e-02, + 0.14693758894607328314, -0.22945903744606691022, + 0.17899074142555904121, -0.28675256932927554315e-01, + -0.17253021192821521579, 0.31081523998351073823, + -0.33757500242788818223, 0.22132920541319286989, + -0.34818513707087224429e-01, -0.15236961996576095513, + 0.24457929967077887690, -0.21874339524604444196, + 0.11068124616491419043, 0.53671822222634266164e-01, + -0.86627915792548595975e-01, 0.21148874286920002485, + 0.76853542851775022426e-01, 0.23338904129356288775, + 0.46955206208840660764, 0.52249588915355704710, + 0.83484524947765825775, 0.99459442475105219739, + 0.10808853950960366497e+01, 0.93816985048191858798, + 0.81104036367957521581, 0.48385707808273614727e-01, + -0.23005324412121455624, -0.73741533909657874801, + -0.89718781822382731583, -0.20180425494023002120, + -0.79222064417055260144e-01, 0.82289298625962159495, + 0.52964595808963543799, 0.31668093675325553749, + -0.48118448069244801335, -0.50234297105461311883, + -0.52272495691016773733, 0.30978478676909793066, + 0.70950790855245682298, 0.45785096827555209209e-01, + 0.25251850805244957510, -0.10836072344151979063e+01, + 0.85876121243079486800e-01, 0.21248782327393447855, + 0.40680693099087700260, 0.35188845535478846527, + -0.68336047135005195674, -0.32554406730736534792, + 0.24307218403809011109, 0.34932651412298326710, + 0.26893319755425892925, -0.41747181260761118127, + -0.47958364412018267275, 0.36251803014785155543, + 0.36473701326170715475, 0.12660801596335714489e-01, + -0.39037185428732795733, -0.24358133461900605132, + 0.34770688290601509118, 0.41070596609985354775, + -0.34827382086352992596, -0.38173293623125686969, + 0.25066050667062661494, 0.22993766751682709337, + 0.12818004513249112164, -0.46665194300110035552, + -0.13250622967584047007, 0.55105592946482628847, + 0.19755591465442819132e-01, -0.44773949239747090623, + 0.52427786680052435031e-01, 0.15216404405760916574, + 0.25744513677050695488, -0.25984570052527289352, + -0.39323455210768060164, 0.55845622388025606408, + 0.91971375896092347202e-01, -0.45893700707692913765, + 0.87351955344989434815e-01, 0.13764600138140067886, + 0.18527818744790847116, -0.27336069840261256747, + -0.21279601147329565980, 0.45079987704014923278, + 0.10024656344345225789e-01, -0.38291310321552757268, + 0.24640794433687811943e-01, 0.45768627799571121040, + -0.29124308462223041927, -0.18842803261858234731, + 0.22601071680122752916, 0.60575722064441339665e-01, + -0.29730157619041484851e-01, -0.25814864141213750282, + 0.14101856257124251171, 0.42531568475548214847, + -0.67138334796206211585, 0.20319642932581685746, + 0.36827813915128188027, -0.35661844289655147966, + -0.20882991752165746407e-01, 0.92428939377809604672e-01, + 0.21001202263390233993, -0.34594070888629308014, + 0.89312966211495731228e-01, 0.14506448830313350973, + -0.27906877417032262961e-01, -0.13992750481499424686, + -0.64694031133303464554e-01, 0.44817508062553490511, + -0.41823501764122689162, -0.13853629165722591843, + 0.62195687084934425659, -0.49529895753567376726, + -0.19580120896231519023e-01, 0.27304482047893730012, + -0.45635063419624054271e-01, -0.24089272343691148226, + 0.16019336802025660460, 0.16780539462195209754, + -0.32177016706625116704, 0.17897924194481501514, + -0.19930458755818877825e-01, 0.64399448250716542774e-01, + -0.16166893551822025810, 0.63877031097126876769e-01, + 0.15193170158291094407, -0.15484005192966576736, + -0.15774029621176136051, 0.44698008675418415825, + -0.32706008028012378830, -0.12479114383134183586, + 0.41703023672716099668, -0.22650932143144253406, + -0.20149839368693719943, 0.33678318381936128700, + 0.20044306240370904186e-02, -0.42577659555797053859, + 0.42543752876565871235, 0.39154996832741692514e-01, + -0.49489716144021944633, 0.48705088603936358416, + -0.68291717489280118203e-01, -0.29373593903048084153, + 0.24867782800680032773, 0.74595792359455265208e-01, + -0.25389017632555127557, 0.58162086192790701800e-01, + 0.31412546586678513627, -0.47539270797776317368, + 0.26916675156369129773, 0.85978533380168239986e-01, + -0.25175508843749289101, 0.12095762763900072545, + 0.10304920280047656644, -0.14960194441631127771, + -0.34487113991814997982e-01, 0.24923366536004304406, + -0.26661246147866796141, 0.67122407216106905192e-01, + 0.14920242683093282166, -0.17365301005146918656, + 0.23795800741899020281e+01, -0.26671413743928815698e+01, + -0.12670055664654167327e+01, 0.30594498821165307945e+01, + -0.14932978027520316111e+01, -0.12365813367694773461e+01, + 0.15748131052194793700e+01, 0.87149474347693156595, + -0.34269255209214799507e+01, 0.28629277677384292744e+01, + 0.42216806470576651034, -0.32986368002628418949e+01, + 0.27967233890543510277e+01, 0.18562544671455782908, + -0.25325948265269997428e+01, 0.18955840646759332113e+01, + 0.35955968241853858425, -0.15412638209350231211e+01, + 0.36477241176818542279, 0.11966589790507280444e+01, + -0.10110291629980276973e+01, -0.10598251071580560012e+01, + 0.25863326338284444716e+01, -0.21278523844909273954e+01, + 0.40210450432464117654, 0.39854044852900644136, + -0.49205920180973326816e-01, -0.57280842063357394200e-01, + -0.13088630851453197934e+01, 0.26164267597888999362e+01, + -0.18775199098529737896e+01, -0.88121653057796711650, + 0.25674046227666180719e+01, -0.12569059143449510252e+01, + -0.15173501611975535042e+01, 0.18714184808094413981e+01, + 0.88330156385044111822, -0.33820139847881138806e+01, + 0.17608274365429403829e+01, 0.26357097302397280991e+01, + -0.49391199110977490605e+01, 0.22242865341841744353e+01, + 0.22113479034517649069e+01, -0.34504325262289188281e+01, + 0.65556093042434437912, 0.17177657186856996052e+01, + -0.62301099125853764971, -0.20950276797641826931e+01, + 0.22832847867639172179e+01, -0.53771407942063809138e-01, + -0.10904114565835933970e+01, -0.61462274810697881122, + 0.18961454269626309976e+01, -0.54579753559319446610e-01, + -0.27574201664999336003e+01, 0.18940484556509626923e+01, + 0.19526243445108033558e+01, -0.33689868979527259896e+01, + -0.47601085894466838022, 0.47114981217729283713e+01, + -0.39145316582325815347e+01, -0.50197559294155635889, + 0.21469479186302384832e+01, 0.19084586661537886187, + -0.16548744744098440318e+01, -0.73276293271759196379, + 0.26743860761249971247e+01, -0.54690927998223870521, + -0.22615854030119133533e+01, 0.30039589672201649773, + 0.37701149701854537177e+01, -0.32083208256422333093e+01, + -0.19102307690156132836e+01, 0.37491123430691510876e+01, + 0.72790615130082725326e-01, -0.29689705639839409912e+01, + 0.36536640914910073485, 0.22345249026083395805e+01, + -0.14480090995156877365, -0.19435691998978690265e+01, + -0.15043008436302511832e+01, 0.50303587145478090292e+01, + -0.16553842172819175360e+01, -0.41749324397494893546e+01, + 0.34218032460144400808e+01, 0.90518580516584379314, + -0.26014770971807371636, -0.31838351351922287158e+01, + 0.84173764116375915378, 0.39107447567158684087e+01, + -0.20491248929278480517e+01, -0.28250735891499352270e+01, + 0.46565370999451516365, 0.47102072658368170366e+01, + -0.23831296395381760256e+01, -0.28122345118079103976e+01, + 0.77158220644365482777, 0.20395159657097807759e+01, + 0.26604689632700098123e+01, -0.56748288183223207781e+01, + -0.78747658973665468629, 0.45762692252550758454e+01, + 0.30948064734189745240, -0.11568618161558936741e+01, + -0.39759995848308826716e+01, 0.10608723270838722463e+01, + 0.53989150495050788336e+01, -0.12477155932316845721e+01, + -0.39298865203989135075e+01, -0.12787024148168883997e+01, + 0.22707888843156771586e+01, 0.43584338822466932584e+01, + -0.12016602681234678229e+01, -0.54511629307288007595e+01, + -0.46463122270547951853, 0.29766732085221594417e+01, + 0.41564562470267052419e+01, -0.56218419245460982125, + -0.51086191161151459639e+01, -0.30761150736779638848e+01, + 0.29461056792782271962e+01, 0.47084602495427541058e+01, + 0.20840001372495833287e+01, -0.27287830697456580964e+01, + -0.64409728901679077495e+01, -0.13868712671807905679e+01, + 0.32477590102108120362e+01, 0.50408638314428202420e+01, + 0.45294027056288221900e+01, -0.28753614727669223328e+01, + -0.61034205182099920961e+01, -0.44243038755867312162e+01, + -0.32829193650040893182e+01, 0.52330514971534318747e+01, + 0.65899251658172541823e+01, 0.55475226670379713667e+01, + 0.49528732498560090747e+01, -0.36399337733512728832e+01, + -0.54519740560221787717e+01, -0.82621653163884989368e+01, + -0.11616833015809531204e+02, -0.67209763721869961728e+01, + -0.88281413134288424516e+01, -0.50464495948480028176e+01, + -0.26887856730615080636e+01, -0.38258408987293823778e+01, + 0.21477124573612487585e-01, -0.12729470540573795123e+01, + -0.77017059245272156964, 0.75873971731529943341, + -0.97599031563600502359, 0.30023862253582767057, + 0.33308009541907873663, -0.79493740694310266459, + 0.78463262762323771060, -0.42211737321376929799, + -0.31131445528744663281e-01, 0.27363961739755571223, + -0.15912846826513885046, -0.23735430266192428239, + 0.68218310955130379014, -0.92184325921463783349, + 0.82801628870266885674, -0.44805994422059014504, + -0.38011406890956750404e-01, 0.43823869962559230951, + -0.64921255317593518086, 0.69698242868441373510, + -0.68194035195937652283, 0.68908386249434361304, + -0.70897243102810125759, 0.64087130228691058242, + -0.36207970106923864639, -0.16336549994076413062, + 0.82342589739645222213, -0.13751900037561277657e+01, + 0.15563778007954891525e+01, -0.12208989691968383795e+01, + 0.43720337863806957301, 0.52362892829458951294, + -0.12993215101498005737e+01, 0.16071311810487209915e+01, + -0.13749064176874021825e+01, 0.77435001890891330678, + -0.12635722257398096513, -0.26361227732729797246, + 0.26406493905274724954, 0.22699335117616577240e-01, + -0.32319213481010433675, 0.35311054784651202398, + 0.17204413563645892110e-01, -0.67500712472336943382, + 0.13114417069162354057e+01, -0.15759710549885859177e+01, + 0.12659010537874368918e+01, -0.44708953380766919272, + -0.55640403777628921755, 0.13076233732174062929e+01, + -0.14647404131313994657e+01, 0.95121716159781688482, + 0.36018995252052294909e+01, -0.61046683764743221445e+01, + 0.22145412810718458907e+01, 0.33931986505580904456e+01, + -0.72830094974711254707e+01, 0.83981288670260454410e+01, + -0.54555596365210048404e+01, 0.65720992764333663327, + 0.44827600707693457949e+01, -0.67830959812121163210e+01, + 0.60510811385387173189e+01, -0.20891659098371868630e+01, + -0.21177122296986370387e+01, 0.49855468210342825941e+01, + -0.40712143313079938167e+01, 0.43910184919948991311, + 0.48850304601307694696e+01, -0.82940448074238108944e+01, + 0.84891233013053817302e+01, -0.41085549062502719764e+01, + -0.23990109006451723062e+01, 0.89650514598527326626e+01, + -0.11766189204954493164e+02, 0.10191044227266072397e+02, + -0.40922748779560036425e+01, -0.29921816521567086156e+01, + 0.86229867273688292073e+01, -0.95471678287080194991e+01, + 0.63800346423578746524e+01, -0.19584069539599366361, + -0.49551225900915527589e+01, 0.71954903083571721822e+01, + -0.47172449389220645344e+01, -0.22217855816674175751, + 0.55526855456109194265e+01, -0.74392985252132817209e+01, + 0.53982707618657581605e+01, 0.44964464361149913962, + -0.63305932311234078824e+01, 0.98341331109465599525e+01, + -0.81360843948887158206e+01, 0.25896852179384017845e+01, + 0.49786853112824971390e+01, -0.10111687354499215630e+02, + 0.11067743622021398053e+02, -0.66576817690448004683e+01, + -0.14809591487461776227, 0.67231271104920553583e+01, + -0.94362286938052530871e+01, 0.76654917310354280247e+01, + -0.30785503999833099265e+01, -0.32995114175612556551e+01, + 0.38618987442282337597e+01, -0.83510964313498146083e+01, + -0.41214887870340479736e+01, -0.90933222776217608185e+01, + -0.19752148871866236135e+02, -0.22841499032671194414e+02, + -0.33310269052293527636e+02, -0.44021294587079658811e+02, + -0.43163235732799677180e+02, -0.41129160898377335798e+02, + -0.33177101239257694942e+02, -0.19597274607906847166e+01, + 0.86958328134278275456e+01, 0.32684783962128591384e+02, + 0.35355376927212702753e+02, 0.11357250086111632115e+02, + -0.99208637231220073160e-01, -0.30630404169851146889e+02, + -0.26494478037586684849e+02, -0.91305289071069601903e+01, + 0.16723404149017738973e+02, 0.23205923727260337586e+02, + 0.21836694913088589232e+02, -0.15208707306046351349e+02, + -0.25375575032084334737e+02, -0.80371739128452031053e+01, + -0.36707727529980838099e+01, 0.38758442595287071697e+02, + 0.20805398007524043003e+01, -0.12981429983981373155e+02, + -0.14794695026990018150e+02, -0.15566010045730681810e+02, + 0.28507427826732982368e+02, 0.14265811313958632667e+02, + -0.10745695313728193199e+02, -0.14398828502272706942e+02, + -0.11351250019305579642e+02, 0.17596358378442591430e+02, + 0.19818747622510386464e+02, -0.14485014158552353081e+02, + -0.16446096757866428106e+02, 0.77105914236420813879, + 0.15237145652717078548e+02, 0.10938952437254428673e+02, + -0.14676558300823964842e+02, -0.17811854512021405128e+02, + 0.15653995626680215381e+02, 0.14813505818137938874e+02, + -0.93753810934158181567e+01, -0.10585830776244355533e+02, + -0.46799955132518453738e+01, 0.18988035281881877836e+02, + 0.62826414870848816818e+01, -0.24128341095939148886e+02, + 0.46615003524354109432, 0.17305751901567838047e+02, + -0.72664916875826635057, -0.75731204501979076937e+01, + -0.10126739248934443438e+02, 0.10782780553820787262e+02, + 0.16211642747877313298e+02, -0.22974515572109744710e+02, + -0.42098088478912476518e+01, 0.19245512105025628813e+02, + -0.31758043303525185230e+01, -0.66222618681209466374e+01, + -0.68730859749993902241e+01, 0.10863081110025211373e+02, + 0.89564860345029657651e+01, -0.18199406823423633028e+02, + -0.18478618572507596873e+01, 0.17947927665060820601e+02, + -0.29742709230815509436e+01, -0.17555772396565881621e+02, + 0.11047085051604449646e+02, 0.86219484447612053657e+01, + -0.99373210853017166500e+01, -0.20136040466050579845e+01, + 0.28341111523797785088, 0.12455410262928376497e+02, + -0.81570348224900399714e+01, -0.15296537641491424253e+02, + 0.25790845678358760296e+02, -0.68449068897132061551e+01, + -0.15975215778167937586e+02, 0.14082611937712515626e+02, + 0.30777499555917278151e+01, -0.69808966266952658941e+01, + -0.54342807030166380144e+01, 0.11510826746626605654e+02, + -0.16199230647565463492e+01, -0.70855759847315749056e+01, + 0.11068198422214228227e+01, 0.66270601467669649765e+01, + 0.18344752543462732319e+01, -0.18372925359794830769e+02, + 0.17965902307455458242e+02, 0.44139269251899637680e+01, + -0.23857477736539099311e+02, 0.18076567973657283517e+02, + 0.34720937830552367487e+01, -0.13506014580304400496e+02, + 0.29444196449654409520e+01, 0.10280449572498733701e+02, + -0.80235351136522599091e+01, -0.48669315850160383974e+01, + 0.10793958680307760289e+02, -0.45951915796358706601e+01, + -0.20391306462893732387e+01, 0.12651713995959467871e-01, + 0.42222773162899045474e+01, -0.18319507386158701001, + -0.88921568465200788722e+01, 0.90402104567344743202e+01, + 0.41495667784396914612e+01, -0.16538822489587957421e+02, + 0.11969945181351741681e+02, 0.63401627740591539606e+01, + -0.17844074486366721999e+02, 0.91175934739279078656e+01, + 0.93827466924199516285e+01, -0.15268095750557998613e+02, + 0.87629784727721293791, 0.17407617337193933338e+02, + -0.18073928015942655634e+02, -0.74300105688510131863, + 0.19362994929004283762e+02, -0.18838759136995445687e+02, + 0.14613448174739838148e+01, 0.13142989554380255512e+02, + -0.10361076877344521208e+02, -0.42288074803070001551e+01, + 0.12705079750673677452e+02, -0.51908577322911657603e+01, + -0.10098109028622628713e+02, 0.16930350630354283226e+02, + -0.87032003850455534888e+01, -0.54969402857993401312e+01, + 0.11594694388464692025e+02, -0.52280482137370789530e+01, + -0.49393932619952156671e+01, 0.74557572182139706385e+01, + -0.48204298405001580474e-01, -0.88804407409577308385e+01, + 0.97194301303280372650e+01, -0.16004128934372920945e+01, + -0.71256042048164012215e+01, 0.77355680593945104206e+01, + -0.45683930262533912980e+02, 0.44584141532084807125e+02, + 0.34951981644115647896e+02, -0.64009686240871417340e+02, + 0.22871956447494973474e+02, 0.37614570084205951161e+02, + -0.42036527295217595679e+02, -0.12883054412957173795e+02, + 0.66967817171793498687e+02, -0.52468638605680759213e+02, + -0.16912582221864315812e+02, 0.72323809334804565196e+02, + -0.53596050552779878728e+02, -0.12902389966228957618e+02, + 0.58026117951906947212e+02, -0.35969241874512213997e+02, + -0.15329929191065481575e+02, 0.35193919620940249615e+02, + -0.10341326977590130642e+01, -0.35964552224706281436e+02, + 0.27980241282668796288e+02, 0.21889830803614607646e+02, + -0.53131544451728068168e+02, 0.35212430527220597298e+02, + 0.78280077103273812966e+01, -0.20218668896882338260e+02, + -0.48570691718579467322, 0.13721384855505339928e+02, + 0.15798898664151989735e+02, -0.52063744323457946450e+02, + 0.42475561533042551332e+02, 0.18659836593759141721e+02, + -0.60132274922918689697e+02, 0.32630028729743273175e+02, + 0.33011855103607246065e+02, -0.46440148842335069901e+02, + -0.13205568829230106331e+02, 0.72863173116041039634e+02, + -0.43113423718487268843e+02, -0.49791178861570301706e+02, + 0.99341328517375089291e+02, -0.40541532474748301240e+02, + -0.52706916556504140203e+02, 0.72395479161342976226e+02, + -0.38509391943115867107e+01, -0.49452754867770956082e+02, + 0.21172451718078345806e+02, 0.41353242416129404546e+02, + -0.41224147868225287539e+02, -0.14668628773712791613e+02, + 0.39995469536856511183e+02, 0.71883800587301402985e+01, + -0.46539759208356180409e+02, 0.95386794474220302220e+01, + 0.56263179649261246595e+02, -0.40142469363362465629e+02, + -0.46980606834255112858e+02, 0.82609517575961348257e+02, + 0.12954316047106823051, -0.92367540890160540812e+02, + 0.72606671668886676230e+02, 0.24868640154136997467e+02, + -0.54214320663399426792e+02, -0.75183587516989511812e+01, + 0.43760580806223480010e+02, 0.13996450058111122416e+02, + -0.61401267275630658560e+02, 0.10335137550028969500e+02, + 0.60329151755578259042e+02, -0.20010448259915428082e+02, + -0.73392878759734756500e+02, 0.64248339488157284904e+02, + 0.47909293503089251942e+02, -0.84606544256853766228e+02, + -0.64602291224602250708e+01, 0.71919432385315332112e+02, + -0.84756791972159390980e+01, -0.51664190873832453121e+02, + -0.18381245748309986698e+01, 0.56797545378801260085e+02, + 0.20605699344820848751e+02, -0.10621955832037666312e+03, + 0.36566345491467785678e+02, 0.88915921371032908382e+02, + -0.64539473308266508411e+02, -0.36502302239416806628e+02, + 0.15719280440790921460e+02, 0.72463044247277181853e+02, + -0.23849890997095304357e+02, -0.84373500045275832804e+02, + 0.40514033540431320546e+02, 0.73688134546482359610e+02, + -0.20303411931235970656e+02, -0.98698816897975788720e+02, + 0.45099786127579832851e+02, 0.71158411298257405520e+02, + -0.15083942096286220291e+02, -0.58970943727429180115e+02, + -0.46481138579742349748e+02, 0.11925153276413124104e+03, + 0.23596992281026555105e+02, -0.10268591466375355026e+03, + -0.17243574794408608852e+02, 0.36956822955547778520e+02, + 0.87954860421167964546e+02, -0.26510605672889123952e+02, + -0.12018004252108272567e+03, 0.23730474621500654564e+02, + 0.93355380726515178935e+02, 0.32093928018128508484e+02, + -0.56382460077551044719e+02, -0.10080782888321228086e+03, + 0.31720014196745630386e+02, 0.11975111855782218129e+03, + 0.19073276986069632954e+02, -0.75361268660338495806e+02, + -0.94675948150643634449e+02, 0.13258385391376824813e+02, + 0.11912192880068793954e+03, 0.69874460856705965739e+02, + -0.64934172485633141036e+02, -0.11354448840723823366e+03, + -0.47579323482686341151e+02, 0.66393805117110801461e+02, + 0.14500570889790003548e+03, 0.37315593160674474404e+02, + -0.77688675745779121939e+02, -0.11939534596374417674e+03, + -0.10230527680078725439e+03, 0.65803763760091584345e+02, + 0.13857663650674953715e+03, 0.11251202904541968053e+03, + 0.64856839775046339014e+02, -0.11275770394500807470e+03, + -0.15656572348994731669e+03, -0.13421157813263502590e+03, + -0.10609371463284510639e+03, 0.76211889769849392451e+02, + 0.12988352204801944367e+03, 0.19862003964661693090e+03, + 0.25832984575477973976e+03, 0.17164510387408253678e+03, + 0.19463894546259419371e+03, 0.12200275714127215565e+03, + 0.65747520435549247964e+02, 0.82009293784576911435e+02, + 0.66905591148694343318e+01, 0.25918052587434768697e+02, + 0.17529590730706061663e+02, -0.14768189462535646683e+02, + 0.20333644210361626392e+02, -0.75061798030129160963e+01, + -0.36856874795647223131e+01, 0.12146134355268079830e+02, + -0.11778056643098885559e+02, 0.49098679712388468843e+01, + 0.38200155826808299686e+01, -0.88597880106143254153e+01, + 0.74246007229093722302e+01, -0.67468995884536808738, + -0.73645006075424950254e+01, 0.12247456133318017635e+02, + -0.11695807012844392503e+02, 0.64764831400142588436e+01, + 0.35590609297828290636, -0.56168212899035676600e+01, + 0.77427752944859058459e+01, -0.74831826933867322538e+01, + 0.68416288997573415642e+01, -0.74283567781620654102e+01, + 0.90049888153477031238e+01, -0.95562755128616068134e+01, + 0.65596513609911601961e+01, 0.99517712155952886555, + -0.11447564907021856584e+02, 0.20700167646200139160e+02, + -0.24182266646497289742e+02, 0.19251841012782268336e+02, + -0.69730648719648486988e+01, -0.80773371155508453256e+01, + 0.19755904123216751600e+02, -0.23365548573012077327e+02, + 0.17938863582583785217e+02, -0.67851052737627792766e+01, + -0.42563188148371349229e+01, 0.97818284162452275865e+01, + -0.76618090106537888317e+01, 0.66846498992282885054e-01, + 0.77156225227790793397e+01, -0.10237381349953416532e+02, + 0.49198208697871717021e+01, 0.63254521656630640081e+01, + -0.17921712900428822479e+02, 0.23418835223008002799e+02, + -0.18945293232777160597e+02, 0.54304334815754939925e+01, + 0.11524644792459124432e+02, -0.24217669371052696903e+02, + 0.26559242084002534057e+02, -0.17131288508886608923e+02, + -0.41760886765049541225e+02, 0.78276330269379798210e+02, + -0.40517746642977762406e+02, -0.20971408287747831167e+02, + 0.67564436781567337675e+02, -0.86765585662248199128e+02, + 0.60753919158910910880e+02, -0.12370070949300153273e+02, + -0.43465573956325130212e+02, 0.69821421567367409011e+02, + -0.63418883741499136875e+02, 0.19172752540147474321e+02, + 0.29841823632962224622e+02, -0.66127107370689003574e+02, + 0.59607332173133450226e+02, -0.20566995916951441359e+02, + -0.41893509079406179296e+02, 0.86585547664981248772e+02, + -0.97961806856951127997e+02, 0.57226349812160265174e+02, + 0.10063687564620620307e+02, -0.82925458300774280929e+02, + 0.11751835999649831876e+03, -0.10609982752457945310e+03, + 0.44029403556356946581e+02, 0.30168391940055219180e+02, + -0.90811641321244863434e+02, 0.10053244646093186532e+03, + -0.66157533470698709266e+02, -0.19358220012051448045e+01, + 0.58160734129255480696e+02, -0.82331299561278257215e+02, + 0.53270342631916079768e+02, 0.31002203507685832662e+01, + -0.64245394505873989033e+02, 0.86164137371449626812e+02, + -0.63914243922930054964e+02, -0.20034847876724217741e+01, + 0.68457240232994564622e+02, -0.10904253697296609005e+03, + 0.91330969375916097874e+02, -0.31343356287284578343e+02, + -0.51153419680624864441e+02, 0.10577286292594217798e+03, + -0.11459079561765310018e+03, 0.64740696426417841280e+02, + 0.87754041270755500648e+01, -0.77139488329974895464e+02, + 0.10035224673530045436e+03, -0.74212142735265359761e+02, + 0.20256897994708253918e+02, 0.49810456948413204259e+02, + -0.47339395546105315304e+02, 0.92695720147945877443e+02, + 0.61646383969865830466e+02, 0.97613800896336741175e+02, + 0.24290901755421114672e+03, 0.27655991170230055332e+03, + 0.38910677664192104430e+03, 0.54418896284724439738e+03, + 0.50084736502163582372e+03, 0.50788130068416336371e+03, + 0.38902878535337811172e+03, 0.26775953473886634271e+02, + -0.10267394339340273746e+03, -0.39751254987817168285e+03, + -0.41613986263640163088e+03, -0.14759107546692536062e+03, + 0.16827696220313640652e+02, 0.34648346045528751347e+03, + 0.34425928535328591806e+03, 0.80284671982728610828e+02, + -0.17296204018791485169e+03, -0.29886454196542780437e+03, + -0.25442232998033350100e+03, 0.19090398576242350259e+03, + 0.28029723537868233052e+03, 0.13242727093938481175e+03, + 0.31941799091681510880e+01, -0.42736938912118125700e+03, + -0.52746736145357580483e+02, 0.16968992964527953404e+03, + 0.17755596690831299611e+03, 0.17620127440550541564e+03, + -0.32640012205714231186e+03, -0.18637803172444321831e+03, + 0.13959934791896301931e+03, 0.16804060039134176918e+03, + 0.13629592618414264393e+03, -0.20958030586015436825e+03, + -0.23778869370751021961e+03, 0.16995434332574401992e+03, + 0.20531329799705486039e+03, -0.19676074410290784300e+02, + -0.17280969658714806769e+03, -0.13807833776203835896e+03, + 0.17791926835305349641e+03, 0.21698991627690421069e+03, + -0.19456747561557085646e+03, -0.17013045980923689626e+03, + 0.10641712634960953210e+03, 0.13008758083755404300e+03, + 0.56104045290218913067e+02, -0.22946564868851061192e+03, + -0.74142493812299520073e+02, 0.29037272064887815759e+03, + -0.91942295273556364776e+01, -0.20204580564764393102e+03, + 0.29286396351019874373e+01, 0.94567985446654262205e+02, + 0.12160322706970927698e+03, -0.13361514803180409672e+03, + -0.18744527770564735647e+03, 0.26821663330031287842e+03, + 0.55476012255397371575e+02, -0.23119308269827044455e+03, + 0.32981242802519894042e+02, 0.88709679700714147543e+02, + 0.71917692103372260704e+02, -0.12195016068170258450e+03, + -0.11083011861477173454e+03, 0.21534341340515086927e+03, + 0.30851700231777520855e+02, -0.22704325207921002061e+03, + 0.46677962725597978988e+02, 0.20376308664620435707e+03, + -0.13170393417889363263e+03, -0.98534938886080652765e+02, + 0.11095368087893309905e+03, 0.31953191167864371636e+02, + -0.67103835734384089662e+01, -0.15336703815103274451e+03, + 0.10940671142462599619e+03, 0.16659764671496378696e+03, + -0.29137067172331086340e+03, 0.67961033850501351594e+02, + 0.19753324906491005208e+03, -0.16419838143997341717e+03, + -0.51750467070232311073e+02, 0.10517195295082447615e+03, + 0.42544497184684232138e+02, -0.11992891655239844795e+03, + 0.10179399928801178277e+02, 0.83362300762567940637e+02, + -0.17826378826699160740e+01, -0.97070350070254121988e+02, + -0.38392321881280135898e+01, 0.20714930521465362290e+03, + -0.21117489231333644284e+03, -0.46918401173771705714e+02, + 0.27101513301824581958e+03, -0.19601229982443851441e+03, + -0.63372021174157865175e+02, 0.17983491055352641297e+03, + -0.45748573069699105531e+02, -0.12163425413590724133e+03, + 0.10237024398377901946e+03, 0.47021458227535035235e+02, + -0.11613522118674286787e+03, 0.42722762583092162458e+02, + 0.34019600554882714505e+02, -0.64168556537249523686e+01, + -0.46795828482368776235e+02, -0.93073315475038564948, + 0.11070404711594102309e+03, -0.11423851098605571508e+03, + -0.42542585320411511418e+02, 0.19108344873608450598e+03, + -0.13818375703787936004e+03, -0.77582464954613186592e+02, + 0.21038830315835522811e+03, -0.10043796643610845365e+03, + -0.12535516493610097655e+03, 0.19714213077070553481e+03, + -0.22441823446784692209e+02, -0.20186501342960661987e+03, + 0.21661528868561771333e+03, 0.21235461508824089449e+01, + -0.21987118410683487468e+03, 0.21062705771563281587e+03, + -0.26266546360180251796e+01, -0.16869274484265824299e+03, + 0.12880956823390931731e+03, 0.53938813966117990617e+02, + -0.16289932705264220658e+03, 0.78107321318399698384e+02, + 0.10281063883056567931e+03, -0.18540537159084027508e+03, + 0.90109006637292793584e+02, 0.74887169329729772471e+02, + -0.14181137900477619951e+03, 0.59453328462055146986e+02, + 0.67311336629454260105e+02, -0.10053026496501261988e+03, + 0.12809148163059617787e+02, 0.94785084281374508919e+02, + -0.10648268499562729517e+03, 0.11369282889230365896e+02, + 0.90747237204062656701e+02, -0.95431070684646456925e+02, + 0.33685966479711947841e+03, -0.27348017013348453474e+03, + -0.34561788418827705982e+03, 0.51974221534529760902e+03, + -0.13584099038047446584e+03, -0.36357702665341400916e+03, + 0.37108753925775386051e+03, 0.98526371073003772949e+02, + -0.53177756083225415296e+03, 0.38782196899341641938e+03, + 0.17950359389738113691e+03, -0.59263847864290266898e+03, + 0.38617342570264611368e+03, 0.16985024258747287718e+03, + -0.49290816688277999447e+03, 0.24424077485560846412e+03, + 0.19941411732982655280e+03, -0.32040519513991966960e+03, + -0.26166367434714441487e+02, 0.35259577303058313191e+03, + -0.25232321038409912717e+03, -0.20106553386790355376e+03, + 0.44640097989691912517e+03, -0.23628195807758578439e+03, + -0.16578217865565062539e+03, 0.23560895671503192261e+03, + 0.28881839034675600431e+02, -0.21395293178179207416e+03, + -0.37005665346135508287e+02, 0.40378719625530635540e+03, + -0.37809907978039649379e+03, -0.13574203604449766658e+03, + 0.51726528749496469572e+03, -0.29972339768353174350e+03, + -0.28227781189761986980e+03, 0.43651487902263187380e+03, + 0.54622520741897737651e+02, -0.58770188077138755034e+03, + 0.38199086243203163349e+03, 0.36703292735564713212e+03, + -0.77181701752835010666e+03, 0.28281288483061189254e+03, + 0.47183789583715275739e+03, -0.58965309530140416427e+03, + -0.24793832420558395313e+02, 0.46630252909986643317e+03, + -0.18734067504831861584e+03, -0.36274331483311055990e+03, + 0.32994619192187246881e+03, 0.19467520021621055548e+03, + -0.41787593715507478009e+03, -0.36500480939822608661e+02, + 0.43462463219095855038e+03, -0.13577500884790998725e+03, + -0.45906821949800684024e+03, 0.35745834721895761277e+03, + 0.38281377234324310166e+03, -0.71138380778485930023e+03, + 0.33427705482344691745e+02, 0.72812506788026064442e+03, + -0.54113313371831725362e+03, -0.28265019903195445750e+03, + 0.48300386627955202812e+03, 0.10393693307320755537e+03, + -0.42913007060771741408e+03, -0.10309121720519618748e+03, + 0.54465449400494185284e+03, -0.93666232542759189528e+02, + -0.55805856866037822783e+03, 0.23790465500845030533e+03, + 0.57382506738324741491e+03, -0.51917733132214266334e+03, + -0.42189552977237553932e+03, 0.70955040969454182687e+03, + 0.94352743123288703941e+02, -0.64413444569218756897e+03, + 0.57249629099854438152e+02, 0.47407416750563515961e+03, + 0.29203107900667056640e+02, -0.56032521700175709611e+03, + -0.92718442474124671548e+02, 0.86183941413441584700e+03, + -0.30575083901182807722e+03, -0.72958637719603132155e+03, + 0.47015279255687914883e+03, 0.41939543935905425087e+03, + -0.19898178571219384025e+03, -0.62647024096350025957e+03, + 0.23352255993519958110e+03, 0.70820561122943774990e+03, + -0.32605274261611805287e+03, -0.67854030715692704234e+03, + 0.22071530278468014785e+03, 0.81015963959218129276e+03, + -0.33704961811516147918e+03, -0.65831788205605448638e+03, + 0.11205614986882662265e+03, 0.59380681398310218810e+03, + 0.30817901768319029543e+03, -0.96760412691766350690e+03, + -0.23349316222165322188e+03, 0.86556609978214328294e+03, + 0.22837738846088092259e+03, -0.39751477188291733000e+03, + -0.74149158513461611619e+03, 0.24903276114985038703e+03, + 0.10138617505230166671e+04, -0.17091306797319739985e+03, + -0.82865039128054456796e+03, -0.30784228453906035838e+03, + 0.53373158024412089162e+03, 0.86461710857696925814e+03, + -0.28782447357753488859e+03, -0.10185474170547422545e+04, + -0.20924173535195100726e+03, 0.68880967163211084880e+03, + 0.83229314460865111869e+03, -0.13247102455782666652e+03, + -0.10337045887638503245e+04, -0.61446719996149090548e+03, + 0.55623269405003065913e+03, 0.10151615018846290468e+04, + 0.41896878519845932942e+03, -0.60781717372755258566e+03, + -0.12389648457265500383e+04, -0.35753051712626211156e+03, + 0.68520707486172932477e+03, 0.10807214428763827527e+04, + 0.85480662991043232068e+03, -0.54642900241076631573e+03, + -0.12156772532322136158e+04, -0.10342457452283251769e+04, + -0.50654069307452834892e+03, 0.94252611014593776417e+03, + 0.13829886683851523230e+04, 0.12285379800369566965e+04, + 0.85295020468093753152e+03, -0.59490655909299277937e+03, + -0.11766066536518817429e+04, -0.17736665365522740103e+04, + -0.21994075195897648882e+04, -0.15988041505760122618e+04, + -0.16487452319095325493e+04, -0.10889438709559638028e+04, + -0.61167775872502772927e+03, -0.66299426357653896957e+03, + -0.11146010138040497850e+03, -0.20562565978593013938e+03, + -0.14126582512019851379e+03, 0.94885382224873126233e+02, + -0.14433577699205642375e+03, 0.50383288520249458031e+02, + 0.23989736247696004767e+02, -0.83335164345065493308e+02, + 0.80936002485120454253e+02, -0.34044280985089621083e+02, + -0.27188978627181242587e+02, 0.64971727497371489335e+02, + -0.59936015159945725372e+02, 0.18711432466835514532e+02, + 0.32941126486101524051e+02, -0.66154403171278474360e+02, + 0.66069951271968818673e+02, -0.37499689435517183256e+02, + -0.33664727675923628025e-01, 0.26631300830878934960e+02, + -0.33376357223400482610e+02, 0.26731145623688970403e+02, + -0.21109325175226778981e+02, 0.27732282280837395660e+02, + -0.44731228851305608885e+02, 0.57709017368198637143e+02, + -0.48291335712376266542e+02, 0.79246063108805104847e+01, + 0.54128573887311965507e+02, -0.11195542554913056676e+03, + 0.13586877203096395306e+03, -0.10821036238406573204e+03, + 0.35248837001111745337e+02, 0.54017875446147833429e+02, + -0.12051546520506309434e+03, 0.13488463471282597084e+03, + -0.92306093634418601823e+02, 0.15896387525782264660e+02, + 0.55156312531388081766e+02, -0.85360149172326828193e+02, + 0.61758795349138530639e+02, -0.49424332008887911227, + -0.61372509282032481792e+02, 0.85934785979969461778e+02, + -0.54900730815460470069e+02, -0.19397050159323601548e+02, + 0.99482743165005004471e+02, -0.14142781219505548052e+03, + 0.11810185768468380729e+03, -0.34261903960468053754e+02, + -0.73992157615717545127e+02, 0.15611554515701439527e+03, + -0.17171886574156366123e+03, 0.11094579826600191552e+03, + 0.20163081526374401165e+03, -0.40704184808219372371e+03, + 0.24646019051202742389e+03, 0.49557555831124560086e+02, + -0.28948787937180094332e+03, 0.40882887404696452904e+03, + -0.30426958929846870205e+03, 0.81004050829531863087e+02, + 0.19571807328715973995e+03, -0.33655259498653163064e+03, + 0.31919127102358629600e+03, -0.10452530192608790571e+03, + -0.14626434920109176119e+03, 0.34795269514196485261e+03, + -0.33912926733537466362e+03, 0.16213024977094630685e+03, + 0.15033610736913772143e+03, -0.39263374568810826304e+03, + 0.48458177796249208313e+03, -0.31787089546053596223e+03, + 0.10347686702565896510e+02, 0.34470881379190552707e+03, + -0.52685431287556457391e+03, 0.49464305732276085337e+03, + -0.21232575057058750190e+03, -0.13420492274526282017e+03, + 0.42516749971703126221e+03, -0.47151744479222185191e+03, + 0.30663196538896266929e+03, 0.25673159725470462433e+02, + -0.29893452189842707867e+03, 0.41681648533997770301e+03, + -0.26986265180305031208e+03, -0.11666801283567167502e+02, + 0.32000991449382394194e+03, -0.43333985393390457830e+03, + 0.32928905139426069582e+03, -0.59019341461893954914e+01, + -0.32067616945449896093e+03, 0.52361609128741679342e+03, + -0.43980180068267662818e+03, 0.15261842500296134517e+03, + 0.24354315439365490192e+03, -0.49812451874439420862e+03, + 0.53036569345625423466e+03, -0.27928916864069975645e+03, + -0.73988093100399666469e+02, 0.38972651154350427305e+03, + -0.47342135070121747731e+03, 0.31702537619274721692e+03, + -0.39973448277706943088e+02, -0.29867569557947069825e+03, + 0.24554490444116723324e+03, -0.44557310008512632749e+03, + -0.38450270046973116678e+03, -0.45046442835136315352e+03, + -0.13116113990044609636e+04, -0.14427890619727870671e+04, + -0.20107512014929918678e+04, -0.29003946856504385323e+04, + -0.25669404074553017381e+04, -0.27088623756475226401e+04, + -0.20053607412568239852e+04, -0.15605375200620440523e+03, + 0.54236786758353343885e+03, 0.20827576844745372000e+04, + 0.21769088458008150155e+04, 0.78164546871254299276e+03, + -0.11022768869997142360e+03, -0.17707572437556914338e+04, + -0.18727971551850762353e+04, -0.33128177664837801331e+03, + 0.81281342160105805306e+03, 0.16405100510011016013e+04, + 0.12978820894192003834e+04, -0.10194239592471431024e+04, + -0.13937808852872615262e+04, -0.80862421704165024039e+03, + 0.11295156953831208568e+03, 0.21242780803948139692e+04, + 0.35018887458392396184e+03, -0.90921035980436909085e+03, + -0.96066654164065528221e+03, -0.85748346974897242490e+03, + 0.16333679817181512135e+04, 0.10401290024804916357e+04, + -0.76686225607606968424e+03, -0.87644838609306088983e+03, + -0.69366442132934389520e+03, 0.10689162048644652714e+04, + 0.12668799654432536954e+04, -0.89280032202431448241e+03, + -0.10938114198396804113e+04, 0.13580657454304403586e+03, + 0.87040465697681372603e+03, 0.74748319583540217081e+03, + -0.93726274387752789607e+03, -0.11510562073850624074e+04, + 0.10471839225637872914e+04, 0.86017763526622877635e+03, + -0.53384344314762029171e+03, -0.69117014971729872741e+03, + -0.29793992764846177579e+03, 0.12142678215626494875e+04, + 0.37647460797197794591e+03, -0.15170183873005269106e+04, + 0.55370322811034561994e+02, 0.10426386293351447421e+04, + 0.15200008766860375609e+01, -0.50426799434431904956e+03, + -0.64263085348429012811e+03, 0.72137641256385336419e+03, + 0.95005613698469016981e+03, -0.13732740077361775093e+04, + -0.31014170465736481219e+03, 0.12097027481631403134e+04, + -0.14842077532146674912e+03, -0.50600593861471503487e+03, + -0.33076142416716021444e+03, 0.60321288896941700841e+03, + 0.59354754933621291002e+03, -0.11132139684528083308e+04, + -0.20001105403931330784e+03, 0.12390688773802276046e+04, + -0.28900884204568944824e+03, -0.10434055947999361251e+04, + 0.69536300239780064203e+03, 0.48238666860889355803e+03, + -0.53006588866754134415e+03, -0.21830823450703522326e+03, + 0.67564999060330023894e+02, 0.80266194699930133538e+03, + -0.60735166945308480990e+03, -0.81146689799337980276e+03, + 0.14555342352790426048e+04, -0.29717311270166567283e+03, + -0.10626754689445335771e+04, 0.84691673509964891764e+03, + 0.32380331787167426683e+03, -0.62965325474629582914e+03, + -0.13957420956660183720e+03, 0.56380906436741088328e+03, + -0.26116008938458104893e+02, -0.41864871545313548040e+03, + -0.49169553172254545359e+02, 0.59160326610006939063e+03, + -0.65094843492088102721e+02, -0.10204625798763873945e+04, + 0.10788046825587234707e+04, 0.22973542126619841497e+03, + -0.13656619523282706723e+04, 0.94999109873782947489e+03, + 0.41155520898849567857e+03, -0.10052918958480227047e+04, + 0.27347768812130391325e+03, 0.63699519749817227421e+03, + -0.56474714396782610493e+03, -0.20089509373131238590e+03, + 0.56052443022451757315e+03, -0.18612855450320310524e+03, + -0.19848079530738954190e+03, 0.36246072898359791736e+02, + 0.25438864381302840911e+03, -0.70708800558184670138e+01, + -0.57424337884069905158e+03, 0.60466178018572691144e+03, + 0.20454684920972670170e+03, -0.97587597167077194626e+03, + 0.70103834127886159422e+03, 0.41734403585764806621e+03, + -0.10942128123975317067e+04, 0.49774988833141861733e+03, + 0.70120876812646156395e+03, -0.10839077935047375831e+04, + 0.16321100057964906682e+03, 0.10291002396210346888e+04, + -0.11317090400402159958e+04, 0.13325620048474386081e+02, + 0.11044645411085778051e+04, -0.10433297925678114098e+04, + -0.45751970187432235093e+02, 0.92971240030943033616e+03, + -0.69754509073529970919e+03, -0.28742053333398848736e+03, + 0.88424876668749186592e+03, -0.45911650399292807379e+03, + -0.48006984742042965308e+03, 0.91572621605915253440e+03, + -0.42943787893713562198e+03, -0.41558559176743295893e+03, + 0.74499261905705373010e+03, -0.29474604210835985896e+03, + -0.38270132833324601052e+03, 0.56333605357516876211e+03, + -0.10394621938260152660e+03, -0.46444084603333271843e+03, + 0.53315473871168194364e+03, -0.42846363790285010964e+02, + -0.48514971184059572806e+03, 0.50426971576609321346e+03, + -0.12409661424882419851e+04, 0.80386990150934411758e+03, + 0.15763387476510213219e+04, -0.20553218975976960792e+04, + 0.35951938075638008740e+03, 0.16382122744703067383e+04, + -0.15402394542384490705e+04, -0.43107025431585333308e+03, + 0.21321255716349555769e+04, -0.14445758602503372003e+04, + -0.84949525352098567055e+03, 0.23717201382200260014e+04, + -0.13523002263249866246e+04, -0.91786532144888894891e+03, + 0.20353532510006543816e+04, -0.77630393745345293155e+03, + -0.10942065918895375489e+04, 0.14190706689830935829e+04, + 0.22828621890573018050e+03, -0.16238256174990995078e+04, + 0.10774638567623348990e+04, 0.92751031536564232738e+03, + -0.18803900012747606070e+04, 0.79418989021458719435e+03, + 0.10179131088159606406e+04, -0.11897345303775130105e+04, + -0.22020019678660995055e+03, 0.12395931105573818058e+04, + -0.17932287990462504013e+03, -0.15730122422655463197e+04, + 0.16750776844207809972e+04, 0.44592326306558959459e+03, + -0.21506083417798849950e+04, 0.13181024355124995964e+04, + 0.11814256910378207976e+04, -0.19661268457303890500e+04, + -0.16409546961494772432e+02, 0.23217698545169555473e+04, + -0.16282995675260551707e+04, -0.13491421236462567776e+04, + 0.29801906418243406733e+04, -0.98596505975611773920e+03, + -0.20224806802414632330e+04, 0.23484932580920949476e+04, + 0.29938354066528182784e+03, -0.20652096927093084560e+04, + 0.73736575093145859228e+03, 0.16366290496016376892e+04, + -0.13886422176555042824e+04, -0.98359946059677588437e+03, + 0.19597284236885514019e+04, 0.10073502604429660323e+03, + -0.19613104320255113180e+04, 0.74605334791672305528e+03, + 0.18850493296733845909e+04, -0.16112799146010192999e+04, + -0.14573651237412454975e+04, 0.29174563072460114199e+04, + -0.19531510736061125044e+03, -0.28810769903294794858e+04, + 0.20225745622642891703e+04, 0.13977360060304110903e+04, + -0.20612969830638799067e+04, -0.59772184732696257470e+03, + 0.19999722359945963035e+04, 0.38208893622387455480e+03, + -0.23784262538246312033e+04, 0.45666365689440118558e+03, + 0.24286813586895304979e+04, -0.11707097646189658917e+04, + -0.22738797214588189490e+04, 0.21253311600174993146e+04, + 0.17594320823131047291e+04, -0.28890295267654178133e+04, + -0.53841202859665986580e+03, 0.27744160654839265590e+04, + -0.13562873009216255582e+03, -0.21615114409311895542e+04, + -0.10991099603789014338e+03, 0.25658055640108013904e+04, + 0.11313164778975921365e+03, -0.34404982163455024420e+04, + 0.12348747186147957109e+04, 0.29771123445026191803e+04, + -0.17169923769024869671e+04, -0.20955072295041277357e+04, + 0.10267516053437088885e+04, 0.26688250402190042223e+04, + -0.10856165402759397693e+04, -0.29359697023165376777e+04, + 0.13307710171702012758e+04, 0.29625542632283536477e+04, + -0.10424519374186729692e+04, -0.33081728922769043493e+04, + 0.12590031770705877534e+04, 0.29281419791718794841e+04, + -0.41816571110324565552e+03, -0.27849797215381872775e+04, + -0.99625922969414466479e+03, 0.38907401709612754530e+04, + 0.10640533801612800744e+04, -0.35570472978652542224e+04, + -0.12544195191009150676e+04, 0.19503407643399186782e+04, + 0.30828374322948325243e+04, -0.11486623913955838816e+04, + -0.41656412829451383004e+04, 0.58060731834537864415e+03, + 0.35833590488152290163e+04, 0.14142104298593878866e+04, + -0.24348422232403841008e+04, -0.36058509550069779834e+04, + 0.12430276118988506369e+04, 0.42595059053562699773e+04, + 0.10281748045102390279e+04, -0.30319330776802894434e+04, + -0.35712454662577010822e+04, 0.62878415128775452558e+03, + 0.43742196392420173652e+04, 0.26368417265229873010e+04, + -0.23363584238626772276e+04, -0.43995241085191310049e+04, + -0.18046547960627042357e+04, 0.26948436789355437213e+04, + 0.51762684695925217966e+04, 0.16311853375654391130e+04, + -0.29300343170011688017e+04, -0.47569320018513271862e+04, + -0.34795100454219673338e+04, 0.22035431368684849076e+04, + 0.52148450068132387969e+04, 0.45781477332478316384e+04, + 0.19454962530365471594e+04, -0.38575178184647411399e+04, + -0.59562495345137213008e+04, -0.54210529497052330044e+04, + -0.33801420430590756041e+04, 0.22870159055148869811e+04, + 0.51625108881427622691e+04, 0.76846778183081896714e+04, + 0.91796958540113937488e+04, 0.71435673020227095549e+04, + 0.68638976972273840147e+04, 0.46962225772046194834e+04, + 0.27600996794024663359e+04, 0.26189811030676064547e+04, + 0.66976736454964179757e+03, 0.80462477573975684209e+03, + 0.54973107265957844447e+03, -0.26920363687585427215e+03, + 0.48274561771362232321e+03, -0.14955617598711341998e+03, + -0.80591450515801994925e+02, 0.27950040059217889166e+03, + -0.27300257602929497125e+03, 0.12419286358808959392e+03, + 0.76037365043726083513e+02, -0.20630692445712401195e+03, + 0.20384425979438071863e+03, -0.86442241342010646576e+02, + -0.67902059771110472752e+02, 0.17070004229993736544e+03, + -0.17640522557900408174e+03, 0.99642065540720196282e+02, + 0.12920612763486458152, -0.63609810645362536263e+02, + 0.66521292757472863855e+02, -0.32930860989630794222e+02, + 0.10913415418323719308e+02, -0.37153201521000291052e+02, + 0.10527236851972271836e+03, -0.16782825044233683798e+03, + 0.16334388589670899705e+03, -0.60538914621880415723e+02, + -0.11591257721625018462e+03, 0.28801862809421027123e+03, + -0.36444111655248309489e+03, 0.28959708245536467075e+03, + -0.81205893322059381489e+02, -0.17327795997449879906e+03, + 0.35560262845760377104e+03, -0.37821651852051718379e+03, + 0.22984642198180682726e+03, 0.14414930616273441188e+02, + -0.23095717830526555758e+03, 0.30971841301529298107e+03, + -0.21318930330456541355e+03, -0.37039657638277923013e+01, + 0.22002786440046133976e+03, -0.31287167330636691531e+03, + 0.22227229866969494765e+03, 0.13673708894884667231e+02, + -0.27603816715505507773e+03, 0.42403098843676639262e+03, + -0.36873007760658117604e+03, 0.12122672748146328559e+03, + 0.20824700535638297083e+03, -0.46281273466589937016e+03, + 0.51585008181014518414e+03, -0.33503283867974863597e+03, + -0.48904818557293759795e+03, 0.10500316446330155031e+04, + -0.69919346948684562904e+03, -0.34135485663213671614e+02, + 0.66229430089573759233e+03, -0.10154092961256578747e+04, + 0.79628154355253468566e+03, -0.25473803732835051505e+03, + -0.46230047025591460397e+03, 0.85693093657448719114e+03, + -0.85655642967048515857e+03, 0.32759674384070819997e+03, + 0.32756633479980189350e+03, -0.89607072627258457942e+03, + 0.93792196933974821604e+03, -0.53906623998531506459e+03, + -0.24852572991027966509e+03, 0.90076733135540939656e+03, + -0.12084924833623563245e+04, 0.86204050123669173900e+03, + -0.14072568578265961037e+03, -0.74402098262708727816e+03, + 0.12255216324094778884e+04, -0.11927729309358369392e+04, + 0.52645174305094087686e+03, 0.31141942736835039796e+03, + -0.10331388066065915154e+04, 0.11486508330424276210e+04, + -0.74173298866888501379e+03, -0.93831225077922795208e+02, + 0.78044699262561027808e+03, -0.10810538785985831964e+04, + 0.70571325809810991814e+03, 0.11322454611986373152e+02, + -0.80623710080019452562e+03, 0.11066875489434837618e+04, + -0.86059517435387488149e+03, 0.51677419872622124331e+02, + 0.76626652623697168565e+03, -0.12816524781273208191e+04, + 0.10751764103000871273e+04, -0.36861012349480409966e+03, + -0.60673888244188856333e+03, 0.12126552204676995643e+04, + -0.12637497614664171124e+04, 0.61239910094127139928e+03, + 0.26241518681726734030e+03, -0.10124513719386275170e+04, + 0.11519651090717211446e+04, -0.69072405589423431138e+03, + -0.37726193585310873857e+02, 0.88001166985091106199e+03, + -0.65077314420815048379e+03, 0.11010336211204717074e+04, + 0.11621269335045826665e+04, 0.10623632724703754775e+04, + 0.35939509722568068355e+04, 0.38187369464116609379e+04, + 0.53230891036382508901e+04, 0.78182393251769926792e+04, + 0.67486951954207825111e+04, 0.73037651450873308931e+04, + 0.52976103126775715282e+04, 0.43898426601023101057e+03, + -0.14572440327973631611e+04, -0.55394737490735260508e+04, + -0.58296171865029045875e+04, -0.20592215253448925978e+04, + 0.28923084685783055647e+03, 0.46820713982493516596e+04, + 0.50920606510327488650e+04, 0.73386576887995693141e+03, + -0.19960354380033697907e+04, -0.45231414238103016032e+04, + -0.33825684974535611218e+04, 0.27412401274578219272e+04, + 0.35887744577748799202e+04, 0.23614626227732806001e+04, + -0.53174732322907937032e+03, -0.54695487470801190284e+04, + -0.10440157502295235190e+04, 0.24256689933421585010e+04, + 0.26603026178335439909e+04, 0.21260945147938987247e+04, + -0.41864708827255308279e+04, -0.29013958588787254484e+04, + 0.20992882618798398653e+04, 0.23603349902011436825e+04, + 0.17707362528446669785e+04, -0.27536981331135020810e+04, + -0.34537579442784453931e+04, 0.24079146737478959039e+04, + 0.29436538852685530401e+04, -0.42816840196533962626e+03, + -0.22444439730923968455e+04, -0.20508544789170628064e+04, + 0.25174251141732906945e+04, 0.30944669487734136055e+04, + -0.28481513235481888842e+04, -0.22303602837036164601e+04, + 0.13751744219955717199e+04, 0.18618715226966285172e+04, + 0.80599031495675308179e+03, -0.32681064930745678794e+04, + -0.97401456037614468642e+03, 0.40319631334515638628e+04, + -0.15818571463069648075e+03, -0.27514451716114854207e+04, + -0.35894905820554903642e+02, 0.13600498739461270361e+04, + 0.17287698835722724198e+04, -0.19715082436536229125e+04, + -0.24652595431793238276e+04, 0.35962323842201994921e+04, + 0.86463963489960929110e+03, -0.32169721195887441354e+04, + 0.33679393065162452103e+03, 0.14438577108597417009e+04, + 0.78030532309207956132e+03, -0.15332731536090896043e+04, + -0.16049026400008003748e+04, 0.29267550474872482482e+04, + 0.62847372743391019867e+03, -0.34237636638747571851e+04, + 0.87598118761698935941e+03, 0.27267737015060392878e+04, + -0.18688694991351117096e+04, -0.12039314158890576891e+04, + 0.12879014388950765806e+04, 0.71067934779445545246e+03, + -0.26914685296998868580e+03, -0.21224290527559319344e+04, + 0.16817573941155631019e+04, 0.20377328672174699022e+04, + -0.37288162045115623187e+04, 0.66055537096790442320e+03, + 0.29024028780474382074e+04, -0.22396500462451058411e+04, + -0.96792395041717475124e+03, 0.18411155418067719438e+04, + 0.19831808243470928232e+03, -0.13681973531740777617e+04, + 0.12583530823077715866e+02, 0.10775381451198027207e+04, + 0.25604575398584967161e+03, -0.17547819707009907688e+04, + 0.35477089377781146595e+03, 0.25842369058556951131e+04, + -0.28190367450337380433e+04, -0.57910701899238176793e+03, + 0.35298021820409367137e+04, -0.23763021646442675774e+04, + -0.12564360200365040328e+04, 0.28010774822541434332e+04, + -0.78431742239087930102e+03, -0.17154990548290934385e+04, + 0.15808572056770669860e+04, 0.43102710670806629878e+03, + -0.13935578389297534159e+04, 0.42654645007519900446e+03, + 0.55278584638777761029e+03, -0.75492152537001402379e+02, + -0.72844460815455465763e+03, 0.73939750009958771670e+02, + 0.14945113459302328920e+04, -0.16091570245545342459e+04, + -0.51305086426662398935e+03, 0.25452563037389618330e+04, + -0.18082575428013371948e+04, -0.11551744026925048274e+04, + 0.29230196076645374887e+04, -0.12881104366000724895e+04, + -0.19473467858602182332e+04, 0.29879191480089216384e+04, + -0.52776472618929039982e+03, -0.26817380050886063145e+04, + 0.30032499361800573752e+04, -0.74781949214727390540e+02, + -0.28598213238220964740e+04, 0.26697969093254755535e+04, + 0.23563253387663914395e+03, -0.25684244376450528762e+04, + 0.19054846702479233045e+04, 0.77346767509448295641e+03, + -0.24137562798194348943e+04, 0.13144533107124161688e+04, + 0.11765251960989824056e+04, -0.23469005102815876853e+04, + 0.10768649243549664334e+04, 0.11393454523085160872e+04, + -0.19793856768934394950e+04, 0.74741584962043884843e+03, + 0.10778259500155688784e+04, -0.15640019940254574067e+04, + 0.33122172623991417595e+03, 0.11997162848828008919e+04, + -0.14000183564102737819e+04, 0.10644890665400176033e+03, + 0.12935987404816958133e+04, -0.13427624525896449086e+04, + 0.25161288206723493204e+04, -0.12270741091071074607e+04, + -0.37576978138635477080e+04, 0.43732632461457651516e+04, + -0.39291564908948686252e+03, -0.39100016352550273950e+04, + 0.34034708747398231026e+04, 0.10827170287374485724e+04, + -0.47057483004705327403e+04, 0.29628347224108561022e+04, + 0.20923621709490835201e+04, -0.51464085284869443058e+04, + 0.25428294569957975000e+04, 0.24764361991383693749e+04, + -0.45390891097665298730e+04, 0.12590863708951862918e+04, + 0.29944177654179247838e+04, -0.33613716127603820496e+04, + -0.76086818264025566805e+03, 0.39694200763647590975e+04, + -0.24630991074334438053e+04, -0.23086854352315085634e+04, + 0.43310024395419859502e+04, -0.14617942319255953407e+04, + -0.29073857945554100297e+04, 0.30731572323090435930e+04, + 0.70054995894538978973e+03, -0.34721576165903820765e+04, + 0.10295750569597832964e+04, 0.33847323226406811045e+04, + -0.40342605321391624784e+04, -0.72279825669777608255e+03, + 0.48211050842403083152e+04, -0.31175698886140007744e+04, + -0.26484582184692530973e+04, 0.46927967397906568294e+04, + -0.35238208888794230234e+03, -0.50012817102721955962e+04, + 0.37425841491386399866e+04, 0.27100828000181063544e+04, + -0.62987529108593726050e+04, 0.18993088730519218643e+04, + 0.46157087515263192472e+04, -0.50381978756547978264e+04, + -0.10791808890558954772e+04, 0.48766716413221956827e+04, + -0.15146492539382545601e+04, -0.40299236817605378747e+04, + 0.32582660197045001951e+04, 0.24709489217107011427e+04, + -0.47846202405187659679e+04, -0.16856118115681073277e+03, + 0.47355113943752776322e+04, -0.20219689936412626139e+04, + -0.42451094192381942776e+04, 0.39449419648674047494e+04, + 0.29378125343255578628e+04, -0.64168456894116325202e+04, + 0.49296186376791229122e+03, 0.62393223124815167466e+04, + -0.41329734689389642881e+04, -0.35652392140214478786e+04, + 0.47246931236078908114e+04, 0.16936788375077019282e+04, + -0.49415338768037363479e+04, -0.77484227352347988926e+03, + 0.56090264728802949321e+04, -0.12089067098744608302e+04, + -0.56210527484571375680e+04, 0.29229646984911960317e+04, + 0.49756287543052676483e+04, -0.47927128620821986260e+04, + -0.39151077310388727710e+04, 0.63544087683566531268e+04, + 0.14950927710702924287e+04, -0.63912257778884386425e+04, + 0.21565328897480085857e+02, 0.53429362228030513506e+04, + 0.13065253464312365850e+03, -0.61750743271378150894e+04, + 0.24917704511389806044e+03, 0.74623613736037359558e+04, + -0.26726975513418919945e+04, -0.66536393667105821805e+04, + 0.34699967085048492663e+04, 0.53398186299609251364e+04, + -0.26426180509912273919e+04, -0.61781534244144240802e+04, + 0.26800490316675313807e+04, 0.66221717817833095978e+04, + -0.30047896999519634846e+04, -0.68783317612744594953e+04, + 0.25227225987766660182e+04, 0.73854832138602059786e+04, + -0.25817283330522564029e+04, -0.69723895554054861350e+04, + 0.87097464418468985059e+03, 0.68576008665572771861e+04, + 0.17270266570363041865e+04, -0.85482438133786963590e+04, + -0.25394776181408224147e+04, 0.79002838665215240326e+04, + 0.34360346923450288159e+04, -0.49660036066519578526e+04, + -0.69779608038599408246e+04, 0.28583137287642339288e+04, + 0.92358700322566128307e+04, -0.10165662425046798489e+04, + -0.83557040959307196317e+04, -0.34597982380922180710e+04, + 0.59355939901855472272e+04, 0.81099235512192444730e+04, + -0.28609091933016406983e+04, -0.96634639226619074179e+04, + -0.26161247057058885730e+04, 0.71566656979572671844e+04, + 0.82592095834524752718e+04, -0.15637257233164737045e+04, + -0.10010869651058836098e+05, -0.60915532412332468084e+04, + 0.53017878622143216489e+04, 0.10263337012642643458e+05, + 0.41918220711107160241e+04, -0.64078476521789825711e+04, + -0.11700520970678360754e+05, -0.39591077605446193957e+04, + 0.67480534641490339709e+04, 0.11255116469655742549e+05, + 0.76626598140176793095e+04, -0.48045297827465219598e+04, + -0.12073106626931066785e+05, -0.10863693152899746565e+05, + -0.40455469142088372791e+04, 0.85383215980665190727e+04, + 0.13851761036976580726e+05, 0.12801324660348180259e+05, + 0.73024609666437145279e+04, -0.47923351389240706339e+04, + -0.12158264428380151003e+05, -0.17915897721305511368e+05, + -0.20753723472586243588e+05, -0.17050506518843882077e+05, + -0.15500500910075337742e+05, -0.10881118176995896647e+05, + -0.66715664467660117225e+04, -0.56076152072722534285e+04, + -0.19218947421369032327e+04, -0.17209122571090256315e+04, + -0.11453657541871502872e+04, 0.33755873572543691807e+03, + -0.83973457575460111002e+03, 0.21431318138169697818e+03, + 0.13487217590928443656e+03, -0.47909425612359888191e+03, + 0.46921817300539055395e+03, -0.23138658708619757931e+03, + -0.99462522694991079675e+02, 0.32379774026664330222e+03, + -0.33924888407893683961e+03, 0.16988039162365882362e+03, + 0.63636250988590411737e+02, -0.22298214481326749592e+03, + 0.23713654363733832042e+03, -0.12911804076633677596e+03, + -0.81831859881054107575e+01, 0.84026789054637717413e+02, + -0.64431016906969631464e+02, -0.70839154949496254687e+01, + 0.49825650014358203066e+02, -0.30106544974390163638e+01, + -0.12272805943202169487e+03, 0.24888009585510417310e+03, + -0.27242185012475079020e+03, 0.13776369632937419851e+03, + 0.12128711383154862347e+03, -0.38434897218406007369e+03, + 0.50783262837364594589e+03, -0.40270871784623454914e+03, + 0.94834550427113697424e+02, 0.28054958520681441314e+03, + -0.53999508859208367539e+03, 0.54937538952212378263e+03, + -0.29545366553653462915e+03, -0.98682249724441362559e+02, + 0.43492667692342945429e+03, -0.53931726441884757151e+03, + 0.35618163701583216607e+03, 0.21078572521873788048e+02, + -0.39320256580033850469e+03, 0.55878559267384366649e+03, + -0.41893506135677608881e+03, 0.34118466087302316225e+02, + 0.40346197445032902351e+03, -0.66454554514822962119e+03, + 0.60170729429246182463e+03, -0.22736704639364828040e+03, + -0.28645716268478230404e+03, 0.69132626989091954783e+03, + -0.78487651329635650654e+03, 0.51329144970982929408e+03, + 0.62968274745875248755e+03, -0.14267448795788664029e+04, + 0.10149578221368905133e+04, -0.38119133478261204573e+02, + -0.83867811412602657128e+03, 0.13769497084216563962e+04, + -0.11293676162341243980e+04, 0.41469975330555973869e+03, + 0.58977072696894572346e+03, -0.11842698816104186790e+04, + 0.12484963620611929400e+04, -0.55621672187119474984e+03, + -0.35547546822663122157e+03, 0.12022663073482515301e+04, + -0.13478131186926993905e+04, 0.88054743183963341835e+03, + 0.17003248656351578916e+03, -0.10914342836399646330e+04, + 0.15944111716700833767e+04, -0.12157715106085295247e+04, + 0.31041030904399809742e+03, 0.86696226749339484741e+03, + -0.15387183461395400172e+04, 0.15483020437018365101e+04, + -0.69898831269473078009e+03, -0.39282310880929111363e+03, + 0.13562487836194616193e+04, -0.15123655411234151416e+04, + 0.97382429910333314638e+03, 0.15375253313596326166e+03, + -0.10817377997258306550e+04, 0.14968118590252904596e+04, + -0.98884791916203641904e+03, 0.15439468141528017497e+02, + 0.10782139674804905098e+04, -0.15033387147292828558e+04, + 0.11949424174471184870e+04, -0.11575095199891087816e+03, + -0.97669072884656281985e+03, 0.16735101148627966268e+04, + -0.13993829983046268808e+04, 0.46862699800716302434e+03, + 0.81543438856746229249e+03, -0.15839158118623251994e+04, + 0.16107799081245736943e+04, -0.70537069867696811798e+03, + -0.45683360694419593528e+03, 0.14108030070790446189e+04, + -0.15067970077296529325e+04, 0.79650133581001978200e+03, + 0.22853775515116123529e+03, -0.13546737886826324484e+04, + 0.92833123867848064492e+03, -0.14690653046094018919e+04, + -0.18005231261712078776e+04, -0.13483755011106247821e+04, + -0.52098627531241490942e+04, -0.53761336480779445992e+04, + -0.75157635503848050575e+04, -0.11167362345232699226e+05, + -0.94814262090673018974e+04, -0.10425760529790433793e+05, + -0.74794562649848166984e+04, -0.62950954336775430420e+03, + 0.20690406383560584800e+04, 0.78370525886896530210e+04, + 0.83115490988191922952e+04, 0.28632423055681224469e+04, + -0.36793444818822183606e+03, -0.66342202343580911474e+04, + -0.72962671971863628642e+04, -0.89928912326251213472e+03, + 0.26535496812883993698e+04, 0.65773233769176131318e+04, + 0.47033808744149728227e+04, -0.39001816353465592329e+04, + -0.49639241433001634505e+04, -0.35573794224297666915e+04, + 0.98790377477723598076e+03, 0.75654716615094730514e+04, + 0.15749112009608425069e+04, -0.34124872521829561265e+04, + -0.39080499470007166565e+04, -0.28184570586190925496e+04, + 0.57425066685400461211e+04, 0.42492980287536820470e+04, + -0.30164705708850688097e+04, -0.34044186076047039933e+04, + -0.23875072565519608361e+04, 0.37640797668938894276e+04, + 0.50074011013498302418e+04, -0.34586284459181852071e+04, + -0.42033101982700172812e+04, 0.68978740717981145281e+03, + 0.30826278585488112185e+04, 0.29890046798566722828e+04, + -0.36040258853043201270e+04, -0.44074026747506231914e+04, + 0.40973845912857977964e+04, 0.30924396256103600535e+04, + -0.18945810177986602412e+04, -0.26629834038531603255e+04, + -0.11552963243993588094e+04, 0.46689253108848497504e+04, + 0.13468472148782541353e+04, -0.57022211875905641136e+04, + 0.23597030491451971557e+03, 0.38693912140849688512e+04, + 0.86689038182752980788e+02, -0.19451628110093545274e+04, + -0.24706171934811709434e+04, 0.28523863210655972580e+04, + 0.34173457886669466461e+04, -0.50259326099988356873e+04, + -0.12653181388347945813e+04, 0.45453807694098850334e+04, + -0.40156084562376361191e+03, -0.21643189035045256787e+04, + -0.98407599147303824338e+03, 0.20868349508526366662e+04, + 0.22968618774800274878e+04, -0.40924654736735733422e+04, + -0.10145612840926064564e+04, 0.50078734182297830557e+04, + -0.13757185091172696048e+04, -0.37962275715563137055e+04, + 0.26676752921774768765e+04, 0.16046355207796329978e+04, + -0.16682717561866029428e+04, -0.11721258520849301021e+04, + 0.49955822241699064534e+03, 0.29780121648203348741e+04, + -0.24516206422099580777e+04, -0.27426922081057637115e+04, + 0.51047158702757706124e+04, -0.77357873282800676407e+03, + -0.42072837372295025489e+04, 0.31650816524921642667e+04, + 0.14859173933829890757e+04, -0.27946596618975850106e+04, + -0.80202487944101179096e+02, 0.17809655640243734069e+04, + 0.53091479926995120309e+02, -0.14892933154468696557e+04, + -0.50086997930753977926e+03, 0.26864048801854291924e+04, + -0.70530858233057597317e+03, -0.35137563674437678856e+04, + 0.39375890679745070884e+04, 0.77799649372824046623e+03, + -0.48753061187916164272e+04, 0.31921244166720862268e+04, + 0.19564922184963968448e+04, -0.40970612970181173296e+04, + 0.11576500232187929669e+04, 0.24719171499543149366e+04, + -0.23459410823136336148e+04, -0.47829101002366815010e+03, + 0.18556754674023788994e+04, -0.53021090622084830102e+03, + -0.79578308180057490517e+03, 0.60012545858620583772e+02, + 0.11172979289119709847e+04, -0.19435638053476475307e+03, + -0.20558253767181627154e+04, 0.22652431898403738160e+04, + 0.69324195528691814161e+03, -0.35366288409391499954e+04, + 0.24780868589221972798e+04, 0.17085525886111483942e+04, + -0.41750301619059437144e+04, 0.18038628291523075404e+04, + 0.28332567284651536283e+04, -0.43388070855308760656e+04, + 0.85191335047422785465e+03, 0.37266724705213600828e+04, + -0.42312157137805388629e+04, 0.13539016185301287010e+03, + 0.39758528330752383226e+04, -0.36755248146046801594e+04, + -0.44832118882226978940e+03, 0.37325898649899891097e+04, + -0.27476664013572699332e+04, -0.11050908171501716879e+04, + 0.34803105599229043037e+04, -0.19542269748865267047e+04, + -0.15681488378224366897e+04, 0.32409767584857145266e+04, + -0.14708728023971395942e+04, -0.16321615368282020881e+04, + 0.27851563166183732392e+04, -0.10101671672407699134e+04, + -0.15903504624690708624e+04, 0.22754615507238049759e+04, + -0.51015606536711220542e+03, -0.16838640852423525303e+04, + 0.19892166466887558727e+04, -0.16828919676027780383e+03, + -0.18143486558597421663e+04, 0.18911943150416416302e+04, + -0.28531870788153100875e+04, 0.94697752497422914075e+03, + 0.48458592032301612562e+04, -0.51167318657388887004e+04, + 0.13816720329902288711e+02, 0.50917802995623715105e+04, + -0.41207460778263475731e+04, -0.15218628368165470874e+04, + 0.57936625841523309646e+04, -0.33947297874259143100e+04, + -0.27872976105426218965e+04, 0.61845742870575832058e+04, + -0.26115080098478879336e+04, -0.35257237509617511932e+04, + 0.55884579129003577691e+04, -0.10191950364194184431e+04, + -0.43091028280958325922e+04, 0.43523469692732342082e+04, + 0.12359052625464953508e+04, -0.52916119162414806851e+04, + 0.30937999786434829730e+04, 0.31462834377889607822e+04, + -0.55361059322440451069e+04, 0.14970664040663571086e+04, + 0.42679132590919080030e+04, -0.42428217621785179290e+04, + -0.10990763752990199009e+04, 0.50560771585406473605e+04, + -0.19366203747639467565e+04, -0.40883043545561395149e+04, + 0.53629510542197804170e+04, 0.54901787407925439766e+03, + -0.59617775710222640555e+04, 0.40606170341456422648e+04, + 0.32441294443322199186e+04, -0.60851408033328416423e+04, + 0.82488084437915210856e+03, 0.60035933903164614094e+04, + -0.47535851596974307540e+04, -0.30186107300604862758e+04, + 0.74134516989777766867e+04, -0.20584990219995438565e+04, + -0.57523254303409312342e+04, 0.59393535069393383310e+04, + 0.18225955661467228310e+04, -0.63184745617919606957e+04, + 0.16917131298437820988e+04, 0.54504656548086177281e+04, + -0.42633653907015786899e+04, -0.32980606590084107665e+04, + 0.63178438047851641386e+04, 0.17480205272971622321e+03, + -0.62551006395754748155e+04, 0.28837055711228804284e+04, + 0.53117561268163854038e+04, -0.53004764976638034568e+04, + -0.32307270602105877515e+04, 0.77782065017344639273e+04, + -0.64749465711558264047e+03, -0.75010311549551615826e+04, + 0.46816678573241042614e+04, 0.48928249246185023367e+04, + -0.59598556271747429491e+04, -0.25075670952775490150e+04, + 0.66475393456488491211e+04, 0.86404129836433969558e+03, + -0.72677845179573896530e+04, 0.17274671538727739062e+04, + 0.71256161491512339126e+04, -0.39064878371467630132e+04, + -0.60850992657389915621e+04, 0.60245407284599277773e+04, + 0.47768848477413639557e+04, -0.77174911695795162814e+04, + -0.21656578102782191309e+04, 0.80716329154313925756e+04, + 0.35494000133904506811e+03, -0.72562616183918462411e+04, + 0.44828902735740243202e+02, 0.80652573665051531862e+04, + -0.83956909544361167264e+03, -0.89650085095652539167e+04, + 0.31711049687011559399e+04, 0.82809371094959060429e+04, + -0.39481675679316731475e+04, -0.72625356707529008418e+04, + 0.35964156710407742139e+04, 0.79093783193695662703e+04, + -0.36006026749246816507e+04, -0.82785801200302194047e+04, + 0.37999757330433039897e+04, 0.87230504700754627265e+04, + -0.32699890299598660022e+04, -0.91663874586969923257e+04, + 0.29548744109688700519e+04, 0.90987811878588945547e+04, + -0.10314188896186230977e+04, -0.91412970655171666294e+04, + -0.16246215460358321252e+04, 0.10446564415262495459e+05, + 0.32824488270893543813e+04, -0.96885292916739490465e+04, + -0.49530424708323253071e+04, 0.67950241783582132484e+04, + 0.87595822788314308127e+04, -0.39027674810225789770e+04, + -0.11289945026442723247e+05, 0.91350870293922582732e+03, + 0.10724492559976815755e+05, 0.46199275470470729488e+04, + -0.79120527053862142566e+04, -0.10048728496220728630e+05, + 0.35981245003610083586e+04, 0.12126860197846313895e+05, + 0.35756392448838146265e+04, -0.92668575022629793239e+04, + -0.10512655560666613383e+05, 0.20987397042537331799e+04, + 0.12648489539729991520e+05, 0.77367961422413509354e+04, + -0.66318185504591720019e+04, -0.13170569618200373952e+05, + -0.53585441879686322864e+04, 0.83543316511202592665e+04, + 0.14603213721355303278e+05, 0.52442835133632561337e+04, + -0.85570961350345769461e+04, -0.14619544026043038684e+05, + -0.93271322571771979710e+04, 0.57895566666555687334e+04, + 0.15395218657928113316e+05, 0.14136304269538846711e+05, + 0.46474134474833981585e+04, -0.10437821711695958584e+05, + -0.17747106910584203433e+05, -0.16565187031689223659e+05, + -0.87594915012545625359e+04, 0.55743911471595538387e+04, + 0.15719919389077060259e+05, 0.22962274602307188616e+05, + 0.25929913867622050020e+05, 0.22265284336019718467e+05, + 0.19358240243486816325e+05, 0.13857767386161709510e+05, + 0.88221601762396912818e+04, 0.66511058548437613354e+04, + 0.28432621895814586424e+04, 0.20577465478918365989e+04, + 0.12995710571693334714e+04, -0.10033535158232565720e+03, + 0.75704934572558602213e+03, -0.13024871299763825050e+03, + -0.10279665035231218440e+03, 0.40540646314631192126e+03, + -0.39399347154464965115e+03, 0.20931086739695643928e+03, + 0.58863836564288639863e+02, -0.24633879342362067177e+03, + 0.27234396008647161125e+03, -0.15243028372849610719e+03, + -0.21083973678379397398e+02, 0.14157587264158883045e+03, + -0.15449803524927733633e+03, 0.77890184924265341238e+02, + 0.16398373609214182522e+02, -0.59534585921336876879e+02, + 0.27911199977108566372e+02, 0.40836712809951208669e+02, + -0.80580590202524248866e+02, 0.41923330129323971960e+02, + 0.66606588494081123031e+02, -0.18160305913745773410e+03, + 0.21896332178229218357e+03, -0.13138194567038559057e+03, + -0.58146690678426850241e+02, 0.25759798477522360827e+03, + -0.35550002882731263298e+03, 0.28164473206560899143e+03, + -0.54820552188632035495e+02, -0.22142805065859309366e+03, + 0.40622816665160132743e+03, -0.39769075142061677752e+03, + 0.18838241338621014620e+03, 0.12293568122288280620e+03, + -0.38011743864722677699e+03, 0.44762161505868846234e+03, + -0.28452748895621652991e+03, -0.31923932800540733012e+02, + 0.34097531094974772259e+03, -0.48092390177685678054e+03, + 0.37206381433229188360e+03, -0.61919599902348409159e+02, + -0.29659505273887339172e+03, 0.51999433253908534880e+03, + -0.48854346514017532854e+03, 0.20837591178455187446e+03, + 0.18791500115378207170e+03, -0.50627106848485925639e+03, + 0.58731079813190854111e+03, -0.38708869877633486567e+03, + -0.41163566976381258655e+03, 0.97862607098343914913e+03, + -0.73146948910078606332e+03, 0.66122184948273641680e+02, + 0.55550545262272521541e+03, -0.96358167823319968193e+03, + 0.82104729967789012335e+03, -0.33554284785758613907e+03, + -0.38411414484026687433e+03, 0.83834172364049345560e+03, + -0.92929227657683748021e+03, 0.47100080640522361364e+03, + 0.17190977438865445492e+03, -0.80634595624191763363e+03, + 0.96741849956752389517e+03, -0.69753648769247809014e+03, + -0.10291419557988373157e+02, 0.66423240691629257526e+03, + -0.10621106353351297003e+04, 0.85704907745056641488e+03, + -0.27888123292105950668e+03, -0.51749342799819635275e+03, + 0.99004695123424653502e+03, -0.10276486820805700972e+04, + 0.47272959905542529668e+03, 0.25524550576434697291e+03, + -0.91242605776292600694e+03, 0.10208314999865295931e+04, + -0.65763350872807495762e+03, -0.11808002959971615553e+03, + 0.75834129049944408507e+03, -0.10518673617291437949e+04, + 0.70421556123810250938e+03, -0.33502857928804822052e+02, + -0.73058836420736122363e+03, 0.10357448905773298975e+04, + -0.84066512541975032491e+03, 0.10937307689341712091e+03, + 0.63171980296415517842e+03, -0.11099163994988502964e+04, + 0.92425109468912398825e+03, -0.30050535569422498838e+03, + -0.55895774975950928365e+03, 0.10527878890879762821e+04, + -0.10419359975797624429e+04, 0.40140526274945477780e+03, + 0.38563567359520726541e+03, -0.10028711364868041755e+04, + 0.10076993919161828899e+04, -0.46076146292055346976e+03, + -0.27337783867971381824e+03, 0.10430661599301220122e+04, + -0.67752236401509230745e+03, 0.10073051650940265063e+04, + 0.13766874237093334159e+04, 0.87908147861483337238e+03, + 0.38044763461837901559e+04, 0.38367178242550457981e+04, + 0.53789499609301510645e+04, 0.80583613314424401324e+04, + 0.67641888826684908054e+04, 0.75124724093557033484e+04, + 0.53638205694648868302e+04, 0.44352819754954691689e+03, + -0.14781460420736573269e+04, -0.56184057738476749364e+04, + -0.59970894994373948066e+04, -0.20118585045576069206e+04, + 0.22448793749356391913e+03, 0.47763449234040890587e+04, + 0.52664698043140670052e+04, 0.57504486777911802164e+03, + -0.18088837972370031366e+04, -0.48149112445623632084e+04, + -0.33201316877757835755e+04, 0.28023977283660869944e+04, + 0.34976980180915966230e+04, 0.26669616095543497067e+04, + -0.83582758666152994920e+03, -0.53309175829461210014e+04, + -0.11741978400671489453e+04, 0.24227376095309414268e+04, + 0.28938941912405889525e+04, 0.19032889794626887578e+04, + -0.40091982122337371948e+04, -0.31232856136584782689e+04, + 0.21769745763761175112e+04, 0.24928405225048718421e+04, + 0.16255367812305817097e+04, -0.26057688366396855599e+04, + -0.36684821194995338374e+04, 0.25120876235148784872e+04, + 0.30372453244961234304e+04, -0.55108007538331776232e+03, + -0.21442681786899652252e+04, -0.22034749940436486213e+04, + 0.26159125367489577911e+04, 0.31697107606091162779e+04, + -0.29733811630446189156e+04, -0.21786256943521316316e+04, + 0.13256761028195696781e+04, 0.19276509874348791982e+04, + 0.83408741591736611554e+03, -0.33699568538130683919e+04, + -0.94845284365870043075e+03, 0.40859671496181276780e+04, + -0.17732553532428624976e+03, -0.27581923959091745928e+04, + -0.83310462250241812399e+02, 0.14053764708716275891e+04, + 0.17863980423779653393e+04, -0.20829757410958759465e+04, + -0.24054487836089801931e+04, 0.35640579463033213869e+04, + 0.93046787822225860509e+03, -0.32506726919512630047e+04, + 0.23938200476614414924e+03, 0.16270543868839615698e+04, + 0.63079069538006740459e+03, -0.14453010186731489739e+04, + -0.16596280068198518620e+04, 0.28991866770059309601e+04, + 0.80786911954256959234e+03, -0.36925885621165207340e+04, + 0.10723897804605501278e+04, 0.26806782820442667798e+04, + -0.19263820616475936731e+04, -0.10865659162199190177e+04, + 0.10966160449888554922e+04, 0.94731011592104835017e+03, + -0.43610856374733708662e+03, -0.21141077785197753656e+04, + 0.17982574981423997542e+04, 0.18793426958425895918e+04, + -0.35505203893089151279e+04, 0.45113313618698452956e+03, + 0.30823516719246758839e+04, -0.22722249769807217490e+04, + -0.11297162113654908353e+04, 0.21136456585864871158e+04, + -0.62365998963709316172e+02, -0.11816239554563640013e+04, + -0.83783067211189973023e+02, 0.10502947297399587114e+04, + 0.43698922246062181785e+03, -0.20416123249867803224e+04, + 0.62174679552833504204e+03, 0.24376180070054756470e+04, + -0.27955139037874523638e+04, -0.52952365341090069251e+03, + 0.34211663090601064141e+04, -0.21873135541451820245e+04, + -0.15040093425911113627e+04, 0.30079672768136547347e+04, + -0.84814311396559025980e+03, -0.18088096086152481803e+04, + 0.17560741819669863162e+04, 0.25715979942594327667e+03, + -0.12577786672556044323e+04, 0.33867757202009784123e+03, + 0.57083499386442633750e+03, -0.35990081015697672484e+01, + -0.86586925762152566222e+03, 0.20616452717011389950e+03, + 0.14271835889477044930e+04, -0.16096805306454964466e+04, + -0.47861295171255000014e+03, 0.24916371128713358303e+04, + -0.17191658172853515225e+04, -0.12801289344583642560e+04, + 0.30278809602268538583e+04, -0.12934279287234758158e+04, + -0.20672194190491122754e+04, 0.31695328126503368367e+04, + -0.67159412358582983416e+03, -0.26273977190996120044e+04, + 0.30148522457386520728e+04, -0.10559735008673841605e+03, + -0.28175464626138796120e+04, 0.25838352537244313680e+04, + 0.37992787008217072753e+03, -0.27257458823709343960e+04, + 0.19951261132314011775e+04, 0.79902319085797057596e+03, + -0.25294592147517164449e+04, 0.14496276454306739652e+04, + 0.10761827760099856732e+04, -0.22868099084151758689e+04, + 0.10347810808623185039e+04, 0.11705963672510183642e+04, + -0.19785272393267396183e+04, 0.69185132322561082674e+03, + 0.11773436269957885543e+04, -0.16616065732138883959e+04, + 0.37980717489442554324e+03, 0.12118695117632935307e+04, + -0.14447390449255624389e+04, 0.14436099576386089893e+03, + 0.12804639830870573860e+04, -0.13445158534154440986e+04, + 0.16959717574265521307e+04, -0.30491518276937534893e+03, + -0.32034121502655902987e+04, 0.30986952905206303512e+04, + 0.27428492720225409585e+03, -0.34163992964474391556e+04, + 0.25804862844884432889e+04, 0.11055322905089769847e+04, + -0.37268900929478795661e+04, 0.20363051847993885985e+04, + 0.19032629432320761680e+04, -0.38703266299127940329e+04, + 0.13702980826354635155e+04, 0.25323551120879237715e+04, + -0.35740273387324650685e+04, 0.34058305671685781135e+03, + 0.31191683325309008978e+04, -0.29032577274031596062e+04, + -0.97534706150997590157e+03, 0.36283615360142734971e+04, + -0.20112713508189699496e+04, -0.22066055665485241661e+04, + 0.36831248307768428276e+04, -0.80060267037217852248e+03, + -0.31206609293885971965e+04, 0.29775261951664660955e+04, + 0.84097873154474518742e+03, -0.36834548525432892347e+04, + 0.16110393059549915051e+04, 0.25981380814308381559e+04, + -0.36925299310827404042e+04, -0.13237121909208727288e+03, + 0.38262014038810571037e+04, -0.27393455143564929131e+04, + -0.20455658924485549051e+04, 0.40480414313745764048e+04, + -0.72986494128195579378e+03, -0.37748876726128378323e+04, + 0.31404872328785017999e+04, 0.17462648358992214526e+04, + -0.45586121878210278737e+04, 0.11769358987105472352e+04, + 0.36944186542573979750e+04, -0.36200948699922910237e+04, + -0.14758903683744567843e+04, 0.42357769506284466843e+04, + -0.97422388334339336780e+03, -0.37938528149796775324e+04, + 0.28997862257318879529e+04, 0.22391618221674466440e+04, + -0.42773147920152505321e+04, -0.10394093184281456388e+03, + 0.42572765288519767637e+04, -0.20737077673973531091e+04, + -0.34602963934112590323e+04, 0.36664335834462062849e+04, + 0.18291445232903674878e+04, -0.48992160654575300214e+04, + 0.43499743867696594180e+03, 0.46948809854510191144e+04, + -0.27559670377367338006e+04, -0.34281108913645989560e+04, + 0.38953627609685927382e+04, 0.18610529445508341269e+04, + -0.45960139048147639187e+04, -0.49254794853845328362e+03, + 0.48621415830654823367e+04, -0.12499291477962374302e+04, + -0.46711328561147238361e+04, 0.26640561993406190595e+04, + 0.38934657626999146487e+04, -0.39524163999883176075e+04, + -0.30133239474866568344e+04, 0.48676463978278998184e+04, + 0.15752204135992117244e+04, -0.52704734537982658367e+04, + -0.47897569271328285367e+03, 0.50775271610467652863e+04, + -0.18267639999716149646e+03, -0.54096302421847112782e+04, + 0.83812278256825527478e+03, 0.56056010628788635586e+04, + -0.19430209570380891364e+04, -0.53810410103598032947e+04, + 0.23701744943097996838e+04, 0.50208888763199774985e+04, + -0.24776053519777810834e+04, -0.52558497215102324844e+04, + 0.24817212763211241509e+04, 0.53880443245698661485e+04, + -0.25177952687527540547e+04, -0.57021288409072958530e+04, + 0.21596023428434564266e+04, 0.59333339003531154958e+04, + -0.17703407483346491063e+04, -0.61300025783357114051e+04, + 0.65067253800695152677e+03, 0.62400325180985082625e+04, + 0.77039839205310852321e+03, -0.66650657311739532815e+04, + -0.21756318269953462732e+04, 0.61716308506171963018e+04, + 0.35929052213475706594e+04, -0.47376034890801020083e+04, + -0.57262711351542784541e+04, 0.27464471647322147874e+04, + 0.71592949714379401485e+04, -0.37243657833382491162e+03, + -0.71266708085519849192e+04, -0.31742062658410145559e+04, + 0.54322537473008169400e+04, 0.64544904362877177846e+04, + -0.23323253811754916569e+04, -0.79102247915862226364e+04, + -0.24901991760179066659e+04, 0.61982419792904984206e+04, + 0.69289929709555144655e+04, -0.14392429003639099392e+04, + -0.82948274558787434216e+04, -0.50845502841208535756e+04, + 0.43011133437872540526e+04, 0.87480583515920116042e+04, + 0.35467626339343141808e+04, -0.56238769040797214984e+04, + -0.94616298929033455352e+04, -0.35762040442421634907e+04, + 0.56233012257432555998e+04, 0.98104694896273758786e+04, + 0.59027606594605676946e+04, -0.36275829102630736998e+04, + -0.10169781806390852580e+05, -0.94982437110074261000e+04, + -0.27737085505483305496e+04, 0.66297579786794995016e+04, + 0.11777582747392143574e+05, 0.11068790827352264387e+05, + 0.54770413423013042120e+04, -0.33786070912415866587e+04, + -0.10507048427491983603e+05, -0.15224740781513288312e+05, + -0.16830740095935474528e+05, -0.14990751377381742714e+05, + -0.12563837913582870897e+05, -0.91342891825492733915e+04, + -0.60084847352993856475e+04, -0.41114293079688541184e+04, + -0.20923689041166749121e+04, -0.12940288946343141561e+04, + -0.75266371615413254403e+03, -0.13351237060378855404e+03, + -0.31467241422395204609e+03, 0.49492727599841845887e+01, + 0.20731662620810421771e+02, -0.13700685733958533774e+03, + 0.12702399050946354464e+03, -0.73207515122320103274e+02, + -0.12033764421756254492e+02, 0.72371190983673571395e+02, + -0.84304607289734661890e+02, 0.51239023850250589476e+02, + -0.97054217795615527198, -0.34391971950243927836e+02, + 0.38465479558527292170e+02, -0.16813409445007788889e+02, + -0.87726273872088480488e+01, 0.17792307712733720138e+02, + -0.37983357019243229047e+01, -0.20745540802139537107e+02, + 0.34811726200790111818e+02, -0.22777676918724413468e+02, + -0.12721827921379508908e+02, 0.51810793843385518187e+02, + -0.67876641220370814267e+02, 0.45481812540612509110e+02, + 0.92274893251954370754e+01, -0.68652454292222955701e+02, + 0.98921298228681024511e+02, -0.78412695821664314622e+02, + 0.12506414120825819936e+02, 0.67707316983120236387e+02, + -0.11981090163288436656e+03, 0.11341288758931364100e+03, + -0.46970640588103940161e+02, -0.48696436520292934347e+02, + 0.12556253769912414953e+03, -0.14234535960666184451e+03, + 0.87242224832225133468e+02, 0.15022066182481047747e+02, + -0.11400660564479072434e+03, 0.15919047844757679400e+03, + -0.12561351444130571053e+03, 0.27912417129404584415e+02, + 0.86428406068658134132e+02, -0.16015700075838734051e+03, + 0.15545518151742987811e+03, -0.73224653533236548242e+02, + -0.46518753922822497771e+02, 0.14450292197949690376e+03, + -0.17168242432331339842e+03, 0.11409722812606111120e+03, + 0.10760336069527826908e+03, -0.26716076282619235371e+03, + 0.20753931731531201876e+03, -0.25611333711022641779e+02, + -0.15033961766718277886e+03, 0.27210834769057606763e+03, + -0.23943769321207207668e+03, 0.10653582130500842595e+03, + 0.99952260325863448998e+02, -0.23775310403480918353e+03, + 0.27590604123342501452e+03, -0.15524768128674904233e+03, + -0.25308285024045666489e+02, 0.21338591432632432543e+03, + -0.27408297330016569049e+03, 0.21420931129055477982e+03, + -0.24588435642739803200e+02, -0.15928356864932820258e+03, + 0.28120418451608355781e+03, -0.23860716611415253396e+03, + 0.91073433641573529940e+02, 0.12410887184207679468e+03, + -0.25614253437597022867e+03, 0.27374477854726637815e+03, + -0.12796266461411332216e+03, -0.66898007409122115519e+02, + 0.24664065581362436319e+03, -0.27694289062225567477e+03, + 0.17896045884029769013e+03, 0.34558884479272876433e+02, + -0.21144933107501449854e+03, 0.29465557614494377958e+03, + -0.19991844394395579343e+03, 0.15503013124695117497e+02, + 0.19753467171479829290e+03, -0.28481786219120283477e+03, + 0.23585740441884414054e+03, -0.37983420622258535104e+02, + -0.16278604243917013150e+03, 0.29381514651383514547e+03, + -0.24356171608397190198e+03, 0.76610982458101375414e+02, + 0.15309315667358026758e+03, -0.27933922400654898865e+03, + 0.26828097336982301613e+03, -0.87227082528977916809e+02, + -0.12609109546107131905e+03, 0.28560829066365920426e+03, + -0.27073288718524696606e+03, 0.10468297742852334409e+03, + 0.10543528314354969666e+03, -0.31656997489913163690e+03, + 0.19816078213405069164e+03, -0.27842271675186702851e+03, + -0.41159152139305774654e+03, -0.23146922071683999889e+03, + -0.11010942791061834214e+04, -0.10913609557217976089e+04, + -0.15328283575014609141e+04, -0.23112003287915763394e+04, + -0.19241948697474481378e+04, -0.21503238651472397578e+04, + -0.15341085685650502910e+04, -0.12176370095140171657e+03, + 0.41829871070782951392e+03, 0.16044644708620733127e+04, + 0.17207925966530035566e+04, 0.56282108027907838732e+03, + -0.52118617133388596585e+02, -0.13708851564900048743e+04, + -0.15084422660195161825e+04, -0.14987432724926628680e+03, + 0.49545514628036204385e+03, 0.13971489305697439249e+04, + 0.93493316767500755304e+03, -0.80040723570197962999e+03, + -0.98484045680509552767e+03, -0.78732206884612344311e+03, + 0.26716136907249284604e+03, 0.15010967300556892496e+04, + 0.34383656528490018900e+03, -0.68385508245654659731e+03, + -0.84923410496771111866e+03, -0.51449038524546131157e+03, + 0.11187601899747678544e+04, 0.90821571245060545152e+03, + -0.62231361681020223386e+03, -0.72675495126109274224e+03, + -0.44038380585454001448e+03, 0.71908570498772337487e+03, + 0.10670119822394872244e+04, -0.72475693142566103688e+03, + -0.87352090951436514388e+03, 0.17277132100818906224e+03, + 0.59378438008503826495e+03, 0.64564930085685716676e+03, + -0.75604305992150034399e+03, -0.90580203256732966111e+03, + 0.85677348252973581566e+03, 0.61218854561858393026e+03, + -0.36970518315468945048e+03, -0.55555220734553688544e+03, + -0.23835785995601125364e+03, 0.96616536092060675855e+03, + 0.26736619130174250358e+03, -0.11661372510304083789e+04, + 0.52974309238878191763e+02, 0.78312816421464879113e+03, + 0.28773661151709557515e+02, -0.40330997897791286277e+03, + -0.51398707107823668139e+03, 0.60423792114750710880e+03, + 0.67510875956125266839e+03, -0.10072272114960854879e+04, + -0.27124934066949498401e+03, 0.92547274812581406422e+03, + -0.56105612654461850752e+02, -0.48310049967175024221e+03, + -0.16150350293402689772e+03, 0.40004507503860696715e+03, + 0.47642282530118700379e+03, -0.81817464102933854520e+03, + -0.25103705999795329262e+03, 0.10795581917285644522e+04, + -0.32764017714557473937e+03, -0.75481957737960453869e+03, + 0.55349796104383449347e+03, 0.29356022232338830236e+03, + -0.28734141809859283967e+03, -0.29793047776752399614e+03, + 0.14484168381355991073e+03, 0.59723486559807065532e+03, + -0.52271058613424145278e+03, -0.51477136576290445191e+03, + 0.98563454167327802224e+03, -0.10211277192367492717e+03, + -0.89730775951992382033e+03, 0.65073357512753102583e+03, + 0.33680333847285311322e+03, -0.62913957724827298534e+03, + 0.46665230595018464044e+02, 0.31383525583046832708e+03, + 0.35673524107828853857e+02, -0.29646928381339051839e+03, + -0.14241360800593847102e+03, 0.60935834390430534313e+03, + -0.20423618042592931943e+03, -0.67713601535843292822e+03, + 0.79217686349503401289e+03, 0.14354304558692365390e+03, + -0.95813554218817080255e+03, 0.60010512048003818109e+03, + 0.45262426846325712404e+03, -0.87373972937534335870e+03, + 0.24424238615255669060e+03, 0.52737743505026969615e+03, + -0.52117086419327813474e+03, -0.51187803512816643092e+02, + 0.34085622350096338096e+03, -0.87205249680237812981e+02, + -0.16133276391697813779e+03, -0.10973775522422803519e+02, + 0.26567609308691260139e+03, -0.77845662171973756926e+02, + -0.39364926550612005940e+03, 0.45445588252220852610e+03, + 0.13244794508137192679e+03, -0.69959280226870907882e+03, + 0.47488199392826982148e+03, 0.38117273192811234139e+03, + -0.87524556501911524720e+03, 0.37181152928701703786e+03, + 0.59646571892496820055e+03, -0.91735263110495213823e+03, + 0.20590041714696195640e+03, 0.73857903620287879676e+03, + -0.85452633938618009779e+03, 0.30229949916716300606e+02, + 0.79846035095250260838e+03, -0.72741561616606293228e+03, + -0.12030655441314164023e+03, 0.78808417338422168541e+03, + -0.57435315336582800683e+03, -0.22991063851849150979e+03, + 0.72949858069915285341e+03, -0.42394997964220664244e+03, + -0.29764843425335504890e+03, 0.64628583971618809301e+03, + -0.29319089903120180907e+03, -0.33177866105842844036e+03, + 0.55844963036279705193e+03, -0.18875454898976235540e+03, + -0.34476339375300739221e+03, 0.48022470805189806242e+03, + -0.10961261850864147505e+03, -0.34973927405686384873e+03, + 0.41977523929793210300e+03, -0.49684081273853635707e+02, + -0.35839199537384212135e+03, 0.37980369691940614985e+03, + -0.41148529322276880293e+03, 0.12560658989769081018e+02, + 0.85092166690561975884e+03, -0.75852143540292547641e+03, + -0.14061224101176730983e+03, 0.92393972430551366415e+03, + -0.65366405287769418919e+03, -0.32198980427578544550e+03, + 0.97524094803600917203e+03, -0.49798332321307611892e+03, + -0.52205918022217838370e+03, 0.98415929273715198633e+03, + -0.28450354784841061928e+03, -0.72266083247750304963e+03, + 0.92684728178128580112e+03, -0.14078658967506653354e+02, + -0.89513507739693920939e+03, 0.78013799263854355104e+03, + 0.29910225953936088672e+03, -0.10005363865286560667e+04, + 0.52852739066211393038e+03, 0.62207370547871698818e+03, + -0.99385534818083954178e+03, 0.17431675078883992569e+03, + 0.90019182876093088908e+03, -0.83426862169760522647e+03, + -0.25068913978314313340e+03, 0.10606440120552229018e+04, + -0.50235837229529727210e+03, -0.67620972544460710196e+03, + 0.10268747266766270059e+04, -0.22191788547158804334e+02, + -0.99466486291058038205e+03, 0.74675991424336075397e+03, + 0.51923837424727219059e+03, -0.10816863151357240440e+04, + 0.23153464936463348067e+03, 0.96926063386061957772e+03, + -0.84215438934030339624e+03, -0.40829959991178310474e+03, + 0.11411342636528092953e+04, -0.27624361278933173480e+03, + -0.95672150194309108429e+03, 0.89101472067500526464e+03, + 0.46152314567248492949e+03, -0.11477388497009490038e+04, + 0.22655382616994216960e+03, 0.10605959412407662512e+04, + -0.79734078614109580485e+03, -0.60857754301237594063e+03, + 0.11636881077437396925e+04, 0.26903451772979746437e+02, + -0.11667587564395932986e+04, 0.59249811919366118218e+03, + 0.91434938584672966044e+03, -0.10192088599648900527e+04, + -0.41653024456026048483e+03, 0.12527075953762391691e+04, + -0.11833271845912142339e+03, -0.11925767912011810949e+04, + 0.65697278617039012261e+03, 0.96149059934281285678e+03, + -0.10300290951773467896e+04, -0.54643702665938167229e+03, + 0.12776597141732218006e+04, 0.11093298283441279750e+03, + -0.13111609788287657921e+04, 0.35869705041419359759e+03, + 0.12381762689837230482e+04, -0.72823167056585384671e+03, + -0.10145535703516407011e+04, 0.10537588400278798417e+04, + 0.76794950301127323655e+03, -0.12442251881078580027e+04, + -0.45452445365951621170e+03, 0.13911590145861960082e+04, + 0.18923860117347774690e+03, -0.14279983818386508574e+04, + 0.90126867544286540124e+02, 0.14594591339373826031e+04, + -0.28748878544538962387e+03, -0.14232290974535080750e+04, + 0.48057136267696296272e+03, 0.14217827875381522063e+04, + -0.58402726579344232505e+03, -0.13869718610875827380e+04, + 0.68083778014593394801e+03, 0.14133266555520797283e+04, + -0.68623475819972122736e+03, -0.14238225930447968040e+04, + 0.67974524717745816815e+03, 0.15027265238029319789e+04, + -0.57081117881614932230e+03, -0.15607438826616003098e+04, + 0.43243148433268231656e+03, 0.16660834664151975630e+04, + -0.17001091464525129027e+03, -0.17086017045583475920e+04, + -0.14091889702713490351e+03, 0.17304830354067214557e+04, + 0.57927083966805889759e+03, -0.15938900821518216162e+04, + -0.10334942160615487410e+04, 0.13204817735714611899e+04, + 0.15197136453306557087e+04, -0.77733039179649063044e+03, + -0.18387891717357786092e+04, 0.43076936383720443757e+02, + 0.19142867664647646961e+04, 0.87722559778981019463e+03, + -0.15011549566530804896e+04, -0.16782239675791936406e+04, + 0.60946814630898586529e+03, 0.20920223209298828806e+04, + 0.69344196075596437367e+03, -0.16730753020507468136e+04, + -0.18464450953026373554e+04, 0.39526600463115147477e+03, + 0.22032826532252006473e+04, 0.13503540473844391272e+04, + -0.11291054418021026322e+04, -0.23483079704302554092e+04, + -0.94907555011927081523e+03, 0.15271691116475888066e+04, + 0.24835204420598156503e+04, 0.98180694103933990391e+03, + -0.14953625778966727466e+04, -0.26562501808923980207e+04, + -0.15159857943570088992e+04, 0.92259270181117551601e+03, + 0.27166922547707945341e+04, 0.25744424286680427940e+04, + 0.67120570571876771737e+03, -0.17079181218724279461e+04, + -0.31598590970118666519e+04, -0.29845882845116561839e+04, + -0.13917648267822473827e+04, 0.83180524353858629638e+03, + 0.28359020329080281044e+04, 0.40780211207808520157e+04, + 0.44284472332890381949e+04, 0.40675083525366208050e+04, + 0.33057878353938840519e+04, 0.24340107108313281969e+04, + 0.16469284940207928685e+04, 0.10338666461503366918e+04, + 0.60621423053855357921e+03, 0.33368689242921612959e+03, + 0.17309188863851568385e+03, 0.84870103284929840015e+02, + 0.39429999126819581079e+02, 0.17391908424363162311e+02, + 0.72948268262322182309e+01, 0.29134279085654544161e+01, + 0.11091426822519141471e+01, 0.40285762516062506577, + 0.13970487389330768502, 0.46282781264135187949e-01, + 0.14654543062130723219e-01, 0.44362686359899969335e-02, + 0.12842785412425492854e-02, 0.35559727568309644529e-03, + 0.94175726007171954731e-04, 0.23855471542258400129e-04, + 0.57790658737616999339e-05, 0.13386466618221800977e-05, + 0.29641311035733535162e-06, 0.62719543998479677134e-07, + 0.12676500948453908969e-07, 0.24460719575274174134e-08, + 0.45035905579963747570e-09, 0.79063771261109339742e-10, + 0.13224974110696352760e-10, 0.21059043343965461983e-11, + 0.31892739186175708688e-12, 0.45886889130385712559e-13, + 0.62648433361809125913e-14, 0.81054942130986668621e-15, + 0.99232687243298038952e-16, 0.11476834836759900765e-16, + 0.12516607922790671894e-17, 0.12845803449201350422e-18, + 0.12378092354338869334e-19, 0.11169925581964594126e-20, + 0.94123026626129361292e-22, 0.73819182470238482830e-23, + 0.53684811127589463904e-24, 0.36048391738553283529e-25, + 0.22239564063318855407e-26, 0.12533362133421565315e-27, + 0.64084549987049997425e-29, 0.29488112154305668585e-30, + 0.12090631838118252236e-31, 0.43634256249619366505e-33, + 0.13645971191245563393e-34, 0.36231307632129651743e-36, + 0.79412561042990551332e-38, 0.13795801131494998190e-39, + 0.17810760075101064407e-41, 0.15191325786184074156e-43, + 0.64209422094975009941e-46, 0.77554641687330259231e-02, + -0.13449266435696966004e-01, 0.92289681553286827959e-02, + -0.34457973691621912767e-02, -0.74482249076185142334e-03, + 0.35201833764401742506e-02, -0.39507238206488021204e-02, + 0.45808684529531056712e-02, -0.56368100506861106014e-02, + 0.89869772656384731835e-02, -0.12803031956138291245e-01, + 0.16764291914427586344e-01, -0.18018674518482047375e-01, + 0.16989923568639292428e-01, -0.12911944357090686733e-01, + 0.84553423375255155892e-02, -0.40361545286663434717e-02, + 0.18863083746871330514e-02, -0.76992838231467321079e-03, + 0.11316175139968408757e-02, -0.87124076348826383527e-03, + 0.87771588935961063638e-03, -0.30613544503523226715e-03, + 0.10929629340925863228e-02, -0.23949569289005551674e-02, + 0.50321040582349567047e-02, -0.66989380159465658840e-02, + 0.75233253694572815862e-02, -0.59628126379242295599e-02, + 0.40768662596205361773e-02, -0.22453014555704887793e-02, + 0.30770437919381949353e-02, -0.54994004335449557866e-02, + 0.93114307745549712569e-02, -0.10945929239807345931e-01, + 0.97603888231818855536e-02, -0.44653056349865539315e-02, + -0.15802973009022324227e-02, 0.61938335181794977255e-02, + -0.53245632992431467939e-02, -0.28991203644938709971e-03, + 0.94530091545726429442e-02, -0.16711625744934673760e-01, + 0.19539575006475337626e-01, -0.15644615520114632523e-01, + 0.86568236748151682763e-02, -0.20037804643494986669e-02, + 0.11238807953484388630e-02, -0.59597873657391770355e-02, + 0.14803951901572734093e-01, -0.20972143134522818614e-01, + 0.20348447558123268497e-01, -0.10828425923450171395e-01, + -0.44470015697990420561e-02, 0.16700614430040127550e-01, + -0.25081152215342336631e-01, 0.13845614774180435916e-01, + -0.11911415953471478704e-01, -0.22942620274740713193e-01, + -0.24109925831742929671e-02, -0.48653077224424662317e-01, + -0.37237553046773716470e-01, -0.50779896687425579715e-01, + -0.79729474059435992417e-01, -0.48252241721734916158e-01, + -0.65024344997835104021e-01, -0.21110440660230087029e-01, + -0.19037597656227761003e-03, 0.43208606543729884131e-01, + 0.33252398938414397256e-01, 0.62928956095783861180e-01, + -0.12350497593336584937e-01, -0.52154738336505340052e-02, + -0.54000367839305542239e-01, -0.28594666672604532320e-01, + -0.36045545484928867910e-02, 0.39326910240906905181e-01, + 0.26193791115531411817e-01, 0.26233410564501295076e-01, + -0.37262250594269970272e-01, -0.27977941619616569086e-01, + -0.20116617663804767929e-01, 0.29211819532155704898e-01, + 0.25405679817623798983e-01, 0.19895310812375943676e-01, + -0.31736726311403333500e-01, -0.35804838876065094022e-01, + 0.19264562691933200672e-01, 0.31428305508447991305e-02, + 0.47517354314171832141e-01, -0.27826421272220572961e-01, + -0.35476160025034446377e-01, 0.12761258891033262081e-01, + 0.50380455158090791529e-02, 0.35210425820251425866e-01, + -0.14843043501860185562e-01, -0.39309728573759875059e-01, + 0.13892539563875525022e-01, 0.18758074257758758363e-01, + 0.14256704793603247605e-01, -0.19787711963552175043e-01, + -0.21590488832400812902e-01, 0.97087332700846705469e-02, + 0.31928179254562420730e-01, -0.86363639894585907814e-02, + -0.30374477755127023831e-01, 0.76221090124329463414e-02, + 0.15912212742524290549e-01, 0.10402939977013251488e-01, + -0.15707063586544934425e-01, -0.25634485522564670612e-01, + 0.31780245362207658333e-01, 0.11500606918789998967e-01, + -0.19988401280142634175e-01, -0.17223334024143447524e-01, + 0.25696490052566939299e-01, -0.18942514498513350098e-02, + 0.87402530152164790295e-02, -0.35086806811411977436e-01, + 0.16741326423780376192e-01, 0.28835118457959395960e-01, + -0.28955375707860400714e-01, -0.99126124469226459257e-02, + 0.19634517821773618540e-01, 0.34020909343701714878e-02, + -0.38389339106673575977e-02, -0.20484161688021727127e-01, + 0.19001057083965700728e-01, 0.88659261344361424417e-02, + -0.96167397550137884848e-02, -0.23312826423235254170e-01, + 0.33472045884151625794e-01, 0.89581705767210158329e-04, + -0.26165473375948152673e-01, 0.81863143602442910857e-02, + 0.19185263507042780301e-01, -0.14124008435963168739e-01, + -0.61462499861236067136e-02, 0.61454660066275748273e-02, + 0.24428664964555018430e-02, 0.13658813528006396101e-01, + -0.42530132149610488934e-01, 0.39407838772995688881e-01, + 0.20467477423806578894e-03, -0.28804036393557649887e-01, + 0.17826581212489003153e-01, 0.13403216539607178300e-02, + 0.11575019209646916774e-01, -0.44678496580796693560e-01, + 0.54728566286404184416e-01, -0.31390686840113056488e-01, + 0.65964844241573972541e-02, -0.27627579509413129066e-02, + 0.48271449296590236006e-02, 0.60168398870746970727e-02, + -0.17472019012726255904e-01, 0.71248235199815818444e-02, + 0.16451244623325391586e-01, -0.20365641828448376172e-01, + -0.48022338704093682146e-02, 0.27999146401474030166e-01, + -0.19350485756774164769e-01, -0.75427940868647569417e-02, + 0.13226211749695718570e-01, 0.13843658404219255295e-01, + -0.40832893167565526005e-01, 0.33107713181392967039e-01, + 0.18331298126514846986e-02, -0.25424711100045811057e-01, + 0.16366224403924923420e-01, 0.71512927884402506529e-02, + -0.15203410086944701973e-01, 0.31953479104843735166e-02, + 0.83277198545654261552e-02, -0.43922945018929019506e-02, + -0.64984150253288887333e-02, 0.74716764170742805060e-02, + 0.36822702160574862125e-02, -0.14413643220593184632e-01, + 0.16356957454328906187e-01, -0.14690365725832961810e-01, + 0.16545270148546467603e-01, -0.17750593085131653737e-01, + 0.84632038862705958465e-02, 0.10229624457620082115e-01, + -0.23360785877694821566e-01, 0.19321659498483766126e-01, + -0.52470235976069500017e-02, -0.85396089463239438673e-03, + -0.71917371766659450236e-02, 0.15135604211101603631e-01, + -0.60729610992005965062e-02, -0.16682001686066642854e-01, + 0.30833365407550550330e-01, -0.20665820001613127710e-01, + -0.33613816541331054122e-02, 0.15448823014239538784e-01, + -0.39052346107364445393e-02, -0.15457490032078068445e-01, + 0.18158549115648976030e-01, 0.23832842001945717114, + -0.27334104664374975213, -0.14101491395697060560, + 0.34250400037365968942, -0.11885726263138272907, + -0.23909707779994379684, 0.33170044671370657596, + -0.52275020270297643810e-01, -0.21990219527313417669, + 0.11609937095331568369, 0.32940272106507162420, + -0.61530059858861541056, 0.38895932814987166370, + 0.18807007663799540920, -0.52833924472986160126, + 0.33603249111032701402, 0.10864939112408066035, + -0.21600131776688888396, -0.14508832318418771190, + 0.52997620751536855810, -0.38652866678356934127, + -0.19602169058285850989, 0.61174655628521457107, + -0.38407516834120608573, -0.20180685155160066335, + 0.49672609927250560569, -0.20547596360308822971, + -0.22493053738778481798, 0.25239869795479102921, + 0.13926871186586733953, -0.40155483264486896422, + 0.21218493180220029948, 0.18410689234297361594, + -0.28588759244288503014, 0.59782460920845617580e-01, + 0.13526707457622993980, -0.49720387358942491618e-01, + -0.67488082355166970072e-01, -0.34642134149359432582e-01, + 0.21590866906241656942, -0.88712846227738284544e-01, + -0.27251188779935919815, 0.38487000081316696809, + 0.52558247332321113982e-02, -0.40443701312099422651, + 0.25618631338581804302, 0.28791219796504691208, + -0.45627487159686186402, -0.52800374909583872376e-02, + 0.49044983706591693817, -0.32425147510450141874, + -0.22300594778066351598, 0.41423094308574759381, + -0.78837365157822109074e-01, -0.16533708231689650536, + 0.42253864429721375157e-02, 0.15236939100322638430, + 0.10053301014731248764, -0.33958664725733855860, + 0.54641278710093263427e-01, 0.43141151796556920228, + -0.31312357096609211293, -0.30952543569226859121, + 0.53118386859545640988, -0.16230206600986441662e-01, + -0.38888772083802525259, 0.90745134886660458462e-01, + 0.34399585158221890335, -0.16655610263083447942, + -0.21334184428628960584, 0.94377262757210228505e-01, + 0.21038303541364516969, 0.88765884258644234261e-01, + -0.60772627942525780931, 0.36916322168706083851, + 0.43131782114518307791, -0.57650370980912590824, + -0.10960622579991257872e-01, 0.23724651284491893311, + 0.13654809931001474221, -0.91521359821682038427e-01, + -0.46112651437503326957, 0.44393069491522429981, + 0.22499416167751909446, -0.26638670866468666665, + -0.38113449020388107114, 0.37541737611818115639, + 0.39311030476930153288, -0.51025321406063006702, + -0.25014979174230182052e-01, -0.66890988792511429928e-01, + 0.50975980631599160375, 0.20069181727225837014e-01, + -0.77530817412496089158, 0.33165082678609558720, + 0.38087096759584510020, -0.29235269176868240032e-01, + -0.19941757043431110330, -0.47516572126239481344, + 0.47788633146607345514, 0.43225776082514705267, + -0.29219524369135735364, -0.49481203552406971546, + 0.97992548032823992288e-01, 0.37521876251752650511, + 0.35128433968110445162, -0.34820272934205021009, + -0.61937679920192723060, 0.27254125208051482865, + 0.44218156035085759425, 0.31533246369455142366, + -0.42061756936131150519, -0.45769517305849116706, + -0.18890282653687365255, 0.77545412050918827163, + 0.31525425728572864514, -0.18290825926924103584, + -0.41899961649660866225, -0.71157400973092554963, + 0.52098723194895546484, 0.55886086913071342241, + 0.37447241532462721691, -0.55105965783315960516e-01, + -0.78972704665875359531, -0.61597708770541603762, + 0.17397106871813278195, 0.41387413205748835310, + 0.83684699703156872896, 0.60194269950350764997, + -0.57677426800061037948, -0.26292054682210719285, + -0.12700688975629239597e+01, -0.43524553049374292701, + -0.38619112084383462602e-01, 0.30255132701271469919, + 0.12038259019240535874e+01, 0.95174541010507973660, + 0.13291112611459716675e+01, 0.89712121038224190706, + 0.92786528581131133553, 0.42368672772897264522, + 0.52463243021525740595, 0.13387823504696813592, + 0.16984842856479140383, 0.89075696989542180182e-01, + 0.28547308706221474067e-01, -0.29553688378814543802e-01, + 0.13185004276900466613, -0.15770607258707289300, + 0.13160634872049623012, -0.35959902287414122202e-01, + -0.71424747471057467574e-01, 0.13796085760011073118, + -0.13156935683084450273, 0.68687277577567970588e-01, + -0.25024241640921340325e-02, -0.10872396772540969881e-01, + -0.50038978691277012645e-01, 0.15372152869334398950, + -0.23163119751478883357, 0.21803316300744418621, + -0.93363661151776564107e-01, -0.97918535239877826926e-01, + 0.26483691735272424372, -0.31748393174183875409, + 0.21648021711158599301, 0.11200737279622265986e-02, + -0.23739078941046024007, 0.38109698777039480166, + -0.36456383355726817985, 0.19730492974519761584, + 0.39413218555496482010e-01, -0.23601317310978550679, + 0.31057491589121632991, -0.24935884587565027015, + 0.10890479611320054432, 0.18578748308192886973e-01, + -0.58575753789782789016e-01, -0.47194861277462469076e-02, + 0.12035792890083950313, -0.20109294659340093414, + 0.17388666395457097469, -0.24078829923342925934e-01, + -0.19243665989367894631, 0.37486191215411468480, + -0.42904890745304702371, 0.31682708266725850832, + -0.78235871037183241095e-01, -0.18623868525813519481, + 0.36362701529804575262, -0.38315784941890074222, + 0.24917569601520256350, -0.36754315692814870653e-01, + -0.14780542009062755393, 0.22031573478649588149, + -0.15917172439562268793, 0.12339240092409034869e-01, + 0.13126313557479263316, -0.19056154636393629609, + 0.13513724059543444356, -0.67895939569849872441, + 0.98775900722997223014, -0.49699178541604599468, + -0.30462241433403366292e-01, 0.21161104418072151923, + -0.18546354172655538095, -0.81090207650139356499e-01, + 0.17480348455389013718, -0.89843868593324313632e-01, + -0.36650345674753004310, 0.84693083704773852727, + -0.12642184820136743717e+01, 0.12305263567886624010e+01, + -0.88697520011588881772, 0.21751477027648216667, + 0.33000518071203627235, -0.70041571056934848194, + 0.64343645923886028104, -0.44760153571081839896, + 0.14788646066575875104, -0.95978886947036087807e-01, + 0.14385090262441943554, -0.34322468854106169545, + 0.33092271435545989045, -0.17505750805227174305, + -0.24362599158576228597, 0.54320505854121259315, + -0.67432963975151338776, 0.36579346639617071890, + 0.83645805694158567589e-01, -0.56500496684836543082, + 0.61640474568476477657, -0.31716911843326300868, + -0.33408996492433357117, 0.78947200432163955330, + -0.87268932529927778496, 0.29642675814710750526, + 0.53008485917416559019, -0.13129042048497896467e+01, + 0.14266398488194327321e+01, -0.89702209224514695141, + -0.18899660617711652733, 0.10983901505535640375e+01, + -0.14718504145240254299e+01, 0.93971778779706982565, + 0.29455142712603844118e-01, -0.98133034697202736751, + 0.11316867938734116450e+01, -0.44882417309522648630, + -0.88286860020974933239, 0.19487856125897009552e+01, + -0.21646603239115274064e+01, 0.11822049990232588179e+01, + 0.63012254705355796869, -0.21023379775806416703e+01, + 0.31759751891921164102e+01, -0.15940922375181578730e+01, + 0.14688112084938211854e+01, 0.33720674001411548026e+01, + 0.38162107132738715132, 0.70125222860199922792e+01, + 0.51557837740935594795e+01, 0.78356604656191057856e+01, + 0.10600639805600000187e+02, 0.81437665305526039106e+01, + 0.79492296179400092626e+01, 0.45646223943480341845e+01, + -0.15288441376043246933e+01, -0.46639842467849081942e+01, + -0.63637281696508880557e+01, -0.74352881729041255809e+01, + 0.79753905551860390655e-01, 0.25070213780715779883e+01, + 0.60143742961614208298e+01, 0.58146262539153328319e+01, + -0.10553324351355763966e+01, -0.42322298990306874700e+01, + -0.50843369225117189814e+01, -0.25289148173426903021e+01, + 0.41285427149216431530e+01, 0.52665684792003961689e+01, + 0.17088992936228304398e+01, -0.31798304635982486133e+01, + -0.43829877554132368189e+01, -0.25653266813757396037e+01, + 0.47501147241432279955e+01, 0.45391597104686649544e+01, + -0.18611460857784682954e+01, -0.14586960390948038313e+01, + -0.59538150048449436369e+01, 0.33939098894709633925e+01, + 0.53811625508605285262e+01, -0.18098808964347128381e+01, + -0.93208061059997215914, -0.48417276627258436505e+01, + 0.20243985525198353592e+01, 0.55807104391101756136e+01, + -0.17284791057356228006e+01, -0.30990789597394452493e+01, + -0.16292320085440950006e+01, 0.24927664855354070284e+01, + 0.33439315276542975752e+01, -0.15090795975858939393e+01, + -0.45684681197350878179e+01, 0.12316117187022721513e+01, + 0.44287743685631362212e+01, -0.12324934845312824905e+01, + -0.20675002158930637641e+01, -0.18018409605526981565e+01, + 0.26352941837911028067e+01, 0.32432781067415228371e+01, + -0.40288239715147566855e+01, -0.23403989902701960446e+01, + 0.37294382296415942157e+01, 0.14602394404265313099e+01, + -0.25524073620664338158e+01, -0.92115920806747442207, + -0.12469280824021243548, 0.40785843727765085376e+01, + -0.16603273828100952869e+01, -0.46743569643342954834e+01, + 0.45199104202917288475e+01, 0.11465661476339443769e+01, + -0.24999023471314725242e+01, -0.95931298268259468376, + 0.12103942420863886831e+01, 0.21169094745933674240e+01, + -0.17921916938749455905e+01, -0.22413871827039617557e+01, + 0.22825056669686749622e+01, 0.25865873090330899764e+01, + -0.42001734586023529161e+01, -0.48932228028236379735, + 0.41188977398077817327e+01, -0.14115047482590614703e+01, + -0.26679178924540289941e+01, 0.21215316711771117220e+01, + 0.56310952732063690451, -0.30047535937728853117, + -0.11726247469013995062e+01, -0.10105224709139351003e+01, + 0.52058975114143706264e+01, -0.50144371562767178219e+01, + -0.21083901452588954539, 0.36815855401837818128e+01, + -0.13826274495012493837e+01, -0.20451737225391024566e+01, + 0.68689879149599897268, 0.38256650442978341609e+01, + -0.52937057854013751523e+01, 0.21987408579520351104e+01, + 0.93718014912483638135, -0.98550401727761305359, + 0.20924141244058067080, -0.13821816284443118050e+01, + 0.27568958344569689523e+01, -0.10887248146228090118e+01, + -0.24327014642910018694e+01, 0.31223662588347496083e+01, + 0.33871797887247395709, -0.34696660388731372926e+01, + 0.19898062083128116306e+01, 0.20981929497536833118e+01, + -0.30628994776002791411e+01, -0.79631554709286600513, + 0.47636090315906756132e+01, -0.38336954172055435208e+01, + -0.95694962369188985019, 0.41090558264064283023e+01, + -0.26033400123549630401e+01, -0.91429736464888111680, + 0.21369413129263055140e+01, -0.43196783777750291655, + -0.11982472403688044782e+01, 0.55494200672634730331, + 0.11617554763204407386e+01, -0.15180024567691337012e+01, + 0.16095801434782411321, 0.11583769782238957369e+01, + -0.12975493235464865549e+01, 0.10512990010494351889e+01, + -0.14672063268932724611e+01, 0.19284268562033024530e+01, + -0.96694561505461962270, -0.13342896681669449421e+01, + 0.28982799479333998249e+01, -0.21173258518316870891e+01, + 0.52954649517998032826e-01, 0.70406642667111596356, + 0.69827174584170981220, -0.21482594302472235448e+01, + 0.11446164294291576446e+01, 0.18928022672513886704e+01, + -0.37889872063897671595e+01, 0.22894213063068438174e+01, + 0.11154920159851215988e+01, -0.27416410637999097943e+01, + 0.93965469224514097668, 0.19870679640641470964e+01, + -0.25010425974564993723e+01, -0.10057987051756727581e+02, + 0.12082126122159010606e+02, 0.78437657035145882389e+01, + -0.19185835510083684596e+02, 0.94638578572946681078e+01, + 0.86382662273330570457e+01, -0.14922441478313992036e+02, + 0.17954523044819141742e+01, 0.13193928833316594051e+02, + -0.10688904234301384477e+02, -0.10142582868651654593e+02, + 0.25528172258371998993e+02, -0.16956142884029009821e+02, + -0.95501398073759045104e+01, 0.25431238199590168847e+02, + -0.15237603501586233889e+02, -0.81144066386249633638e+01, + 0.14981815132501999699e+02, 0.21567153574548720840e+01, + -0.21924513771649763783e+02, 0.16408698284621046071e+02, + 0.10726469544965119951e+02, -0.30063537846946932319e+02, + 0.18182018284120406548e+02, 0.10407150220825187148e+02, + -0.23682758184782134236e+02, 0.78402505405542735062e+01, + 0.13695366244057252558e+02, -0.14084973119739174763e+02, + -0.61143477019571985664e+01, 0.18351298082633149988e+02, + -0.75260451505740837419e+01, -0.12035566960016936378e+02, + 0.14498833546923814097e+02, -0.41703202281795082040, + -0.95006904555589510863e+01, 0.25911011792212654825e+01, + 0.56148301373681643867e+01, 0.33171286759385992804e-01, + -0.11786483876046171204e+02, 0.70184267309294003923e+01, + 0.12042750027630898302e+02, -0.19604819116768577913e+02, + 0.45445418981266438863, 0.20744774608456644671e+02, + -0.14377236044291002770e+02, -0.13045231343831934723e+02, + 0.22064502082949818629e+02, 0.64733065983783788511, + -0.24246224599560328272e+02, 0.14604629726459602779e+02, + 0.13255409078625683961e+02, -0.21214951868949800229e+02, + 0.20822325051658663320e+01, 0.10223445200128177035e+02, + 0.26190541558666308175, -0.99016880779091476228e+01, + -0.41040603955613699227e+01, 0.18740783954477521434e+02, + -0.51344017211665402556e+01, -0.20964722375846356783e+02, + 0.16619647998931295518e+02, 0.14244945998903363105e+02, + -0.25000832237522381263e+02, -0.16982445242932526774e+01, + 0.21598759732069879647e+02, -0.45322051635252158519e+01, + -0.18529382617162927005e+02, 0.82288049243070933159e+01, + 0.12239584159883913017e+02, -0.46317820018667150705e+01, + -0.13866441037856814589e+02, -0.40590516026442180486, + 0.28342844277260624608e+02, -0.17907092992212373161e+02, + -0.21851813938230812084e+02, 0.27898614874342822390e+02, + 0.28262384862503240335e+01, -0.12450966966406511460e+02, + -0.10205210072366094565e+02, 0.92912344270470885732e+01, + 0.20385544387465728278e+02, -0.20678434505817239852e+02, + -0.13849877750105484608e+02, 0.15474196940842675829e+02, + 0.19474032769298858625e+02, -0.20219781662564173530e+02, + -0.18764074128260183727e+02, 0.22719347982623354198e+02, + 0.70785274527360995123e+01, -0.13578535368112427673e+01, + -0.25033773120126266321e+02, 0.14379238812787317747, + 0.37964850981944366026e+02, -0.14440884025738847996e+02, + -0.21375333778160804599e+02, -0.21996015275764341235, + 0.14332276645630434686e+02, 0.21414715904019992365e+02, + -0.22611100496692266404e+02, -0.24718115026379969379e+02, + 0.16805661731354962996e+02, 0.24753479273931766613e+02, + -0.30628713840725345641e+01, -0.21886698571212068742e+02, + -0.18340390828373731580e+02, 0.20362077240877738404e+02, + 0.29341956629246197963e+02, -0.10028137675963371578e+02, + -0.27768220782081680653e+02, -0.13434243671804315667e+02, + 0.19498015272587807090e+02, 0.27586209622909610317e+02, + 0.63943851112170078110e+01, -0.37792604285774480388e+02, + -0.18994549888954736616e+02, 0.94192281410451688117e+01, + 0.25378114111030551925e+02, 0.33257257404553364211e+02, + -0.23182334112412029015e+02, -0.32816659457855699600e+02, + -0.19009007804046465395e+02, 0.33006491269796622845e+01, + 0.41694949072779081689e+02, 0.32510158137670821077e+02, + -0.84631167609807320673e+01, -0.22020504854301353959e+02, + -0.47158946166876646089e+02, -0.26267803078475544964e+02, + 0.22197750208322943877e+02, 0.23434668187745071322e+02, + 0.59837765765908187632e+02, 0.27775373539341927653e+02, + 0.14435727936659981108e+01, -0.18859960628968806873e+02, + -0.59398017879729408719e+02, -0.56475410577178351446e+02, + -0.64893703191349729309e+02, -0.54006183975003025921e+02, + -0.43115794346819491523e+02, -0.28996256250476989180e+02, + -0.22057265099927100493e+02, -0.12009138764927270060e+02, + -0.55034414207821669152e+01, -0.72841450158006724180e+01, + 0.70117735019808102859, -0.10405273354002062547e+01, + -0.37981348889291957072e+01, 0.50044162197350008370e+01, + -0.43380480751004188988e+01, 0.80680757018198168140, + 0.30381995965854833308e+01, -0.50859529453316998371e+01, + 0.40563029194578783532e+01, -0.75165173152802644552, + -0.24942586634698704628e+01, 0.32520840105319552826e+01, + -0.59365212209506745822, -0.41263396250945989507e+01, + 0.79484362291303352066e+01, -0.79940840477002410580e+01, + 0.33152826284354306452e+01, 0.43315068676591774732e+01, + -0.11192269945458862779e+02, 0.13501704259631674532e+02, + -0.95538075047294981346e+01, 0.80361946886206281349, + 0.87675096654835709131e+01, -0.14617227175530656424e+02, + 0.14003673028123671429e+02, -0.73705546191493009900e+01, + -0.18914698776605844976e+01, 0.92710481022233928172e+01, + -0.11468613469680871475e+02, 0.80739919967660664923e+01, + -0.16190551026643043020e+01, -0.39057819732286236381e+01, + 0.53198979790724658656e+01, -0.19851929741435141441e+01, + -0.38569561197019486265e+01, 0.83847738337566699585e+01, + -0.83444615512707667193e+01, 0.29416633321035994264e+01, + 0.56158613559072483312e+01, -0.13168832660869211892e+02, + 0.15761160943139183033e+02, -0.11713112560901839387e+02, + 0.25735642876685904668e+01, 0.75999076661843565361e+01, + -0.14222166776565581259e+02, 0.14448211447101069638e+02, + -0.85325942776635415044e+01, -0.36370266958380892408, + 0.78293171226416600206e+01, -0.10425743873199666112e+02, + 0.73630667337591741983e+01, -0.76540627568237262768, + -0.55546711579911240975e+01, 0.81616705648568235176e+01, + -0.57987522658698500422e+01, 0.98991424160896759332e+01, + -0.92625482166082768742e+01, -0.12308822339605716145e+01, + 0.96160804965121453591e+01, -0.81310855144015192764e+01, + 0.20003387011859867783e+01, 0.77936315134648452840e+01, + -0.10829610461737235738e+02, 0.75612319041357469729e+01, + 0.50053814865826282698e+01, -0.17106326347481104477e+02, + 0.25848533271930545396e+02, -0.22502777508889934666e+02, + 0.11764229903725107462e+02, 0.50623480311155129030e+01, + -0.16378382844022826959e+02, 0.20971084284619667670e+02, + -0.14241794003509355093e+02, 0.48464488519980024606e+01, + 0.47496787279018386485e+01, -0.56385252326535013623e+01, + 0.18713630710699029613e+01, 0.62715546592955524474e+01, + -0.86136538325517619796e+01, 0.57085588051385771635e+01, + 0.52115465149464448302e+01, -0.14181445889146791828e+02, + 0.18615978418615206635e+02, -0.11069493314647397497e+02, + -0.16290435023745903909e+01, 0.16071832408983926399e+02, + -0.19947282037585484460e+02, 0.13708414190087982121e+02, + 0.33203955087265701884e+01, -0.17842755138076672239e+02, + 0.24345740082949365757e+02, -0.14381543817899608229e+02, + -0.37658995674867190573e+01, 0.23561148415670164269e+02, + -0.29637491262548646631e+02, 0.21187868286928232209e+02, + 0.12012699731444433926e+01, -0.21203303667114795417e+02, + 0.30318801543433966827e+02, -0.19000475735646610076e+02, + -0.29559487425140127392e+01, 0.25746417515623569727e+02, + -0.31035429910256869590e+02, 0.17259751439173118825e+02, + 0.12562059229134149518e+02, -0.38139838385308522106e+02, + 0.46161534817472833936e+02, -0.27788941778279674821e+02, + -0.98467575536006162196e+01, 0.41157047702574480752e+02, + -0.65973532672555720069e+02, 0.31865068652636338697e+02, + -0.33868297015870780342e+02, -0.73692692236989159937e+02, + -0.17926056317527873318e+02, -0.15318537134817549372e+03, + -0.12924169159843688703e+03, -0.17756907880286604495e+03, + -0.24812050618475706187e+03, -0.19309416672226601008e+03, + -0.18014740778883407302e+03, -0.11234155209813850718e+03, + 0.40820982693299704636e+02, 0.10463865082198049095e+03, + 0.15226012580721115341e+03, 0.16928863410136310108e+03, + 0.33393857194194813687e+01, -0.64565707089406501495e+02, + -0.13420904432243017368e+03, -0.14072630876707788161e+03, + 0.27763757984114057820e+02, 0.97597089657296322684e+02, + 0.11867747864534622693e+03, 0.58588814000777837521e+02, + -0.94056760701492564181e+02, -0.12773341180834795239e+03, + -0.32969769575858087762e+02, 0.67007021668743803389e+02, + 0.10725985028813158806e+03, 0.59404325834358537861e+02, + -0.11617362498614049571e+03, -0.95176864014280326387e+02, + 0.29374085144219311161e+02, 0.48232882896285829588e+02, + 0.12788465314844910381e+03, -0.73682044930581767517e+02, + -0.12480901913373746481e+03, 0.36315013066851854262e+02, + 0.30365859371292138746e+02, 0.10463745678715444853e+03, + -0.41681532410613741035e+02, -0.13169297072848729613e+03, + 0.37934091098638774042e+02, 0.77153276334731160091e+02, + 0.32765547567834481413e+02, -0.54364182060922381368e+02, + -0.79272254715844255202e+02, 0.33818557970382592259e+02, + 0.10988326521376932021e+03, -0.32751914099152770632e+02, + -0.99641699791966004796e+02, 0.25965768232038033858e+02, + 0.50111991044113118221e+02, 0.40758530687980780272e+02, + -0.60430323152166799616e+02, -0.76554794513346337226e+02, + 0.94314756505244218943e+02, 0.55579034593855041635e+02, + -0.89937254908509856932e+02, -0.28964311332174393243e+02, + 0.52738649733784974671e+02, 0.28819688725750385316e+02, + -0.32752414882366363003e+01, -0.91695823912853100524e+02, + 0.38953202520983950308e+02, 0.10519899751779122710e+03, + -0.98999887523517031696e+02, -0.33993077680675789054e+02, + 0.64336166062187913894e+02, 0.19214907361206815750e+02, + -0.28620730008646088294e+02, -0.45784446527074614153e+02, + 0.36133168324186776488e+02, 0.58543244288969226830e+02, + -0.58723376747366394568e+02, -0.56394280150435349697e+02, + 0.95544935101450519710e+02, 0.12934213726276714951e+02, + -0.97342599479793960882e+02, 0.34178136904096277249e+02, + 0.61426681091256703837e+02, -0.50237419210384118173e+02, + -0.93158104277258075854e+01, -0.12027625184655026391e+01, + 0.40405120602613536107e+02, 0.65982530412210786963e+01, + -0.10283638740525394439e+03, 0.10001325948422805823e+03, + 0.16727852346662622551e+02, -0.89664328679324356131e+02, + 0.26601110853286229485e+02, 0.62257391004466875017e+02, + -0.37042812156688810887e+02, -0.65433742283124402661e+02, + 0.10089646364459942163e+03, -0.33285580242293058006e+02, + -0.33265686731936050080e+02, 0.27487384048458618935e+02, + -0.37377887333555879223e+01, 0.27719501829628875100e+02, + -0.58829472552358446080e+02, 0.20783267772129921269e+02, + 0.59729270141275691230e+02, -0.74529202769226145620e+02, + -0.63274373066325546588e+01, 0.78038962319910339716e+02, + -0.41089984158658282354e+02, -0.56958226089977650020e+02, + 0.81408063819874726619e+02, 0.81832623178634396055e+01, + -0.10205404530921101980e+03, 0.83122715750100937271e+02, + 0.25196332736308093558e+02, -0.95557032936309013849e+02, + 0.58364120737721798093e+02, 0.24206375712453436222e+02, + -0.51770439888713212895e+02, 0.10199373481710672706e+02, + 0.29524028172498830713e+02, -0.15177106533536939281e+02, + -0.25817726504124131282e+02, 0.36711988268778220856e+02, + -0.87215095836394933571e+01, -0.18284848994186884141e+02, + 0.18796887876790759009e+02, -0.12311540516426111580e+02, + 0.23746166216710722807e+02, -0.38535574514046551542e+02, + 0.21642541507533945122e+02, 0.26199573324953831843e+02, + -0.57823786697882887609e+02, 0.36775066353215756010e+02, + 0.11631859732043107414e+02, -0.27027108294773032782e+02, + -0.98076021013361120993e+01, 0.48566041905377076660e+02, + -0.29766450008166504659e+02, -0.37703085700040233519e+02, + 0.80252457123247580739e+02, -0.45276888453006932878e+02, + -0.32864080164073051549e+02, 0.68858816387718277952e+02, + -0.24871127304696791782e+02, -0.44909642384469513843e+02, + 0.57820719976851449928e+02, 0.13823169654951385610e+03, + -0.18802237597784989021e+03, -0.92014043729865804266e+02, + 0.27512375332658075422e+03, -0.15414520232912744291e+03, + -0.11163145810726578588e+03, 0.22556340680920359887e+03, + -0.46705113728092094050e+02, -0.18885809871717600572e+03, + 0.18773350826084416099e+03, 0.95458056373927036020e+02, + -0.33107733603918779863e+03, 0.23729792687950703112e+03, + 0.12570122240440493044e+03, -0.35225860426682129400e+03, + 0.20732709931373051404e+03, 0.13725777436749362437e+03, + -0.24916553440933154207e+03, 0.68935050240103645791e+01, + 0.28951690576413187728e+03, -0.22992599719691710902e+03, + -0.14202581036354811772e+03, 0.40854850585589099410e+03, + -0.23283717324128093651e+03, -0.17135511217746693546e+03, + 0.34406649117874042076e+03, -0.96906580511917979948e+02, + -0.21530566143383941835e+03, 0.20631756928781814509e+03, + 0.96519220897016353433e+02, -0.26178237271366350569e+03, + 0.83145604661847798411e+02, 0.20239205918352917024e+03, + -0.20771584792910729789e+03, -0.30053054071977747697e+02, + 0.17298047590415853847e+03, -0.34569820336225170365e+02, + -0.11756727423595539506e+03, 0.28239846054493447980e+02, + 0.17929166958573722468e+03, -0.13140096954594181966e+03, + -0.15987075728102394123e+03, 0.29690142568837848103e+03, + -0.23857846740436816191e+02, -0.30074713382100230774e+03, + 0.22219219572259237339e+03, 0.17867863050719660123e+03, + -0.31544807467499362019e+03, -0.13942060206906136344e+02, + 0.35267410598613264483e+03, -0.19793413112624085670e+03, + -0.21208270189474959011e+03, 0.30592522633672672328e+03, + 0.30216473126975396113e+01, -0.18051803231291668794e+03, + -0.86429231553985097491e+01, 0.17710168980863321053e+03, + 0.42323864390836206439e+02, -0.29036747905234295786e+03, + 0.10163445826528675298e+03, 0.30009411206849074460e+03, + -0.25448076325230496764e+03, -0.19486394058603440271e+03, + 0.34984832788182598051e+03, 0.50397306630869422861e+02, + -0.33589996884591408843e+03, 0.60622958990017416170e+02, + 0.28952060855406239170e+03, -0.11642337616320158133e+03, + -0.20504081336258988699e+03, 0.74758625076677304833e+02, + 0.23672691069421040311e+03, -0.37484074203911802670e+02, + -0.39601640375934982785e+03, 0.26405990175114646945e+03, + 0.31090998349245393229e+03, -0.38155813255906463155e+03, + -0.85767321047310545623e+02, 0.20535385437649304663e+03, + 0.17595772220496326099e+03, -0.17975603170406634490e+03, + -0.27904404327771590033e+03, 0.29606321528632668105e+03, + 0.22586301234658222370e+03, -0.24959819475389002719e+03, + -0.28713366184023539063e+03, 0.30553950564225402786e+03, + 0.27460814641929084701e+03, -0.30976778231869741376e+03, + -0.16387782720460467090e+03, 0.66383126288494224809e+02, + 0.37276729680617620488e+03, -0.29254387245094491732e+02, + -0.53243829785039883973e+03, 0.17291886085598068235e+03, + 0.35161639625344656679e+03, 0.14851784869202214523e+02, + -0.25353713538590821486e+03, -0.29695173634260646622e+03, + 0.33069574593192555767e+03, 0.38248063986960880811e+03, + -0.25681027905885889595e+03, -0.37388414152813021474e+03, + 0.27067455376474036655e+02, 0.36108116052752876612e+03, + 0.26897795997543448721e+03, -0.31997367429409558781e+03, + -0.42794136744489725288e+03, 0.12475588029620428188e+03, + 0.45095357046014686375e+03, 0.19369638022082017415e+03, + -0.29069876334408121465e+03, -0.44113764821442299535e+03, + -0.70887484530926982984e+02, 0.55023692373570520431e+03, + 0.31274861725071525598e+03, -0.13929365184592211335e+03, + -0.42543550784589365321e+03, -0.46068172051468707195e+03, + 0.30926029860913968150e+03, 0.53233852198244460396e+03, + 0.29009436461720497391e+03, -0.61033265856198028132e+02, + -0.63719258462129266718e+03, -0.48803339807390727856e+03, + 0.10283153323134295931e+03, 0.36457148504987867454e+03, + 0.72432033580896734293e+03, 0.36995806029241657598e+03, + -0.27463457680887717061e+03, -0.44117009444115382166e+03, + -0.85369200098498163243e+03, -0.46388613688971270221e+03, + -0.22579537358972995520e+02, 0.31812482068787426215e+03, + 0.87560623924349454228e+03, 0.90690466494927545682e+03, + 0.96955327628858537992e+03, 0.85603487156128699098e+03, + 0.64106483653470104400e+03, 0.46902677044899240855e+03, + 0.32133627309857365617e+03, 0.19374988817539386332e+03, + 0.87676496560706638661e+02, 0.10163517021424902964e+03, + -0.16538138267835633677e+01, 0.17079020083383120721e+02, + 0.44332380631530632797e+02, -0.55054311408537415673e+02, + 0.47657289092105450834e+02, -0.60661573012486043055e+01, + -0.37007522469042093860e+02, 0.57417992884171397350e+02, + -0.40286610703674973877e+02, -0.36445592307137757437e+01, + 0.45410996758582292898e+02, -0.55132418452701166700e+02, + 0.21386863091022362937e+02, 0.39298089470971113712e+02, + -0.90658634251430385120e+02, 0.97031872962687089057e+02, + -0.45835174459274156789e+02, -0.42920465174830958688e+02, + 0.12482725855871004228e+03, -0.15479944867152127586e+03, + 0.11184155676340181174e+03, -0.12404613838755768285e+02, + -0.97060155885561727018e+02, 0.16336638541478632192e+03, + -0.15467567094721317744e+03, 0.76842839168034302588e+02, + 0.29547690785517865208e+02, -0.11112982538865219340e+03, + 0.12957422517496257797e+03, -0.81501387099818046522e+02, + -0.12263362733587159781e+01, 0.69582837139555337558e+02, + -0.84863941643585903307e+02, 0.39573102551687171058e+02, + 0.38532171150537770643e+02, -0.10221569485942055167e+03, + 0.11078673491450189204e+03, -0.53138525918087019306e+02, + -0.45456801217798265213e+02, 0.13570617307032918575e+03, + -0.17006368440856158486e+03, 0.12762382566901592895e+03, + -0.25730971647612019382e+02, -0.88414576118896675894e+02, + 0.16121421390211398261e+03, -0.15961855688424833488e+03, + 0.87228573244195970915e+02, 0.18091040081809364182e+02, + -0.10404367243403486043e+03, 0.13040171324569917033e+03, + -0.88876958059598379691e+02, 0.60291649955358206370e+01, + 0.71668636413911045224e+02, -0.10276879677016113135e+03, + 0.72494777510631152495e+02, -0.64359130067511955531e+02, + 0.18554217918515298891e+02, 0.72614310122082471821e+02, + -0.12507585638269706863e+03, 0.78240033191004258128e+02, + 0.81468520662910357544e+01, -0.11315617438667405281e+03, + 0.13957310649824938764e+03, -0.95693382108125476293e+02, + -0.34045531123208945701e+02, 0.15167437779756878058e+03, + -0.22542067847618037035e+03, 0.18044905600699718207e+03, + -0.67843951651600264086e+02, -0.89212945168112796068e+02, + 0.18059298787759129823e+03, -0.19622863540615662714e+03, + 0.10431291265501504029e+03, 0.56311316672060005573e+01, + -0.10084586064554206075e+03, 0.98772299791021012538e+02, + -0.40316655555917080278e+02, -0.60613930260582513654e+02, + 0.10170103281338022327e+03, -0.80304706582028856587e+02, + -0.27531710388806434509e+02, 0.12580133987199661760e+03, + -0.18051675059758196085e+03, 0.11703869666135639704e+03, + 0.64780467631067910617e+01, -0.15454102927542760426e+03, + 0.20804023360579014934e+03, -0.16080555430000856632e+03, + 0.16952102621069242705e+01, 0.14941101958380892256e+03, + -0.23495768406299302455e+03, 0.16899870259706125353e+03, + -0.16137070168909144030e+02, -0.16803076416270056370e+03, + 0.24264659231377422088e+03, -0.19089470246386650842e+03, + 0.82549529010355318093e+01, 0.16621877811722617935e+03, + -0.25593505833407047589e+03, 0.16933995382126920504e+03, + 0.16129117560334300663e+02, -0.22021577439650215524e+03, + 0.28114378892944876043e+03, -0.17879031596579906704e+03, + -0.70253964860152933625e+02, 0.29577141045367744709e+03, + -0.38370432985568646700e+03, 0.25169831726712808972e+03, + 0.47716780751069251210e+02, -0.30170764485667899635e+03, + 0.51765296278274195174e+03, -0.23633113966610554257e+03, + 0.28804701721215184307e+03, 0.62049703789301156576e+03, + 0.21490087531041825741e+03, 0.12793400671141994280e+04, + 0.11977190034543120873e+04, 0.15252128151954536861e+04, + 0.21925659372459217593e+04, 0.17136313814054299201e+04, + 0.15584600578972731455e+04, 0.10158179527731890630e+04, + -0.37910304753396252408e+03, -0.90947147912047694263e+03, + -0.13472687244530943644e+04, -0.14799295236917209877e+04, + -0.45795985494689908535e+02, 0.59004833172100256888e+03, + 0.11598185232795547108e+04, 0.12505830351984538993e+04, + -0.24149424128482070273e+03, -0.87681677700499892580e+03, + -0.10184158170656028233e+04, -0.53752909213103771435e+03, + 0.83340199857550419438e+03, 0.11414030580289324917e+04, + 0.25188624117708266681e+03, -0.54215463096178223168e+03, + -0.98332480313200869659e+03, -0.50841827201677176618e+03, + 0.10430399342099706246e+04, 0.78300504630316834209e+03, + -0.18304117109498875493e+03, -0.50026139594949711409e+03, + -0.10707849033569916628e+04, 0.63018711859998825275e+03, + 0.10761927764895372093e+04, -0.26566115588750471943e+03, + -0.33523129259731257434e+03, -0.85955084384973918077e+03, + 0.32922820727182516976e+03, 0.11646966877545996795e+04, + -0.31056584266446230913e+03, -0.71996284618228116869e+03, + -0.24488932855107191244e+03, 0.44614957708698665328e+03, + 0.71080386946750957122e+03, -0.29148924720340795602e+03, + -0.98660442596116411096e+03, 0.31263956476274825036e+03, + 0.85526576994195568204e+03, -0.21377475756521658923e+03, + -0.44927033550215588775e+03, -0.35362190111972398654e+03, + 0.52644385000869817759e+03, 0.68046210487411235590e+03, + -0.83599656625412342237e+03, -0.48874768169617874491e+03, + 0.80189140340257233674e+03, 0.23108771027557682487e+03, + -0.42921627119897840430e+03, -0.29237618965057544074e+03, + 0.61013134822988618566e+02, 0.79142637475936032843e+03, + -0.35024386353527967231e+03, -0.89566423702733368373e+03, + 0.82558772930423697289e+03, 0.34828115897306781790e+03, + -0.60589913383614555187e+03, -0.14860348926573956874e+03, + 0.25421208807185533374e+03, 0.38105084244791436277e+03, + -0.28532147463343170557e+03, -0.54821833361260064521e+03, + 0.54190634689046692074e+03, 0.48213964579626264140e+03, + -0.83504685268013236055e+03, -0.11794347885856220159e+03, + 0.86632086689415473302e+03, -0.31993650224972651586e+03, + -0.51421518277296479482e+03, 0.41722373646491399768e+03, + 0.92653015312908962642e+02, 0.26337725615010860736e+02, + -0.40467290913453405210e+03, 0.22207239208054819102e+02, + 0.80569360050659713579e+03, -0.78182445731822895141e+03, + -0.22191923388639574455e+03, 0.82114798726707249443e+03, + -0.21385208150337166444e+03, -0.61784057853633487412e+03, + 0.43104926338561665489e+03, 0.45835972639203401968e+03, + -0.78276763775836298009e+03, 0.22015218462675281330e+03, + 0.32276394341534751220e+03, -0.23059499454771719229e+03, + -0.80759881942767748342e+01, -0.19089919258494992960e+03, + 0.47031300657516720776e+03, -0.15372152944085269155e+03, + -0.53249544400769195818e+03, 0.64506935316653004975e+03, + 0.73273485720373813024e+02, -0.69853233107087964981e+03, + 0.35783917029647892605e+03, 0.52391031781160779701e+03, + -0.75404733179137883781e+03, -0.29171256990369748507e+02, + 0.86207752526086608214e+03, -0.71240627750064777501e+03, + -0.21931575711917554372e+03, 0.81947457819458429640e+03, + -0.48187436091400496707e+03, -0.24313169013003857799e+03, + 0.47298618358507383164e+03, -0.88071513722959181791e+02, + -0.27999696692224767958e+03, 0.16462256147699343956e+03, + 0.19755788463556848455e+03, -0.30798354573579666749e+03, + 0.85847161810167861518e+02, 0.12478228422479658377e+03, + -0.10754780605684450734e+03, 0.40992079428111871664e+02, + -0.14816629278807062065e+03, 0.30024122237057531493e+03, + -0.18400271096987594888e+03, -0.20192574718794824662e+03, + 0.45100291910790662087e+03, -0.24937227465329962683e+03, + -0.17672151832793258563e+03, 0.29677350091175884472e+03, + 0.53715215754868800957e+02, -0.42506050543290325550e+03, + 0.28646009417100799510e+03, 0.28955837868734414542e+03, + -0.65805474005724852304e+03, 0.35527686091715276007e+03, + 0.32006393140749315762e+03, -0.62230236148768835847e+03, + 0.22322384626941882857e+03, 0.39736982088185163775e+03, + -0.51172412702451055111e+03, -0.85332026226930065604e+03, + 0.13063469603761438975e+04, 0.45831707971449708339e+03, + -0.17621473265093018199e+04, 0.10974081276364695441e+04, + 0.65178269502500359067e+03, -0.15357355564721788141e+04, + 0.45132908925662712818e+03, 0.11788904709220000768e+04, + -0.13730382799349804372e+04, -0.36226666274059925854e+03, + 0.19710414389363986629e+04, -0.15371026266940555161e+04, + -0.71316817184394915330e+03, 0.21904910125598084960e+04, + -0.12948321189834971392e+04, -0.95617553700369830949e+03, + 0.17413686128910314892e+04, -0.19875583013982728176e+03, + -0.17802906700942462521e+04, 0.14982886427249907229e+04, + 0.81377558283664984629e+03, -0.24866616129861795343e+04, + 0.13416704106679769666e+04, 0.12146019139190686928e+04, + -0.22188464484163096131e+04, 0.51578308999975479310e+03, + 0.14990841867611579801e+04, -0.13366956718208741677e+04, + -0.70385600549568209772e+03, 0.17085739542890867142e+04, + -0.41190671534200083670e+03, -0.14659244418370583389e+04, + 0.13285576083636990461e+04, 0.40958826776515377333e+03, + -0.13257486679817473032e+04, 0.19124464108717029376e+03, + 0.99656210068457107809e+03, -0.36477627472623203175e+03, + -0.12161781519610678970e+04, 0.10375375308719749228e+04, + 0.94717024569129989686e+03, -0.20093791293612337086e+04, + 0.27024671679330776897e+03, 0.19360652854774803018e+04, + -0.15022819859436331171e+04, -0.11259816824123358856e+04, + 0.20477548123679910077e+04, 0.10355976799422155921e+03, + -0.22972628785735723795e+04, 0.12122110562164268686e+04, + 0.14822548309802048152e+04, -0.19590947570470295886e+04, + -0.23702049439440210676e+03, 0.13758724803425834580e+04, + 0.91770045930236776144e+02, -0.13727187548597094064e+04, + -0.14624019372132812578e+03, 0.19762576659095614104e+04, + -0.80832123455263956657e+03, -0.19317631585197507320e+04, + 0.17239812584010098817e+04, 0.12248167899171621684e+04, + -0.22382071903870323695e+04, -0.43960118883674925883e+03, + 0.22812242978958897766e+04, -0.33317136592134363582e+03, + -0.20242811098339784621e+04, 0.73905068022487409962e+03, + 0.15136532777687330054e+04, -0.55257728952508728071e+03, + -0.17344517110611734552e+04, 0.48999581893977301661e+03, + 0.24940185250084823565e+04, -0.17465927656546418802e+04, + -0.19863987002300948461e+04, 0.23406881656277264483e+04, + 0.83775657780885148895e+03, -0.15055635977761712638e+04, + -0.12817560852400092699e+04, 0.13996904096253708758e+04, + 0.17611320104683577483e+04, -0.19462926336090213226e+04, + -0.15875561641522656373e+04, 0.17602171742678312967e+04, + 0.18915443958543582994e+04, -0.20380766686910869794e+04, + -0.18389832773563327919e+04, 0.19395562928615954661e+04, + 0.13946663393171627376e+04, -0.68217876341593148481e+03, + -0.25015159992150438484e+04, 0.35777858110294425842e+03, + 0.33624439263408348779e+04, -0.91907764519856596053e+03, + -0.25251261558265905478e+04, -0.17186999000266089865e+03, + 0.19152292892964496787e+04, 0.18770343612350798139e+04, + -0.22117423937263606604e+04, -0.25787087368125103239e+04, + 0.16930120322669988582e+04, 0.25715473997662620604e+04, + -0.10512699408811668889e+03, -0.26001013566351662121e+04, + -0.17567756785564627080e+04, 0.21968765107494850781e+04, + 0.28506277636650229397e+04, -0.75172301832198616012e+03, + -0.31539986887140826184e+04, -0.13228779001768016315e+04, + 0.20009342609927091416e+04, 0.30685447554812558337e+04, + 0.36197789705477987354e+03, -0.36069822463040745788e+04, + -0.22636595734263000850e+04, 0.94451631472976748682e+03, + 0.30750636103393298981e+04, 0.29201465072770106417e+04, + -0.19147413673579123952e+04, -0.37313826370049318939e+04, + -0.20460435905918557182e+04, 0.53927054749636101860e+03, + 0.42970303115639726457e+04, 0.32924819613733679944e+04, + -0.53431648875906910234e+03, -0.26929766955892209808e+04, + -0.48764741027392801698e+04, -0.24435431747569450636e+04, + 0.16175362543956125592e+04, 0.33646253244571689720e+04, + 0.55724924355279081283e+04, 0.33071529469587990206e+04, + 0.20212130067817503232e+03, -0.23454030703257885762e+04, + -0.58135003515691705616e+04, -0.63654314111997582586e+04, + -0.65672803943970729961e+04, -0.59077760993345291354e+04, + -0.43668902265209171674e+04, -0.32513426406764315288e+04, + -0.21771745090280915065e+04, -0.13175252903627344949e+04, + -0.66315683859811690581e+03, -0.60421243456673869332e+03, + -0.64999804072113477105e+02, -0.10365414034994176973e+03, + -0.24008898052933335521e+03, 0.26603044073917766354e+03, + -0.22662396223205888646e+03, 0.56676975339255033504e+01, + 0.21025498014823298831e+03, -0.30222855424286882453e+03, + 0.19354711538223065759e+03, 0.54211156605072879699e+02, + -0.28509477763125096317e+03, 0.33919595105499485044e+03, + -0.15526006358917308603e+03, -0.17912531183999215045e+03, + 0.47088531468554185722e+03, -0.52841121106191667423e+03, + 0.28057568116428205940e+03, 0.17249020078902009345e+03, + -0.60103849808634129204e+03, 0.76946025868787239688e+03, + -0.56561693422970665779e+03, 0.71397463059916006500e+02, + 0.47561067097290134598e+03, -0.80258895645306074584e+03, + 0.74752946481569586012e+03, -0.34362069922277021305e+03, + -0.19669594578182892519e+03, 0.59689629163650226928e+03, + -0.66135599660453885917e+03, 0.37878547254227703434e+03, + 0.77699568570777017840e+02, -0.44640828601514664342e+03, + 0.52220552397020605895e+03, -0.26628868721470246328e+03, + -0.17256235818691834538e+03, 0.54141521073086823890e+03, + -0.62048770108057374273e+03, 0.34526998254204733030e+03, + 0.15673202919473908423e+03, -0.62967716548470752969e+03, + 0.82403420371741844974e+03, -0.62704106022972030132e+03, + 0.12432151315293998550e+03, 0.44305604294076215410e+03, + -0.80010236783143852790e+03, 0.77797039827592345773e+03, + -0.39741248032516813282e+03, -0.14396291411560736151e+03, + 0.57536482151037580479e+03, -0.69082351866510566651e+03, + 0.45222946054746063282e+03, -0.33554816660576634035e+01, + -0.40934857012013191024e+03, 0.56803800655282338994e+03, + -0.39694623104812654901e+03, 0.22724546343219191158e+03, + 0.92105418396912014600e+02, -0.49344233991322568045e+03, + 0.65749090826477606697e+03, -0.35022056456570919636e+03, + -0.12404897795034483465e+03, 0.63220680623466148518e+03, + -0.73747573609310256870e+03, 0.49021918077182743900e+03, + 0.13864544053096173570e+03, -0.68660043458106542857e+03, + 0.99514192571294256595e+03, -0.75005708512522846831e+03, + 0.20446920143365974809e+03, 0.50162551866513643972e+03, + -0.86818784480445219742e+03, 0.85479803770833893850e+03, + -0.35570468206427807445e+03, -0.19859030019023390423e+03, + 0.62997341836650252844e+03, -0.57168188531139958286e+03, + 0.22007245657966592489e+03, 0.32272658283069262097e+03, + -0.57141213663414896473e+03, 0.48787411789425431152e+03, + 0.28296053269921898732e+02, -0.53391417734549838769e+03, + 0.84076071949985134779e+03, -0.59350331673127459453e+03, + 0.32093409697205558473e+02, 0.67358013536145961098e+03, + -0.97516200041490151307e+03, 0.80956600219814902175e+03, + -0.10875199952995261299e+03, -0.60557369943554056135e+03, + 0.10574208941800241064e+04, -0.83962505189798707761e+03, + 0.20171064247561008642e+03, 0.62381021073730846638e+03, + -0.10129834724757724871e+04, 0.86026842177727098715e+03, + -0.11362830574972258546e+03, -0.64479863633992533778e+03, + 0.10778051045677852926e+04, -0.76371134540711534555e+03, + 0.17107265380704155255e+01, 0.88633227418420676713e+03, + -0.12048849234785334374e+04, 0.84359055300115733189e+03, + 0.16427442397225931359e+03, -0.11211660595300095338e+04, + 0.15514848166674360073e+04, -0.10873132689504466271e+04, + -0.81969729847637623266e+02, 0.10886759428239693079e+04, + -0.19970439183152766418e+04, 0.84851186563675219077e+03, + -0.11818510852337985853e+04, -0.25842605241694063807e+04, + -0.10953709001396623535e+04, -0.52679669347912022204e+04, + -0.53216723320337096084e+04, -0.64235008149979121299e+04, + -0.94174937423897808912e+04, -0.73979644962458905866e+04, + -0.65893594266038917340e+04, -0.44379715896999186953e+04, + 0.16789088247201229933e+04, 0.38756665912724834016e+04, + 0.57822683473138522459e+04, 0.63242179165996649317e+04, + 0.23967061533525145478e+03, -0.25922803290467022634e+04, + -0.49102442523174022426e+04, -0.53854662834988166651e+04, + 0.10037926186082612503e+04, 0.38466619013508779972e+04, + 0.42445579760255641304e+04, 0.24101964775908882075e+04, + -0.36179173719568684646e+04, -0.49334982355810652734e+04, + -0.95416052241957083879e+03, 0.21536858445546986331e+04, + 0.43679670684916327446e+04, 0.21025433684560407528e+04, + -0.45086167472584493225e+04, -0.32032938473711701590e+04, + 0.55985930815131416693e+03, 0.23721852466770073988e+04, + 0.44299694519836384643e+04, -0.26615697430739373885e+04, + -0.45193266159041895662e+04, 0.94423813416600842174e+03, + 0.16707486984837614727e+04, 0.34817480277362551533e+04, + -0.12978300332547023572e+04, -0.49906015388148689453e+04, + 0.12288726401381350115e+04, 0.32463702173673223115e+04, + 0.88567438612782370910e+03, -0.17933515630859533303e+04, + -0.30933683502673011390e+04, 0.12259618380878193875e+04, + 0.42988491072807455566e+04, -0.14245444240428942067e+04, + -0.35949221825298168369e+04, 0.87408971576777037171e+03, + 0.19419596543146644763e+04, 0.15108775977695333950e+04, + -0.22480001250664213330e+04, -0.29348117610100030106e+04, + 0.36060612070615511584e+04, 0.20834093315819386589e+04, + -0.34561726270074395870e+04, -0.92898484638442391770e+03, + 0.17411069722782578992e+04, 0.13667163555473809993e+04, + -0.35715600791390596669e+03, -0.33468719007013164628e+04, + 0.15271030417679121456e+04, 0.37429508235199059527e+04, + -0.33967180020386558681e+04, -0.16407379704588856839e+04, + 0.27101614070693294707e+04, 0.58774954037499446713e+03, + -0.11121919445727121456e+04, -0.15544942328817796806e+04, + 0.11215918577422301041e+04, 0.24365514260417589867e+04, + -0.23686850010494918024e+04, -0.20666605873160524425e+04, + 0.36092771401406575933e+04, 0.47680366881715428917e+03, + -0.37192182966286554802e+04, 0.14326197093228397534e+04, + 0.20917863882600991019e+04, -0.16557894894347386980e+04, + -0.50160915363618187257e+03, -0.85580848693595598320e+02, + 0.18172491182489502535e+04, -0.29023007257521396696e+03, + -0.31792053031188979730e+04, 0.30604562364207690734e+04, + 0.11840512598917437117e+04, -0.36309872479573355122e+04, + 0.87303323690517856903e+03, 0.28401480044704844659e+04, + -0.21419348670985909848e+04, -0.16404727926123337056e+04, + 0.30803889209887711331e+04, -0.78080107686678206846e+03, + -0.14057760094329578351e+04, 0.88222723105877003036e+03, + 0.22351518569058839603e+03, 0.61064036040819223672e+03, + -0.18515098521269871981e+04, 0.57955533039598412870e+03, + 0.22668609778858099162e+04, -0.26768957150827900477e+04, + -0.42988292150325588636e+03, 0.30880646348517043407e+04, + -0.15682575673475230360e+04, -0.22843658706584938045e+04, + 0.33308250051269528740e+04, 0.12129505360455561380e+01, + -0.35903432947438031988e+04, 0.30057750556085698008e+04, + 0.91317447779510985129e+03, -0.34196540081207540425e+04, + 0.19388530812403714663e+04, 0.11583531100213642731e+04, + -0.20919486533461604267e+04, 0.36601988604314072973e+03, + 0.12872863061169537104e+04, -0.84227445612375151995e+03, + -0.70481042238622023888e+03, 0.12216598667372682030e+04, + -0.35079837780131401814e+03, -0.45626292487199862080e+03, + 0.30070167198435524369e+03, 0.27441610435033009452e+02, + 0.44193756216441738616e+03, -0.11556557118831337903e+04, + 0.75571896079386624479e+03, 0.78968757375601762760e+03, + -0.17666306620498407938e+04, 0.85306314274958560873e+03, + 0.97022544523991155074e+03, -0.14328128293782688161e+04, + -0.15409835170439467333e+03, 0.18394550371223260754e+04, + -0.13238729638478109791e+04, -0.10998932498892531839e+04, + 0.26749168626289342683e+04, -0.14085068421462106016e+04, + -0.14339331700187453862e+04, 0.26758760080291613122e+04, + -0.92782357851737060628e+03, -0.17441268597369178224e+04, + 0.22213535009258953323e+04, 0.27789993594647785358e+04, + -0.47616429472198969961e+04, -0.11250519438690944298e+04, + 0.59799610382568534988e+04, -0.40875738186094072262e+04, + -0.20016662062939412863e+04, 0.55117752979911401781e+04, + -0.20445745562703241376e+04, -0.38638987410507152163e+04, + 0.51547324547627349602e+04, 0.50194428868595497306e+03, + -0.62969924732655354092e+04, 0.53552334827751483317e+04, + 0.20759414983004849091e+04, -0.72283184122990378455e+04, + 0.43495363202499947874e+04, 0.33899133220253424952e+04, + -0.62521602907252581645e+04, 0.10441363191255295533e+04, + 0.59111696184721586178e+04, -0.52298482170635325019e+04, + -0.24505090536714410518e+04, 0.80748997217820369769e+04, + -0.41623871764120131047e+04, -0.43962132803610911651e+04, + 0.74847439021389382106e+04, -0.13430842354708436233e+04, + -0.55029231044944863243e+04, 0.45650932626664316558e+04, + 0.27250603147982046721e+04, -0.59731206744832297773e+04, + 0.10644249016864446276e+04, 0.54942872355816734853e+04, + -0.44960735992012141651e+04, -0.20834160447220497190e+04, + 0.51812055920438651810e+04, -0.51729514978691224769e+03, + -0.42003260286949334841e+04, 0.18381957219795945093e+04, + 0.43759111251915410321e+04, -0.42037680585276575584e+04, + -0.29218409407358390126e+04, 0.71432743305804033298e+04, + -0.12919012121897742418e+04, -0.65890100008109038754e+04, + 0.53198710356246638185e+04, 0.38159670668728458622e+04, + -0.70949012644323120185e+04, -0.35931096963464267446e+03, + 0.79091941095584170398e+04, -0.39415010314351202396e+04, + -0.54128974249495840922e+04, 0.66196802068662864258e+04, + 0.15400831061377209608e+04, -0.53938395605264076949e+04, + -0.45217961815141484294e+03, 0.54850262100200925488e+04, + 0.31457382060825331394e+02, -0.70373651647806573237e+04, + 0.32250336721072408181e+04, 0.65927996062310958223e+04, + -0.61254829026854486074e+04, -0.41522033224301403607e+04, + 0.76824109633338266576e+04, 0.17802275823664015206e+04, + -0.80915631697914432152e+04, 0.90370556258033309405e+03, + 0.74371318162306988597e+04, -0.24581712780361381192e+04, + -0.58511221515856750557e+04, 0.21837587862914151629e+04, + 0.65450193894176181857e+04, -0.24462955552191801871e+04, + -0.83335130111798116559e+04, 0.60864650836197060926e+04, + 0.67720194490311932896e+04, -0.76564187260154012620e+04, + -0.37561350163769661776e+04, 0.57310153392407364663e+04, + 0.48269621250318241437e+04, -0.55016642608520569411e+04, + -0.59775478649828883135e+04, 0.68576446112551593615e+04, + 0.57830111844177299645e+04, -0.64700316275637260333e+04, + -0.65872139627976084739e+04, 0.71376226616028980061e+04, + 0.65842082298271361651e+04, -0.65303460421832251086e+04, + -0.57820164300815440583e+04, 0.31017166841752537039e+04, + 0.88828802776337943214e+04, -0.17471656055123564784e+04, + -0.11319655807258275672e+05, 0.25820751365284190797e+04, + 0.93904252364907260926e+04, 0.88991751008613289287e+03, + -0.74746046715958609639e+04, -0.63170387980412706384e+04, + 0.78833407764446610599e+04, 0.90793332054084512492e+04, + -0.57939604358670667352e+04, -0.94158529854075241019e+04, + 0.21544236658255726979e+03, 0.97245519823548929708e+04, + 0.60759037639346615833e+04, -0.78981767237005797142e+04, + -0.10117005481746804435e+05, 0.25009270420436437234e+04, + 0.11464029787896495691e+05, 0.48729610240040210556e+04, + -0.73485351564319935278e+04, -0.11133971148886897936e+05, + -0.98359052167669426581e+03, 0.12546370445448681494e+05, + 0.85384291879779684677e+04, -0.34082377096706336488e+04, + -0.11526205409606269313e+05, -0.99049162354592572228e+04, + 0.64007743085878328202e+04, 0.13587842806414853840e+05, + 0.77038452689147961792e+04, -0.24502742246860107116e+04, + -0.15187372951465191363e+05, -0.11790895516029388091e+05, + 0.14181245328317729673e+04, 0.10367071512651848025e+05, + 0.17219605952759146021e+05, 0.87031816987810252613e+04, + -0.52244413947092089074e+04, -0.12986750402712912546e+05, + -0.19441853861381376191e+05, -0.12195224619718834219e+05, + -0.94437324632953527725e+03, 0.89707020961501966667e+04, + 0.20476177669477285235e+05, 0.23317509677528374596e+05, + 0.23614320300651259458e+05, 0.21296561185359441879e+05, + 0.15816854584133403478e+05, 0.11745356571148493458e+05, + 0.78438814851478909986e+04, 0.47014502559813881817e+04, + 0.25761861844907539307e+04, 0.19227513199929542225e+04, + 0.44257539943775600477e+03, 0.34774151174950020504e+03, + 0.67435543653986894697e+03, -0.63888334637305354136e+03, + 0.53987303792255636381e+03, 0.65055618507513727877e+02, + -0.61832299657828798445e+03, 0.83048585646699780227e+03, + -0.49605045197455672223e+03, -0.20692873517954581075e+03, + 0.85311384667443974195e+03, -0.10078477218993256201e+04, + 0.50420726843202561440e+03, 0.42226800572589746707e+03, + -0.12499134988606824663e+04, 0.14570090948079393911e+04, + -0.84208958218031773413e+03, -0.33861639220523159111e+03, + 0.14791942356129493419e+04, -0.19530221372290750423e+04, + 0.14565885241375676742e+04, -0.19901423507474149233e+03, + -0.11987905350866706158e+04, 0.20221944151924433299e+04, + -0.18500208192958602922e+04, 0.77672770334229687705e+03, + 0.63099778919942730226e+03, -0.16419518197421573404e+04, + 0.17453875418328934757e+04, -0.92504271309585556082e+03, + -0.34393472431230020447e+03, 0.13529450504369067403e+04, + -0.15495729438323821796e+04, 0.83109392492216102255e+03, + 0.39865412892269057465e+03, -0.14535419080932388169e+04, + 0.17333662779480805511e+04, -0.10527080466661407172e+04, + -0.25864872630260765618e+03, 0.15232083195614920896e+04, + -0.20741820964502790048e+04, 0.16035175081067966403e+04, + -0.32805490147688510660e+03, -0.11227470656622783736e+04, + 0.20278694059064271187e+04, -0.19458931698475605572e+04, + 0.93562413539798842521e+03, 0.47832747789096436009e+03, + -0.15815031228255916176e+04, 0.18357162684701402213e+04, + -0.11514704683909772029e+04, -0.77395388262729085227e+02, + 0.11870876932415453666e+04, -0.15953921190090015898e+04, + 0.11044268835037653389e+04, -0.46314530856188719099e+03, + -0.50374924468998005977e+03, 0.14746438136396100163e+04, + -0.17557191825356458139e+04, 0.85337358012165077525e+03, + 0.43561578956054648870e+03, -0.17188761209045549094e+04, + 0.19460040406048728983e+04, -0.12607545391843764264e+04, + -0.33280589516324317856e+03, 0.16835357990541117488e+04, + -0.23823759261471477657e+04, 0.17152274828043491652e+04, + -0.33304359498415175267e+03, -0.13631271210271411292e+04, + 0.21641402519405751264e+04, -0.19833364573153494348e+04, + 0.63597141144174042893e+03, 0.79210854969723663999e+03, + -0.18178182398711476253e+04, 0.15707144578952595566e+04, + -0.54901982593597938376e+03, -0.92579329383757533378e+03, + 0.16387751346455536350e+04, -0.14495702728033234052e+04, + 0.13166599138032060523e+03, 0.12255767938419915026e+04, + -0.21004665972662137392e+04, 0.15981479704421449242e+04, + -0.25168679608679059356e+03, -0.15142812914540663769e+04, + 0.23589800624006006728e+04, -0.20643045932463401186e+04, + 0.43047298356681397991e+03, 0.13248293069275039215e+04, + -0.25110538332075061589e+04, 0.21151680793388468373e+04, + -0.66382742405530689211e+03, -0.13154610855658536366e+04, + 0.23409081358058801925e+04, -0.21053038017581725398e+04, + 0.42756200526097273951e+03, 0.13695867903151720384e+04, + -0.24854216645942433388e+04, 0.18844082450224593686e+04, + -0.19222579844609251154e+03, -0.18911864679730754233e+04, + 0.27526036272392452702e+04, -0.20874228413190144238e+04, + -0.10521280084527005272e+03, 0.22792555071192582545e+04, + -0.33649786692662792120e+04, 0.24848884892824876260e+04, + -0.78890562069020777614e+01, -0.21484831670446342287e+04, + 0.41982157971049200569e+04, -0.16366457930464302990e+04, + 0.26068650187605408064e+04, 0.58623875154607967488e+04, + 0.28266965537031856002e+04, 0.11802483742235292084e+05, + 0.12624598245826531638e+05, 0.14656858842810495844e+05, + 0.21786793470473847265e+05, 0.17206512592564864462e+05, + 0.15062840138129082334e+05, 0.10402245842270102003e+05, + -0.39612541966373246396e+04, -0.89394867822501182673e+04, + -0.13357300240552025571e+05, -0.14597001771597726474e+05, + -0.62788232624365900847e+03, 0.61089620194182762134e+04, + 0.11234021645634307788e+05, 0.12492032682307490177e+05, + -0.22506244323405439900e+04, -0.90771819932877951942e+04, + -0.95565815826461748657e+04, -0.58000132964180647832e+04, + 0.84732366305521172762e+04, 0.11466049275245997705e+05, + 0.19693361849386333233e+04, -0.46431969185224961620e+04, + -0.10410727451690690941e+05, -0.46818486549228091462e+04, + 0.10456871745373302474e+05, 0.71490326346695328539e+04, + -0.89888132888280949828e+03, -0.58901867037561842153e+04, + -0.99546606794592007645e+04, 0.60876529694703958739e+04, + 0.10265466386447325931e+05, -0.18194711415283366023e+04, + -0.42905186925035959575e+04, -0.76863560200748806892e+04, + 0.28133479185344299367e+04, 0.11501792847364609770e+05, + -0.26195877630107852383e+04, -0.78262749232764172120e+04, + -0.17292367979759699210e+04, 0.39248119011603112085e+04, + 0.72231128346411023813e+04, -0.27690296628013852569e+04, + -0.10087812004113706280e+05, 0.34646093727111051521e+04, + 0.81735787027167771157e+04, -0.19508662011632095528e+04, + -0.44999353474774879942e+04, -0.35064291611123649091e+04, + 0.52010410893553571441e+04, 0.68044439932990771922e+04, + -0.83763203090477054502e+04, -0.47825941779905615476e+04, + 0.80019741072797414745e+04, 0.20609717514451199349e+04, + -0.38706729397759731910e+04, -0.33433129462919491743e+04, + 0.98339243015647423363e+03, 0.76615703998558028616e+04, + -0.35761785209241556913e+04, -0.84872016745312757848e+04, + 0.76146444470761425691e+04, 0.40283424615023154729e+04, + -0.64281003054625198274e+04, -0.13143641403246581376e+04, + 0.26524838927045307173e+04, 0.34231894699359750120e+04, + -0.24050985214422380523e+04, -0.57629993498033163632e+04, + 0.55021421818640219499e+04, 0.48564362227072197129e+04, + -0.84873063218681036233e+04, -0.96486111811351054257e+03, + 0.85440209260077517683e+04, -0.33941946714083055667e+04, + -0.46184198403078962656e+04, 0.35346615839194960245e+04, + 0.14309737995525604219e+04, 0.50033596380625517952e+02, + -0.42513471901965349389e+04, 0.93817088273573290280e+03, + 0.69157519359383441042e+04, -0.65862926907266728449e+04, + -0.31438158123710300060e+04, 0.86000334015919452213e+04, + -0.19614164141803412349e+04, -0.68761550332456927208e+04, + 0.54356621824242720322e+04, 0.32643920021107751381e+04, + -0.66926522613071656451e+04, 0.15875363149971865369e+04, + 0.32108894812104299490e+04, -0.17761697110801960662e+04, + -0.91117190089541998077e+03, -0.10101669691239218309e+04, + 0.39886583715523120190e+04, -0.12341644085933885435e+04, + -0.51485658534518579472e+04, 0.59522881873770547827e+04, + 0.12775524503124861440e+04, -0.73679172645446706156e+04, + 0.37247165311800413292e+04, 0.53375497310625833052e+04, + -0.78858935484117882879e+04, 0.24163259854054413722e+03, + 0.80878040268435670441e+04, -0.68489633324806418386e+04, + -0.20588011453852868726e+04, 0.77170881208823666384e+04, + -0.42226419240435961910e+04, -0.29193656067486235770e+04, + 0.49759739132948661791e+04, -0.83307292174223755410e+03, + -0.31456186324937439167e+04, 0.22265571628179131949e+04, + 0.13246329984694627910e+04, -0.25908563399042541278e+04, + 0.72649102008149338872e+03, 0.95683039631174040096e+03, + -0.43600194688766794116e+03, -0.41503693448705195124e+03, + -0.67403713505901441749e+03, 0.24242539889661884445e+04, + -0.16690150738325526163e+04, -0.17129467090224773074e+04, + 0.38129529211679673608e+04, -0.16179755433227276171e+04, + -0.25854408997287091552e+04, 0.35572102376021248347e+04, + 0.26314560438634350703e+03, -0.43214326056564859755e+04, + 0.32580892919228049323e+04, 0.22823975408968863121e+04, + -0.59388620523033441714e+04, 0.30925340247814292525e+04, + 0.33636343529150749418e+04, -0.61274480189119567513e+04, + 0.20214562212606340381e+04, 0.41611704591400930440e+04, + -0.52157709377891924305e+04, -0.51191914752288221280e+04, + 0.97853440484218899655e+04, 0.13360919650643802470e+04, + -0.11479001997241728532e+05, 0.85246794501466793008e+04, + 0.34639334933459535932e+04, -0.11161428172362873738e+05, + 0.48933634070536645595e+04, 0.71517334828657722028e+04, + -0.10778094368243824647e+05, 0.29546577625797732480e+03, + 0.11491004635410663468e+05, -0.10650404870748287067e+05, + -0.33107916632520245912e+04, 0.13545559977639160934e+05, + -0.83713864818738893518e+04, -0.66535820664260227204e+04, + 0.12499399457660658300e+05, -0.25338269945017591454e+04, + -0.11252422103979910389e+05, 0.10382027748216316468e+05, + 0.41723889525054119076e+04, -0.14971820266143706249e+05, + 0.74391506099981070292e+04, 0.88050700808414967469e+04, + -0.14182742712991834196e+05, 0.17462220619697689017e+04, + 0.11375260448584585902e+05, -0.87883860490191673307e+04, + -0.59631897301160579445e+04, 0.11926888476091195116e+05, + -0.15188000117402748401e+04, -0.11489065079820615210e+05, + 0.86284509071931515791e+04, 0.52557088954763685251e+04, + -0.11172524382364532357e+05, 0.68566802757067591756e+03, + 0.96450448907533391321e+04, -0.46560087773161485529e+04, + -0.89204888149211674317e+04, 0.94256587630120284302e+04, + 0.50010866779895604850e+04, -0.14281698407197711276e+05, + 0.31438117067372445490e+04, 0.12715140961425517162e+05, + -0.10613244852264428118e+05, -0.73950645243263925295e+04, + 0.13990843926974077476e+05, 0.65294054591998076376e+03, + -0.15404862282142588811e+05, 0.72689258045646383835e+04, + 0.11100819860979545410e+05, -0.12650593215600256372e+05, + -0.43568109253836501011e+04, 0.11728215849767617328e+05, + 0.11612763794634497572e+04, -0.12148901743304213596e+05, + 0.87457020619335582978e+03, 0.14092281419410077433e+05, + -0.70645040514699121559e+04, -0.12749942093294077495e+05, + 0.12242672995063385315e+05, 0.80811209434236097877e+04, + -0.15067117481514358587e+05, -0.38443951465072432256e+04, + 0.16135429847258412337e+05, -0.12820733894991747093e+04, + -0.15343009191032793751e+05, 0.45607494057664553111e+04, + 0.12698818512906356773e+05, -0.48940962321478718877e+04, + -0.13723662468744094440e+05, 0.61119801236457287814e+04, + 0.15790423759331111796e+05, -0.11950667621715329005e+05, + -0.13184627782051635222e+05, 0.14305650498869788862e+05, + 0.88396528781196302589e+04, -0.12141817240364880490e+05, + -0.10163039078274681742e+05, 0.11918067647744914211e+05, + 0.11608689270030696207e+05, -0.13781805226548707651e+05, + -0.11766227417216183312e+05, 0.13318160784690273431e+05, + 0.12987937863278668374e+05, -0.14088589712704384510e+05, + -0.13411641450620589239e+05, 0.12593463548075722429e+05, + 0.12963527393717764426e+05, -0.73547376974718317797e+04, + -0.17847003413742262637e+05, 0.43126324734526378961e+04, + 0.21706501624127613468e+05, -0.40941671364741168873e+04, + -0.19471547047583109816e+05, -0.23828103011160333153e+04, + 0.16249103773779239418e+05, 0.12064631053402101315e+05, + -0.15936732358200028102e+05, -0.17973363580093991914e+05, + 0.11107200755855792522e+05, 0.19532749208800527413e+05, + -0.26016215731209678097e+03, -0.20321362613173616410e+05, + -0.11922241087305068504e+05, 0.15991546330305029187e+05, + 0.20363113155509479839e+05, -0.48155676553736066126e+04, + -0.23368835124923771218e+05, -0.10194652030014916818e+05, + 0.15271403972578240428e+05, 0.22689714778773577564e+05, + 0.14949306721100956565e+04, -0.24750164716072849842e+05, + -0.18006885962942429614e+05, 0.69432798026923437646e+04, + 0.24173602354570859461e+05, 0.19117152478424803121e+05, + -0.12233598867587694258e+05, -0.27744190945564725553e+05, + -0.16380419688432884868e+05, 0.60125936876544810730e+04, + 0.30223293850097612449e+05, 0.23928357453645181522e+05, + -0.20285776256294966515e+04, -0.22267253127635391138e+05, + -0.34281272671706072288e+05, -0.17673579609089527366e+05, + 0.97597329152323782182e+04, 0.27702576385394957470e+05, + 0.38580008101858540613e+05, 0.25150629941001712723e+05, + 0.23490994941202111477e+04, -0.19115331378797178331e+05, + -0.40892305469708553574e+05, -0.47913329613079426053e+05, + -0.48080229611046001082e+05, -0.43144012377526400087e+05, + -0.32413509871967336949e+05, -0.23858772536919164850e+05, + -0.15948128900050844095e+05, -0.95209020246808049706e+04, + -0.54840689810999429028e+04, -0.35510152385211526962e+04, + -0.11913099254167195795e+04, -0.70101501948764030203e+03, + -0.10397374665478530460e+04, 0.78064394172841764430e+03, + -0.67928607328440705260e+03, -0.21206220661215857604e+03, + 0.96220242181557000549e+03, -0.12220703139793595255e+04, + 0.68887127581041681879e+03, 0.36363726051243492066e+03, + -0.13216252161253244140e+04, 0.15577467048501775935e+04, + -0.83064362482621004347e+03, -0.52356872354882636955e+03, + 0.17570127322921177893e+04, -0.21167130557869595577e+04, + 0.13025258968741452463e+04, 0.33559942022453537902e+03, + -0.19469528962975548438e+04, 0.26454405893060679773e+04, + -0.19957000430141229117e+04, 0.28359269939438127039e+03, + 0.16253391986636636375e+04, -0.27330375711063793460e+04, + 0.24554134438108849281e+04, -0.93388265470092801479e+03, + -0.10271856569221317841e+04, 0.23977355758024932584e+04, + -0.24659689633163907274e+04, 0.12249736324469904503e+04, + 0.63559204015392242582e+03, -0.20980849251943614036e+04, + 0.23726605636157241861e+04, -0.13143465080666571794e+04, + -0.49595848197214746733e+03, 0.20717360458108109924e+04, + -0.25454122412860924669e+04, 0.16385878016176025085e+04, + 0.19275997517297983563e+03, -0.19930194330599149453e+04, + 0.28146003938006538192e+04, -0.22116462208934458431e+04, + 0.47796205816274618883e+03, 0.15095838315003170464e+04, + -0.27427486711395308703e+04, 0.26055666073361066992e+04, + -0.11849373482947303273e+04, -0.77861099128798980473e+03, + 0.22816365508841790870e+04, -0.25746496339478862865e+04, + 0.15456052021614159457e+04, 0.23431663244023530979e+03, + -0.18159156647805323246e+04, 0.23722556803366755958e+04, + -0.16281720731003397304e+04, 0.54145797407134318746e+03, + 0.93938781724951286378e+03, -0.22422537289679739843e+04, + 0.25096738029687112430e+04, -0.11624682993770045414e+04, + -0.68376659225445189350e+03, 0.24370326784605563262e+04, + -0.27137738068362646118e+04, 0.17249350118370041400e+04, + 0.44917100326299595281e+03, -0.22551621633494719390e+04, + 0.31270237652390865151e+04, -0.21685666920644766833e+04, + 0.27951055312089653171e+03, 0.19471835481724961028e+04, + -0.29156555864802962788e+04, 0.25247039753427711730e+04, + -0.60450496825370214538e+03, -0.13638840862974850552e+04, + 0.26894776736014723610e+04, -0.22413851004106190885e+04, + 0.70496172683564532235e+03, 0.14155883434343936642e+04, + -0.24703797713016679154e+04, 0.22238445108059768245e+04, + -0.39448010482313623015e+03, -0.15576251620606424240e+04, + 0.28711697831622523154e+04, -0.23232364773871504440e+04, + 0.56618539016671138597e+03, 0.18269605541630949119e+04, + -0.30699232086666061150e+04, 0.28056403983891264033e+04, + -0.73078742108134781574e+03, -0.15948503043358052764e+04, + 0.32390059607589992083e+04, -0.28370125005130821592e+04, + 0.10075348873061201402e+04, 0.15878622499002897257e+04, + -0.30199456728002865020e+04, 0.28308927359446206538e+04, + -0.72668843896370185576e+03, -0.16298586591258083445e+04, + 0.31929042764065316078e+04, -0.25746754927877850605e+04, + 0.49826029672800621029e+03, 0.21939454917989346541e+04, + -0.34408348299432241220e+04, 0.27983547603342967705e+04, + -0.17689843060059251911e+03, -0.25311745322156402835e+04, + 0.39998880774290219051e+04, -0.30845736106584272420e+04, + 0.18074968447797044746e+03, 0.23678171748354002375e+04, + -0.49066315833191338243e+04, 0.17293581207568649916e+04, + -0.31642057063985262175e+04, -0.73732638912555012212e+04, + -0.38785475913412819864e+04, -0.14658186118904286559e+05, + -0.16384358225833260803e+05, -0.18476924987666723609e+05, + -0.27737414527126857138e+05, -0.22018953076430349029e+05, + -0.19001644731978853088e+05, -0.13377092992713984131e+05, + 0.51046192240026275613e+04, 0.11383644367195674931e+05, + 0.16972404214293492259e+05, 0.18571697133641748223e+05, + 0.87301099322976881467e+03, -0.79033436941392346853e+04, + -0.14169408039953963453e+05, -0.15953888770253106486e+05, + 0.27924881376862044817e+04, 0.11757074455936237428e+05, + 0.11882234561704073712e+05, 0.76410025253650819650e+04, + -0.10916354297470368692e+05, -0.14653965500511520077e+05, + -0.22541238330127157496e+04, 0.55432048040677800600e+04, + 0.13604535374824656174e+05, 0.57473831478809806868e+04, + -0.13325056036429637970e+05, -0.88482953914477548096e+04, + 0.73856653067732145246e+03, 0.79217123272354338042e+04, + 0.12370889091626924710e+05, -0.76777354754133148163e+04, + -0.12882184083552205266e+05, 0.19425157901034654060e+04, + 0.58999018628813701071e+04, 0.94203902292067105009e+04, + -0.34051780374103236682e+04, -0.14583892486439606728e+05, + 0.30847422910850677908e+04, 0.10310266351527228835e+05, + 0.18690420500439861371e+04, -0.47783552934029667085e+04, + -0.92470265850316973228e+04, 0.34288220292142368635e+04, + 0.13024503579365871701e+05, -0.46061936519024120571e+04, + -0.10259059942765814412e+05, 0.24222061250357833160e+04, + 0.57165217191388564970e+04, 0.45065835066187710254e+04, + -0.66522424019931113435e+04, -0.86642230335378353629e+04, + 0.10698660124799769619e+05, 0.60458848732559508790e+04, + -0.10180127517384307794e+05, -0.25606567534986561441e+04, + 0.47973680970915502257e+04, 0.44181435884789752890e+04, + -0.13921002139660179182e+04, -0.96898114674448333972e+04, + 0.46040575914625460427e+04, 0.10641736677017121110e+05, + -0.94701242842098254187e+04, -0.53356306651048016647e+04, + 0.83049972119755566382e+04, 0.16788296869610710473e+04, + -0.35088939511293510805e+04, -0.41464729580728198925e+04, + 0.28546692227064168037e+04, 0.74559915552857410148e+04, + -0.69874054402161082180e+04, -0.63316968772004775019e+04, + 0.11033926448503159918e+05, 0.10062762372048907764e+04, + -0.10756593249928251680e+05, 0.43690815237628394243e+04, + 0.56578998589317679944e+04, -0.41664645776602365004e+04, + -0.21590766560428778575e+04, 0.16179872573718034801e+03, + 0.53881253908420567313e+04, -0.14025955937378623730e+04, + -0.84074359285734371952e+04, 0.79116248186103794069e+04, + 0.44096614186289370991e+04, -0.11165297338741904241e+05, + 0.24562113998613681360e+04, 0.90455973790863154136e+04, + -0.73825623904339381625e+04, -0.36544740286501755691e+04, + 0.81269431520686448494e+04, -0.18482045446646543496e+04, + -0.39981670584251191940e+04, 0.19493804594306450326e+04, + 0.15908091077289868736e+04, 0.86956762882296095540e+03, + -0.47984505634050938170e+04, 0.15052056916235121662e+04, + 0.64021553410817705299e+04, -0.72729057660511889480e+04, + -0.19719168567205886120e+04, 0.96505158676018199913e+04, + -0.48547771943444186036e+04, -0.68666823990022003272e+04, + 0.10262846911342547173e+05, -0.60120404265994795878e+03, + -0.10037602562283665975e+05, 0.85887436574308394484e+04, + 0.25759016118552081025e+04, -0.96189618674759058194e+04, + 0.50813079284673440270e+04, 0.40001401851542495933e+04, + -0.65122241267048948430e+04, 0.10709224813803957659e+04, + 0.41707330058236193508e+04, -0.31306917557944525470e+04, + -0.13492684261824497298e+04, 0.30251577778385681086e+04, + -0.80184060191249170657e+03, -0.11505178546798499610e+04, + 0.31454848662716574381e+03, 0.87316213996384146867e+03, + 0.50795313128552606941e+03, -0.28306536460877896388e+04, + 0.20360280893180670319e+04, 0.20798753770187736336e+04, + -0.45968346285892994274e+04, 0.17238654129583046597e+04, + 0.36091643218979597805e+04, -0.47417948695978529940e+04, + -0.27778531974044216213e+03, 0.56052551051536765954e+04, + -0.43717945262699331579e+04, -0.26346760440006514727e+04, + 0.73265434988725501171e+04, -0.38078913426418043855e+04, + -0.42760017142707374660e+04, 0.76755187398641937762e+04, + -0.23838727733149730739e+04, -0.54794693381012011741e+04, + 0.67498229013170830513e+04, 0.53656101580868507881e+04, + -0.11411085887728577291e+05, -0.53891016955273278199e+03, + 0.12501565515566318936e+05, -0.10007521576836537861e+05, + -0.33946753019832490281e+04, 0.12813145186204086713e+05, + -0.63727065272310564978e+04, -0.75251547333341604826e+04, + 0.12685291425179480939e+05, -0.16047771900945149355e+04, + -0.11990938937075696231e+05, 0.12090412201058681603e+05, + 0.28757513160824191800e+04, -0.14471295348507628660e+05, + 0.92379087411728669395e+04, 0.73234329778919200180e+04, + -0.14066501537283662401e+05, 0.32167355451486832862e+04, + 0.12276454612531399107e+05, -0.11731928488853331146e+05, + -0.40394531393840061355e+04, 0.15900947068447705533e+05, + -0.76752522770104214942e+04, -0.98829393328409005335e+04, + 0.15205983051742232419e+05, -0.97778329386373150101e+03, + -0.13282755401053913374e+05, 0.95682367588794477342e+04, + 0.73915187824689101035e+04, -0.13626841158674458711e+05, + 0.11832698755708711360e+04, 0.13519453975364174767e+05, + -0.94390393136535931262e+04, -0.70254289194290931846e+04, + 0.13437690424980473836e+05, -0.34761186654412034613e+03, + -0.12274489557879835047e+05, 0.63029344952719784487e+04, + 0.10324469857135365601e+05, -0.11794753784457841903e+05, + -0.47522502014950850935e+04, 0.16149151583970160573e+05, + -0.40963764466738330157e+04, -0.13981910888941012672e+05, + 0.12008305497722469227e+05, 0.81972797932195026078e+04, + -0.15734021148550002181e+05, -0.63439255603584661003e+03, + 0.17052434868323500268e+05, -0.76310097687095521906e+04, + -0.12867460555653746269e+05, 0.13741263257745333249e+05, + 0.62670096434453716938e+04, -0.14277419245742210478e+05, + -0.16038673287126882769e+04, 0.15041864161127678017e+05, + -0.20016900321961311420e+04, -0.15974784907961327917e+05, + 0.86251914890379066492e+04, 0.14023829202499395251e+05, + -0.13843957105771951319e+05, -0.90323548918553169642e+04, + 0.16904770058837613760e+05, 0.45665219037190800009e+04, + -0.18217337822016648715e+05, 0.90879583772169326039e+03, + 0.17862824600723026379e+05, -0.47340709836107826050e+04, + -0.15545539135809751315e+05, 0.62045566814181693189e+04, + 0.16145163717725059541e+05, -0.81419228392230925238e+04, + -0.17026711786738167575e+05, 0.13282243571139995765e+05, + 0.14704972163820359128e+05, -0.15328213481253649661e+05, + -0.11299579044727222936e+05, 0.14429084866443296050e+05, + 0.12061602952042292600e+05, -0.14417392180592369186e+05, + -0.12916844342831549511e+05, 0.15820414030671156070e+05, + 0.13475758515386005456e+05, -0.15452444509801327513e+05, + -0.14569970727656977033e+05, 0.15770001658916482484e+05, + 0.15558792613194607839e+05, -0.13926669908043331816e+05, + -0.16050384417370401934e+05, 0.94550709143974327162e+04, + 0.20377173130426228454e+05, -0.57073351332565034681e+04, + -0.23769205992292081646e+05, 0.36567239880546399036e+04, + 0.22712742197564984963e+05, 0.34084020843718008109e+04, + -0.19831560408805144107e+05, -0.13111116744900615231e+05, + 0.18306207922565154149e+05, 0.20153054728886545490e+05, + -0.12034272994846298388e+05, -0.22988554356069380447e+05, + 0.19881333754597258690e+03, 0.23916388421379542706e+05, + 0.13323593418035306968e+05, -0.18346566795489496144e+05, + -0.23293980830612606951e+05, 0.53300658565654202903e+04, + 0.26933106966346964327e+05, 0.12086006158124653666e+05, + -0.17971691543079155963e+05, -0.26161850142163140845e+05, + -0.12454029742998434358e+04, 0.27782515667297098844e+05, + 0.21378129196085930744e+05, -0.80024652777943483670e+04, + -0.28595351108207280049e+05, -0.21021177076845848205e+05, + 0.13351877835223102011e+05, 0.32027756957072127989e+05, + 0.19671165251360624097e+05, -0.80484671566130546125e+04, + -0.34084860663791376282e+05, -0.27592672451254726184e+05, + 0.15130949504258931029e+04, 0.26860982876545247564e+05, + 0.38713580147753564233e+05, 0.20440355313457846933e+05, + -0.10503550031320624839e+05, -0.33096019641173646960e+05, + -0.43611191195625615364e+05, -0.29268752124811799149e+05, + -0.31529208219687170640e+04, 0.22865991666339788935e+05, + 0.46463232841904129600e+05, 0.55601285015638241020e+05, + 0.55590306841890749638e+05, 0.49455243598577479133e+05, + 0.37670609917473469977e+05, 0.27453030274347551313e+05, + 0.18345067715298704570e+05, 0.11003603875871163837e+05, + 0.64740933489954040851e+04, 0.38232470938932824538e+04, + 0.15969747935988325480e+04, 0.83165374504525459542e+03, + 0.88004249735228825102e+03, -0.43308738339483693380e+03, + 0.44114151836704871812e+03, 0.24244895371977111154e+03, + -0.74848108261784364004e+03, 0.91082255040483039465e+03, + -0.48739694063792632051e+03, -0.30512707681324656050e+03, + 0.10215110850071140476e+04, -0.12035225115182524860e+04, + 0.67502922605383594146e+03, 0.32156973593803991207e+03, + -0.12443937060131702310e+04, 0.15446798444363826093e+04, + -0.99788417907298321552e+03, -0.15330966287888483635e+03, + 0.13037137507635566180e+04, -0.18190836872043935273e+04, + 0.13840865490399157807e+04, -0.19761126910687514169e+03, + -0.11280569792698161109e+04, 0.18858010378061205756e+04, + -0.16645018838300443349e+04, 0.57042915173880294333e+03, + 0.81822473383403223579e+03, -0.17659196052953514027e+04, + 0.17690126168338620118e+04, -0.83221425805505498374e+03, + -0.53984998938452690709e+03, 0.16088708395691808164e+04, + -0.18038984559379041457e+04, 0.10212245071542805590e+04, + 0.31719025063072638204e+03, -0.14950288319567951021e+04, + 0.18796067753842210095e+04, -0.12618613153473606872e+04, + -0.37764857809051953552e+02, 0.13361264436418769037e+04, + -0.19515179411164103840e+04, 0.15582026229225186853e+04, + -0.35868861542731707459e+03, -0.10271189741926089027e+04, + 0.18839515163013368237e+04, -0.17755069885732896182e+04, + 0.76602257465048523954e+03, 0.61527846055486509158e+03, + -0.16542953405645032490e+04, 0.18216303243087975261e+04, + -0.10461585630792794746e+04, -0.25419942635911291973e+03, + 0.13931883886085834092e+04, -0.17764775922163846644e+04, + 0.12100943678947846820e+04, -0.33592671603686443405e+03, + -0.78713808510122748885e+03, 0.16938077068643090115e+04, + -0.18257024476332296672e+04, 0.82776846833260344738e+03, + 0.50647105435650411209e+03, -0.17335806690009135309e+04, + 0.19134656983644517823e+04, -0.12001770014516393985e+04, + -0.31187535486603798063e+03, 0.15487842588200719547e+04, + -0.21121469958064808452e+04, 0.14180441433819062240e+04, + -0.10008695869324721173e+03, -0.14046889877295170663e+04, + 0.20122744119169005899e+04, -0.16621674779975649017e+04, + 0.27993935389544355985e+03, 0.11011096565520631430e+04, + -0.19826299415111107010e+04, 0.16065196721708664427e+04, + -0.45526352938827506023e+03, -0.10835682851851768191e+04, + 0.18620471076292358248e+04, -0.16923522255297941683e+04, + 0.39296555399435453637e+03, 0.10301733974323228722e+04, + -0.20183513059833944681e+04, 0.17155701225863695072e+04, + -0.53595118641219778510e+03, -0.11251379635577404770e+04, + 0.20443433641596673169e+04, -0.19405513397329568761e+04, + 0.58441887902787357234e+03, 0.99128466321276312101e+03, + -0.21433148142229324549e+04, 0.19302382522544876338e+04, + -0.73181269195125037186e+03, -0.10210785901952835957e+04, + 0.20317535597474859514e+04, -0.19613647331449074045e+04, + 0.58111903597003401956e+03, 0.10224152673818570065e+04, + -0.21427976767756385925e+04, 0.18235287108867548795e+04, + -0.49892819095647621452e+03, -0.13034602157558126692e+04, + 0.22192295812375950845e+04, -0.19222142509856328161e+04, + 0.30085455505841542845e+03, 0.14417914488068888659e+04, + -0.24534412903871639173e+04, 0.19642892474838422459e+04, + -0.19334767154846741732e+03, -0.13698685147825979129e+04, + 0.29957978770417348642e+04, -0.93897931771591322558e+03, + 0.19902316066233574929e+04, 0.48267728597719715253e+04, + 0.26977789896417302771e+04, 0.94782596558963487041e+04, + 0.10965076112133097922e+05, 0.12094959410897667112e+05, + 0.18286465443143915763e+05, 0.14586145072797908142e+05, + 0.12438474042682131767e+05, 0.88875750202843028092e+04, + -0.33882324691937424177e+04, -0.75224569104596430407e+04, + -0.11163845028694051507e+05, -0.12248617063819852774e+05, + -0.61499232502943414147e+03, 0.52853055897832682604e+04, + 0.92652759064399397175e+04, 0.10555455169865766948e+05, + -0.18048506788778595364e+04, -0.78654537978561729687e+04, + -0.76751189704793732744e+04, -0.51872126549602580781e+04, + 0.72756587260364303802e+04, 0.96938673738777579274e+04, + 0.13438691024404338350e+04, -0.34452580038404021252e+04, + -0.91756936937666378071e+04, -0.36628962069811896072e+04, + 0.87871578373789943726e+04, 0.56995262047233745761e+04, + -0.26297363933278660397e+03, -0.54610051095737280775e+04, + -0.79870083404305141812e+04, 0.50184461415560826936e+04, + 0.83974288286556802632e+04, -0.10793380698136147657e+04, + -0.41275026322942421757e+04, -0.60173541355713650773e+04, + 0.21552289171611150778e+04, 0.95788229400287891622e+04, + -0.18917378728248513653e+04, -0.69913617217292057830e+04, + -0.10543528626170600546e+04, 0.30416221989252994717e+04, + 0.61119060262376560786e+04, -0.21922998618592441744e+04, + -0.87031151382471234683e+04, 0.31527009813318891247e+04, + 0.66858774252683115265e+04, -0.15727579610332741140e+04, + -0.37477074110757948802e+04, -0.30141773995999415092e+04, + 0.44217970786547748503e+04, 0.57017684276643849444e+04, + -0.70689074723000603626e+04, -0.39617555761753719707e+04, + 0.67005229284799506786e+04, 0.16688688046121578736e+04, + -0.31101462625727945124e+04, -0.29843094519374185438e+04, + 0.97870500606844711911e+03, 0.63673970678760751980e+04, + -0.30707239478322676405e+04, -0.69297954757847801375e+04, + 0.61319393300018145965e+04, 0.36151212002559987013e+04, + -0.55198420361942607997e+04, -0.11377250040153289774e+04, + 0.24133171736451940887e+04, 0.25973921798946912531e+04, + -0.17581335633914202390e+04, -0.49799947971464707734e+04, + 0.45818889818546376773e+04, 0.42862801809386710374e+04, + -0.74384715931548225853e+04, -0.50491100131313976362e+03, + 0.69967470938827018472e+04, -0.28882822783546375831e+04, + -0.36144800120556060392e+04, 0.25547367108283215202e+04, + 0.16311612019816730026e+04, -0.26005010592376038403e+03, + -0.35086704063204988415e+04, 0.10109108953691501256e+04, + 0.53483845151019331752e+04, -0.49708876721119841022e+04, + -0.31274582529465828884e+04, 0.74857405528932722518e+04, + -0.16067791083561633059e+04, -0.61118902126915654662e+04, + 0.51057347050367325210e+04, 0.21538769374153407625e+04, + -0.51637086575615494439e+04, 0.11433117845403037336e+04, + 0.25710677625032226388e+04, -0.11033040036383083589e+04, + -0.12888939742806251161e+04, -0.35109211243332117647e+03, + 0.30269146014058433138e+04, -0.97988602630916341241e+03, + -0.41112090475175109532e+04, 0.46028477832838316317e+04, + 0.15101034675950106703e+04, -0.65226098352608896676e+04, + 0.32609039303009412833e+04, 0.45823422925451541232e+04, + -0.69140909978240579221e+04, 0.58434194021538530706e+03, + 0.64530918797175600048e+04, -0.55752072618489291926e+04, + -0.16809321305925059278e+04, 0.62264546712498158740e+04, + -0.31754894548363940885e+04, -0.28137022993327782387e+04, + 0.44135990122164430431e+04, -0.73048142818540952703e+03, + -0.28294654204503203800e+04, 0.22228120701539428410e+04, + 0.70137227109384014057e+03, -0.18353899601867133242e+04, + 0.44759456520203008267e+03, 0.73675458682115299780e+03, + -0.89799289368021334212e+02, -0.75301750492006635795e+03, + -0.15166199481276669303e+03, 0.17316393490107511752e+04, + -0.12951822613826150246e+04, -0.13194053296948818570e+04, + 0.28978457974866259974e+04, -0.96441228096316410756e+03, + -0.25388273526803400273e+04, 0.32259123379724901497e+04, + 0.17038783392447305687e+03, -0.37696241500289738724e+04, + 0.30165638111970179125e+04, 0.15865823021460169002e+04, + -0.47108208165690803071e+04, 0.24574560866792780871e+04, + 0.27920253139462943182e+04, -0.49648449157696395559e+04, + 0.14406322720785949514e+04, 0.37352170150225392717e+04, + -0.45236303918571766189e+04, -0.29847412213354728010e+04, + 0.70415952784475748558e+04, -0.23571847953148025567e+03, + -0.71966662302050326616e+04, 0.61736560853158780446e+04, + 0.17537404934720964320e+04, -0.77718223458071233836e+04, + 0.42654382329897607633e+04, 0.42015304264686428724e+04, + -0.78586220814632470137e+04, 0.16363539440721149276e+04, + 0.66540695354489598685e+04, -0.72836099606049465365e+04, + -0.12391778405010575170e+04, 0.82094098676809826429e+04, + -0.54314277176967061678e+04, -0.42344332827503922090e+04, + 0.83365606963265126979e+04, -0.20745819937471856065e+04, + -0.71316819466492979700e+04, 0.70204291848541834042e+04, + 0.20737327699642946754e+04, -0.90054694487400665821e+04, + 0.42507593702596132061e+04, 0.58223145252147060091e+04, + -0.86129025479172814812e+04, 0.30717682709584035905e+02, + 0.81641162737858358014e+04, -0.54874934000754319641e+04, + -0.48302954617935902206e+04, 0.82858096362451724417e+04, + -0.45622868020162439961e+03, -0.83645602770115310705e+04, + 0.54867732407299463375e+04, 0.47640877175105415517e+04, + -0.84389767887328252982e+04, -0.68419885823928382251e+02, + 0.81257793908077464948e+04, -0.43533887557194357214e+04, + -0.63149906392398970638e+04, 0.77014187936823755081e+04, + 0.23217238212992692752e+04, -0.96353203486526090273e+04, + 0.27226742302527190986e+04, 0.81656534834566627978e+04, + -0.71897212403700659706e+04, -0.48310395285075583161e+04, + 0.93899652368433744414e+04, 0.30727234831651992408e+03, + -0.99999123548608258716e+04, 0.42482820212757806075e+04, + 0.78666745394827667042e+04, -0.79089981977675670350e+04, + -0.44884498580438166755e+04, 0.90988167446993011254e+04, + 0.11293659302814342027e+04, -0.97341985198623988254e+04, + 0.17726714316706625141e+04, 0.95651174833194472740e+04, + -0.55014292356595442470e+04, -0.81737614243487805652e+04, + 0.82633580872585971520e+04, 0.53870733061897481093e+04, + -0.10090291516790717651e+05, -0.28155857643375115913e+04, + 0.10867621997887386897e+05, -0.24878794330598694273e+03, + -0.10950139853770824629e+05, 0.25613080191075191578e+04, + 0.10004789700542431092e+05, -0.41311579122875873509e+04, + -0.99676461861761818000e+04, 0.55276012872457922640e+04, + 0.97315863429337405250e+04, -0.77909411369575273056e+04, + -0.87428912670567806344e+04, 0.87696160378843051149e+04, + 0.74272870469887238869e+04, -0.89910510253829288558e+04, + -0.75327500414527248722e+04, 0.91197492062253222684e+04, + 0.76605241014785106017e+04, -0.96504001216158139869e+04, + -0.81127211752769217128e+04, 0.94314526052715755213e+04, + 0.86692820062286100438e+04, -0.93393800601446546352e+04, + -0.95620932427061397902e+04, 0.82120353648112195515e+04, + 0.10319225091986207190e+05, -0.62433979490459723820e+04, + -0.12323726261022098697e+05, 0.38651932984885047517e+04, + 0.13830703699738254727e+05, -0.16976231712505452833e+04, + -0.13931760465572879184e+05, -0.24678067828989369445e+04, + 0.12691530659568368719e+05, 0.75505204937131220504e+04, + -0.11122774509708831829e+05, -0.11948501784589287126e+05, + 0.68867966953672748787e+04, 0.14285035308592654474e+05, + -0.94326767612296578136e+02, -0.14810267096539069826e+05, + -0.78960707135314842162e+04, 0.11122070521604995520e+05, + 0.14102053279730620488e+05, -0.31426433489660498708e+04, + -0.16386025351726413646e+05, -0.75498695395184304289e+04, + 0.11148657618512817862e+05, 0.15931386695602963300e+05, + 0.50774823854549873658e+03, -0.16526296095508816506e+05, + -0.13343229866976145786e+05, 0.48637411426655389732e+04, + 0.17812494627712592774e+05, 0.12255770505822760242e+05, + -0.77342878774523132961e+04, -0.19517142534525348310e+05, + -0.12422989278525665213e+05, 0.55266088083996255591e+04, + 0.20325099128012549045e+05, 0.16834721668868791312e+05, + -0.49548799131642090288e+03, -0.16996163025817408197e+05, + -0.23130183287758012739e+05, -0.12517048180082018007e+05, + 0.60400727834465842534e+04, 0.20732942776948239043e+05, + 0.26135509343962450657e+05, 0.17952350389232105954e+05, + 0.21578110020787671601e+04, -0.14348489766091504862e+05, + -0.27974250988979885733e+05, -0.34011874847109058464e+05, + -0.33990905601397229475e+05, -0.29933544113263003965e+05, + -0.23123771437772367790e+05, -0.16696310419992863899e+05, + -0.11126619795657836221e+05, -0.67571461795207596879e+04, + -0.39770101016533972142e+04, -0.22273485189862994957e+04, + -0.10625693052201295359e+04, -0.52821551858690304471e+03, + -0.37913891370747154497e+03, 0.47005027813725583030e+02, + -0.13036967925849739913e+03, -0.10089239175856555164e+03, + 0.22678221810035498152e+03, -0.27036224154892249771e+03, + 0.13718682700544985664e+03, 0.98621067027445533881e+02, + -0.31118814009646234808e+03, 0.36671948621910871680e+03, + -0.21441310679772854542e+03, -0.76314469870032311860e+02, + 0.34939662324951410710e+03, -0.44599778676297847824e+03, + 0.29967660152387895778e+03, 0.22419312291165962137e+02, + -0.34882819308835632910e+03, 0.49889506755878841204e+03, + -0.38190182234215114931e+03, 0.53161526012459731305e+02, + 0.31462052180767398113e+03, -0.52173259360555891817e+03, + 0.45276868776020882024e+03, -0.13929627267994931117e+03, + -0.25325586067031701987e+03, 0.51566062532466264656e+03, + -0.50577692816661107145e+03, 0.22728502695990701454e+03, + 0.17334639327497336581e+03, -0.48330088470361101827e+03, + 0.53851066524677116831e+03, -0.30942984984124063885e+03, + -0.82188027624929404169e+02, 0.42973478400745102590e+03, + -0.55006688565341266894e+03, 0.38124351281291831128e+03, + -0.13164670147740368478e+02, -0.35965321004567397267e+03, + 0.54205393588515869396e+03, -0.43954645563682964848e+03, + 0.10789969697806709803e+03, 0.27814553423806381716e+03, + -0.51632058544069775508e+03, 0.48338997426688410997e+03, + -0.19810555486770195444e+03, -0.18898878454730703425e+03, + 0.47548755266804874964e+03, -0.51233433893570497730e+03, + 0.28154906007865912443e+03, 0.95506509009218149231e+02, + -0.42158035357328100190e+03, 0.52673142197818003751e+03, + -0.35646569683776067450e+03, 0.85510462249618854003e+02, + 0.24934675796705934658e+03, -0.50399362548454416810e+03, + 0.53007055521279733057e+03, -0.23891580299682397026e+03, + -0.14431621616599139202e+03, 0.48893511962161227302e+03, + -0.53747205161168915311e+03, 0.33427951338227700262e+03, + 0.86124954092881722545e+02, -0.42592724288693165136e+03, + 0.57317497657493925090e+03, -0.37372243448326361204e+03, + 0.58994195058621441419e+01, 0.40324522619769948051e+03, + -0.55738327330501920187e+03, 0.44207687670304585481e+03, + -0.46300763432027508770e+02, -0.34107675877058608194e+03, + 0.57732421358866781702e+03, -0.45748559661435376711e+03, + 0.11762543961304065476e+03, 0.32589434048718726444e+03, + -0.55274216371987540697e+03, 0.50525362558634884635e+03, + -0.13598923874540400902e+03, -0.27648968215991561692e+03, + 0.56975961720166048963e+03, -0.50364392088475608489e+03, + 0.18465492780770819081e+03, 0.27788565014273092402e+03, + -0.54709623288513432726e+03, 0.53730325340612739637e+03, + -0.18022957654399422722e+03, -0.24796227013955095231e+03, + 0.56945893216655065316e+03, -0.52374341344158051470e+03, + 0.20577256564808888584e+03, 0.27076505615645265834e+03, + -0.55436210572227571447e+03, 0.54629513149263175364e+03, + -0.17767570370832186200e+03, -0.26361041126576151328e+03, + 0.58493569790783499229e+03, -0.52123419407834285266e+03, + 0.17832416495021215042e+03, 0.30965736718943145434e+03, + -0.57739147936727886190e+03, 0.52987102895267969416e+03, + -0.12469894250775872990e+03, -0.32804952022610706308e+03, + 0.60658610452269124380e+03, -0.50227121091151059318e+03, + 0.63871224854700862750e+02, 0.32456144336091170999e+03, + -0.74525787350108112150e+03, 0.20372584734371213244e+03, + -0.50670694856872296441e+03, -0.12821628055947114717e+04, + -0.74811740218431259564e+03, -0.24883170318262746150e+04, + -0.29580306326173017624e+04, -0.32076663273403164567e+04, + -0.48745286350438946101e+04, -0.39054544342696622152e+04, + -0.32973093879496223053e+04, -0.23834029600600661070e+04, + 0.90596410156925867341e+03, 0.20126818959207275839e+04, + 0.29685118131135295698e+04, 0.32685977362628332230e+04, + 0.17265212471826612273e+03, -0.14270726576955146356e+04, + -0.24517568534171077772e+04, -0.28245783701941727486e+04, + 0.47411962281408784747e+03, 0.21229195792805298879e+04, + 0.20101201703504998477e+04, 0.14179509332352970432e+04, + -0.19586379134306712331e+04, -0.25920412330301924158e+04, + -0.32551872539967655484e+03, 0.86994218659897660473e+03, + 0.24951371391856978335e+04, 0.94653062264345544463e+03, + -0.23425504854871783209e+04, -0.14895851326868157685e+04, + 0.18772249185778356662e+02, 0.15113532700041441785e+04, + 0.20900286163696441690e+04, -0.13269759734532917719e+04, + -0.22186105716185743404e+04, 0.24309458105047767162e+03, + 0.11536699560849538102e+04, 0.15615067341418616707e+04, + -0.55513804710283909571e+03, -0.25453820673166687811e+04, + 0.47217474752817332728e+03, 0.19074139006516013524e+04, + 0.24266392350570288272e+03, -0.78922415397648478574e+03, + -0.16298180970578737288e+04, 0.56575653885088968309e+03, + 0.23495303070500181093e+04, -0.86793453659977137704e+03, + -0.17660182709582134066e+04, 0.41662917970588665639e+03, + 0.99039824985509346789e+03, 0.81827263498298532340e+03, + -0.11917794179902402902e+04, -0.15145104231311522653e+04, + 0.18865683983002759305e+04, 0.10508530644397565084e+04, + -0.17822835649993469360e+04, -0.44396644762835018128e+03, + 0.82167955737944919292e+03, 0.80731065620193533050e+03, + -0.27037071352114395495e+03, -0.16966795828032870759e+04, + 0.82908306090147652867e+03, 0.18277135704000868373e+04, + -0.16110975375725206504e+04, -0.98284181876032448599e+03, + 0.14771818963995594913e+04, 0.31606347257491717073e+03, + -0.67188928946173632539e+03, -0.65691548657015778190e+03, + 0.43784102767920501265e+03, 0.13428349994951913686e+04, + -0.12137321467807184945e+04, -0.11730545442659179116e+04, + 0.20269206015692388974e+04, 0.92051302815424207893e+02, + -0.18383897215095191768e+04, 0.76811686348920159162e+03, + 0.93880517204137538556e+03, -0.63622445523904775655e+03, + -0.48568704057100779892e+03, 0.10918154736743967703e+03, + 0.92020323466546085456e+03, -0.28413090757493210958e+03, + -0.13857755995469201480e+04, 0.12720434798975215926e+04, + 0.88338421968920692962e+03, -0.20253071845532967927e+04, + 0.42776075815050847950e+03, 0.16603578028817471477e+04, + -0.14120340559731685062e+04, -0.52007739204999097637e+03, + 0.13364213320767014466e+04, -0.29094179890074286732e+03, + -0.66857709684937765360e+03, 0.25193301006632731287e+03, + 0.39753944925483324369e+03, 0.45571379576443270309e+02, + -0.78007408815888470599e+03, 0.26350882168697597763e+03, + 0.10660130563565160173e+04, -0.11790529263300118146e+04, + -0.45344523196608759008e+03, 0.17764387298539822950e+04, + -0.88149986028006060224e+03, -0.12383720625246378404e+04, + 0.18827493878535183285e+04, -0.20455799969319534171e+03, + -0.16778781761553088927e+04, 0.14629624543448185250e+04, + 0.44586610519400443309e+03, -0.16332365868227821011e+04, + 0.80406206014132328619e+03, 0.79486940032979418902e+03, + -0.12092857761547045357e+04, 0.20512701113166932032e+03, + 0.76886847940595407636e+03, -0.62660482312578574238e+03, + -0.14473890996066327830e+03, 0.45216965642391835445e+03, + -0.98605276653927717234e+02, -0.19462418081081258947e+03, + 0.67364586938078574452, 0.23773348190282348469e+03, + 0.17344369744377681197e+01, -0.43338289702965550987e+03, + 0.33595515235718278291e+03, 0.33980282286595848973e+03, + -0.74345037790052549553e+03, 0.22010892765968017670e+03, + 0.71014585525865686577e+03, -0.87914739983020103864e+03, + -0.46397828793031393957e+02, 0.10254533683036972889e+04, + -0.83728777200030651784e+03, -0.38799684519065129962e+03, + 0.12299083514016892877e+04, -0.64591775549643989507e+03, + -0.73424547937701936462e+03, 0.12973457872991825752e+04, + -0.34967004485313566420e+03, -0.10275904631847320161e+04, + 0.12249907686953608845e+04, 0.68423763006392357511e+03, + -0.17847190170059016054e+04, 0.18993594342983453771e+03, + 0.17000197569446104353e+04, -0.15561181565639149085e+04, + -0.36970073748985277007e+03, 0.19331868409714459176e+04, + -0.11480202590663436695e+04, -0.96737292097891304365e+03, + 0.19930605413671776205e+04, -0.55283879622325355285e+03, + -0.15218829330027865581e+04, 0.18049328316948622160e+04, + 0.19490325504142313662e+03, -0.19184703782438891722e+04, + 0.13178479806222653679e+04, 0.10016586137514501615e+04, + -0.20244832287193662523e+04, 0.53758169647968020399e+03, + 0.17086177624747454047e+04, -0.17250823514957298812e+04, + -0.43853450939120210705e+03, 0.21092200007350488704e+04, + -0.97904995786081326514e+03, -0.14016477066973893670e+04, + 0.20028230992862734183e+04, 0.11762926369399440318e+03, + -0.20511153173684983813e+04, 0.12865794815160213602e+04, + 0.12907684410847432446e+04, -0.20779605457272950844e+04, + 0.63440677561730588252e+02, 0.21155736609368286736e+04, + -0.13152964443219707391e+04, -0.12903617985471471457e+04, + 0.21549381231222851056e+04, 0.88787557885287768045e+02, + -0.21813034418069801177e+04, 0.12053001831654312355e+04, + 0.15837560271513968928e+04, -0.20421727647725927000e+04, + -0.44749576503443518050e+03, 0.23563910084120102510e+04, + -0.72512206693977032046e+03, -0.19657532217185685113e+04, + 0.17692553183970883310e+04, 0.11729784178683717073e+04, + -0.23060311343898638370e+04, -0.56727147087516804902e+02, + 0.24116327749637048328e+04, -0.97319608329456696083e+03, + -0.19706396728516315306e+04, 0.18727015108823925402e+04, + 0.12705810386141952222e+04, -0.23616096916302117279e+04, + -0.31819487974495581284e+03, 0.25622872055347579590e+04, + -0.56952005190916815991e+03, -0.23496947625606162546e+04, + 0.14277240031260998876e+04, 0.19593837328944364344e+04, + -0.20225438471013885646e+04, -0.13277537342691689446e+04, + 0.24834231984679367997e+04, 0.70415327395595625148e+03, + -0.26608773523668260168e+04, -0.47990812131989288858e+01, + 0.27465033588052037885e+04, -0.56035855885114892772e+03, + -0.26282743940048803779e+04, 0.11196830711903760402e+04, + 0.25128710131887087300e+04, -0.15040416669838161852e+04, + -0.22874481791513726421e+04, 0.18729262579775220274e+04, + 0.21478384824834711253e+04, -0.20773150881921906148e+04, + -0.19663953716924465880e+04, 0.22855405113869542220e+04, + 0.19233777120126146656e+04, -0.23482013242097518742e+04, + -0.18772368467364740354e+04, 0.24252242862146222251e+04, + 0.19954582251836293381e+04, -0.23530757446548959706e+04, + -0.21238682536562032510e+04, 0.22729460042182190591e+04, + 0.24139250127076816170e+04, -0.20007997376511514176e+04, + -0.26885761654274097054e+04, 0.16587682111648127830e+04, + 0.30645487666998651548e+04, -0.10525050350967446775e+04, + -0.33155805816595129727e+04, 0.31299507137092848552e+03, + 0.34951982680551795966e+04, 0.70982431867338675602e+03, + -0.33110188168443492032e+04, -0.17880557974170749276e+04, + 0.27734812216966083724e+04, 0.29102778237123388863e+04, + -0.16185535294481724122e+04, -0.36358496181646114565e+04, + 0.21159945747309670594e+02, 0.37519458181557074568e+04, + 0.19246499179613285833e+04, -0.27660286928796144821e+04, + -0.35061234615344123995e+04, 0.76406100070094146304e+03, + 0.40886243525379086350e+04, 0.19281768218779259314e+04, + -0.28295654325454424907e+04, -0.39804278473098288487e+04, + -0.70810608362179920050e+02, 0.40416613899643966761e+04, + 0.34037778210498299813e+04, -0.12109336624077129727e+04, + -0.45399454570592743039e+04, -0.29389591354289723313e+04, + 0.18434119244959626940e+04, 0.48777342216714496317e+04, + 0.32036018638920427293e+04, -0.15224391803321955194e+04, + -0.49773518447706610459e+04, -0.42164891927860180658e+04, + 0.32486086541264960204e+02, 0.43862172057543284609e+04, + 0.56773266377405016101e+04, 0.31468236653021481288e+04, + -0.14364224446624623397e+04, -0.53002934052484988570e+04, + -0.64405760531370115132e+04, -0.45102562469243803207e+04, + -0.59073791786106448853e+03, 0.36736076387750795220e+04, + 0.69240933595648511982e+04, 0.85216222555658441706e+04, + 0.85290620779892706196e+04, 0.74315213051155769790e+04, + 0.58186653364007734126e+04, 0.41682203417441523925e+04, + 0.27634138598687036392e+04, 0.17090246337790015332e+04, + 0.99165731559933931294e+03, 0.54222724096833485419e+03, + 0.28033972792544750519e+03, 0.13741938206987137505e+03, + 0.64006422473758050273e+02, 0.28378614261435117783e+02, + 0.11994849105165098280e+02, 0.48391442368676873542e+01, + 0.18653330416360118793e+01, 0.68758490434810781711, + 0.24253916573916528554, 0.81916326166149203147e-01, + 0.26502708326749630646e-01, 0.82166620492391782837e-02, + 0.24417451393974553241e-02, 0.69563722791316439601e-03, + 0.19001450780257447219e-03, 0.49765008087844279873e-04, + 0.12496148866967786501e-04, 0.30081194653244435138e-05, + 0.69407112078045468218e-06, 0.15346087792447892061e-06, + 0.32504432903886635603e-07, 0.65928991727389799610e-08, + 0.12799931475975213398e-08, 0.23774670986207973727e-09, + 0.42222503860637820635e-10, 0.71648995150865986384e-11, + 0.11608928893951767708e-11, 0.17944539935847491407e-12, + 0.26438269017140866486e-13, 0.37089716408839972325e-14, + 0.49488712441139445900e-15, 0.62726601459505180028e-16, + 0.75421332449603116977e-17, 0.85896211795228827948e-18, + 0.92504046892370660074e-19, 0.94025098912766735260e-20, + 0.90016381894724210221e-21, 0.80981898331467599418e-22, + 0.68283588610559963090e-23, 0.53807078873528303355e-24, + 0.39493384070202563483e-25, 0.26899322082337408230e-26, + 0.16928694205574669833e-27, 0.97952286830057522517e-29, + 0.51808430332105786082e-30, 0.24878013040268407777e-31, + 0.10757600363671907845e-32, 0.41475545953617952053e-34, + 0.14083362378273620600e-35, 0.41464135768184666180e-37, + 0.10370229612804640671e-38, 0.21422490184581503064e-40, + 0.35094408651670043748e-42, 0.42747579306953107805e-44, + 0.34417937698836789337e-46, 0.13739296428011708841e-48, + -0.36041485143632253502e-02, 0.47524986860515774922e-02, + -0.38569982704386430962e-03, -0.40140464376572397229e-02, + 0.70798789340609626433e-02, -0.11289927561201992812e-01, + 0.14515711692552306020e-01, -0.14645954067283013453e-01, + 0.10193000551425598563e-01, -0.65300664630509337033e-02, + 0.56456179569731390969e-02, -0.50100361767631594948e-02, + -0.23001052212289082276e-02, 0.12975598320488493029e-01, + -0.17553409219718495854e-01, 0.96222192685973990944e-02, + -0.51226833411193752055e-03, 0.44172524341883250346e-02, + -0.21556549463277743794e-01, 0.30791717066756384841e-01, + -0.18357013899461677164e-01, -0.43703301554791715994e-02, + 0.89405794625474627191e-02, 0.98768550833551564672e-02, + -0.26423417453649015313e-01, 0.12536453965741470654e-01, + 0.19845118227578568970e-01, -0.32540232799192395086e-01, + 0.66663132857588602506e-02, 0.27150593617989462331e-01, + -0.29241641882398673735e-01, -0.60082445285563148597e-03, + 0.20172182577694611205e-01, -0.48022808237554301045e-02, + -0.22726365973576845986e-01, 0.21854895860496666160e-01, + 0.67349146027030114617e-02, -0.26816080013541937488e-01, + 0.15161638156712961903e-01, 0.69167954202015340462e-02, + -0.13047128952761020970e-01, 0.73104304731371203344e-02, + -0.12581325590190886587e-01, 0.24228930877524351012e-01, + -0.18688498334815673019e-01, -0.58526375986139873159e-02, + 0.16446680377129530709e-01, 0.49847092046168017289e-03, + -0.14601710669897044470e-01, -0.63086047536307834210e-02, + 0.37818424474603935803e-01, -0.33156220069779335224e-01, + -0.66309625444509190384e-02, 0.27109537544919778962e-01, + -0.41965617451599646764e-02, -0.24780264152177645248e-01, + 0.21025338409703289710e-01, -0.54329243814697008794e-02, + 0.10631702486023594453e-01, -0.22222582882646790131e-01, + 0.55884811621728404385e-02, 0.20886013914006251041e-01, + -0.14697058645835396271e-01, -0.14038196680725045090e-01, + 0.10955992256858365641e-01, 0.22747061704160048690e-01, + -0.27720290310229322994e-01, -0.13862248847856504380e-01, + 0.42108119984913809641e-01, -0.25463676690555627630e-01, + 0.73805593097283983886e-02, -0.18883327019490109278e-01, + 0.18185891171638390168e-01, 0.14342432013183905801e-01, + -0.25255453414751192348e-01, -0.13828730230154264585e-01, + 0.38323572212619845534e-01, -0.97298561721966547733e-02, + -0.12542248323132979340e-01, -0.14191911845422103614e-01, + 0.30964047748528823745e-01, -0.42844922733087653643e-02, + -0.65894332965510818770e-02, -0.20927163602670644654e-01, + 0.15269087092775777276e-01, 0.29892819280971483220e-01, + -0.29259309037581268664e-01, -0.19567583885401723665e-01, + 0.24792017252776053088e-01, 0.38642828000684656051e-02, + 0.10965227576280548588e-01, -0.32859546416201201868e-01, + -0.49423959708136512917e-02, 0.27568357183735372334e-01, + 0.18565001018073186423e-01, -0.37214242669927385943e-01, + -0.33161613156999715686e-02, 0.41459201803526249657e-03, + 0.27388824474129946224e-01, 0.10226156894067547562e-01, + -0.37064349057761576678e-01, -0.15521015926201477478e-01, + 0.28746552895132813227e-01, 0.10572387657669992181e-01, + 0.16666952393195200860e-01, -0.45906046453749502212e-01, + -0.41066691707187978969e-02, 0.27351246573968185328e-03, + 0.50612600252184468397e-01, -0.99206749142665990454e-02, + -0.18476709876711506358e-01, -0.23858984285308016543e-01, + -0.18133653179286359641e-01, 0.53994024030460649466e-01, + 0.12793808667445503643e-01, -0.13984516563992641439e-02, + -0.24774089162151777255e-01, -0.42209669197014111630e-01, + 0.22635734997514356075e-02, 0.41750403362776175586e-01, + 0.19144095226378634450e-01, 0.30104539260202196199e-01, + -0.29191293860520797082e-01, -0.48123780090379597585e-01, + -0.21601233030574533422e-01, -0.14790478683903844279e-01, + 0.28666199041229422501e-01, 0.60041727470414710255e-01, + 0.22335008254429331714e-01, 0.43041710129192028988e-01, + -0.31941405183057665351e-01, -0.23071243045816310774e-01, + -0.75831384145067029512e-01, -0.46788812394684485552e-01, + -0.80232671984304892998e-01, -0.35585824968801756107e-01, + -0.46154781152060390947e-01, -0.29629339493188289884e-01, + -0.72925913315879708002e-02, -0.24243712862878370046e-01, + 0.64165807770707019089e-02, -0.14402727988770741216e-01, + 0.10441606335377754192e-01, -0.17718129248099612899e-01, + 0.22282664061946649836e-01, -0.25705855639305719151e-01, + 0.22707658455245260248e-01, -0.15478344601232410863e-01, + 0.79994190143848689645e-02, -0.56768170533466810398e-02, + 0.10857790870616416609e-01, -0.21170845099361602915e-01, + 0.30394297180742643749e-01, -0.31999781699491684772e-01, + 0.23191881890916705988e-01, -0.68726655261017828222e-02, + -0.96359990918424617140e-02, 0.18602862175468533323e-01, + -0.16155610425509014244e-01, 0.44557914851750301047e-02, + 0.96326184276007715407e-02, -0.18430653111957333995e-01, + 0.17740315318114575904e-01, -0.89321126017188820501e-02, + -0.21696158884670167094e-02, 0.89659486797035101158e-02, + -0.79632586731862332885e-02, 0.70188337072414077288e-03, + 0.74452810901357475981e-02, -0.10678787777933438502e-01, + 0.64227144035230530200e-02, 0.30537454895178369266e-02, + -0.11864360235270520957e-01, 0.13944535838565069036e-01, + -0.65979460157560270578e-02, -0.77778469752196079112e-02, + 0.22840297533614144915e-01, -0.31567344903842775583e-01, + 0.29908593302583930812e-01, -0.18764307173005451146e-01, + 0.33769297873043617637e-02, 0.95068144782764190531e-02, + -0.15025293815667374250e-01, 0.12406446143665419632e-01, + -0.48537598846744006015e-02, -0.25851987255091383663e-02, + 0.59300412029135969941e-02, -0.42763579627698965202e-02, + -0.69544120121980271330e-04, 0.33147611753412613116e-02, + -0.26324610457230694302e-02, -0.20462365968737859616e-02, + 0.79448301391724495540e-02, -0.11043043853996932849e-01, + 0.84771415537043294519e-02, -0.35251479559981883406e-03, + -0.10034297713004087377e-01, 0.17747901428297425258e-01, + -0.18722571355253025266e-01, 0.11923378761951783020e-01, + 0.45458322807605706928e-02, -0.67351738149252160515e-01, + 0.19970046225103346704, -0.29973655859722275752, + 0.30690261115425787608, -0.17179779948703766124, + -0.40892804147160101425e-01, 0.25744724025165915959, + -0.36210756549934769444, 0.33172154392320257754, + -0.17514036953124748064, -0.11504350098606945085e-02, + 0.12472063439083534708, -0.12451300124340032582, + 0.39261848645980382266e-01, 0.80420086204879032143e-01, + -0.13277861299515705817, 0.96275250220952318658e-01, + 0.30235599616349122937e-01, -0.15741575318050080035, + 0.23057567193593914157, -0.19074514796014846452, + 0.79485242218230070521e-01, 0.58481181452432078050e-01, + -0.13147835227216778109, 0.12564115936495962034, + -0.39640541668986131740e-01, -0.46554130317439247622e-01, + 0.92768434442081229574e-01, -0.51938026985332369501e-01, + -0.32533228994947926971e-01, 0.12671905687669862695, + -0.15774664913994798643, 0.12836840105973967852, + -0.41418664571869656665e-01, -0.35316799999804346366e-01, + 0.84066788486200014208e-01, -0.76367039585009940938e-01, + 0.55972422407867344907e-01, -0.33217635232718770166e-01, + 0.41770346733484391144e-01, -0.43954507440177502386e-01, + 0.27738712673599980052e-01, 0.47556978522331094794e-01, + -0.14430926013587705437, 0.23156810309677045012, + -0.23071658883346418678, 0.13850732312858501927, + 0.33400740934962785955e-01, -0.18696514982220699408, + 0.26423155677701243293, -0.21269797480927768452, + 0.89674673050442701983e-01, 0.40005192695274437165e-01, + -0.81636972833449700238e-01, 0.28433061632950933778e-01, + 0.63456042259581069143e-01, -0.12582285545605581545, + 0.89145641989620393736e-02, 0.90174872706855549453e-01, + -0.45821664627559899330, 0.24928305055632490883, + -0.65824071033227660177, -0.40269615908398631587, + -0.47443993180552962441, -0.13299289866684407269e+01, + -0.69588172962050920400, -0.13846932730961838409e+01, + -0.10964107861499181595e+01, -0.52212019387555386185, + -0.40680105900254198703, 0.41978920249241657991, + 0.90770141105260271353, 0.63136461599052484672, + 0.71861815228501890740, -0.16192904192377596817, + -0.64030437946771312507, -0.70790373330438660648, + -0.40757250774653552838, 0.19433400092342720256, + 0.70246309954627828009, 0.65791627888613746222, + -0.22594767071159096994, -0.26311884943480495780, + -0.85850987491757468906, 0.48297391258228614119e-01, + 0.55392182080330398808, 0.45999599217687825448, + 0.80808231478574493734e-01, -0.52313318329562263909, + -0.51238588429534481783, 0.76967145224746860710e-01, + 0.79355725894328543735, -0.32822670019736537028e-01, + -0.44800452618684531714e-01, -0.60596406206142827688, + -0.24232219412350181065, 0.89827061894869397740, + -0.20686191247662411019e-01, -0.16031233523128513019, + -0.35585181826734824106, -0.27886515875399991993, + 0.76440269103245528370, 0.13039050755254527614, + -0.47702419734313850075, -0.22649539163486068216, + 0.10986496417186512875, 0.50618045881197759606, + -0.88063267150709334530e-01, -0.35784039217898111485, + -0.29503824315033705394, 0.60562438420734276967, + 0.19887545409254744899, -0.54201147214946465702, + -0.40463369382483009573e-01, 0.13087338946222371039, + 0.30390707697657726172, 0.33980699790705356719e-02, + -0.62366107817146954062, 0.22102811119442489218, + 0.61070592956067426549, -0.47953989405167551929, + -0.13622761295080315636, 0.60120213755416526680e-01, + 0.25349534566319981144, 0.94819011778526737788e-01, + -0.48028626197698254252, 0.58989368210961894146e-01, + 0.43181525139496412802, -0.44949918843877646746e-01, + -0.53683207135208355076, 0.24956353649144666362, + 0.43878381276956945900, -0.46374827208279006951, + 0.31671632469484324590e-01, -0.15265871200628538390e-01, + 0.27073764924207999183, -0.53186054883985631192e-01, + -0.42575638685591843391, 0.31802515093617172992, + 0.25676511021332482088, -0.29744539794352492512, + -0.38622933421424820999, 0.81506107647313030817, + -0.40933409657825459149, -0.16413426691675334079, + 0.16358691637453121048, 0.11221272948331774411, + -0.10023713366786745141e-01, -0.34298246052815339890, + 0.36653830242853174814, -0.94770559103070264872e-01, + 0.92804576364165322633e-01, -0.40969569998749189033, + 0.41655660955816531388, 0.14060673633750614409, + -0.60208333841919703389, 0.31755226390991053709, + 0.35895757096065883385, -0.53566743648016268420, + 0.30203781750861580235e-01, 0.42857119898835677185, + -0.26983710279120276532, -0.17071233029827101446, + 0.22556490174836807405, 0.15557106831284145398, + -0.42880325460849422203, 0.27737566096138127625, + 0.20962248184523676886e-01, -0.10218301848654902375, + 0.27717561870507612110e-01, -0.62072130204054311309e-01, + 0.17294068032968856752, -0.80314930449961435821e-01, + -0.23587997720174536109, 0.40303441988419019815, + -0.16148867692424995202, -0.21994994471211115616, + 0.27222678990297788371, 0.18798267909587395436e-01, + -0.15903412642683592559, -0.17769914540302975126, + 0.64736620703441438707, -0.62328503913812682846, + 0.11429957691904598857e-01, 0.57217899542623074094, + -0.52662134847373764934, -0.61278555880068695180e-02, + 0.33247018234980912910, -0.78763286373000521157e-01, + -0.35098961480418866543, 0.30264394835876656797, + 0.28137681715425344464, -0.75685447920388193577, + 0.55200774394808260759, 0.12950941801950346943, + -0.53863809656961025851, 0.26583207480533155298, + 0.29045532248860694846, -0.42890712928222346489, + 0.68058292966068034691, -0.58418899472141039286, + 0.17293725333336318339, -0.22648989239923988936, + 0.23638164415242030048, 0.67182021923326307178, + -0.17694401154228043271e+01, 0.20165898830093507144e+01, + -0.95650531713235387166, 0.39390601026979499277e-01, + -0.18058963711329323321, 0.89416606557242650499, + -0.34349991231667181824, -0.13515174585985674227e+01, + 0.23271674844159280227e+01, -0.84109030078629676286, + -0.13896807459876940882e+01, 0.14865772380440949174e+01, + 0.12226784384476709899e+01, -0.32008355020511896072e+01, + 0.16147789479051639638e+01, 0.20582718510976634185e+01, + -0.28720451315817836502e+01, -0.47242735143761960259, + 0.37924612973818900841e+01, -0.19973710608662957888e+01, + -0.32613366017489653359e+01, 0.55801942647220545979e+01, + -0.15055421891087747976e+01, -0.39850519145952771893e+01, + 0.42489286650565389891e+01, 0.75223955729700842099, + -0.38571353482182590966e+01, 0.10133022811782594896e+01, + 0.37303971271269116272e+01, -0.34624255043729084136e+01, + -0.14261318850037743022e+01, 0.45961410994089506588e+01, + -0.23431501364518192432e+01, -0.11997165454444147503e+01, + 0.14914773916279626675e+01, 0.18350813470694171681, + 0.70971399138464852374, -0.32789505668363450042e+01, + 0.28590320217985647488e+01, 0.12419422795144960947e+01, + -0.30788954329565560997e+01, -0.10394217369316852140, + 0.30712786865560457450e+01, 0.90581874436782991444e-01, + -0.53666155496150258486e+01, 0.46045203426673912972e+01, + 0.21380431140430795622e+01, -0.55006836713454543286e+01, + 0.15133225572527502223e+01, 0.31426533990423051179e+01, + -0.18960398841993775232e+01, -0.10521124690590397677e+01, + -0.27942326527409006021, 0.30204721041697943917e+01, + -0.54175312545969722677, -0.40294067761417453610e+01, + 0.29121633111825948603e+01, 0.23154794951509898304e+01, + -0.19324198349595940183e+01, -0.40506783073849401688e+01, + 0.52339379671083081647e+01, 0.15317342327104352950e+01, + -0.57514362189844980833e+01, 0.22009789986235972492e+01, + 0.10156849361564324052e+01, 0.15804556102742144397e+01, + -0.20569829025167569725e+01, -0.35193883153032334832e+01, + 0.56351669570210081162e+01, 0.10397755666338808211e+01, + -0.52046594422883059039e+01, 0.86740724722956713544e-01, + 0.37288824402099076671e+01, 0.12127845543825741537e+01, + -0.41849485674461783802e+01, -0.72107197972213998849, + 0.25993364436577199861e+01, 0.27441691225837829826e+01, + -0.22934933186252308701e+01, -0.54152789974990449551e+01, + 0.53054560094087310773e+01, 0.30439723699812604174e+01, + -0.33807263633109241319e+01, -0.21880617221637828074e+01, + -0.44814373808705509905, 0.46309656448385236871e+01, + 0.19408341815627847549e+01, -0.60153441591790599574e+01, + -0.20624495266797566728e+01, 0.51966536825487690265e+01, + 0.20684040509855972090e+01, -0.12008601180183651191e+01, + -0.42729553994831022123e+01, -0.22149420984890242359e+01, + 0.71600727475502203845e+01, 0.18281773304725588147e+01, + -0.36101464724840646170e+01, -0.39132132323983119804e+01, + -0.82540708679350005550, 0.61441103859992605152e+01, + 0.27321265653680826269e+01, -0.19252575617044098699e+01, + -0.74074522393423443134e+01, 0.45862244607509544680, + 0.40027162491958794277e+01, 0.44298001752709490475e+01, + 0.24255019420270387265e+01, -0.85521785302402371087e+01, + -0.33395473211176796013e+01, 0.87040651586063833012, + 0.42241807561588604614e+01, 0.77553732056450881416e+01, + -0.84216548382792699723, -0.66425901756439618140e+01, + -0.46190729881379359867e+01, -0.42778614781449055826e+01, + 0.44432008023400459962e+01, 0.90876342545871686696e+01, + 0.36175450108276665517e+01, 0.31642516974833125865e+01, + -0.62157690825175668792e+01, -0.90976022127693418895e+01, + -0.62495155586392137081e+01, -0.52471883676744992542e+01, + 0.31873701530096454348e+01, 0.66838221502567147780e+01, + 0.11166829301675972985e+02, 0.10807572366587152146e+02, + 0.12316063779233376252e+02, 0.80128475100130174269e+01, + 0.74660311518478570392e+01, 0.52989999090240180735e+01, + 0.21451605016307846441e+01, 0.29432912102992898618e+01, + 0.63828581533753792066, 0.53921865670340995980, + 0.44270272651056014057, 0.54645399801074956425, + -0.10637320960130784986e+01, 0.15171392207568510369e+01, + -0.10345265392697715612e+01, -0.34203395044648345069e-01, + 0.11311894791522578707e+01, -0.14594268152174461051e+01, + 0.66782079942870020695, 0.91764182782673631156, + -0.24086632723099854481e+01, 0.28621600704843972451e+01, + -0.18608334530612242741e+01, -0.20253407651112187438, + 0.23036826348285721622e+01, -0.33587734655854499799e+01, + 0.28319029012902747766e+01, -0.10441546748379697540e+01, + -0.10208768443733440279e+01, 0.22748585171255233384e+01, + -0.21395383605798721227e+01, 0.84013647769113775077, + 0.76161397046623524609, -0.17037620455384128171e+01, + 0.14854146091352584680e+01, -0.34469603911856233625, + -0.91870468700293606013, 0.14399899451696871466e+01, + -0.82307858628444374727, -0.61942936785510871456, + 0.20380282190486016525e+01, -0.25409806569836259627e+01, + 0.17075082767652005611e+01, 0.15696354837580597796, + -0.21783987549454852939e+01, 0.33755425067816124951e+01, + -0.31794693962550559796e+01, 0.17148646251805346186e+01, + 0.28642378644035215718, -0.18896277956688123378e+01, + 0.24370977428958915390e+01, -0.18571616761351235070e+01, + 0.63926509179047341647, 0.47823023731096042654, + -0.92930295586495503812, 0.60690368618233170306, + 0.12333285029319024373, -0.67966631459231430235, + 0.62559030288605799175, 0.65224716260428056147e-01, + -0.99295308615134059149, 0.15624650336719223542e+01, + -0.13332858108794003460e+01, 0.28743602044751503932, + 0.11304175016870969817e+01, -0.22292929426702472462e+01, + 0.24282496848918233567e+01, -0.15664596278043256827e+01, + 0.26225228472940540492e+01, -0.12452789133068853378e+01, + -0.63593353050914824820e+01, 0.12036386882908798768e+02, + -0.12986359442048392765e+02, 0.69612078630200047158e+01, + 0.25153378150752212505e+01, -0.11873715244095892629e+02, + 0.15572491142487002946e+02, -0.12986587215416854235e+02, + 0.48448849967643061731e+01, 0.33858851566444294612e+01, + -0.84354152567563627230e+01, 0.71696183493633949269e+01, + -0.20675709210624062528e+01, -0.42040266163140316280e+01, + 0.66255552508523853916e+01, -0.45974430947085789256e+01, + -0.15857732830062420959e+01, 0.71879004103076793442e+01, + -0.97204222371229658251e+01, 0.66342193356521157455e+01, + -0.62211633344444150495, -0.58337197611890774240e+01, + 0.81585631789396746427e+01, -0.61989806776976061897e+01, + 0.43957964626144896414, 0.45699486150521222427e+01, + -0.67966230283101678467e+01, 0.41194209164268169587e+01, + 0.69858099239541138203, -0.56099704549380939866e+01, + 0.68121688540360532116e+01, -0.48186040148701225760e+01, + 0.19916916144745949735, 0.31960969125108156241e+01, + -0.45469212852349532028e+01, 0.27871762615760502513e+01, + -0.84832972603544631873, -0.27082947593026024391, + -0.13144503608911606296e+01, 0.32457148452298376640e+01, + -0.42434466486295319143e+01, 0.14597814021925612504e+01, + 0.35245708855535378135e+01, -0.90875450146041689692e+01, + 0.10670183003580293146e+02, -0.75362715846819181564e+01, + -0.21931625445674443609, 0.76425997631255420117e+01, + -0.11619527624966682566e+02, 0.91020164990611913680e+01, + -0.28716498412657331940e+01, -0.37593770511077386764e+01, + 0.56679968917731180511e+01, -0.22808296878852689638e+01, + -0.36126881535565336101e+01, 0.83874649015907500882e+01, + -0.38066558871231372940e+01, -0.92672780404167279245e-01, + 0.19111539762118763264e+02, -0.84641456244244981377e+01, + 0.31850509142452800404e+02, 0.22471872813392760548e+02, + 0.26611136367557165272e+02, 0.67918729678720694665e+02, + 0.40820903525745123375e+02, 0.70466738384704783016e+02, + 0.60868482114746058187e+02, 0.26540317087221559689e+02, + 0.22347285569942847872e+02, -0.23102303280875780445e+02, + -0.46993366891921937167e+02, -0.36063073801930279672e+02, + -0.35203919143885890719e+02, 0.54397902911097668621e+01, + 0.36590709748967114479e+02, 0.36758958573763443667e+02, + 0.20958542121454950546e+02, -0.79175128675916726095e+01, + -0.41143125597246402947e+02, -0.30753000173437715858e+02, + 0.75627229231296038137e+01, 0.18339084675666203594e+02, + 0.41833628449066488031e+02, 0.90233500793156362629, + -0.32352954200155117803e+02, -0.22712754612759486150e+02, + -0.47555282089168189330e+01, 0.26680731752778442001e+02, + 0.30214358049053771538e+02, -0.82586115915579423330e+01, + -0.37687705772560839534e+02, -0.23879797309774826175e+01, + 0.51430090606180813850e+01, 0.31452752040469174943e+02, + 0.11948867961833336437e+02, -0.45679833323245425447e+02, + -0.14661266545501618896e+01, 0.10547101297635210315e+02, + 0.18140903148775223030e+02, 0.14484266394078046503e+02, + -0.39611802132980848512e+02, -0.80926928569784113421e+01, + 0.25753528891824419844e+02, 0.13114960910972907726e+02, + -0.82951204207343458563e+01, -0.23582773454971892590e+02, + 0.10259807668813547554e+01, 0.22260644697538076286e+02, + 0.13572400526400572929e+02, -0.31288266393569873713e+02, + -0.10702563211140859067e+02, 0.28536995438910661704e+02, + 0.25519107348553577985e+01, -0.71659669369015794871e+01, + -0.16164084023813188651e+02, -0.40066693515930784653, + 0.34053136783058370440e+02, -0.13423629903102693106e+02, + -0.30107942522436502486e+02, 0.22630541233188232297e+02, + 0.10106120594596685436e+02, -0.53160019193561032225e+01, + -0.12589147809993168181e+02, -0.47106274184546785833e+01, + 0.24287783510757872563e+02, -0.14438583553293196093e+01, + -0.24384089233636341731e+02, 0.27829917384811766468e+01, + 0.29545282230930222767e+02, -0.15487928258025924322e+02, + -0.20336655263508500724e+02, 0.21371569313643643540e+02, + 0.13206210086231475742e+01, -0.12831360549781780644e+01, + -0.13646496423299957712e+02, 0.35506132907266239052e+01, + 0.20440949896262392116e+02, -0.13218871242418158474e+02, + -0.18738724773331625784e+02, 0.21919853359494783973e+02, + 0.13968818267253507059e+02, -0.36874220531110239563e+02, + 0.16018304617676431434e+02, 0.12987148068383765676e+02, + -0.10689295387890838995e+02, -0.67018927698130337234e+01, + 0.39343537958776204633e+01, 0.12662813363330164051e+02, + -0.12524513375838038698e+02, -0.23294457711088485397e+01, + 0.17946044861264454084e+01, 0.16482217504316658108e+02, + -0.18557177428367388927e+02, -0.95392046650336670410e+01, + 0.32934133031261225710e+02, -0.17064519896438451241e+02, + -0.19278161049273528249e+02, 0.28770457226275777174e+02, + -0.19682198788439655424e+01, -0.22051307206383036430e+02, + 0.12797091692305796684e+02, 0.11693500303633067361e+02, + -0.15560551796916955780e+02, -0.41651269467392966206e+01, + 0.18673196359161593705e+02, -0.11099707206631029166e+02, + -0.39015962613693879746e+01, 0.72073664178310004047e+01, + -0.24139119305237444202e+01, 0.38525602346205696236e+01, + -0.98427003581003269517e+01, 0.52844183530136898952e+01, + 0.11210328959991183950e+02, -0.20125507405185270926e+02, + 0.78688916989820523185e+01, 0.11173328904899817005e+02, + -0.12185189525599948723e+02, -0.51847152138010601519e+01, + 0.14096771425182081927e+02, 0.32604771398990401998e+01, + -0.28742328523901530701e+02, 0.28838743448607136344e+02, + 0.18272982968774316159e+01, -0.30938640420174230883e+02, + 0.26997374115903138403e+02, 0.20229943072153804273e+01, + -0.18998528901256616308e+02, 0.41712651365210513532e+01, + 0.20500049664744334876e+02, -0.19608510282159443250e+02, + -0.10382239440045205825e+02, 0.35387803046921582961e+02, + -0.24927719856898669093e+02, -0.10362510199433801361e+02, + 0.30901718398189935044e+02, -0.15220659343902049443e+02, + -0.15183002945634290981e+02, 0.22862049988526813138e+02, + -0.14097468556506857595e+02, -0.30073738036865447221e+01, + 0.68261299111625755032e+01, 0.14360988012886348741e+02, + -0.27924459505361120648e+02, -0.18382385745492422213e+01, + 0.45190381216467230274e+02, -0.55854588709702134963e+02, + 0.15986793349532657516e+02, 0.20221055688749224544e+02, + -0.12569449555826436082e+02, -0.23876027530171292312e+02, + 0.20997082569762397952e+02, 0.29064547405563612159e+02, + -0.67570762407775347924e+02, 0.28848153809165040684e+02, + 0.45079085324210957708e+02, -0.62675896335810200810e+02, + -0.10397187194124818177e+02, 0.76469615157527201177e+02, + -0.43925162026348658628e+02, -0.57238056995981750674e+02, + 0.85466531848275252514e+02, 0.67031064614060653639e+01, + -0.10778567819498196911e+03, 0.68469983364372211554e+02, + 0.74509731759760043701e+02, -0.14467911418702630044e+03, + 0.39755885178022658977e+02, 0.10663379109468665717e+03, + -0.11117845339635746882e+03, -0.27509560265520203615e+02, + 0.10981004653186853659e+03, -0.25946354111513763030e+02, + -0.10692696373072263327e+03, 0.95769150140365042034e+02, + 0.41262890217811673210e+02, -0.12256226855561334332e+03, + 0.51108908049945306118e+02, 0.44318716537208452166e+02, + -0.34969215117620862543e+02, -0.28756119331538172901e+02, + 0.41263113607047952058e+01, 0.81165771327618330133e+02, + -0.80216995690605628511e+02, -0.35786533292857846789e+02, + 0.91773514392856796462e+02, 0.81500897365572610997, + -0.94227483066318399096e+02, 0.12140931624438893621e+02, + 0.13676943643631088321e+03, -0.11979648820344833382e+03, + -0.64527693300947532862e+02, 0.15224202221593620266e+03, + -0.35869888352839289780e+02, -0.89217079651711060251e+02, + 0.39862336987788374643e+02, 0.50321895805965390025e+02, + -0.32961051627395274721e+01, -0.90300979897103545113e+02, + 0.26893852236207674622e+02, 0.10555887281280030265e+03, + -0.75089022265962782399e+02, -0.78357033643619175223e+02, + 0.71455274301077224663e+02, 0.10038302500168633458e+03, + -0.13916328655388315383e+03, -0.45587064060215851669e+02, + 0.15230241099162452656e+03, -0.38139162620627544698e+02, + -0.52797816208016570272e+02, -0.37501050386667678538e+02, + 0.66520290757955777394e+02, 0.90505855567642086612e+02, + -0.15680019186197512226e+03, -0.29570570555780022914e+02, + 0.14508175355597515477e+03, 0.51165601306191934583e+01, + -0.11321586972466529630e+03, -0.33850336126336756593e+02, + 0.11859985059591727463e+03, 0.29459255108799844436e+02, + -0.84582017708093630404e+02, -0.79570216698286657220e+02, + 0.78280588569465479054e+02, 0.13886383133760455166e+03, + -0.13603242618513596085e+03, -0.98952857400162784529e+02, + 0.95746692817676560594e+02, 0.75555396437942150101e+02, + 0.29777271293633198468e+01, -0.13315329823249572883e+03, + -0.53021548208951749359e+02, 0.17237951781945298535e+03, + 0.58592800704693253522e+02, -0.14415660815337759004e+03, + -0.69329138028705870056e+02, 0.36337277120853805457e+02, + 0.13546711279993419907e+03, 0.47177963518455619862e+02, + -0.19325963974300051973e+03, -0.61204781860571628727e+02, + 0.10142633583452291646e+03, 0.12815082843423911640e+03, + 0.76685629423615369049e+01, -0.16435238589208859139e+03, + -0.95270927292492160632e+02, 0.72612147559521247331e+02, + 0.20024825504763842332e+03, 0.40560766504880685357, + -0.12176769774920985867e+03, -0.13921103053801195415e+03, + -0.50240372533366887353e+02, 0.22646355607526044196e+03, + 0.11578296803452184349e+03, -0.30727341380483625954e+02, + -0.12982910094978572602e+03, -0.21826611118545284285e+03, + 0.20919686618448050552e+02, 0.18930401058872126896e+03, + 0.14693700593820994982e+03, 0.11639904786503556977e+03, + -0.13112122274639472153e+03, -0.25412728751833711272e+03, + -0.12512685334898721123e+03, -0.76078855595027420122e+02, + 0.17530663024707473596e+03, 0.26183124771760918748e+03, + 0.19744449531352094596e+03, 0.13594556479955076611e+03, + -0.75510544960252261149e+02, -0.21348925599541610154e+03, + -0.30906584265521070165e+03, -0.33763898826227000427e+03, + -0.34021410623060148737e+03, -0.25230087554450838638e+03, + -0.20997991987779371925e+03, -0.15445101765220994139e+03, + -0.71865887622960329395e+02, -0.74012413570861042444e+02, + -0.30273350067812561548e+02, -0.63734187580692216457e+01, + -0.22070825911033001177e+02, -0.45507719359078180332e+01, + 0.16356747665598177832e+02, -0.28529094147848695684e+02, + 0.17551717544689115158e+02, 0.72530787688473505881e+01, + -0.33305213288393758830e+02, 0.41502041010263731380e+02, + -0.23352126022042895670e+02, -0.13930843670013159041e+02, + 0.49849776464426497569e+02, -0.62430840826901146556e+02, + 0.41742471807242431225e+02, 0.34465672620758112110e+01, + -0.49731069307211271280e+02, 0.72311606613710821989e+02, + -0.59032488957106110661e+02, 0.17518561153247137696e+02, + 0.29417344834434388190e+02, -0.56747408140894073370e+02, + 0.51505543051699326895e+02, -0.19493457922320601483e+02, + -0.18734481739226751529e+02, 0.40510846496894600932e+02, + -0.34198237133864900272e+02, 0.56828453158068628071e+01, + 0.25852307869301501597e+02, -0.39622067870897843989e+02, + 0.25853688650632232537e+02, 0.84923129481127226370e+01, + -0.43628877077559742759e+02, 0.58473249445693213033e+02, + -0.42660857877529856808e+02, 0.26253370565455171892e+01, + 0.41937310235812681469e+02, -0.68669487725031487457e+02, + 0.64561222413341099013e+02, -0.32441869485862575573e+02, + -0.11015204564229657436e+02, 0.44647129989204536571e+02, + -0.53854421119142607211e+02, 0.37652844242171504163e+02, + -0.79381252576158871648e+01, -0.17892245592709400626e+02, + 0.26804814722813937067e+02, -0.16765776280439649071e+02, + -0.30452617280945992739e+01, 0.18378433135391013309e+02, + -0.18495512649612532385e+02, 0.24806060684654283044e+01, + 0.20326316623764462577e+02, -0.35721228929028079335e+02, + 0.32884910640391389336e+02, -0.10761160690261879935e+02, + -0.20851737845361718371e+02, 0.46213868436084993618e+02, + -0.51866931734044086966e+02, 0.33848468140979626639e+02, + -0.53880609592297645349e+02, 0.38385698946564176026e+02, + 0.79824228181147688588e+02, -0.16422169310876225268e+03, + 0.17793973201880714896e+03, -0.91945264301362129800e+02, + -0.37976061582646600812e+02, 0.16104382274249621787e+03, + -0.19965497533602706426e+03, 0.15179105026151415814e+03, + -0.31879963753265275983e+02, -0.78548268995045944507e+02, + 0.13661179060328214518e+03, -0.10229288700737602369e+03, + 0.18965569860625596021e+02, 0.72823831299236488235e+02, + -0.10109811241331921394e+03, 0.63903334139911677880e+02, + 0.29279128122710101678e+02, -0.10528670750028118164e+03, + 0.13061879348865224415e+03, -0.73002808615202326337e+02, + -0.20417136511297609758e+02, 0.11030200714527333616e+03, + -0.12996373562179766736e+03, 0.83980660420482323048e+02, + 0.13859606762647597833e+02, -0.90651290799946906418e+02, + 0.11721246578690065121e+03, -0.66344380923756361312e+02, + -0.13418931168608574822e+02, 0.87546613021763079132e+02, + -0.98810893842478520810e+02, 0.60278401054119321145e+02, + 0.13351854078188743813e+02, -0.59157611293202961633e+02, + 0.65596136418843698834e+02, -0.21634365886636324205e+02, + -0.20044162285244574662e+02, 0.38150251605284196899e+02, + -0.20139949232896450226e+01, -0.48266371864268734271e+02, + 0.85589261622144235275e+02, -0.58033323530410697799e+02, + -0.15152873470869639760e+02, 0.10939406058486321172e+03, + -0.15018158006941419558e+03, 0.11965638622141858605e+03, + -0.13327055647653871517e+02, -0.95253889620955405348e+02, + 0.15724609315231955975e+03, -0.12218128517097655106e+03, + 0.29326747524772240894e+02, 0.71983023569529720476e+02, + -0.10150764993794014401e+03, 0.47165756781442922829e+02, + 0.51355376464956400184e+02, -0.13901631325873609057e+03, + 0.86343523533500700751e+02, -0.42240806362678135599e+02, + -0.24288935969121470748e+03, 0.83611316703047833698e+02, + -0.46081581644177981616e+03, -0.35093543774395988066e+03, + -0.42976958984906900696e+03, -0.10088561168246108082e+04, + -0.67032888972801049476e+03, -0.10513775497787248696e+04, + -0.95544023789635468802e+03, -0.40695526046804877751e+03, + -0.33582432750795715037e+03, 0.34729048754428566781e+03, + 0.72324665481906640707e+03, 0.56930692231645491574e+03, + 0.51650369392253560363e+03, -0.53434228586294103991e+02, + -0.58928643052909114886e+03, -0.55256300791855392163e+03, + -0.32045414723772478283e+03, 0.10519616204925770830e+03, + 0.65981435392715127364e+03, 0.44396758395950456588e+03, + -0.88045858528762963147e+02, -0.30756468317045698768e+03, + -0.62220157606106317871e+03, -0.33504280080723738422e+02, + 0.51487427063925042603e+03, 0.33887574365846876390e+03, + 0.74121571016528491782e+02, -0.39786292138740714108e+03, + -0.49320807094452095498e+03, 0.16647703252264918206e+03, + 0.53769038470824807519e+03, 0.72577475131537383390e+02, + -0.98789645970481160475e+02, -0.48581925947974627888e+03, + -0.16315917771936102554e+03, 0.67109749886327392687e+03, + 0.55011332172876713287e+02, -0.18382310032606488903e+03, + -0.27573451274732104821e+03, -0.20882491675560666522e+03, + 0.58438346423649477401e+03, 0.15125558447543426155e+03, + -0.41370457889348142544e+03, -0.20112204548039352403e+03, + 0.14389290680871147288e+03, 0.33526960705194102275e+03, + 0.14993081542862235267e+02, -0.36741570200986961936e+03, + -0.19650821923099601918e+03, 0.48237145991997164174e+03, + 0.15511770955608872669e+03, -0.42712641133878116761e+03, + -0.48016839246957147225e+02, 0.11215562771376517048e+03, + 0.25319918013938070089e+03, 0.26091452595874420339, + -0.52268122973125582575e+03, 0.21367429920329314541e+03, + 0.44705636188953815235e+03, -0.32549965209939551869e+03, + -0.17851397119339640085e+03, 0.97199851509662948956e+02, + 0.19168232482910926251e+03, 0.60008458081606164569e+02, + -0.34985194649384686727e+03, -0.67126766346085640080e+01, + 0.40080657084024517189e+03, -0.57076607011986453699e+02, + -0.45607467992289798531e+03, 0.25501122610052485129e+03, + 0.28491254719605410628e+03, -0.29500472201469807487e+03, + -0.53852139790287409937e+02, 0.47288342306389310465e+02, + 0.19220988247767951407e+03, -0.48107681691545394642e+02, + -0.30938385784509375753e+03, 0.18622221227143549527e+03, + 0.31745621046919256969e+03, -0.37682071713447874117e+03, + -0.16801489488853999887e+03, 0.51743213936449194534e+03, + -0.19940259652514069444e+03, -0.23651379144579314584e+03, + 0.18330182936873322319e+03, 0.10691090442758064682e+03, + -0.87078811744809840434e+02, -0.15006210494753230478e+03, + 0.13782816737465236656e+03, 0.90713537699212395182e+02, + -0.72648766464876430859e+02, -0.22499746066977670012e+03, + 0.27473975498029381015e+03, 0.14335424506065680816e+03, + -0.49551354207004317232e+03, 0.25030336428233945867e+03, + 0.30466382451083063643e+03, -0.44412888527113875625e+03, + 0.26590073747172986884e+02, 0.34337007004273033317e+03, + -0.19551321399195475692e+03, -0.19067122695819949740e+03, + 0.25959289410084704741e+03, 0.38187103040502769602e+02, + -0.26154062246439576711e+03, 0.15116076649732883652e+03, + 0.69326603428760606107e+02, -0.10915401397907069736e+03, + 0.27804990031709920117e+02, -0.48839067639601495330e+02, + 0.14687581100978638915e+03, -0.87151901720840896814e+02, + -0.15593800213479326544e+03, 0.28666728650744306606e+03, + -0.99335230162452475611e+02, -0.18346721583857512883e+03, + 0.18171545352620015024e+03, 0.10523125403463801320e+03, + -0.25806722088889296174e+03, -0.27108595281520075915e+01, + 0.40038023426153915807e+03, -0.41806514129956747183e+03, + -0.31226310791748435491e+02, 0.45615614314998168766e+03, + -0.37819287359062326459e+03, -0.75140112510908210197e+02, + 0.33067108961870042094e+03, -0.86301857832403229054e+02, + -0.31474259350866208251e+03, 0.32093631844203451919e+03, + 0.12765711817095558445e+03, -0.50914706964320924953e+03, + 0.35389360660739578179e+03, 0.17750669362176765276e+03, + -0.48035133017172626069e+03, 0.22874579457131079607e+03, + 0.24329217526785268433e+03, -0.35885019252197002970e+03, + 0.10752723818468849970e+03, 0.22329783165295381764e+03, + -0.20321355079178883329e+03, -0.20286996367129390251e+03, + 0.46701241970042713092e+03, -0.96886234887004434313e+02, + -0.49633921987064144332e+03, 0.64810083272873691840e+03, + -0.11809969116197808603e+03, -0.37730711971701794027e+03, + 0.26361993430197946964e+03, 0.28186300019275182649e+03, + -0.36194401922716974696e+03, -0.21825250429954041920e+03, + 0.76247336808466809543e+03, -0.39719797215123168144e+03, + -0.48803652076367364998e+03, 0.80579474358462209693e+03, + -0.38511110561384931827e+02, -0.77459219860974542371e+03, + 0.52808454056857431169e+03, 0.56420183342534778603e+03, + -0.94569080216690610996e+03, -0.74354069545368757232e+01, + 0.11556386441184856722e+04, -0.82960208955332950609e+03, + -0.66785712381341204491e+03, 0.14679272836166710476e+04, + -0.41916717533030538334e+03, -0.10934607726675903905e+04, + 0.11213111059428888439e+04, 0.35547613034903343987e+03, + -0.11984667424346500866e+04, 0.26119405664524134636e+03, + 0.11622901573310546155e+04, -0.10034633067685833794e+04, + -0.46971497263209857920e+03, 0.12632352512160180140e+04, + -0.40029712307867913523e+03, -0.60375167662141973324e+03, + 0.34521798386213737331e+03, 0.49565998930299059566e+03, + -0.23158921264898512504e+03, -0.81261695692565751870e+03, + 0.89890980115873810519e+03, 0.37281638934796211515e+03, + -0.10328479646298274020e+04, 0.15173787323815137285e+02, + 0.10809140265287505827e+04, -0.25401255166727827373e+03, + -0.13643647554979443157e+04, 0.12290469442471053299e+04, + 0.70507735991383992769e+03, -0.15805323955552919415e+04, + 0.27827560102733337999e+03, 0.10177020141589185869e+04, + -0.34372583808783957693e+03, -0.70825409289853644168e+03, + 0.12044000740517871861e+03, 0.10329309130467938758e+04, + -0.38912923858550516343e+03, -0.10985260195382475104e+04, + 0.79364321862974929900e+03, 0.91849675896257372187e+03, + -0.88316613505186410293e+03, -0.99706830577457981235e+03, + 0.14527493479630654747e+04, 0.50840133655978229399e+03, + -0.15637256309346989838e+04, 0.20718241031065844027e+03, + 0.76976314138487919081e+03, 0.37682763807967319281e+03, + -0.83998119265120897126e+03, -0.86321082506967070458e+03, + 0.16517734224889600227e+04, 0.34214370574290489913e+03, + -0.15704727345538990448e+04, -0.11352792117067161826e+03, + 0.12886471671613537637e+04, 0.37741732394099125258e+03, + -0.13008249041170499822e+04, -0.40238168046972083403e+03, + 0.10291977931312642340e+04, 0.86769445965268971577e+03, + -0.95440479366938063777e+03, -0.14009838118592076626e+04, + 0.13751830057879981268e+04, 0.11674760336823414946e+04, + -0.10181539156872205467e+04, -0.96261973848913373786e+03, + 0.59325218603976672682e+02, 0.14784105785699869102e+04, + 0.54017880860048205705e+03, -0.18766060664779256513e+04, + -0.64768781038020767937e+03, 0.15360304739595044339e+04, + 0.86964377433401205053e+03, -0.43799713879837833019e+03, + -0.15885767739514456025e+04, -0.38057294463995464184e+03, + 0.20138995811533750384e+04, 0.76840525661296726412e+03, + -0.11271292222340341596e+04, -0.15075522597773860980e+04, + 0.12896984021595765402e+01, 0.17670406825191266762e+04, + 0.11354205091888657080e+04, -0.90123361406667174833e+03, + -0.21295014590624805351e+04, -0.10893913447700042241e+03, + 0.14009325264081805926e+04, 0.16301217196933250762e+04, + 0.39760437771705602472e+03, -0.23473779979751520841e+04, + -0.14216435068981286349e+04, 0.35360957714936267848e+03, + 0.15420572103718850485e+04, 0.23344317282158017406e+04, + -0.18448625630258959518e+03, -0.20737271436950095449e+04, + -0.17550984814303049006e+04, -0.12105690010520202122e+04, + 0.14648073319215584434e+04, 0.27403508248792959421e+04, + 0.15737369484363168795e+04, 0.69115461124335638488e+03, + -0.18786749594083767079e+04, -0.29232687065139502920e+04, + -0.22844457333431264487e+04, -0.14349738971093913733e+04, + 0.77691325003031272445e+03, 0.24410562238692741630e+04, + 0.34075229037205895111e+04, 0.38588669786470950385e+04, + 0.37157687713853833884e+04, 0.29068558342150763565e+04, + 0.23192235365628089312e+04, 0.17005112660230026904e+04, + 0.87725618120776039177e+03, 0.75273843562476497482e+03, + 0.38616838539360605864e+03, 0.58828344723270760142e+02, + 0.24835069609024199622e+03, 0.29930558405971819269e+02, + -0.12947631985184938230e+03, 0.25233382917764419062e+03, + -0.15597691103861401984e+03, -0.63172692890340314875e+02, + 0.29969251213036665149e+03, -0.38046747211526457022e+03, + 0.22865120369861827498e+03, 0.95569537471505384474e+02, + -0.41370106114631244054e+03, 0.53282179529695997644e+03, + -0.36428420953027153928e+03, -0.17506446170331528833e+02, + 0.41007582026506730699e+03, -0.59868640846629409680e+03, + 0.47883924034487341714e+03, -0.11855703497008937575e+03, + -0.28245889011550389114e+03, 0.50666535027426266424e+03, + -0.44383609305280077706e+03, 0.14903361348322511049e+03, + 0.19357257546172252205e+03, -0.38288031139360890620e+03, + 0.31683962951604218006e+03, -0.49684859667992178345e+02, + -0.24589922271174830826e+03, 0.38246816168560633287e+03, + -0.26999674489253328602e+03, -0.32908023145132027310e+02, + 0.35261878263727282956e+03, -0.50187501765904329432e+03, + 0.38575060079349572106e+03, -0.56052608076533346093e+02, + -0.31880758139330788481e+03, 0.54590514357355675656e+03, + -0.51268335605527818188e+03, 0.24354665736542204968e+03, + 0.11753640931448580886e+03, -0.38882061061329591212e+03, + 0.44698790286792336701e+03, -0.28811997223219401576e+03, + 0.20116062555640734644e+02, 0.20288157284141138348e+03, + -0.26756806530502746000e+03, 0.15947429960427777473e+03, + 0.35909605628565678614e+02, -0.18832596527063245162e+03, + 0.19934039014397160372e+03, -0.58800182492047852634e+02, + -0.15093179351768552010e+03, 0.30246913112216805075e+03, + -0.29660750452828557400e+03, 0.11938376657880978371e+03, + 0.14719479886412531755e+03, -0.36741222924736479172e+03, + 0.42354487136675288639e+03, -0.27920218830784233432e+03, + 0.39635811377673041989e+03, -0.28571993418002449516e+03, + -0.51132282656510966490e+03, 0.10493052767486226458e+04, + -0.11142334609214028660e+04, 0.54130137109750728541e+03, + 0.27656911079785015772e+03, -0.10144932321199598846e+04, + 0.11844557564128085687e+04, -0.81664771481738603143e+03, + 0.28799926698417841919e+02, 0.63467849355249984455e+03, + -0.92243886230476323362e+03, 0.60724947652393564113e+03, + -0.16587654927005960559e+02, -0.57443150044323033399e+03, + 0.70281388251598275474e+03, -0.39764335510710401422e+03, + -0.24648469758735518553e+03, 0.72460252267265616410e+03, + -0.83252308858512196821e+03, 0.38683188488637159708e+03, + 0.25802405559740282115e+03, -0.82642287929071437702e+03, + 0.88177880953753333415e+03, -0.49344105905597319861e+03, + -0.21062212171788104342e+03, 0.71719395482441802869e+03, + -0.84128695242383855657e+03, 0.42974205239438202852e+03, + 0.14926535872491604096e+03, -0.64211604980783704377e+03, + 0.66544105203372407686e+03, -0.34094544189905383291e+03, + -0.19374515032941471304e+03, 0.48331157381045557031e+03, + -0.45252590485431687739e+03, 0.55128971185956707757e+02, + 0.30442339423798711096e+03, -0.44511596472213113884e+03, + 0.14476579719656848511e+03, 0.30296629460677814905e+03, + -0.67300599491940704411e+03, 0.56553110025085720736e+03, + -0.84826865738676758610e+02, -0.60294422341663403131e+03, + 0.96347243489058655541e+03, -0.83941626157767018412e+03, + 0.16880908266801191076e+03, 0.55657383420739347457e+03, + -0.99433681689591253416e+03, 0.77658385074088755573e+03, + -0.15184177269823899792e+03, -0.55042285780142344720e+03, + 0.77038135500742566819e+03, -0.40414731903228630472e+03, + -0.29766243799997306496e+03, 0.96459180827541013059e+03, + -0.69579284568770538044e+03, 0.48089940045108562572e+03, + 0.14272401278892882601e+04, -0.35369997438122646827e+03, + 0.30253781447233855033e+04, 0.24138708314009818423e+04, + 0.30658181272574306604e+04, 0.67161058552249796776e+04, + 0.48110943448008674750e+04, 0.70512855310113209271e+04, + 0.66105648935416538734e+04, 0.28317575617763977789e+04, + 0.21989348833591238872e+04, -0.22738060360222862073e+04, + -0.50164158342566979627e+04, -0.39262993998839169763e+04, + -0.34465976150210371998e+04, 0.23476812679802509365e+03, + 0.41599348293477623884e+04, 0.37230356245337479777e+04, + 0.21922009428803721676e+04, -0.65382398116865113025e+03, + -0.46272935718228864062e+04, -0.29373561837300640036e+04, + 0.51354544245950239656e+03, 0.21775338002484713797e+04, + 0.42110287666146023184e+04, 0.28342336288856216697e+03, + -0.35854345307380499435e+04, -0.22795679021808173275e+04, + -0.51855928748089331748e+03, 0.26808160808594361697e+04, + 0.34967596229523896909e+04, -0.13097578353338642501e+04, + -0.35039842288167956212e+04, -0.64369161201424788032e+03, + 0.73913821430938742196e+03, 0.33771780796311509221e+04, + 0.97672097558201517131e+03, -0.44084310970479309617e+04, + -0.55848213059614477061e+03, 0.13694960316013650754e+04, + 0.18886766707211686480e+04, 0.13299329647008646589e+04, + -0.38406095003000518773e+04, -0.12075937862679575119e+04, + 0.29509983947196665213e+04, 0.13584800207160592436e+04, + -0.10621703263879844599e+04, -0.21589889388138512913e+04, + -0.25570161242545290747e+03, 0.26334074306889151558e+04, + 0.13047319092889938474e+04, -0.33390368421348439369e+04, + -0.98366079841435407616e+03, 0.28409532416943206954e+04, + 0.38632324254509319417e+03, -0.77475494655721024628e+03, + -0.17772051790018406336e+04, 0.58808751291680458451e+02, + 0.35403691966802884963e+04, -0.14685757188211089215e+04, + -0.30047281639863495002e+04, 0.21280096016840961965e+04, + 0.13369492139641922677e+04, -0.74704383789889436684e+03, + -0.12991762353368449112e+04, -0.34932703022856031794e+03, + 0.22724552612269958445e+04, 0.20292688314025866703e+03, + -0.28925719070479926813e+04, 0.48422002163773413486e+03, + 0.31083458684358533901e+04, -0.18051587743581185350e+04, + -0.18387639718986220032e+04, 0.18773424433219704497e+04, + 0.51621458626820026439e+03, -0.44993758724689712380e+03, + -0.12268830063203429290e+04, 0.27824483183454316304e+03, + 0.21324975740742165726e+04, -0.12463838564870513892e+04, + -0.22513974417784738762e+04, 0.27036789734223834785e+04, + 0.99149654869390758449e+03, -0.33615181321311147258e+04, + 0.11811720628423674953e+04, 0.17728499870306452522e+04, + -0.13385419788577980853e+04, -0.74453033518693712267e+03, + 0.70513138867037798718e+03, 0.84436920284209691090e+03, + -0.72407451452754423826e+03, -0.82982527078694749889e+03, + 0.64756108951089174752e+03, 0.14789192535033680542e+04, + -0.19070574549030272919e+04, -0.89642582991170650075e+03, + 0.32874426971652801512e+04, -0.16241344935903650821e+04, + -0.21336054767350151451e+04, 0.30341725429013226858e+04, + -0.13053999411608165815e+03, -0.24156235540638904240e+04, + 0.13765103571336580899e+04, 0.13206313434930466428e+04, + -0.18458812933070937561e+04, -0.16192057077550569488e+03, + 0.16930469615808351591e+04, -0.97185254208684693822e+03, + -0.48016718252933321764e+03, 0.69107104605180097678e+03, + -0.92934474093945880213e+02, 0.23574363335884675053e+03, + -0.94878452816228627853e+03, 0.60956333866453883275e+03, + 0.98210711910714962869e+03, -0.18268784078861342550e+04, + 0.53621131722133338826e+03, 0.13560779687699850911e+04, + -0.12548895995988477807e+04, -0.81810443597359699197e+03, + 0.19542066701407657092e+04, -0.20715166345413942395e+03, + -0.25416027927047530284e+04, 0.27442742358627560861e+04, + 0.21790175359368220143e+03, -0.30101449999379947258e+04, + 0.23866214639636577886e+04, 0.75266311424772140981e+03, + -0.24699546973309984423e+04, 0.70635019739634594771e+03, + 0.21562332114629462012e+04, -0.23013713230580392519e+04, + -0.71148599639465373912e+03, 0.33188528504856362815e+04, + -0.22970108105568365318e+04, -0.12726642940857482245e+04, + 0.32723853914922488002e+04, -0.14947959761001975494e+04, + -0.17533053385265905035e+04, 0.25158729884023655359e+04, + -0.42196127482832673650e+03, -0.20615963771135666320e+04, + 0.17082121769824602779e+04, 0.12980032716376872486e+04, + -0.32598130045088114457e+04, 0.10019406889778244931e+04, + 0.28182900684458440992e+04, -0.38148582119657053227e+04, + 0.46427245840560044599e+03, 0.27225075226850276522e+04, + -0.19595444326941212694e+04, -0.17209711310163606868e+04, + 0.26809620711845082042e+04, 0.67373468465931227911e+03, + -0.42841302745588036487e+04, 0.26279023810917105948e+04, + 0.25169462328345157403e+04, -0.48115590618755995820e+04, + 0.75725734996329356363e+03, 0.41062564075852997121e+04, + -0.32464984029665997696e+04, -0.27132579858299650368e+04, + 0.52220717118049560668e+04, -0.35312192674864172659e+03, + -0.60740541444694727033e+04, 0.47814859466089037596e+04, + 0.30549630932019772445e+04, -0.75390353411555461207e+04, + 0.22410572285584130441e+04, 0.56336581315532066583e+04, + -0.57084812114344003930e+04, -0.21541841238382094161e+04, + 0.64973436354141549600e+04, -0.13169179111823702897e+04, + -0.62752649553126620958e+04, 0.52078780460538782791e+04, + 0.27124379838045824727e+04, -0.65622962158228074259e+04, + 0.14212845567123138153e+04, 0.39137067361069057370e+04, + -0.17908080060536135534e+04, -0.34657166314766268442e+04, + 0.20436323305346420511e+04, 0.41771915202117734225e+04, + -0.50812904329525736102e+04, -0.19167242598039322274e+04, + 0.57905719188992725321e+04, -0.24368346522271195909e+03, + -0.60795882912088745798e+04, 0.19023335714037450543e+04, + 0.68793191769326167559e+04, -0.63797584272301819510e+04, + -0.37824770733187065161e+04, 0.81508943325732998346e+04, + -0.89205962908657670596e+03, -0.58407303972499394149e+04, + 0.15132492757612465084e+04, 0.45606737430271850826e+04, + -0.10299067089208126617e+04, -0.58443765036100821817e+04, + 0.25155136259657297160e+04, 0.58443843771631409254e+04, + -0.43549199189484797898e+04, -0.51394662383697932455e+04, + 0.51536847999670671925e+04, 0.50739080677436877522e+04, + -0.76567403953803423065e+04, -0.28229473728903112715e+04, + 0.80989653035367382472e+04, -0.21243035684957771991e+03, + -0.50190779269602999193e+04, -0.19996756575443248494e+04, + 0.52074319376747862407e+04, 0.40513379820528598430e+04, + -0.86904783272350396146e+04, -0.19602308610222999050e+04, + 0.84918696149097904708e+04, 0.88966763187850165195e+03, + -0.72532291633780996563e+04, -0.21325489584742022089e+04, + 0.71603175523460995464e+04, 0.25504829700700011017e+04, + -0.61114956642769084283e+04, -0.46982152292290547848e+04, + 0.56228068362646581591e+04, 0.71657336569762401268e+04, + -0.70602807373489931706e+04, -0.66959184979911196933e+04, + 0.53589729406314618245e+04, 0.59275449718650834257e+04, + -0.73857355253126684147e+03, -0.82399982696463357570e+04, + -0.26766346583296667632e+04, 0.10128728245497311946e+05, + 0.36088313866446314933e+04, -0.81810423521928023547e+04, + -0.53429593182369535498e+04, 0.26885912498465036151e+04, + 0.90613417997531541914e+04, 0.15454426595079553408e+04, + -0.10600459307386889122e+05, -0.46365678487448722080e+04, + 0.62696992868166635162e+04, 0.86418198904255459638e+04, + -0.26750705822030641912e+03, -0.96771608712209163059e+04, + -0.64681557973521767053e+04, 0.52828529222882198155e+04, + 0.11434679330185208528e+05, 0.10553718333152799005e+04, + -0.79983353196578764255e+04, -0.93454982342133898783e+04, + -0.15454570113233248776e+04, 0.12313907661128343534e+05, + 0.83830965293609351647e+04, -0.19049097454319180542e+04, + -0.90885147468786726677e+04, -0.12438407561302259637e+05, + 0.78063157479076846812e+03, 0.11311572853920686612e+05, + 0.10349508230704395828e+05, 0.62223942474502455298e+04, + -0.80384637267819207409e+04, -0.14886565566327575652e+05, + -0.94605720544127871108e+04, -0.31996311406670824908e+04, + 0.10147161906908289893e+05, 0.16206169999121551882e+05, + 0.13054284664251685172e+05, 0.76605015272707369149e+04, + -0.41417860385159001453e+04, -0.13650262398319751810e+05, + -0.18944372120991327392e+05, -0.21645739448703974631e+05, + -0.20451636718137764547e+05, -0.16428135660609088518e+05, + -0.12854769060785083639e+05, -0.93184547666353264503e+04, + -0.51809935856376896481e+04, -0.39340147126575843686e+04, + -0.22422243797035903299e+04, -0.41033322289944618433e+03, + -0.12559491331516724131e+04, -0.17952091164626966702e+03, + 0.55422634555905756315e+03, -0.11527375216361431285e+04, + 0.72777445347471098103e+03, 0.21886174247280135319e+03, + -0.12688777804582871340e+04, 0.16552203498700978344e+04, + -0.10426641493375825576e+04, -0.32413052577095214701e+03, + 0.16869971193740609579e+04, -0.22209999655994629393e+04, + 0.15417373619974714529e+04, 0.41945184606467272204e+02, + -0.16749956604220617464e+04, 0.24499054400587288001e+04, + -0.19278632041320984172e+04, 0.40388515745542844115e+03, + 0.12698939793979004662e+04, -0.21708313855780793347e+04, + 0.18405590578940243631e+04, -0.52958271079973212636e+03, + -0.96075905756691054194e+03, 0.17625652421247095845e+04, + -0.14395677251941574468e+04, 0.23285777058158905106e+03, + 0.11036021553117659550e+04, -0.17500515522674656950e+04, + 0.13059747394534074374e+04, -0.12638224946637194535e+02, + -0.13881006846975690223e+04, 0.20880349766059325702e+04, + -0.16675068300516027193e+04, 0.33176281594291214105e+03, + 0.12147523115204944588e+04, -0.21587587627473476459e+04, + 0.20248489125096143653e+04, -0.91605353937669144671e+03, + -0.56010603471111119234e+03, 0.16403254511756529155e+04, + -0.18140204086718485996e+04, 0.10808632480118590138e+04, + 0.85684137568352440439e+02, -0.10216297945397510603e+04, + 0.12466006527731819915e+04, -0.71094122776451547452e+03, + -0.20214247585918897698e+03, 0.91718457922973698260e+03, + -0.99847393315243277812e+03, 0.39531877920999960452e+03, + 0.53837419177964522987e+03, -0.12478062717352929667e+04, + 0.12932784444162580257e+04, -0.59806255451946026369e+03, + -0.50156572141409191090e+03, 0.14339853759878367327e+04, + -0.16971407988510379710e+04, 0.11295080152581522270e+04, + -0.14302353196806336655e+04, 0.96553400627913151766e+03, + 0.18290944223575029355e+04, -0.36012476885349697113e+04, + 0.37035840927758067664e+04, -0.16501085613765967537e+04, + -0.11058142498406957657e+04, 0.34624633342829074536e+04, + -0.37936807828982641695e+04, 0.23458687870574517547e+04, + 0.39624443410093482498e+03, -0.25095260136475249055e+04, + 0.32166440725335701245e+04, -0.18415739092693142993e+04, + -0.33955868327264261097e+03, 0.23410722298886053068e+04, + -0.25834466405220164233e+04, 0.13024949440900622903e+04, + 0.10678319926668646076e+04, -0.26900238448086233802e+04, + 0.29005801281085668961e+04, -0.11482875038432835026e+04, + -0.11945437604096139239e+04, 0.31161451076026305600e+04, + -0.31015691623885036279e+04, 0.15136395689360383585e+04, + 0.10895342173501785510e+04, -0.28205662314282112675e+04, + 0.30644180835357492469e+04, -0.13745309898540638187e+04, + -0.80890017238079781237e+03, 0.25196896481131575456e+04, + -0.24047050331134059888e+04, 0.10080837131453705524e+04, + 0.10534395381508450100e+04, -0.20552100284959415148e+04, + 0.17321405143396075346e+04, -0.37369668465357133158e+01, + -0.15369253887423335527e+04, 0.21259167577809407703e+04, + -0.91833413114322934234e+03, -0.97535527905049218589e+03, + 0.26300842833106980834e+04, -0.24738387551717087263e+04, + 0.80209512264494173905e+03, 0.17924544453054240876e+04, + -0.33116636261514090620e+04, 0.30866198154485377927e+04, + -0.80510672106271010762e+03, -0.17880513402062811110e+04, + 0.34278159835273440876e+04, -0.27150097630201753418e+04, + 0.48312959997722310845e+03, 0.21032351705510895954e+04, + -0.29883660399140117079e+04, 0.17270140278796536677e+04, + 0.84828622194709976156e+03, -0.34265280290601185698e+04, + 0.27191576130279886456e+04, -0.22054837296084233458e+04, + -0.45327111403626731772e+04, 0.69342236149159714387e+03, + -0.10574161639021491283e+05, -0.87095188693799282191e+04, + -0.11434643960372568472e+05, -0.23661152478231291752e+05, + -0.17983606178863032255e+05, -0.25039571275445989158e+05, + -0.23982206663243741787e+05, -0.10426958793853576935e+05, + -0.75445854086268200263e+04, 0.78019312114353051584e+04, + 0.18369111565054925450e+05, 0.14169796657767634315e+05, + 0.12225727791103054187e+05, -0.50353894402355683724e+03, + -0.15346721144974799245e+05, -0.13256612117833292359e+05, + -0.79168999442063859533e+04, 0.22041974497948062890e+04, + 0.16942850815000900184e+05, 0.10387446732949818397e+05, + -0.17025387676953153004e+04, -0.79452347641414917234e+04, + -0.15153814269732394678e+05, -0.10947210788316422168e+04, + 0.13057510021090422015e+05, 0.81126824560398836184e+04, + 0.19311100275828785016e+04, -0.96011042894099919067e+04, + -0.12884228368073328966e+05, 0.51349155328569586345e+04, + 0.12203229592141880858e+05, 0.26747255008871616155e+04, + -0.27858668369293573051e+04, -0.12376905871475077220e+05, + -0.30827945870501225727e+04, 0.15345860236669996084e+05, + 0.25335468755836759556e+04, -0.52315974460269744668e+04, + -0.68603938729561286891e+04, -0.44528265898442696198e+04, + 0.13335397082477868025e+05, 0.48913926290833442181e+04, + -0.11003403862736176961e+05, -0.48502769124364513118e+04, + 0.40727584844276152580e+04, 0.73701613385514792753e+04, + 0.13760995759313930193e+04, -0.98289409099652875739e+04, + -0.46218551106351860653e+04, 0.12200740958859954844e+05, + 0.32622640675014199587e+04, -0.99558835456941123994e+04, + -0.15849845395628526603e+04, 0.28067031369447968245e+04, + 0.65763413666324177029e+04, -0.45227889600873822928e+03, + -0.12582796961739746621e+05, 0.52427666950157044994e+04, + 0.10725888366673689234e+05, -0.74074474829000091631e+04, + -0.51602842878927485799e+04, 0.29626318658101517940e+04, + 0.45975073007260907616e+04, 0.11393969331441180657e+04, + -0.78951131971712065933e+04, -0.11436381365841750721e+04, + 0.10839282874947972232e+05, -0.20193388320459812348e+04, + -0.11138626375244653900e+05, 0.66224499620720953317e+04, + 0.63920847598359077892e+04, -0.64591611121159321556e+04, + -0.21846928793326974301e+04, 0.18962180817517000833e+04, + 0.42300993889806841253e+04, -0.87589275389487522716e+03, + -0.77630837727011239622e+04, 0.44946083070922632032e+04, + 0.82196975342378300411e+04, -0.99546818391175911529e+04, + -0.32806625056426746596e+04, 0.11753721589456761649e+05, + -0.38536367453074635705e+04, -0.67526164544578796267e+04, + 0.50308772573564356207e+04, 0.27120053090736028025e+04, + -0.28042014242004188418e+04, -0.26075578225237823062e+04, + 0.20966470637303491458e+04, 0.34584010551627106906e+04, + -0.26253258118241110424e+04, -0.52940267771097596778e+04, + 0.70723108353538855226e+04, 0.28987561516323607975e+04, + -0.11502992843554789943e+05, 0.55907852619686173057e+04, + 0.78023313260882659961e+04, -0.10863898900526166472e+05, + 0.24572173587582770438e+03, 0.89766070299033108313e+04, + -0.51396298551889140072e+04, -0.47607970822060515275e+04, + 0.68294186727776441330e+04, 0.30851581876124328119e+03, + -0.58324742291724041934e+04, 0.33382896005947650337e+04, + 0.17173189353986524566e+04, -0.22823906186311073725e+04, + -0.61653416030813996684e+01, -0.50340375142978541589e+03, + 0.32069112920953257344e+04, -0.22075539713652906357e+04, + -0.32930207947755593523e+04, 0.61637073627260087960e+04, + -0.14602438474818443410e+04, -0.52522257605398317537e+04, + 0.46319191296757289820e+04, 0.31663555973731977247e+04, + -0.75386883106774766929e+04, 0.13667987272125008076e+04, + 0.86053858502439597942e+04, -0.95583389445356078795e+04, + -0.80654542660981826430e+03, 0.10547740474260885094e+05, + -0.80483644824331295240e+04, -0.33670527000615147699e+04, + 0.94584707504921861982e+04, -0.28301651135913657527e+04, + -0.78309458025757303403e+04, 0.86406624291815369361e+04, + 0.20781333125347323403e+04, -0.11498960669953228717e+05, + 0.79657536602068757929e+04, 0.46811495130285038613e+04, + -0.11662374068942513986e+05, 0.50913260266100242006e+04, + 0.66528508556385258998e+04, -0.92869803585653462505e+04, + 0.97137984917394248896e+03, 0.84375828446563064063e+04, + -0.68136560645844574537e+04, -0.44185276296291076505e+04, + 0.11761903983443460675e+05, -0.41897295191156272267e+04, + -0.90609296351271441381e+04, 0.12539884488086030615e+05, + -0.10318025765499671706e+04, -0.10030936602155197761e+05, + 0.73095907347290321923e+04, 0.58574474390675259201e+04, + -0.10208366202049042840e+05, -0.58538433480457717906e+03, + 0.13422786020378329340e+05, -0.93679641030605780543e+04, + -0.71109550029070906021e+04, 0.15571564764573542561e+05, + -0.35123850532709147956e+04, -0.12483189393680944704e+05, + 0.11095776763144358483e+05, 0.72352924316521912260e+04, + -0.16201468657834830083e+05, 0.23497083358124864390e+04, + 0.17656168303513477440e+05, -0.15026852550439887636e+05, + -0.79434866100387671395e+04, 0.21861083526361177064e+05, + -0.67135066175004667457e+04, -0.16411166563893853890e+05, + 0.16484632606504655996e+05, 0.70060277086451405921e+04, + -0.19630097702869257773e+05, 0.37109570602952826448e+04, + 0.18916523575002494908e+05, -0.15045255576557134191e+05, + -0.88465573366334519960e+04, 0.19266142481067181507e+05, + -0.23060374559583833616e+04, -0.13698271276830093484e+05, + 0.53641053265925766027e+04, 0.12455598237756048547e+05, + -0.81504683388110834130e+04, -0.12241803314465092626e+05, + 0.16111126952505212103e+05, 0.55160245182941289386e+04, + -0.18173221041143442562e+05, 0.13007458896731091045e+04, + 0.18926360331744082941e+05, -0.70845436521699530203e+04, + -0.19581726042049998796e+05, 0.18674952228596237546e+05, + 0.11325070350223430069e+05, -0.23559983480195314769e+05, + 0.95367202226118183717e+03, 0.18713066278863974730e+05, + -0.37348812631148339278e+04, -0.15740269664447661853e+05, + 0.41151535244919805336e+04, 0.18397321034998043615e+05, + -0.86427052536057035468e+04, -0.17638975053382422630e+05, + 0.13620261897417087312e+05, 0.15784077761865226421e+05, + -0.16426204932947355701e+05, -0.14651373583730044629e+05, + 0.22696114172312612936e+05, 0.88284984477856305602e+04, + -0.23723753117445190583e+05, -0.16386888933532336523e+04, + 0.17350926691538610612e+05, 0.61210811589260983965e+04, + -0.17697959029706973524e+05, -0.10574775698396248117e+05, + 0.25728812392011976044e+05, 0.61528014080192406254e+04, + -0.25649609495464224892e+05, -0.34931147893565221239e+04, + 0.22741556189864964836e+05, 0.67909805209435635334e+04, + -0.22153607901007813780e+05, -0.86523850470052620949e+04, + 0.19956895197247653414e+05, 0.14246620093540352173e+05, + -0.18221437765392391157e+05, -0.20737843176161848533e+05, + 0.20541898443105699698e+05, 0.21177618614521150448e+05, + -0.15731689076286456839e+05, -0.19959464741849631537e+05, + 0.33001169500857677122e+04, 0.25810957261061026657e+05, + 0.72318145721155397041e+04, -0.30445109100337882410e+05, + -0.11358558697903352368e+05, 0.24473873859379822534e+05, + 0.18042093456364840677e+05, -0.92239400370542425662e+04, + -0.28489010502424585866e+05, -0.35492754148292769969e+04, + 0.31551774144114500814e+05, 0.15246274654814789756e+05, + -0.19480568910693891667e+05, -0.27400317486063024262e+05, + 0.12877552539455830356e+04, 0.29959988599150783557e+05, + 0.20194830840713006182e+05, -0.16871924238921765209e+05, + -0.34602565484679551446e+05, -0.44150590523145647239e+04, + 0.25445615356564754620e+05, 0.29637218355727534799e+05, + 0.32251475668281250364e+04, -0.36502322838344654883e+05, + -0.27088974268288453459e+05, 0.55589992684557400935e+04, + 0.29746488839451285457e+05, 0.37093325389103774796e+05, + -0.17358317046438367015e+04, -0.34525296304389259603e+05, + -0.33792947935211253935e+05, -0.17847364349563402357e+05, + 0.24521147504944179673e+05, 0.45491330056195984071e+05, + 0.31066958809008705430e+05, 0.84294993815865291253e+04, + -0.30899637917954816658e+05, -0.50077052308870770503e+05, + -0.41530196575313646463e+05, -0.22992440436442459031e+05, + 0.12538014004058220962e+05, 0.42366771023872948717e+05, + 0.59117879528945370112e+05, 0.67433731479118927382e+05, + 0.63224021330683790438e+05, 0.51540235234529769514e+05, + 0.39904275287270211265e+05, 0.28594820932679587713e+05, + 0.16785337853764194733e+05, 0.11728485169285893789e+05, + 0.70095599835669681852e+04, 0.16896226630394016865e+04, + 0.34227783053451944397e+04, 0.66978063202543307852e+03, + -0.12891920485974201256e+04, 0.28729164603511626410e+04, + -0.18289731871159021921e+04, -0.37251978750666472706e+03, + 0.28871176386193164944e+04, -0.38679144322816778185e+04, + 0.25369327661397337579e+04, 0.57049573717904138448e+03, + -0.37145636794515203292e+04, 0.49927084753364133576e+04, + -0.35072864357965036106e+04, -0.48192216442699475465e+02, + 0.37231294137503996353e+04, -0.54459924894539917659e+04, + 0.42208962054933072068e+04, -0.73698048794135638673e+03, + -0.30435257399651322885e+04, 0.50072345835875312332e+04, + -0.41225873786903757718e+04, 0.99734506573956605280e+03, + 0.24923493109867176827e+04, -0.43283580947807531629e+04, + 0.35040060861565102641e+04, -0.59312293554255791150e+03, + -0.26348270905145373035e+04, 0.42530232845945665758e+04, + -0.33068243645481225030e+04, 0.33391132783086067093e+03, + 0.29562029984432551828e+04, -0.46853019811573612969e+04, + 0.38590221122269308580e+04, -0.91946359968169292642e+03, + -0.25388542365567432171e+04, 0.46626346457899417146e+04, + -0.43668978074241031209e+04, 0.18869549210665888950e+04, + 0.13912084495020701524e+04, -0.37334648582821287164e+04, + 0.39941638807290601108e+04, -0.22041237221697733730e+04, + -0.52145043416834778327e+03, 0.26418103505604049133e+04, + -0.30572664794442534912e+04, 0.16772877860439155029e+04, + 0.57968769356753887223e+03, -0.23503154208271257630e+04, + 0.26009303220436854645e+04, -0.12008479851039894584e+04, + -0.10296956837411692049e+04, 0.27906684822420324963e+04, + -0.30370389475597917226e+04, 0.15581510865176535390e+04, + 0.89865962447611434527e+03, -0.30319010469547347384e+04, + 0.36859355103851148669e+04, -0.24762874475361950317e+04, + 0.28241152754329500567e+04, -0.17230321276193271842e+04, + -0.37665847780346280160e+04, 0.70216819820951632209e+04, + -0.69519893122468047295e+04, 0.27631843222651891665e+04, + 0.25224827139264880316e+04, -0.67883948090524045256e+04, + 0.69640296082901568298e+04, -0.37965342476863716001e+04, + -0.16190632425814410453e+04, 0.54377290704707911573e+04, + -0.63039143362106333370e+04, 0.30941474611680605449e+04, + 0.14260737730295447818e+04, -0.52604942579204634967e+04, + 0.53510302764981643122e+04, -0.24063928264531332388e+04, + -0.25270316152021923699e+04, 0.56780036676984564110e+04, + -0.58190431673241637327e+04, 0.20150794106608555012e+04, + 0.27822493325614559581e+04, -0.64865011239535051573e+04, + 0.61183328732112895523e+04, -0.26085060798510294262e+04, + -0.27470622683595452145e+04, 0.60539229402231567292e+04, + -0.61613492061278593610e+04, 0.23519451425951879173e+04, + 0.22447731569944057810e+04, -0.55752569892690926281e+04, + 0.49435659814091868611e+04, -0.16497511268228925019e+04, + -0.28313425206120346047e+04, 0.48366308124752431468e+04, + -0.38304794332966675938e+04, -0.20444346424032175946e+03, + 0.37915264411262214708e+04, -0.51779833753935090499e+04, + 0.25597139550685783433e+04, 0.17247482039539656853e+04, + -0.56065586003078460635e+04, 0.56685080459871151106e+04, + -0.23757764222887753931e+04, -0.30779936382082387354e+04, + 0.65079294317720241452e+04, -0.63845982794332985577e+04, + 0.19274090283004195499e+04, 0.33540628377670600457e+04, + -0.68259114445641971542e+04, 0.55099888724629699936e+04, + -0.99143705687920919445e+03, -0.43994496605827835083e+04, + 0.64099374495602660318e+04, -0.40028526602979172822e+04, + -0.12624142358432789024e+04, 0.67701925025906421070e+04, + -0.57675611051331870840e+04, 0.51764969043996889013e+04, + 0.82640584165942927939e+04, -0.48272280686873097011e+03, + 0.20973824161341577565e+05, 0.17707427906017073838e+05, + 0.23901730634423740412e+05, 0.47194038562556183024e+05, + 0.37626323430529831967e+05, 0.50317554566031285503e+05, + 0.48962523646846901102e+05, 0.21647680955381081731e+05, + 0.14613320304640434188e+05, -0.15118273243304794960e+05, + -0.37903602790792887390e+05, -0.28787628223625535611e+05, + -0.24561533088019055867e+05, 0.46817820213225309089e+03, + 0.31787069235581886460e+05, 0.26679059202224336332e+05, + 0.16137794367893560775e+05, -0.42606838077030206478e+04, + -0.34832061592616890266e+05, -0.20872195848934487003e+05, + 0.33210921485266426316e+04, 0.16200314938009547404e+05, + 0.30875690703501939424e+05, 0.22726606125093985611e+04, + -0.26741167368494705443e+05, -0.16306990359350911604e+05, + -0.40863484639065868578e+04, 0.19502823331246454472e+05, + 0.26569547802957928070e+05, -0.11039448989433984025e+05, + -0.24179528765835468221e+05, -0.59690502797068393193e+04, + 0.58246893310587283850e+04, 0.25531043535544518818e+05, + 0.55312306915906247013e+04, -0.30308226768369375350e+05, + -0.59851082916532477611e+04, 0.11075493249897317583e+05, + 0.14104409916472030091e+05, 0.84173172075096081244e+04, + -0.26214287484400938411e+05, -0.10868938889815517541e+05, + 0.22973569593166346749e+05, 0.98288624036499277281e+04, + -0.87523272476390757220e+04, -0.14235905757903283302e+05, + -0.35961812449067051602e+04, 0.20548423671629883756e+05, + 0.93044366464618724422e+04, -0.25160029740090441919e+05, + -0.60695418187865670916e+04, 0.19688992483084926789e+05, + 0.35894515442121696651e+04, -0.57271422938281830284e+04, + -0.13709982046638149768e+05, 0.14136623357425630729e+04, + 0.25175304022689644626e+05, -0.10469964434471730783e+05, + -0.21712189761818561237e+05, 0.14658000967004436461e+05, + 0.11074313567154713382e+05, -0.65305358464990176799e+04, + -0.91167393893090447818e+04, -0.22240702722795626869e+04, + 0.15668723762939565859e+05, 0.29165439207758790872e+04, + -0.22658371612828304933e+05, 0.45296912643419836968e+04, + 0.22527727169635611062e+05, -0.13599463092590985980e+05, + -0.12707839079207686154e+05, 0.12758736514380987501e+05, + 0.48266608200211558142e+04, -0.41628521331059137083e+04, + -0.84011453120547794242e+04, 0.16380555651783224675e+04, + 0.15909014976729315094e+05, -0.92080883682850126206e+04, + -0.16761210556353122229e+05, 0.20421557817959746899e+05, + 0.63672063977594025346e+04, -0.23470521196178709943e+05, + 0.73071764843990149529e+04, 0.14236737785993020225e+05, + -0.10530460753999068402e+05, -0.55490724899987872050e+04, + 0.60777156981371526854e+04, 0.46764852115703579329e+04, + -0.35365386703680542269e+04, -0.76673988830121152205e+04, + 0.56793483957137077596e+04, 0.10833145995963051973e+05, + -0.14812337419864417825e+05, -0.52792034403904726787e+04, + 0.22798966398504588142e+05, -0.10965293189345224164e+05, + -0.15973101921356208550e+05, 0.21864969515336677432e+05, + -0.16650482317166492408e+02, -0.18793200778042533784e+05, + 0.10805447390547036775e+05, 0.96642989897968054720e+04, + -0.14201243987506484700e+05, -0.12183059453220867852e+03, + 0.11356410738987278819e+05, -0.64753256206782007212e+04, + -0.34773108873506316741e+04, 0.42651959625919707833e+04, + 0.63964746996877545371e+03, 0.37184094310927395099e+03, + -0.60948372392985820625e+04, 0.44576000856264363392e+04, + 0.62969514857097883578e+04, -0.11804211747044779258e+05, + 0.21215741445237176777e+04, 0.11367209831903786835e+05, + -0.96849107831941237237e+04, -0.67245002679110457393e+04, + 0.16095906637213227441e+05, -0.37780685212127414161e+04, + -0.16584616860727463063e+05, 0.18875954212631302653e+05, + 0.16918410403859254529e+04, -0.20971362256590062316e+05, + 0.15482140051480162583e+05, 0.78809658036612800061e+04, + -0.20088003659915775643e+05, 0.61481417535132286503e+04, + 0.16100890924414456094e+05, -0.18210354739879534463e+05, + -0.33800168703869817364e+04, 0.22617036434639798244e+05, + -0.15732300935381759700e+05, -0.95721979476849955972e+04, + 0.23361733151274136617e+05, -0.97249409164191929449e+04, + -0.14190974135377384300e+05, 0.19308480567050130048e+05, + -0.13754488683783336000e+04, -0.18384426120269446983e+05, + 0.14761588721490850730e+05, 0.84974163101777612610e+04, + -0.23736026193244033493e+05, 0.90991814057743777084e+04, + 0.17104129553746879537e+05, -0.23967136264434120676e+05, + 0.12842686870270106283e+04, 0.20662785461575724185e+05, + -0.15162015861659543589e+05, -0.11505039511571403636e+05, + 0.21581468859265260107e+05, -0.13834692391654336916e+04, + -0.24536585248987743398e+05, 0.18978425511502646259e+05, + 0.11628531562596703225e+05, -0.29010857702150162368e+05, + 0.79200989015945342544e+04, 0.22497142243715643417e+05, + -0.21908527494136611494e+05, -0.11232767320947508779e+05, + 0.29520645086233231268e+05, -0.65071066425491626433e+04, + -0.29817775259427471610e+05, 0.27245964918157482316e+05, + 0.12203637737943236061e+05, -0.37312566844395878434e+05, + 0.11719520372993225465e+05, 0.28282525496976202703e+05, + -0.28223299864707507368e+05, -0.12978597952495756545e+05, + 0.34623226731673494214e+05, -0.61233357059438367287e+04, + -0.33321075924729542749e+05, 0.25320920153978531744e+05, + 0.16965766324529708072e+05, -0.33410916816018063400e+05, + 0.94802284531118630184e+03, 0.27347697655811774894e+05, + -0.95925848326645009365e+04, -0.25037168459611824801e+05, + 0.17379807456249385723e+05, 0.21286281452917806746e+05, + -0.29891566096652804845e+05, -0.93178541131894999126e+04, + 0.33387408006866971846e+05, -0.33830187478384291353e+04, + -0.34249206877926684683e+05, 0.14562317918738484877e+05, + 0.32837502621125568112e+05, -0.32151956168511384021e+05, + -0.19888403951945641893e+05, 0.40009151576901182125e+05, + 0.11459411610473571272e+04, -0.34919669691253220662e+05, + 0.53280500321522067679e+04, 0.30986575400543395517e+05, + -0.88696782549395229580e+04, -0.33773118953988610883e+05, + 0.16901086008049838711e+05, 0.31396704041012853850e+05, + -0.25115047697650970804e+05, -0.28129146080312471895e+05, + 0.30286882286364791071e+05, 0.24951673280167284247e+05, + -0.39468457163640217914e+05, -0.16271417038283159854e+05, + 0.41048571258344665694e+05, 0.63345582059080625186e+04, + -0.34045957222727054614e+05, -0.11121911847400853731e+05, + 0.34569703980631122249e+05, 0.16112911529343429720e+05, + -0.44886703208357903350e+05, -0.11073998709039686219e+05, + 0.45254688138531440927e+05, 0.75820003514918853398e+04, + -0.41608873318640908110e+05, -0.12708576931403655180e+05, + 0.40261771878792904317e+05, 0.16679878385563293705e+05, + -0.37641978845883262693e+05, -0.25353086441441919305e+05, + 0.34196653753681901435e+05, 0.35432689951978311001e+05, + -0.35337973288594796031e+05, -0.38827210326894877653e+05, + 0.26970269695598886756e+05, 0.38714149158329288184e+05, + -0.74768865411784663593e+04, -0.47424441426681085431e+05, + -0.11137595462736897389e+05, 0.53392029187236308644e+05, + 0.21066683327142123744e+05, -0.43036202366756995616e+05, + -0.35114781190345958748e+05, 0.18341417780026582477e+05, + 0.51953937838483252563e+05, 0.48133912281500943209e+04, + -0.55416514241404998756e+05, -0.28825216821305559279e+05, + 0.35338430689162392810e+05, 0.50515282541994180065e+05, + -0.28154968193266731760e+04, -0.54563295766503433697e+05, + -0.36495280435755281360e+05, 0.31076437719963447307e+05, + 0.61573610655653035792e+05, 0.97392621331336031290e+04, + -0.47198570470485989063e+05, -0.54626295596322059282e+05, + -0.35771256415623670364e+04, 0.63749060016727686161e+05, + 0.50624241648707786226e+05, -0.93480726705355336890e+04, + -0.56534424573441603570e+05, -0.64833681815497628122e+05, + 0.20290222703029367040e+04, 0.61717863997119886335e+05, + 0.63997255204881170357e+05, 0.29987649744595964876e+05, + -0.43696222913040684944e+05, -0.81573169188043073518e+05, + -0.58872602222738161799e+05, -0.13124792011741594251e+05, + 0.55315621690578569542e+05, 0.90363715187705500284e+05, + 0.77027580325046932558e+05, 0.40501138454491308948e+05, + -0.22369896521173850488e+05, -0.76663419151852212963e+05, + -0.10803470546182987164e+06, -0.12247594839455268811e+06, + -0.11455348658323564450e+06, -0.94233994048965992988e+05, + -0.72458386744290430215e+05, -0.51436811731720721582e+05, + -0.31404339961994668556e+05, -0.20740653547422130941e+05, + -0.12571598524530745635e+05, -0.39053412441133227730e+04, + -0.53581121744304073218e+04, -0.13978536019131890953e+04, + 0.15747359526586949414e+04, -0.39578952610326455215e+04, + 0.24844180989414517171e+04, 0.31351825037496070081e+03, + -0.36307649151788177733e+04, 0.49785194798202501261e+04, + -0.33843382788821681970e+04, -0.51198564676333711532e+03, + 0.45068321090036024543e+04, -0.61837678709157453341e+04, + 0.43894168129694035088e+04, 0.16402736001529046206e+02, + -0.45797573691155621418e+04, 0.66931955564986101308e+04, + -0.51097553893431004326e+04, 0.71505026638892184110e+03, + 0.40011983954154516141e+04, -0.63698882270806543602e+04, + 0.51088100797639981465e+04, -0.10233527482032116041e+04, + -0.34716295468782395801e+04, 0.57935725975007890156e+04, + -0.46623475757148298726e+04, 0.82604901109837294371e+03, + 0.34341606469828357149e+04, -0.56307503973460034103e+04, + 0.45169512112906513721e+04, -0.75494365568317334692e+03, + -0.34854404332919166336e+04, 0.58030603590199707469e+04, + -0.49061725317428936251e+04, 0.13228095209431626245e+04, + 0.29538979473971139669e+04, -0.55936504115316729440e+04, + 0.52305926249673984785e+04, -0.21613027639057104352e+04, + -0.18695604082796869534e+04, 0.46871714858395953343e+04, + -0.48703635967000154778e+04, 0.24923107417597220774e+04, + 0.10052408767281883684e+04, -0.36549184732063827141e+04, + 0.40688169120522511548e+04, -0.21581713587558342624e+04, + -0.87240137461853601053e+03, 0.32516049350681714714e+04, + -0.36351093607031698411e+04, 0.18422938479563986220e+04, + 0.10799229737353134624e+04, -0.34570503344758985804e+04, + 0.39272379721716606582e+04, -0.21857594554673369203e+04, + -0.84888139644752550339e+03, 0.35415808350685183541e+04, + -0.44264387780753659172e+04, 0.30016386668649374769e+04, + -0.31161963208919273711e+04, 0.16754961903283062838e+04, + 0.44139584255952368039e+04, -0.77752433917635644320e+04, + 0.73854614849552781379e+04, -0.25264976363248683811e+04, + -0.32505225171684728593e+04, 0.76332298201730709479e+04, + -0.73232769960573032222e+04, 0.34338072383592179904e+04, + 0.26600194652027494158e+04, -0.65894224781588500264e+04, + 0.70178356712387449079e+04, -0.29030708997441124666e+04, + -0.23933426280910121022e+04, 0.65761118751711101140e+04, + -0.62716241526518906539e+04, 0.25256153494149111793e+04, + 0.32914626574093590534e+04, -0.67950432926709090680e+04, + 0.66885146842583635589e+04, -0.20747795198999606328e+04, + -0.34867757847387069887e+04, 0.75653156440809052583e+04, + -0.68275451284143837256e+04, 0.25364788073464824265e+04, + 0.36596000287477622805e+04, -0.72225071039824852051e+04, + 0.69336814880737911153e+04, -0.21619741575330222076e+04, + -0.32818655368744089174e+04, 0.69439546781042117800e+04, + -0.57770098181066132383e+04, 0.14807899014305176024e+04, + 0.40161329080463774517e+04, -0.63273413325251558490e+04, + 0.48333178126158827581e+04, 0.34297264825222492846e+03, + -0.49561948016179512706e+04, 0.67828363990041707439e+04, + -0.36497579949313271754e+04, -0.16757941531780159039e+04, + 0.66307894219248119043e+04, -0.70624909080243132848e+04, + 0.33752959264006226476e+04, 0.30675179965233851362e+04, + -0.73246826496852227137e+04, 0.74715379713189577160e+04, + -0.24704913125776602101e+04, -0.36635204991936502665e+04, + 0.78272137555896842969e+04, -0.64507637462812099329e+04, + 0.12509135661532495760e+04, 0.51224716490439050176e+04, + -0.76897596953287893484e+04, 0.51170332159165664052e+04, + 0.94028400225630582554e+03, -0.75238987301888082584e+04, + 0.67902958846798301238e+04, -0.65639663984168055322e+04, + -0.86486278662142613030e+04, -0.31768935417986517677e+03, + -0.23666426268072085804e+05, -0.20407371051806141622e+05, + -0.28167637284664117033e+05, -0.53509266998458719172e+05, + -0.44370530316044321808e+05, -0.57434092220322621870e+05, + -0.56581370569301623618e+05, -0.25422282223472320766e+05, + -0.16091095117714359731e+05, 0.16661222168959040573e+05, + 0.44243544521786236146e+05, 0.33137347566635915427e+05, + 0.28020154810732514306e+05, 0.11969853877797165254e+01, + -0.37198856034641736187e+05, -0.30474510748533637525e+05, + -0.18641420882671787695e+05, 0.47093995631860407229e+04, + 0.40482385952331409499e+05, 0.23857447540227636637e+05, + -0.37507243004372321593e+04, -0.18647405784603866778e+05, + -0.35700181169782314100e+05, -0.26269143943226840747e+04, + 0.30994194067515294591e+05, 0.18584660979788564873e+05, + 0.49157174257926062637e+04, -0.22524226462580205407e+05, + -0.30907734575729831704e+05, 0.13239194252820152542e+05, + 0.27296957033580241841e+05, 0.73659603353740121747e+04, + -0.68597371952749736010e+04, -0.29766206632865458232e+05, + -0.56835905140364648105e+04, 0.34096240231983327249e+05, + 0.76589004004431462818e+04, -0.13135728964475631074e+05, + -0.16455061420125068253e+05, -0.90424449547567382979e+04, + 0.29316098720002337359e+05, 0.13412532244632608126e+05, + -0.27019365514948251075e+05, -0.11354503266138543040e+05, + 0.10612471464925391047e+05, 0.15617332398516526155e+05, + 0.49530598043797608625e+04, -0.24222953659018407052e+05, + -0.10674660437472854028e+05, 0.29409497815389684547e+05, + 0.63609444796478001081e+04, -0.22073546434436429990e+05, + -0.45410659120103182431e+04, 0.66261940325186706104e+04, + 0.16166085876142455163e+05, -0.21843829890584893292e+04, + -0.28517272583525089431e+05, 0.11782690528975928828e+05, + 0.25006905174685565726e+05, -0.16546902274650830805e+05, + -0.13320365090980922105e+05, 0.80520892753491434632e+04, + 0.10212153431865041057e+05, 0.25662836891542583544e+04, + -0.17786940864561336639e+05, -0.38349194175961488327e+04, + 0.26629746349773962720e+05, -0.55789370275809260420e+04, + -0.25856977555875477265e+05, 0.15771551913089435402e+05, + 0.14436580361267249828e+05, -0.14446774898519339331e+05, + -0.58076178563953199045e+04, 0.49665093781991208743e+04, + 0.95968820001190797484e+04, -0.18205520927902416588e+04, + -0.18432795063559493428e+05, 0.10711611630235998746e+05, + 0.19280205957023226802e+05, -0.23592047644564234361e+05, + -0.71756446208677225513e+04, 0.26759290499067625205e+05, + -0.80127013735332047872e+04, -0.16828985647811623494e+05, + 0.12400978397629629399e+05, 0.64125860898473165435e+04, + -0.73158903677863090707e+04, -0.48627811410182675900e+04, + 0.34677876425993063094e+04, 0.93503823822340964398e+04, + -0.67812433246375567251e+04, -0.12626720802201745755e+05, + 0.17536666670162812807e+05, 0.54742928920734502753e+04, + -0.25724849144218514994e+05, 0.12303461988920851581e+05, + 0.18430983006467598898e+05, -0.24887929254405335087e+05, + -0.53276405041866280499e+03, 0.22241612198230432114e+05, + -0.12820941619075201743e+05, -0.11136073962869571915e+05, + 0.16719122946088220488e+05, -0.41890168434998219027e+03, + -0.12527312210187901655e+05, 0.71022135659607301932e+04, + 0.40210212757191297896e+04, -0.45436059843733191883e+04, + -0.13848102340801974606e+04, 0.26448570207629325068e+03, + 0.65439848805347710368e+04, -0.50503680146681499536e+04, + -0.69033732278771321944e+04, 0.12901074584836032955e+05, + -0.15992301791074246466e+04, -0.13811569485617401369e+05, + 0.11475864604344584222e+05, 0.79698407533740464714e+04, + -0.19243482012523480080e+05, 0.52856432288125160994e+04, + 0.18249249813944432390e+05, -0.21218373730780909682e+05, + -0.20056916507881983307e+04, 0.23725654880538753787e+05, + -0.17019309262696566293e+05, -0.10037186704364617981e+05, + 0.23918797145468517556e+05, -0.73991388463128832882e+04, + -0.18792589126789029251e+05, 0.21658281757589400513e+05, + 0.30508230074465300277e+04, -0.25334340010794345289e+05, + 0.17729564321411515266e+05, 0.10999425909573725221e+05, + -0.26477018411371042021e+05, 0.10493661222522334356e+05, + 0.17082221051561864442e+05, -0.22710809923969056399e+05, + 0.11846792992850680548e+04, 0.22137610614850862476e+05, + -0.17817907803742811666e+05, -0.92484116330892302358e+04, + 0.27028429266813909635e+05, -0.10798496418638289470e+05, + -0.18741934773218694318e+05, 0.26414527173525868420e+05, + -0.80844375401815273108e+03, -0.24061408016145305737e+05, + 0.17743209932840047259e+05, 0.12932083368167872322e+05, + -0.25588092951231821644e+05, 0.37615701205106711313e+04, + 0.25983260298050801794e+05, -0.21842099466378509533e+05, + -0.10978464272658591653e+05, 0.31104906828389437578e+05, + -0.95982735372550941975e+04, -0.23704257940879757371e+05, + 0.24804537836627889192e+05, 0.10082362540953192365e+05, + -0.31313595172085806553e+05, 0.91241335784262410016e+04, + 0.29115088997020990064e+05, -0.28464597105435797857e+05, + -0.10935780133608364849e+05, 0.37129211231275490718e+05, + -0.11809859727841421773e+05, -0.28592288071403290814e+05, + 0.28385803993977559003e+05, 0.13717918586297149886e+05, + -0.35428594636871217517e+05, 0.58876515749316968140e+04, + 0.34046454249834918301e+05, -0.24641332925704769877e+05, + -0.18926270310314099333e+05, 0.33929567673952136829e+05, + 0.19053041342788417296e+04, -0.31123962886096873262e+05, + 0.10093661326925808680e+05, 0.28430860387621214613e+05, + -0.20493723988265792286e+05, -0.21727152651002572384e+05, + 0.32179680577521681698e+05, 0.91712690687143058312e+04, + -0.35619294688451685943e+05, 0.46385682741499504118e+04, + 0.35840311332040146226e+05, -0.16798802992712975538e+05, + -0.32155704245315053413e+05, 0.32269204050421602005e+05, + 0.20357240591661593498e+05, -0.39636443212414204027e+05, + -0.38393832479301431704e+04, 0.37665258157393167494e+05, + -0.42993441737091643517e+04, -0.34831000596366931859e+05, + 0.10603639090616183239e+05, 0.35926887912527723529e+05, + -0.18873079992123119155e+05, -0.32603829084511762630e+05, + 0.26957648819727957743e+05, 0.29009513030507878284e+05, + -0.32236862068504786293e+05, -0.24797720802967898635e+05, + 0.39924202244368978427e+05, 0.17502874762568928418e+05, + -0.41565423666263683117e+05, -0.95851034781797679898e+04, + 0.38069598856841985253e+05, 0.11800028345209833788e+05, + -0.38651117329845954373e+05, -0.14241569296620118621e+05, + 0.45784462286338595732e+05, 0.11386747080965122223e+05, + -0.46313233214345469605e+05, -0.92085159362501308351e+04, + 0.44111261602736085479e+05, 0.13855156141511683018e+05, + -0.42629410166711299098e+05, -0.18291834359341602976e+05, + 0.40826493279958471248e+05, 0.26291437762997418758e+05, + -0.37012502430802553135e+05, -0.35419318454847576504e+05, + 0.35615210642726975493e+05, 0.41063765664002115955e+05, + -0.26800841035165733047e+05, -0.43131273050578041875e+05, + 0.91937200511511000514e+04, 0.50643874715243335231e+05, + 0.96739940571685147006e+04, -0.54284574227981007425e+05, + -0.22790034160184692155e+05, 0.44143061283554743568e+05, + 0.39201163339265156537e+05, -0.20933715525739236909e+05, + -0.54736457887658718391e+05, -0.38121616149844471693e+04, + 0.56886507669821694435e+05, 0.31274613946423003654e+05, + -0.37153154046343290247e+05, -0.53877009645777929109e+05, + 0.32592121729698596937e+04, 0.57850228401254098571e+05, + 0.38078026425845586346e+05, -0.32967383648528382764e+05, + -0.63842206395997010986e+05, -0.11810593980716534134e+05, + 0.50686085700743140478e+05, 0.58220525813970787567e+05, + 0.17865101439707009376e+04, -0.64963944884107731923e+05, + -0.54557702236476063263e+05, 0.90748873741502829944e+04, + 0.61957575708866868808e+05, 0.65958907409045845270e+05, + -0.10896457861112610317e+04, -0.64132938311814315966e+05, + -0.69884020325572870206e+05, -0.29338732791549828107e+05, + 0.45236273484139950597e+05, 0.85068719961315902765e+05, + 0.64223450464260735316e+05, 0.11918182851803709127e+05, + -0.57662848772573765018e+05, -0.94606418462771864142e+05, + -0.82712205612576712156e+05, -0.41527263431430314085e+05, + 0.23270789514874326414e+05, 0.80416672663419274613e+05, + 0.11463141322765973746e+06, 0.12892440762065628951e+06, + 0.12061130217956310662e+06, 0.99820703834788000677e+05, + 0.76352984171803123900e+05, 0.53826302740072875167e+05, + 0.33814020493582640484e+05, 0.21503229563138389494e+05, + 0.12949604865603218059e+05, 0.49978749415244747070e+04, + 0.48145974208157640533e+04, 0.16029202200620457006e+04, + -0.84669887535164389192e+03, 0.28638699540139550663e+04, + -0.16998208885993315107e+04, -0.10312735893639862184e+03, + 0.23790696806158289291e+04, -0.33209873051515119187e+04, + 0.23314539411887358256e+04, 0.20435282813983991446e+03, + -0.28350032205260008595e+04, 0.39714755083545223897e+04, + -0.28462455304413606427e+04, 0.12884961921632950066e+02, + 0.29274570363542320592e+04, -0.42726368261866464309e+04, + 0.32125247560878437980e+04, -0.33619217512778459422e+03, + -0.27191084211299321396e+04, 0.42053421979494387415e+04, + -0.32948458704073386798e+04, 0.53709654106892685377e+03, + 0.24598698081173420178e+04, -0.39849334029911069592e+04, + 0.31943189401058211843e+04, -0.59120722148219135761e+03, + -0.23038931774819952807e+04, 0.38307440932737986259e+04, + -0.31491124837037350517e+04, 0.68275470241654568326e+03, + 0.21412564917670893010e+04, -0.37339546692736203113e+04, + 0.32289316135670810581e+04, -0.95482827750333694894e+03, + -0.17947515373940448171e+04, 0.34994583678651656555e+04, + -0.32673148323264567807e+04, 0.12922474547949818771e+04, + 0.12862943874842387686e+04, -0.30526030400153836126e+04, + 0.30904934764653139609e+04, -0.14673901018958092664e+04, + -0.85354411633878123666e+03, 0.25716245793182602029e+04, + -0.27785544340660467242e+04, 0.14309392192292309574e+04, + 0.65660499093147950589e+03, -0.22956742287717852378e+04, + 0.25836245693660862344e+04, -0.13934126126867472522e+04, + -0.58277539699239127913e+03, 0.22292943860853929436e+04, + -0.26298837258811900028e+04, 0.15625779969525729030e+04, + 0.38571886043745899997e+03, -0.21490982356145955237e+04, + 0.27637520009600980302e+04, -0.18915407363599690598e+04, + 0.18049165413013663510e+04, -0.83502891567699862208e+03, + -0.27275249338156104386e+04, 0.45493870973247258007e+04, + -0.41355831984217929858e+04, 0.11552329109735226211e+04, + 0.21927894279773195194e+04, -0.45701213609612213986e+04, + 0.40986880117320561112e+04, -0.15938039237644288733e+04, + -0.20449906011124503493e+04, 0.41892984067880752264e+04, + -0.41459954974257179856e+04, 0.14158943953735270043e+04, + 0.18590813747851889275e+04, -0.42826732498604505963e+04, + 0.38792504564953073896e+04, -0.14073426971297330965e+04, + -0.22109156589251774676e+04, 0.42837642824885306254e+04, + -0.40831150995433617936e+04, 0.11565332079735617299e+04, + 0.22460937232860028416e+04, -0.46321027659679511999e+04, + 0.40250341283262350771e+04, -0.12945667588039250404e+04, + -0.24757891421828053353e+04, 0.44987783641283658653e+04, + -0.40932187142333132215e+04, 0.98121830828383667722e+03, + 0.24065261488540318169e+04, -0.45300856227307840527e+04, + 0.35675018761475985229e+04, -0.66477686100508810796e+03, + -0.28782405204559559024e+04, 0.42988254845531273531e+04, + -0.32162180110645854256e+04, -0.21998508225096543356e+03, + 0.32966743721553325486e+04, -0.45495828060661842756e+04, + 0.26016809310075132089e+04, 0.82721009455176590563e+03, + -0.40852047064860780665e+04, 0.45318776962181327690e+04, + -0.23449951543933311768e+04, -0.16524369272067963266e+04, + 0.43900831590550324108e+04, -0.46129599029678056468e+04, + 0.16191270949881543402e+04, 0.21585682689873228810e+04, + -0.47916427715842310135e+04, 0.40309514593475823858e+04, + -0.86313094539814971995e+03, -0.31163575279836609297e+04, + 0.48306811537207913716e+04, -0.33906219865514708545e+04, + -0.27516523951316912644e+03, 0.43979017834328788012e+04, + -0.41712177985059715866e+04, 0.42778382635337984539e+04, + 0.48290884657061560574e+04, 0.64143756714429844124e+03, + 0.14145444905589178234e+05, 0.12433350340088911253e+05, + 0.17465613622146247508e+05, 0.32133395451240034163e+05, + 0.27531387327929340245e+05, 0.34693998765850745258e+05, + 0.34519899393208870606e+05, 0.15739152694446069290e+05, + 0.93963107181225368549e+04, -0.97413128232210019632e+04, + -0.27233846154547205515e+05, -0.20159852911538724584e+05, + -0.16906746776655701979e+05, -0.28816986157066651231e+03, + 0.22948379592903282173e+05, 0.18413445921930371696e+05, + 0.11372440010573183827e+05, -0.27635558813847273996e+04, + -0.24821623399631440407e+05, -0.14435525508339713269e+05, + 0.22607657778958182462e+04, 0.11323070393650876213e+05, + 0.21815676287705624418e+05, 0.15941871598671073116e+04, + -0.18965750082096601545e+05, -0.11194135829486145667e+05, + -0.31235800506815276094e+04, 0.13767604524174674225e+05, + 0.18942383000969290151e+05, -0.83091460876304736303e+04, + -0.16337298561291609076e+05, -0.47359684893732855926e+04, + 0.42597288732048491511e+04, 0.18289391881743391423e+05, + 0.31198286216512228748e+04, -0.20349792485769965424e+05, + -0.50363279156949365643e+04, 0.81693097581787196759e+04, + 0.10141966386478032291e+05, 0.51529133643742470667e+04, + -0.17385747090632092295e+05, -0.86140326873362209881e+04, + 0.16707827095706408727e+05, 0.69634063138829051240e+04, + -0.67727527713803783627e+04, -0.90686129060802340973e+04, + -0.34519444754615647071e+04, 0.15026379731905051813e+05, + 0.64998629004357908343e+04, -0.18163603393775356381e+05, + -0.34955100345143991944e+04, 0.13075585423268052182e+05, + 0.30050502214695698058e+04, -0.40567955125722428420e+04, + -0.10048284825931143132e+05, 0.16531496075055556503e+04, + 0.17059067474596740794e+05, -0.69769889219011956811e+04, + -0.15262290943590978713e+05, 0.99252044989680252911e+04, + 0.83894916505304536258e+04, -0.51846784747498268189e+04, + -0.60392743273195428628e+04, -0.16032009805529123696e+04, + 0.10736040791001219986e+05, 0.25341362733063219821e+04, + -0.16442007374812921626e+05, 0.35535139500798459267e+04, + 0.15703021333992337532e+05, -0.96488567354914266616e+04, + -0.87071818959015417931e+04, 0.87047116929874100606e+04, + 0.36112403373843676491e+04, -0.30571800838470790040e+04, + -0.58473507777978466038e+04, 0.11065342448014002912e+04, + 0.11262637809730173103e+05, -0.65847532795249289848e+04, + -0.11689574914554301358e+05, 0.14348882053330997223e+05, + 0.43372759532635345749e+04, -0.16193318419244553297e+05, + 0.47066187856878459570e+04, 0.10441675998281973079e+05, + -0.76818397324103834762e+04, -0.39033246078797774317e+04, + 0.45916478592438688793e+04, 0.27223189194020665127e+04, + -0.18358702145144118276e+04, -0.59204135677804842999e+04, + 0.42167160291660120492e+04, 0.77874847648867871612e+04, + -0.10932252905554420067e+05, -0.30199856740915001865e+04, + 0.15397256629976596741e+05, -0.73508309256285911033e+04, + -0.11193383617714353022e+05, 0.14950460520028478641e+05, + 0.64706713991394860841e+03, -0.13868115997275013797e+05, + 0.80015949791737275518e+04, 0.67957212564323945116e+04, + -0.10395709453697927529e+05, 0.58722592619709166684e+03, + 0.72947166660236789539e+04, -0.41041130075790861156e+04, + -0.24730007631170105924e+04, 0.25720995616875111409e+04, + 0.11985725706130979233e+04, -0.55245500373623576706e+03, + -0.36989848335642827806e+04, 0.29969209885206178114e+04, + 0.40432455215347681587e+04, -0.75005646649287964465e+04, + 0.53093220963398857748e+03, 0.87939949338737696962e+04, + -0.71725959713645643205e+04, -0.49431240933073931956e+04, + 0.12054938898234511726e+05, -0.36834870037461255379e+04, + -0.10677035292133468829e+05, 0.12650049978130111413e+05, + 0.12477609527650470227e+04, -0.14220181982729176525e+05, + 0.99461846403863000887e+04, 0.65893446149270803289e+04, + -0.14938172738704990479e+05, 0.46387821982848990956e+04, + 0.11595595401003200095e+05, -0.13560896487254349267e+05, + -0.14058732961794878520e+04, 0.15049042963489187969e+05, + -0.10607101798839037656e+05, -0.66455406739239642775e+04, + 0.15845188177139914842e+05, -0.59730624719715706306e+04, + -0.10816598101003064585e+05, 0.14087691070174294509e+05, + -0.57066498728876922542e+03, -0.13905211977117176502e+05, + 0.11259351204885240804e+05, 0.53079786830034418017e+04, + -0.16224718511013115858e+05, 0.66458765485198318856e+04, + 0.11013206228618018940e+05, -0.15543640159589524046e+05, + 0.16771234202139683589e+03, 0.14796382201697339042e+05, + -0.10955722592898357107e+05, -0.77129139558158294676e+04, + 0.15914577763216691892e+05, -0.32980133985766988189e+04, + -0.14759103785737306680e+05, 0.13287694509862853010e+05, + 0.55540397348041051373e+04, -0.17832042110534934181e+05, + 0.60047812712229069803e+04, 0.13468035694658299690e+05, + -0.14928755779977860584e+05, -0.48395130769683510152e+04, + 0.17878911093484242883e+05, -0.63792092240891215624e+04, + -0.15238827808919875679e+05, 0.15915554175854449568e+05, + 0.52664747298250495078e+04, -0.19912838118213159760e+05, + 0.63563698195284423491e+04, 0.15673309941826886643e+05, + -0.15494163131339149913e+05, -0.77018461909142442892e+04, + 0.19484035620467264380e+05, -0.30599816238403232092e+04, + -0.18680120077869018132e+05, 0.12833486990809908093e+05, + 0.11342159983457966518e+05, -0.18652946442295258748e+05, + -0.24878809380854086157e+04, 0.18779278776404160453e+05, + -0.57589831337614432414e+04, -0.17037014768522680242e+05, + 0.12601858270942677336e+05, 0.12022644657496048239e+05, + -0.18600036782100451092e+05, -0.48660829582543483411e+04, + 0.20417025576925876521e+05, -0.32200442569425736110e+04, + -0.20102916765575075260e+05, 0.10187992984657228590e+05, + 0.17005421575798722188e+05, -0.17463595649667335238e+05, + -0.11240329821722280030e+05, 0.21199307361920538824e+05, + 0.34705312121488877892e+04, -0.21749012788862557500e+05, + 0.17812828088989592743e+04, 0.20793607143470071605e+05, + -0.66178481242491088778e+04, -0.20510868465250896406e+05, + 0.11201231715802608960e+05, 0.18250649962003531982e+05, + -0.15553935379551741789e+05, -0.16060007692486844462e+05, + 0.18379548737858884124e+05, 0.13292597886637075135e+05, + -0.21736987104435575020e+05, -0.10147235636536181119e+05, + 0.22761589581966432888e+05, 0.68073999881846511926e+04, + -0.22595841085390282387e+05, -0.67364078977064737046e+04, + 0.22965707813657929364e+05, 0.67579609206909626664e+04, + -0.25249488820462160220e+05, -0.62147485555609464427e+04, + 0.25462535254021120636e+05, 0.58504696380515561032e+04, + -0.25084189862619361520e+05, -0.81387003841867899609e+04, + 0.24324252598385872261e+05, 0.10619829682110810609e+05, + -0.23621106872188120178e+05, -0.14703137535928106445e+05, + 0.21425316685839145066e+05, 0.19152271853566635400e+05, + -0.19440179807206717669e+05, -0.23225174714006498107e+05, + 0.14284718571054008862e+05, 0.25623603960679742158e+05, + -0.58514843409487402823e+04, -0.29062853801317451143e+05, + -0.43542497304180351421e+04, 0.29640631615242728003e+05, + 0.13282978957902867478e+05, -0.24436553649316796509e+05, + -0.23288003355984081281e+05, 0.12696803724855068140e+05, + 0.30903249750862669316e+05, 0.16222260402336482912e+04, + -0.31538065714250697056e+05, -0.18090273879195199697e+05, + 0.20962913511650978762e+05, 0.30809075893384957453e+05, + -0.19420607521714687209e+04, -0.32997254454101981537e+05, + -0.21290979007978039590e+05, 0.18709704947935373639e+05, + 0.35659791566396488633e+05, 0.74494104606091605092e+04, + -0.29184307062964835495e+05, -0.33254396944857908238e+05, + -0.60530232281901483304e+02, 0.35708440360205924662e+05, + 0.31462055079874604417e+05, -0.47318526503235125347e+04, + -0.36273479033313582477e+05, -0.36159925603734183824e+05, + 0.96158825326879920681e+02, 0.35851097769249507110e+05, + 0.40786467439556698082e+05, 0.15477436239829110491e+05, + -0.25201130998379936500e+05, -0.47721675719382554234e+05, + -0.37432732114654194447e+05, -0.58171882142397407733e+04, + 0.32361470102869909169e+05, 0.53219718180140174809e+05, + 0.47614992666973215819e+05, 0.22931582027983917214e+05, + -0.13042877469649407431e+05, -0.45300473490049713291e+05, + -0.65339987847497817711e+05, -0.72863656151817704085e+05, + -0.68270079679412199766e+05, -0.56749849144698448072e+05, + -0.43214928115481794521e+05, -0.30319576421141555329e+05, + -0.19446504249618410540e+05, -0.12061371113081027943e+05, + -0.71245802938102797270e+04, -0.33067092899818744627e+04, + -0.23047086439793633872e+04, -0.94416710135825110228e+03, + 0.17328937170733460960e+02, -0.89810132966849846525e+03, + 0.43655747322722038462e+03, -0.88377289125244207213e+01, + -0.63737680895002188208e+03, 0.89473749860159239233e+03, + -0.64808204090465540048e+03, -0.21255572054698465223e+02, + 0.72195115247065837139e+03, -0.10328017051027525213e+04, + 0.74689126844035195063e+03, -0.87953398788023218202e+01, + -0.75857667456062495148e+03, 0.11053844770749226427e+04, + -0.81846920604301669755e+03, 0.56175418998014912120e+02, + 0.74589709229876700647e+03, -0.11243639969563776049e+04, + 0.86270616150105286124e+03, -0.11180679177878239727e+03, + -0.69574938301308816335e+03, 0.11016530710042877672e+04, + -0.88088025613860622798e+03, 0.16988287459825437509e+03, + 0.62207701816377596060e+03, -0.10475811581722630308e+04, + 0.87832008179855381513e+03, -0.22425747149476586628e+03, + -0.53493184207804074504e+03, 0.97423649849699620518e+03, + -0.85923544350814381687e+03, 0.27307528890695652990e+03, + 0.44404043348427785531e+03, -0.89041065805554978851e+03, + 0.83017508660478927141e+03, -0.31467318753171798562e+03, + -0.35474790367571193883e+03, 0.80478941985536482662e+03, + -0.79594853588856517490e+03, 0.35063636947270089195e+03, + 0.27142175665707225107e+03, -0.72258793556903083299e+03, + 0.76226507092261567777e+03, -0.38241727360541273129e+03, + -0.19497566570782285567e+03, 0.64824186006169577468e+03, + -0.73290713103392613448e+03, 0.41327817295056678404e+03, + 0.12557817759751161191e+03, -0.58341254972244303190e+03, + 0.71157954360441885910e+03, -0.44595297177864944160e+03, + -0.61332912258376765635e+02, 0.52887729811843144034e+03, + -0.70028373223563380634e+03, 0.48366037576757952365e+03, + -0.42771030799169858483e+03, 0.16562118564186701519e+03, + 0.68880510874155652346e+03, -0.10914367861593680118e+04, + 0.94745333052463502099e+03, -0.19782546472945455207e+03, + -0.60012584088341270672e+03, 0.11279089560098766469e+04, + -0.94559610641986409973e+03, 0.28781509506461634373e+03, + 0.60666838161453904377e+03, -0.10880160548826106606e+04, + 0.10098249446277790184e+04, -0.27741860445496007515e+03, + -0.55276538467262389531e+03, 0.11319511015465848232e+04, + -0.98357989069456982634e+03, 0.32388314106609618648e+03, + 0.59754520663743971909e+03, -0.11032238427679151300e+04, + 0.10245789820193126616e+04, -0.26880154555612307377e+03, + -0.58421399527883534120e+03, 0.11591988254395191689e+04, + -0.97416813185343369241e+03, 0.26843360086611357929e+03, + 0.67023774052196267803e+03, -0.11408284932550711801e+04, + 0.98724578595148602744e+03, -0.16391740144375549448e+03, + -0.69738758888176585060e+03, 0.12020887751977038533e+04, + -0.90278720374622082545e+03, 0.11088887509830013300e+03, + 0.82061828467799864484e+03, -0.11806709649416343382e+04, + 0.87297459312731700720e+03, 0.48906638591600028576e+02, + -0.87884649920353854213e+03, 0.12264162383458151453e+04, + -0.73508125386010044622e+03, -0.15856632712808468000e+03, + 0.10225682100670970840e+04, -0.11731955796353829555e+04, + 0.64008052742264442259e+03, 0.37289992725134192142e+03, + -0.10855415505833977932e+04, 0.11667165514608577723e+04, + -0.42626211505794879031e+03, -0.52999211095160592322e+03, + 0.12112798961967412197e+04, -0.10387700349762051246e+04, + 0.24599528836149573863e+03, 0.77231543107594507092e+03, + -0.12371932167540398950e+04, 0.90896815777382380475e+03, + -0.13721602648853543638e+01, -0.10514315528727020137e+04, + 0.10425893710379543791e+04, -0.11236914859835296738e+04, + -0.11148614888806243926e+04, -0.25633114186713498839e+03, + -0.34747842017841899178e+04, -0.31093677198061400304e+04, + -0.44279036832441597653e+04, -0.79318275073121612877e+04, + -0.69855447777974013661e+04, -0.86079960682804594398e+04, + -0.86349010647738305124e+04, -0.39890748921419599355e+04, + -0.22591530887236585841e+04, 0.23458135756126648630e+04, + 0.68650580709344794741e+04, 0.50334810174501781148e+04, + 0.41874445781126551083e+04, 0.13588086979930054099e+03, + -0.57973836518474772674e+04, -0.45684777938119723331e+04, + -0.28445854032918455232e+04, 0.66702092347178745513e+03, + 0.62372971478149465838e+04, 0.35867635067523824546e+04, + -0.56151906313232996126e+03, -0.28191217706760417059e+04, + -0.54679948279140498926e+04, -0.39608272148144612856e+03, + 0.47582094302764153326e+04, 0.27670938817403889516e+04, + 0.81234289594320068773e+03, -0.34546655323814588883e+04, + -0.47539517739134089425e+04, 0.21263817863822018808e+04, + 0.40202033919823288670e+04, 0.12382030383883848117e+04, + -0.10845101033185565029e+04, -0.46001560783821933001e+04, + -0.70994700478501249563e+03, 0.49985646134816370250e+04, + 0.13342971017477605074e+04, -0.20739489599183602877e+04, + -0.25619361762539801930e+04, -0.12104466466534220217e+04, + 0.42441885429764624860e+04, 0.22436245528888061926e+04, + -0.42216672489628454059e+04, -0.17581719373884427569e+04, + 0.17668021642680430432e+04, 0.21638910215518581026e+04, + 0.95899509298405951085e+03, -0.38112863364625327449e+04, + -0.16297387918108011036e+04, 0.46017663140998511153e+04, + 0.78051873413654357137e+03, -0.31769379521876294348e+04, + -0.80974426358083576361e+03, 0.10210154773765092386e+04, + 0.25560352338886632424e+04, -0.48901381673916364434e+03, + -0.41857852034255211038e+04, 0.16896087805468064289e+04, + 0.38295660860926063833e+04, -0.24539702889361569760e+04, + -0.21518036410761433217e+04, 0.13557683404932558915e+04, + 0.14663823759467657055e+04, 0.41557634314969322986e+03, + -0.26694681623657334057e+04, -0.66706842476542033182e+03, + 0.41476539897386837765e+04, -0.91493494081816618291e+03, + -0.39169799502758087328e+04, 0.24200578599658547319e+04, + 0.21603970773898590778e+04, -0.21610827069747124369e+04, + -0.90936280951135063333e+03, 0.76126196404883933155e+03, + 0.14698656284290671010e+04, -0.28189518050540664262e+03, + -0.28192564828746244530e+04, 0.16599282043602233898e+04, + 0.29036519998863877845e+04, -0.35726199652341538240e+04, + -0.10854284761308722409e+04, 0.40315221094124999581e+04, + -0.11449367703018674547e+04, -0.26464301675344540854e+04, + 0.19465899003439892567e+04, 0.97204844730468948910e+03, + -0.11713403980472257899e+04, -0.63521289916618832194e+03, + 0.40644429443912304123e+03, 0.15207679360973370422e+04, + -0.10664210655176680120e+04, -0.19701878272426110925e+04, + 0.27865011085552232544e+04, 0.68867823886773112463e+03, + -0.37931893998785772055e+04, 0.18128070890835836053e+04, + 0.27812327342922735625e+04, -0.36821520846027638072e+04, + -0.23775546868906036480e+03, 0.35376393196424119196e+04, + -0.20403471829478960444e+04, -0.17049262592331895121e+04, + 0.26505784402416720695e+04, -0.22754681556895761219e+03, + -0.17410829406172595100e+04, 0.97040983037147952928e+03, + 0.62682507262378567248e+03, -0.60030786286501484028e+03, + -0.37999137684257408409e+03, 0.22913369727023484757e+03, + 0.85437670461738127869e+03, -0.72415448023211263262e+03, + -0.98111820462587638758e+03, 0.18000912959760726153e+04, + -0.37452406956516043124e+02, -0.22814827157989893749e+04, + 0.18352286331895586500e+04, 0.12495387394564822898e+04, + -0.30791472159392733374e+04, 0.10160518840531937030e+04, + 0.25766659704961070929e+04, -0.31041613541138290202e+04, + -0.31583727632703420340e+03, 0.35028397397601670491e+04, + -0.23957100869866071662e+04, -0.17459869170330762245e+04, + 0.38074279450247258865e+04, -0.11818446254955706536e+04, + -0.29351985399882105412e+04, 0.34728173731075135038e+04, + 0.25058375280278286823e+03, -0.36773593254474594687e+04, + 0.26117884629105351451e+04, 0.16427880857324112185e+04, + -0.38903459707634692677e+04, 0.13940285639077360429e+04, + 0.27979716635464105821e+04, -0.35784396978153431519e+04, + 0.11791243807792373843e+03, 0.35569337738698673093e+04, + -0.29019342258258689071e+04, -0.12477258802688018022e+04, + 0.39913211179305108089e+04, -0.16609447277383787878e+04, + -0.26800607246436038622e+04, 0.37772173937886577733e+04, + 0.27342776738059917818e+02, -0.37330520330269828264e+04, + 0.27742242230089959776e+04, 0.18905994163007399038e+04, + -0.40398113679254952331e+04, 0.10224454996231067980e+04, + 0.34767511455105641289e+04, -0.33151281186083920147e+04, + -0.11657826040178586027e+04, 0.42338207407889540264e+04, + -0.15240847095896317569e+04, -0.31828671424183557974e+04, + 0.36981084367177986678e+04, 0.95882436591561963724e+03, + -0.42439224162723839981e+04, 0.17673098621506364907e+04, + 0.33076387950337825714e+04, -0.36886115434373873541e+04, + -0.10490562369479696372e+04, 0.44453123599175996787e+04, + -0.14125330844955035445e+04, -0.35955845110826294331e+04, + 0.35414548885553790569e+04, 0.17819554066044665888e+04, + -0.44535732146513073531e+04, 0.66542171964059070888e+03, + 0.42544300875805893156e+04, -0.27643061631343234694e+04, + -0.28182010468472067259e+04, 0.42855194129527653786e+04, + 0.87117127521547217839e+03, -0.46584919218611803444e+04, + 0.13731558221882016824e+04, 0.41866368806973132450e+04, + -0.31545539500726808910e+04, -0.27827993383465768602e+04, + 0.44610992976044681200e+04, 0.10750533776100915020e+04, + -0.48587924352380805431e+04, 0.89184538733232272989e+03, + 0.46754609207010526006e+04, -0.25277211011407807746e+04, + -0.37519811235565521201e+04, 0.39374938807610860749e+04, + 0.25863047432357493562e+04, -0.47291980857895605368e+04, + -0.10830086650145303793e+04, 0.51999854483749986684e+04, + -0.28253491153688679560e+03, -0.51111481725899684534e+04, + 0.16819647996627286375e+04, 0.48589647737402001439e+04, + -0.27396157631474261507e+04, -0.42522148958153302374e+04, + 0.37248944691066208179e+04, 0.36927460567101720699e+04, + -0.43437495050130755772e+04, -0.29683879938476852658e+04, + 0.49231692669321364519e+04, 0.24462136871149537001e+04, + -0.52031097217344522505e+04, -0.18773236480395162289e+04, + 0.55229553233585620546e+04, 0.15961132239649969051e+04, + -0.56188518638367913809e+04, -0.13295555346135497530e+04, + 0.58131878920720992028e+04, 0.13957946105420160166e+04, + -0.58159178579105264362e+04, -0.15123553511263689870e+04, + 0.59146147975076592047e+04, 0.19893627053817049273e+04, + -0.57776536449332534175e+04, -0.25323442473170607627e+04, + 0.56443678423465071319e+04, 0.34257518876541353166e+04, + -0.51327837910783082407e+04, -0.43263879382868653920e+04, + 0.44374030036525336982e+04, 0.54353589656424173882e+04, + -0.31553090669779589916e+04, -0.62863467357513063689e+04, + 0.15116960321076633136e+04, 0.69231218129405460786e+04, + 0.77332697305189537929e+03, -0.67215819296919098633e+04, + -0.32192699060040627046e+04, 0.56403079340294671056e+04, + 0.57005864321776844008e+04, -0.31665756536763165059e+04, + -0.72363031322408578490e+04, -0.28385513938681441459e+03, + 0.72893180044863902367e+04, 0.43225948721279582969e+04, + -0.49084158723426062352e+04, -0.73060889665372078525e+04, + 0.46995313532357278064e+03, 0.78193607423298217327e+04, + 0.49389649995306717756e+04, -0.43994981845838774461e+04, + -0.82871072160798266850e+04, -0.19107270351709742044e+04, + 0.69671007434152816131e+04, 0.78736372307073525008e+04, + -0.17844601773193497252e+03, -0.81761313274937683673e+04, + -0.75141756410630150640e+04, 0.10271903361850652345e+04, + 0.87767937679098085937e+04, 0.82562653235409179615e+04, + 0.84164886371524673336e+02, -0.83317570366871150327e+04, + -0.98444691429526537831e+04, -0.34029900849524688056e+04, + 0.58406765903842460830e+04, 0.11126737162856003124e+05, + 0.90242259679122144007e+04, 0.11755556549321656803e+04, + -0.75526936406426057147e+04, -0.12436441502175779533e+05, + -0.11362259029894736159e+05, -0.52694939821322786884e+04, + 0.30413624104052596522e+04, 0.10597197441630709363e+05, + 0.15461439781148190377e+05, 0.17096398468211369618e+05, + 0.16053243190750043141e+05, 0.13389526276376660462e+05, + 0.10154861746325599597e+05, 0.71029013240398562630e+04, + 0.46253090670147948913e+04, 0.28228879782786739270e+04, + 0.16227635537024671066e+04, 0.88204132038604052468e+03, + 0.45468278005638234163e+03, 0.22282920980640611219e+03, + 0.10402666510241434139e+03, 0.46338385683976120788e+02, + 0.19722228197795441673e+02, 0.80294895422381884487e+01, + 0.31300719491532200678e+01, 0.11692432964658319161e+01, + 0.41882383646603266181, 0.14393791457055654659, + 0.47482477169928316574e-01, 0.15040537076728659541e-01, + 0.45760088051652646549e-02, 0.13374972384578868913e-02, + 0.37561262886321030666e-03, 0.10135823852451124631e-03, + 0.26281667680860620146e-04, 0.65478602546289546254e-05, + 0.15672963272800902136e-05, 0.36035966454146028358e-06, + 0.79571663016978683975e-07, 0.16869317248410519274e-07, + 0.34324839401357286494e-08, 0.67007227145109071229e-09, + 0.12544156410579374431e-09, 0.22508468801723317543e-10, + 0.38688810159281056036e-11, 0.63662073336441549986e-12, + 0.10021258520759436840e-12, 0.15078803852218188215e-13, + 0.21668867032879685022e-14, 0.29710731632424137614e-15, + 0.38827520402829519679e-16, 0.48307068943815555023e-17, + 0.57144117356108676333e-18, 0.64181713734379723277e-19, + 0.68337123628163133109e-20, 0.68859551137027912816e-21, + 0.65540677669807047869e-22, 0.58800857546743492140e-23, + 0.49609560867195281703e-24, 0.39257176978773155768e-25, + 0.29051435583774851934e-26, 0.20038666969610654693e-27, + 0.12834652407916510621e-28, 0.76004294822300712515e-30, + 0.41406331868897153998e-31, 0.20632322446637399348e-32, + 0.93391988192290160565e-34, 0.38088985948737094009e-35, + 0.13858091026833819942e-36, 0.44429953079347022864e-38, + 0.12357345565058057384e-39, 0.29210777263200567568e-41, + 0.57061136857920055842e-43, 0.88436669532091003622e-45, + 0.10196077492413166440e-46, 0.77737734647534539190e-49, + 0.29398864798248892658e-51, -0.48478744007284371720e-01, + 0.90550839900968196905e-01, -0.75348807128520406406e-01, + 0.57401249183621147476e-01, -0.45277058119620489096e-01, + 0.41754625397638953088e-01, -0.46510052030996160144e-01, + 0.53135010408416068206e-01, -0.57071419369474331307e-01, + 0.54701465745079988490e-01, -0.49054469796134460291e-01, + 0.43858020091698549092e-01, -0.44554946443036001769e-01, + 0.50896628219074632749e-01, -0.60581697888416441433e-01, + 0.66866530375660634955e-01, -0.66462468307653496669e-01, + 0.57979858695249596179e-01, -0.46699509681381944082e-01, + 0.37848379046482742705e-01, -0.37332121170199315807e-01, + 0.44566024692185256251e-01, -0.56604246437699193284e-01, + 0.66112970924570524378e-01, -0.69271192002762368989e-01, + 0.63940658019756749231e-01, -0.54226122618871518133e-01, + 0.43952755276997337863e-01, -0.38084706936607981564e-01, + 0.36396584814957402831e-01, -0.38021760973758707280e-01, + 0.38967494831346267958e-01, -0.38697745550622754396e-01, + 0.36707148768026845453e-01, -0.36079626265556628828e-01, + 0.37211865236558998304e-01, -0.40720526269846610279e-01, + 0.43110904808925175347e-01, -0.42753148102360166716e-01, + 0.37471884612597192166e-01, -0.29856215455822815441e-01, + 0.22032212916165080235e-01, -0.18020932964427353873e-01, + 0.17575648499021205573e-01, -0.20331877132209824621e-01, + 0.22868150041050343962e-01, -0.25105076481552846684e-01, + 0.26885546687290904494e-01, -0.31424225160399534007e-01, + 0.38675538997925112961e-01, -0.47912226838293645037e-01, + 0.53593082601024931433e-01, -0.52307229431794173558e-01, + 0.41721187558268722773e-01, -0.26676632882345140130e-01, + 0.13415399159821947070e-01, -0.97540967408805238914e-02, + 0.16757602927161781292e-01, -0.30713897119883801223e-01, + 0.43117215880851336718e-01, -0.45621946125786440318e-01, + 0.40037360634990033781e-01, -0.22967290705455813138e-01, + 0.19577020282700897946e-01, -0.30396759776935154858e-02, + 0.31226817855438307459e-01, -0.13572813947108363394e-03, + 0.56780540389892983355e-01, 0.31142375320235657354e-01, + 0.55299286036995902449e-01, 0.78290045315193484976e-01, + 0.42194910344812944225e-01, 0.63814898335990646872e-01, + 0.22666234446572952610e-01, -0.10536205546860809984e-01, + -0.26555015711516943844e-01, -0.46794715078964994881e-01, + -0.51417131242458481710e-01, 0.13053827495410881641e-02, + 0.28531734187246388101e-02, 0.51409425304305388094e-01, + 0.29967876678961977849e-01, 0.15183277699745076350e-01, + -0.31567351117274725092e-01, -0.32912366835958405120e-01, + -0.23077305223927997019e-01, 0.33985207242227975441e-02, + 0.49575715842956988300e-01, 0.14399800735022675463e-01, + -0.30099336206169621279e-02, -0.26295683462816514531e-01, + -0.35100230874962314032e-01, 0.89896157830008337208e-02, + 0.46094360514969789921e-01, -0.53406977206686247553e-02, + 0.13238159992177533919e-01, -0.47700452302205167965e-01, + -0.11926686281052020777e-01, 0.34464741325475584111e-01, + 0.15617339265573036700e-01, -0.24096660043087586638e-04, + -0.21660522223727846775e-01, -0.26531363292416620947e-01, + 0.24950711489380592023e-01, 0.26273026064881979669e-01, + -0.42808511732723951437e-02, -0.31694761661995904389e-01, + -0.19326050267744220891e-03, 0.83659409894999200302e-02, + 0.28936296168733256773e-01, -0.10492769613586762009e-01, + -0.31711073985446702750e-01, 0.28572148068190554235e-02, + 0.34085947299998163584e-01, -0.72357303209578307385e-02, + -0.99497513115418493440e-02, -0.17362099551038030071e-01, + 0.10774896836180783422e-01, 0.26737819165284868600e-01, + -0.92632596507365473626e-02, -0.38500171172069483361e-01, + 0.28345460351318269021e-01, 0.11051421377374753482e-01, + -0.61155422657009940457e-02, -0.10666803291860616279e-01, + -0.10925345068595422246e-01, 0.22848782694255991010e-01, + 0.13962989038349034321e-01, -0.37660398771290376496e-01, + 0.70014237159817770129e-02, 0.15808798732521601310e-01, + 0.11633906164214774873e-01, -0.32689952977889027985e-01, + 0.53001698881727787871e-02, 0.23663566786827218424e-01, + -0.17834284411570328760e-01, 0.15065525303117591541e-01, + -0.37269695463005542146e-01, 0.37665959661922356061e-01, + 0.67226853229726780611e-02, -0.39709146518856618113e-01, + 0.19274938080598151557e-01, 0.10444646222664470334e-01, + 0.20004735460716089462e-02, -0.30257741040049048603e-01, + 0.24214303226354750437e-01, 0.33856793826285416435e-02, + -0.82008388271603855496e-02, -0.59218873231725900619e-02, + 0.26508893737215168639e-02, 0.14872517682660920876e-01, + -0.11777167588088161346e-01, -0.82067423440724471262e-02, + 0.17180493827392972084e-02, 0.38505329588804523833e-01, + -0.62394353473994204617e-01, 0.37294988602764457541e-01, + 0.10404344569296436647e-02, -0.32274162725981119307e-02, + -0.21187402996155665913e-01, 0.24603089608114695613e-01, + 0.34706462459148791459e-02, -0.24513993832705950615e-01, + 0.12352554909337669364e-01, 0.12055105325541553771e-01, + -0.18993624312816981270e-01, 0.12360860949517243901e-01, + -0.12512525516805681619e-01, 0.17436844657231980599e-01, + -0.89886655844529806531e-02, -0.10293753818159166388e-01, + 0.15391652707074991030e-01, 0.17749622765784785899e-02, + -0.15908321090288446431e-01, 0.51711256746394262951e-02, + 0.13173433647468223151e-01, -0.54335406764778231350e-02, + -0.27445692710851933571e-01, 0.45878948165234738343e-01, + -0.24566146030829304897e-01, -0.10890392932428490796e-01, + 0.16471112538216023391e-01, 0.11589297225214767115e-01, + -0.31892167208056418359e-01, 0.13447061591470436601e-01, + 0.23133498907094793978e-01, -0.33441700568103124858e-01, + 0.79775413245067247625e-02, 0.16042431712316618242e-01, + -0.41472349406734675820e-02, -0.30413154649403480179e-01, + 0.44038927197668678581e-01, -0.18571823255351466858e-01, + -0.16575712643857057338e-01, 0.22686912451786698380e-01, + 0.78939756811713186795e-05, -0.15151397648166080312e-01, + -0.12966510510543573665e-02, 0.29657606900310547887e-01, + -0.31736488048548804064e-01, 0.21124563949183039480, + -0.18157574302629050922, -0.21853152035345654869, + 0.34195749743329162396, -0.17593357166570555705, + 0.37322717915214943807e-01, -0.16028248628075708604, + 0.32078313318513262953, -0.22469802775311570331, + -0.11797834465073529786, 0.33662974807964474167, + -0.24594394739026617658, 0.57210822668956069076e-02, + 0.84617545443320382748e-01, -0.43376516585516187996e-01, + 0.43000546486249575928e-01, -0.12984117574867259925, + 0.85491492398413401754e-01, 0.13860526411259357915, + -0.32335834222031389906, 0.22934431664211768487, + -0.43077330774272976077e-01, 0.70640558795629665445e-01, + -0.28322958334565845329, 0.23241986691441646196, + 0.20689690068557772817, -0.56175354934624244230, + 0.28742672993517570657, 0.33895837846919724123, + -0.53651594562139015565, 0.32102635701573324634e-01, + 0.44518008915945417314, -0.22266371295674108888, + -0.37643089343607594177, 0.41104559344581348412, + 0.24470468295939368231, -0.73177965092397934121, + 0.38204109178052925166, 0.27954807280903043454, + -0.40460630417638387968, -0.39677295752401199949e-02, + 0.19175993153477652320, 0.34317556349189717868e-01, + -0.14242877075774609819, -0.14807765268402833803, + 0.29830011883215401536, 0.76597533960440448292e-02, + -0.25305244916339186823, -0.81627229943831536296e-01, + 0.43603848386899229927, -0.62758381502635532390e-01, + -0.65302091810120810322, 0.60806669050954431643, + 0.16181835246326495281, -0.51242142438149329564, + -0.89712121159432785256e-02, 0.42544118481436915546, + -0.10763430880840954562, -0.26731366166326897549, + 0.46071114892772747906e-01, 0.13727439702913349362, + 0.26239301611705512229, -0.53181550670997224106, + -0.23343006561072656563e-01, 0.52647787088561581736, + -0.67326699035789472347e-01, -0.55963239873974734984, + 0.18269011522466069297, 0.51165650292672149035, + -0.31951565421341626694, -0.26901612756149451133, + 0.13928184528532394637, 0.13291649048787732013, + 0.32809218657645528028, -0.65413993627482613924, + -0.11700884315019889625, 0.77611498250893173889, + -0.21843764913771435143, -0.35896630660708095384, + -0.11553658802885834189, 0.38969641595475629225, + 0.20131565161028930344, -0.26052482412566446701, + -0.46434129605724727696, 0.28018793200584429792, + 0.55082213508998922880, -0.20771355021204329638, + -0.63345607416569960080, 0.20493786856685283770, + 0.34308827369958982967, 0.16041068749187606390, + -0.81926053649949454050e-01, -0.88651280238074003925, + 0.52425313962285857716, 0.56813649690319956154, + -0.24029137819212859073, -0.15252778417112625164, + -0.61475013205662065729, 0.32413681797000115647, + 0.73510141615608592947, -0.13826141482318782261, + -0.41913791370123903990, -0.54390313919713983992, + 0.33918084017155930576, 0.46650138734225155002, + 0.42511060741652911821, -0.42485185785386975210, + -0.85738106843647221567, 0.21357648540926382763, + 0.13815404325824398590, 0.86862456693611844738, + 0.12410360613776642846, -0.66532260484138461276, + -0.60234192275415077145, -0.24331981506457575626, + 0.40532143435929651742, 0.73580984672838312122, + 0.73536934683325949624, -0.62809781775933315462, + -0.26792980974622226942, -0.10910962915427149245e+01, + -0.41960196272826749686, 0.63131166223064627552, + 0.37915090539997625685, 0.12755084098825804073e+01, + 0.55578550020217543093, 0.75315602067370472639e-02, + -0.38860427228068489258, -0.10255095802547731232e+01, + -0.13538006666266237943e+01, -0.10801173959412921910e+01, + -0.12938682494987532312e+01, -0.84788543372652769303, + -0.63677507868801752622, -0.53785867497996320274, + -0.21679979214881114902, -0.26279010531172825038, + 0.37472585024852900215e-01, -0.27955794416600149299, + 0.25170201190513480372, -0.25385126013078840312, + 0.89764070802918885517e-01, 0.86606451035153200757e-01, + -0.22078355766570953445, 0.22790824967361103526, + -0.12988463430801777676, 0.10007896630568318547e-01, + 0.31106502297048317651e-01, 0.46911861703459810380e-01, + -0.19286421261970862484, 0.29505207988318304935, + -0.25707107602367545995, 0.68894768732279051959e-01, + 0.17847272425476587432, -0.34467540090995424373, + 0.32890632690666293803, -0.13582237608317912492, + -0.12252695168696481343, 0.29411228218265739187, + -0.27918784821719322409, 0.91871403646089699890e-01, + 0.15002504404957300865, -0.29780583051521636317, + 0.26389296909113962863, -0.73685287514150196730e-01, + -0.15165970347797064210, 0.27163773254770495758, + -0.21185616123204573102, 0.83930827371184024005e-02, + 0.21655601923496498040, -0.32898063180972686448, + 0.26290145724365648894, -0.56144240485143423469e-01, + -0.17561075771112602539, 0.30999852805372540843, + -0.28849323025750878147, 0.14626743899796046389, + 0.15549794978773573070e-01, -0.94250124365168233553e-01, + 0.47864504779604126472e-01, 0.82762501683647710093e-01, + -0.20203734245393331626, 0.22018546742500705315, + -0.10802417137342125442, -0.84972753361469130495e-01, + 0.25968017054828512746, -0.32400908900049213424, + 0.24472735773381715241, -0.64204532593584884292e-01, + -0.12516925704634074279, 0.23351184339391178879, + -0.22161899100754403613, 0.11877207403188529133, + -0.11575582721172464253e-02, -0.54517972212408997990e-01, + 0.15445470101915001818e-01, 0.90260088295791657265e-01, + -0.19213290940247840233, 0.22007358200339588450, + -0.14587800661347122277, 0.23157732746770607335e+01, + -0.35356129132020583938e+01, 0.12675757397976996632e+01, + 0.12251003797467268086e+01, -0.26230042593622444613e+01, + 0.26344221530971649869e+01, -0.14228261019153116695e+01, + 0.11856697548651551344, 0.57438909028591356165, + -0.13284312052022606565, -0.82745228441941409692, + 0.16529727468596391304e+01, -0.14375583164312373263e+01, + 0.29710742318712046739, 0.13432343006591709322e+01, + -0.23293315661548281703e+01, 0.21676053907222732064e+01, + -0.68008311954287004042, -0.11834569278749973442e+01, + 0.25654606470985616973e+01, -0.25223817219612292284e+01, + 0.12482866440143072229e+01, 0.72890159040642488186, + -0.21909366925800131121e+01, 0.26112067980814179791e+01, + -0.17453690109954456133e+01, 0.38416432161548758062, + 0.85207800566065583503, -0.12263080537226369593e+01, + 0.95580820378418551719, -0.31324728503025972559, + 0.31230852924751136696e-01, -0.12058729551985555850, + 0.54088064857167250654, -0.62368025360667533885, + 0.25302524366357304064, 0.65374444807603437901, + -0.13959055101260304799e+01, 0.16172435611924971255e+01, + -0.90579829661983846112, -0.24452263117381375923, + 0.14080596253599915180e+01, -0.18442561315597374438e+01, + 0.16393969908802192847e+01, -0.95194062135369772459, + 0.50371059684581565019, -0.36856714257008266200, + 0.54736867012783241293, -0.33918343681175883164, + -0.42336526948293379258, 0.17736480523673745502e+01, + -0.27995667138731188395e+01, 0.28632010241971785902e+01, + -0.14229267095927657927e+01, -0.81225289170549774820, + 0.28559800394344829755e+01, -0.33583626543010272059e+01, + 0.20934314763602093201e+01, 0.37133760064840654058, + -0.26171813210320498122e+01, 0.32175935705332725512e+01, + -0.25094618671343411620e+01, -0.16070124473089120176, + 0.32688169932366450965, -0.28617498574624846697e+01, + -0.26477565206801165765e+01, -0.24856478782138049510e+01, + -0.82397355826790139588e+01, -0.69784241750761140111e+01, + -0.92298553274077921316e+01, -0.14206404294389232135e+02, + -0.79592945169253601634e+01, -0.10836335030726747419e+02, + -0.48240062468113489302e+01, 0.26088201922573617253e+01, + 0.41199998939643363016e+01, 0.91087977306776508613e+01, + 0.84190466061272637432e+01, 0.84950950160082694396, + -0.18548510332681309443e+01, -0.77590666986979908160e+01, + -0.68526933516403900626e+01, -0.15205779366450566936e+01, + 0.48735011622055282032e+01, 0.62748581258115665449e+01, + 0.42069162180086685510e+01, -0.94326563831669374416, + -0.84443840491501518386e+01, -0.31404585302875496211e+01, + 0.11616697586029360867e+01, 0.39758628508444795457e+01, + 0.72942909648790266175e+01, -0.28502012519826815939e+01, + -0.68552796884996523019e+01, -0.55882570721821434034, + -0.96038729878467465895, 0.74206557016626595313e+01, + 0.29722969195383139862e+01, -0.67118900269525072488e+01, + -0.25023898428443067665e+01, -0.26975256879787889996, + 0.42888320116815314975e+01, 0.41862783015627629268e+01, + -0.37057596665866525676e+01, -0.56348976432043871299e+01, + 0.16920528553219307266e+01, 0.48537100936430679354e+01, + 0.78315185329992154095, -0.21763211470054337759e+01, + -0.45537684699494311857e+01, 0.11868587688368026356e+01, + 0.64891593505846278944e+01, -0.13628391090642508754e+01, + -0.52642073011133803107e+01, 0.45922905094345473076, + 0.25788831795513877942e+01, 0.23815934004691294845e+01, + -0.11968519758778524142e+01, -0.56044997838226473519e+01, + 0.25344273145454581098e+01, 0.60065559301239810353e+01, + -0.41842500259325241529e+01, -0.28210229529473203058e+01, + 0.17862861556894920056e+01, 0.13870635948525185110e+01, + 0.24073563139538882716e+01, -0.45689312054125794660e+01, + -0.19318018405382626490e+01, 0.60150232453420571233e+01, + -0.35138988533250398172, -0.37584583028225733159e+01, + -0.13894475551981775308e+01, 0.56070094793960558732e+01, + -0.12537133527041299796e+01, -0.33633917169149540882e+01, + 0.18508792221179142246e+01, -0.11485910841164954643e+01, + 0.52610255641974843499e+01, -0.57419189401584471710e+01, + -0.16461049235627671639e+01, 0.69345921863577562050e+01, + -0.27033161197835617884e+01, -0.30016356086050230978e+01, + 0.88210958617625456757, 0.42939523711682063833e+01, + -0.34420165953135199999e+01, -0.12140896458215475473e+01, + 0.17409274959062219779e+01, 0.11578502515025148600e+01, + -0.96136343537275026350, -0.17367913807421895278e+01, + 0.65007057535570356155, 0.35224510324727269506e+01, + -0.29065383568594502783e+01, -0.38992996591666018169e+01, + 0.79733908829946917862e+01, -0.34920986451434647968e+01, + -0.31136701305650973381e+01, 0.30226026129740968251e+01, + 0.19333656525342293175e+01, -0.30588087294179469033e+01, + -0.16374993843154528328e+01, 0.52721082648094048650e+01, + -0.31186814391106216782e+01, -0.11199473121900294093e+01, + 0.21932538801633625347e+01, -0.89453829108969740158, + 0.94332779769644592438, -0.19800213846051053501e+01, + 0.69099681907084020693, 0.25458876211871062090e+01, + -0.33089909932646448532e+01, 0.20131765644007212912, + 0.22088329265618993347e+01, -0.21385501131793244189e-01, + -0.35911645878381515118e+01, 0.24858910567814422876e+01, + 0.32366650880138241320e+01, -0.64945419722147912367e+01, + 0.27446176126096082371e+01, 0.34226145853188087997e+01, + -0.41183609466859376624e+01, -0.12970304513540589220e+01, + 0.53411232038912483944e+01, -0.24158225281825722597e+01, + -0.37805424851191826718e+01, 0.52664950394136225142e+01, + -0.35127834365143911777, -0.42360445539687665573e+01, + 0.22534395118344532349e+01, 0.39489859164496499133e+01, + -0.65426295654821391423e+01, 0.22516024613556555600e+01, + 0.36694028184429465789e+01, -0.43190226489815009003e+01, + -0.17841859002165313952, 0.31997873417613207359e+01, + -0.36303073620789599874, -0.48052795734187014887e+01, + 0.54009093502040323997e+01, -0.13178894588390850373e+02, + 0.89153973148614902300e+01, 0.13395798718816896766e+02, + -0.15715094626407848821e+02, 0.25966504582549365665e+01, + 0.42370818100702312137e+01, 0.67054728158361731616e+01, + -0.17329050087583429018e+02, 0.96381254645215594934e+01, + 0.11842902579090742066e+02, -0.21736790431087669617e+02, + 0.11517170211426941862e+02, 0.41722454473343990600e+01, + -0.59769826871354041486e+01, -0.25091622605965990811, + -0.61591534249842327942, 0.10591798330144261087e+02, + -0.11057877347726288164e+02, -0.35613014816759820391e+01, + 0.16996233506738157359e+02, -0.10205670930197531021e+02, + -0.48114472543485815592e+01, 0.46029048641646346240e+01, + 0.11982204440510807686e+02, -0.14403829481469575313e+02, + -0.98945493975707528023e+01, 0.33019876235198424297e+02, + -0.18075177885981222659e+02, -0.20543542987799021660e+02, + 0.33921905954601740518e+02, -0.28940367170081531256e+01, + -0.27491414085578263382e+02, 0.14073755168270400517e+02, + 0.23878216199861149960e+02, -0.27156598594496347943e+02, + -0.12288034718758295227e+02, 0.40792051631645605880e+02, + -0.17583269055707337003e+02, -0.22467538191806539771e+02, + 0.26516978941388952506e+02, 0.18636771831289002943e+01, + -0.12469114724951422701e+02, -0.48048400801366479840e+01, + 0.12135197871328610830e+02, 0.90481133382406184751e+01, + -0.20758888446777952197e+02, 0.99394364415312838612e-01, + 0.18188849238742452741e+02, 0.29189177622581272686e+01, + -0.28385368800715959026e+02, 0.79004489196738809653e+01, + 0.36254516007577528569e+02, -0.33619092020555591205e+02, + -0.14025434687405699208e+02, 0.34003694032122773194e+02, + 0.12613912900004515816e+01, -0.27621530658407138503e+02, + 0.59477567595557045976e+01, 0.17169069701874981604e+02, + 0.80792727605486647224, -0.15453187792518729538e+02, + -0.11313516676464432820e+02, 0.32075263414658898853e+02, + 0.14485732858774695853e+01, -0.33673973483187566558e+02, + 0.46352095110713280590e+01, 0.35156616498910693736e+02, + -0.10274333312147554409e+02, -0.33985072824835214078e+02, + 0.20067933197003238632e+02, 0.17830397311344786004e+02, + -0.62894488556409102742e+01, -0.14413974517964842192e+02, + -0.16022647858073618465e+02, 0.40870291497844817741e+02, + 0.53114685335150753076e+01, -0.45576616453943998408e+02, + 0.85472018598067336370e+01, 0.27619970082237319531e+02, + 0.55734420692832289390e+01, -0.23875973059345795946e+02, + -0.16309073275647694601e+02, 0.21166659191608893309e+02, + 0.27228811269619914270e+02, -0.16830082839824775931e+02, + -0.36585602630960245563e+02, 0.14053878473453163878e+02, + 0.40187671998222555203e+02, -0.11242240842678418389e+02, + -0.23357714429319980098e+02, -0.13549816066868253017e+02, + 0.12100318819971715101e+02, 0.50586047253708194660e+02, + -0.29039442943308294787e+02, -0.38355464473820866544e+02, + 0.12427667421038925966e+02, 0.15059230489167356737e+02, + 0.37147882386098949326e+02, -0.21142113833380047794e+02, + -0.46050670094003358201e+02, 0.55018288180580858793e+01, + 0.31254435129525475645e+02, 0.32477660890392336057e+02, + -0.18771046807420322722e+02, -0.34349484441251043165e+02, + -0.25937618050575593998e+02, 0.29217455948877304905e+02, + 0.51202479922769001064e+02, -0.55292531347142146458e+01, + -0.18196658064897960116e+02, -0.50590776333495284689e+02, + -0.11117691474641384630e+02, 0.43472452516889489971e+02, + 0.42040109701014081622e+02, 0.13042871955930978700e+02, + -0.22795519699631075383e+02, -0.54603389611370424461e+02, + -0.39696371564504246976e+02, 0.30787947259874247408e+02, + 0.27462521667398874570e+02, 0.66294598316898685653e+02, + 0.27536556092769071569e+02, -0.36261748874057595060e+02, + -0.32997512288991266871e+02, -0.76769012574202434962e+02, + -0.41678396495711972136e+02, 0.22392553896146223380e+01, + 0.23608308273763551455e+02, 0.70602396799419764761e+02, + 0.85134034271387804438e+02, 0.75876833202267505385e+02, + 0.81950391253498636956e+02, 0.57186795891626232446e+02, + 0.43129652682399012065e+02, 0.32658736204571283679e+02, + 0.18303296095021501344e+02, 0.12287999755137018809e+02, + 0.38894443986299083171e+01, 0.10853199481994131759e+02, + -0.87230218357635287418e+01, 0.10313119686986009782e+02, + -0.26841718526014899382e+01, -0.49711030113753533755e+01, + 0.10515603261661389922e+02, -0.94066936212442371357e+01, + 0.31043493962568668998e+01, 0.38754181081830112454e+01, + -0.61232012417934473802e+01, 0.15502951174603594175e+01, + 0.69877685256453663243e+01, -0.13371885203044611146e+02, + 0.12295920409545335161e+02, -0.30915784443096585576e+01, + -0.94741609279350100792e+01, 0.17944086326517815877e+02, + -0.16922709519460443772e+02, 0.66028612030145215073e+01, + 0.71075154043217825262e+01, -0.16166551236734580499e+02, + 0.15302118208784694531e+02, -0.52944798246019955101e+01, + -0.75687279950789276839e+01, 0.15366096501693240484e+02, + -0.13445702385700165848e+02, 0.31815685637963984078e+01, + 0.89437113126513203554e+01, -0.15417220758925131108e+02, + 0.12248038069198170064e+02, -0.13348565924101147839e+01, + -0.10834683912189433386e+02, 0.17138537367089746510e+02, + -0.14073183055135737973e+02, 0.36489983223443624993e+01, + 0.79986861163165272615e+01, -0.14410451999570994985e+02, + 0.12556438555225959419e+02, -0.44184079222792345121e+01, + -0.45112134571628148549e+01, 0.86817168186480806469e+01, + -0.58285759115025186361e+01, -0.18402368646062681190e+01, + 0.91387076294949043387e+01, -0.11146581432756033081e+02, + 0.61504306534720107891e+01, 0.33635724776478639342e+01, + -0.12230520407757133228e+02, 0.15606575773508815530e+02, + -0.11722634134957795382e+02, 0.27771250848849713400e+01, + 0.64138649660326061408e+01, -0.11197340267845346418e+02, + 0.96257501956523832121e+01, -0.33840411444507649819e+01, + -0.33791854313327527315e+01, 0.65322475861264965857e+01, + -0.43278117043115669205e+01, -0.16994611618754531523e+01, + 0.77366251390088276452e+01, -0.99843780935584280911e+01, + 0.68809558241407087209e+01, -0.51507430553350950220e+02, + 0.72201060778951884345e+02, -0.15064516776101660511e+02, + -0.43731709929764200240e+02, 0.70414461993829604580e+02, + -0.60945905251115902956e+02, 0.22162976835420561628e+02, + 0.13730598246704888155e+02, -0.29170150580313993771e+02, + 0.12029983290796337769e+02, 0.17895530777338350958e+02, + -0.41908249097499123081e+02, 0.35282278805444128977e+02, + -0.32326388328693478336e+01, -0.41423074225341004251e+02, + 0.66189383522570096829e+02, -0.58893604946955939283e+02, + 0.15972559698237374093e+02, 0.34829947970009143887e+02, + -0.70510832632564699907e+02, 0.66449961198071889612e+02, + -0.30698747085856251005e+02, -0.21097218279956194920e+02, + 0.55464899140022787094e+02, -0.60731202736064737735e+02, + 0.33105180892958792072e+02, 0.28485115124892210758e+01, + -0.30356944002014724759e+02, 0.31272263494425498465e+02, + -0.15920147919663339309e+02, -0.51603649116843195443e+01, + 0.10316776253194390733e+02, -0.13619933889614093125e+01, + -0.17402158814485577665e+02, 0.23759229082854869120e+02, + -0.13394547555654915172e+02, -0.15302430194096432459e+02, + 0.39978560996389880700e+02, -0.48704044994393953516e+02, + 0.29034229336294398394e+02, 0.36433620323571358490e+01, + -0.35533732442087497816e+02, 0.44227210653908613835e+02, + -0.33044595675426130299e+02, 0.87538778828305350288e+01, + 0.48821778973240199662e+01, -0.40742012550823138994e+01, + -0.10878211932130229300e+02, 0.16892910209844131941e+02, + -0.52939747314383511778e+01, -0.28436251877659337595e+02, + 0.59270648362255165864e+02, -0.67735319291149622245e+02, + 0.34967317714073722357e+02, 0.22064499308247835785e+02, + -0.77569104866514791752e+02, 0.93125042374170462267e+02, + -0.61103017103212948768e+02, -0.44032243258320740154e+01, + 0.64529867953640518863e+02, -0.79244337227493431897e+02, + 0.58634587581838509607e+02, 0.17555290838299082878e+02, + -0.19912238543820915737e+02, 0.92417801166958824410e+02, + 0.70360625155403511144e+02, 0.78775314276384065693e+02, + 0.23872727538046873974e+03, 0.20275835780682402287e+03, + 0.27899108515034447464e+03, 0.40243550873743140528e+03, + 0.25149003321160463997e+03, 0.29977281937053601268e+03, + 0.15603821386157972029e+03, -0.85438758141505090293e+02, + -0.11717808156865751812e+03, -0.26831348499674038521e+03, + -0.24464680314802083672e+03, -0.31531543944672868918e+02, + 0.66317796448393721676e+02, 0.21200308514630208379e+03, + 0.21670248072275981599e+03, 0.32842674245474533734e+02, + -0.13790034474377938523e+03, -0.18203694173662378830e+03, + -0.13046588050143083137e+03, 0.36296055743826599382e+02, + 0.24078491794665910675e+03, 0.95665905586650140435e+02, + -0.34863734795716112558e+02, -0.11617654264036158906e+03, + -0.21703660223895167292e+03, 0.91243223522608616349e+02, + 0.18899818048487199462e+03, 0.30610571178303384698e+02, + 0.15461749092284845730e+02, -0.20997488685133268405e+03, + -0.87956764565407283385e+02, 0.19113389464500528447e+03, + 0.83107405083745021557e+02, -0.21118482032142700255e+01, + -0.11876862432980203721e+03, -0.12508024770095104827e+03, + 0.10645717914772154700e+03, 0.17019362700866426508e+03, + -0.54700702155552349382e+02, -0.13915626191465455008e+03, + -0.23606829648700763613e+02, 0.62509442363376827245e+02, + 0.13539776792707002073e+03, -0.35682335447688885210e+02, + -0.19112667395326889164e+03, 0.42036752448267499460e+02, + 0.15218678786386161050e+03, -0.12277819468119627544e+02, + -0.75226228228595999781e+02, -0.71503570463819357883e+02, + 0.36767007227325819940e+02, 0.16409351086499600569e+03, + -0.76173632212615231651e+02, -0.17257107771964606968e+03, + 0.11874497740208231278e+03, 0.85218476007422225393e+02, + -0.51941964389553390902e+02, -0.44133848209090849934e+02, + -0.65792689988742012019e+02, 0.13067370809538772392e+03, + 0.55516297109596550285e+02, -0.16896090421949051574e+03, + -0.31037470924339998213e+01, 0.12665177502721404323e+03, + 0.26147849207539533012e+02, -0.15684133800859984831e+03, + 0.39919706618520386598e+02, 0.83741834883069813600e+02, + -0.29972134615486304199e+02, 0.51458589713218234607e+01, + -0.12807465173573638140e+03, 0.15043280840902639284e+03, + 0.54298733598236033515e+02, -0.19683809552927826303e+03, + 0.62486732097517325712e+02, 0.11081907325325126124e+03, + -0.49954085215283733135e+02, -0.10421002759313117281e+03, + 0.83370560461165950983e+02, 0.49014792583595600206e+02, + -0.61273939305401555089e+02, -0.25989622798980075657e+02, + 0.22407543419606771096e+02, 0.53372140908592491826e+02, + -0.16124226801198322079e+02, -0.11352824967397842215e+03, + 0.10338635906526376118e+03, 0.89630280446320995225e+02, + -0.20587653624580826772e+03, 0.75868808354030932151e+02, + 0.11167075817446050223e+03, -0.99322174667791742309e+02, + -0.56799003531235648268e+02, 0.98920639401336387664e+02, + 0.33526258599122961357e+02, -0.13958680540672767734e+03, + 0.80097404111630510215e+02, 0.38086100536177617926e+02, + -0.63334295220164641194e+02, 0.21105011568464099980e+02, + -0.21808785385622137198e+02, 0.54929988456625693516e+02, + -0.22113453070266174905e+02, -0.67461718104990310962e+02, + 0.86063896054024155546e+02, 0.58798953181810977853e+01, + -0.73950838276639458968e+02, 0.43688684826372865544e+01, + 0.10840852266402940529e+03, -0.82518999316567672508e+02, + -0.80523113293984650340e+02, 0.17379234946593345512e+03, + -0.64100526357599022731e+02, -0.11443394039112595806e+03, + 0.13123619203523111310e+03, 0.31668836936065147825e+02, + -0.15430866782273150761e+03, 0.72344506424022924307e+02, + 0.10561540370919564680e+03, -0.14531288174498894250e+03, + -0.27650949240651092609e+01, 0.14079639433736446108e+03, + -0.84942310984121576212e+02, -0.96694486542697930531e+02, + 0.17508462207659925980e+03, -0.54227829462667251903e+02, + -0.11233545581277584802e+03, 0.12340870661580973433e+03, + 0.15722950381480742976e+02, -0.10915943421978670358e+03, + 0.27197625023844491210e+02, 0.12707156464721799694e+03, + -0.15053328710201836316e+03, 0.21406597144861379434e+03, + -0.73273731268383642146e+02, -0.28838127558005334095e+03, + 0.24145506651076706817e+03, 0.41833955189683045717e+02, + -0.13352947855130054222e+03, -0.12181116149142970073e+03, + 0.32276812380097277355e+03, -0.14651852684996197240e+03, + -0.25735998901525510973e+03, 0.38558284313958336043e+03, + -0.13244989258835235546e+03, -0.15610790756351562436e+03, + 0.11503261042556908933e+03, 0.69525560816019392973e+02, + -0.47932091169152954535e+02, -0.20134363201728342574e+03, + 0.25375768622014751941e+03, 0.34637121293543927436e+02, + -0.32091667616063563173e+03, 0.18588098153830841852e+03, + 0.14638424778650971803e+03, -0.17403106755200971634e+03, + -0.17459365780261768464e+03, 0.29971662930806672875e+03, + 0.10622714039440701583e+03, -0.55862712532877742433e+03, + 0.33232393133008923769e+03, 0.35912042102694448431e+03, + -0.61799473225908002405e+03, 0.56698096926969384413e+02, + 0.51065123850182339993e+03, -0.27652899837085232093e+03, + -0.42154263551991670056e+03, 0.49356440255247377991e+03, + 0.20962767095817520158e+03, -0.70457569465073777337e+03, + 0.26008090629547183426e+03, 0.45170243175327124163e+03, + -0.46665573446344535569e+03, -0.93415455638347594913e+02, + 0.25935799320204745300e+03, 0.11900362292291042365e+03, + -0.27068725347757339250e+03, -0.16221496206040382049e+03, + 0.41151165326432885649e+03, -0.41166825608542083614e+01, + -0.38363648651213253515e+03, -0.23283991283899680980e+01, + 0.52036205684478875355e+03, -0.18947918091284523712e+03, + -0.61164852495976310820e+03, 0.56652755154149576811e+03, + 0.30089070480221454318e+03, -0.64096817336802916998e+03, + -0.39646037514637008314e+02, 0.51606636296574765765e+03, + -0.77573762014565105005e+02, -0.34892656619125972384e+03, + -0.45377014058703544208e+02, 0.36676261793487583418e+03, + 0.15012267299226297723e+03, -0.59088486922462732309e+03, + -0.88264377598937322489e+01, 0.61630313581429902570e+03, + -0.80771804182088061452e+02, -0.65906449102161400333e+03, + 0.18480607623936916184e+03, 0.63545131706580878017e+03, + -0.34490255397619301903e+03, -0.36873958336250393586e+03, + 0.97143841758949164955e+02, 0.35013983536359586424e+03, + 0.22548788432978224705e+03, -0.74524208544299574442e+03, + -0.76752646402165595418e+02, 0.80756562600794222817e+03, + -0.10037497355333299254e+03, -0.55817931565262824734e+03, + -0.11153863201544783124e+03, 0.46666869530077946138e+03, + 0.32484695812388770264e+03, -0.43562721393109308110e+03, + -0.49897187922424842554e+03, 0.32262736335379207731e+03, + 0.68632420990145624273e+03, -0.26330394302696925024e+03, + -0.74881125040022880057e+03, 0.17316231767058314972e+03, + 0.47459078915611581806e+03, 0.28620449220690898073e+03, + -0.31424561126501288300e+03, -0.87023104851284665529e+03, + 0.49198230707157574670e+03, 0.73106979855420524927e+03, + -0.16948104647720529670e+03, -0.37933097577799435385e+03, + -0.64993361087893288186e+03, 0.39269400863341502372e+03, + 0.85676498206625683451e+03, -0.63422721480028137364e+02, + -0.63891457659902573596e+03, -0.58778391226210067089e+03, + 0.31798369667414738160e+03, 0.70869433966974418126e+03, + 0.46090128015051669763e+03, -0.56416560497443697386e+03, + -0.92403240015479093472e+03, 0.40046374195530871631e+01, + 0.45767652362459620008e+03, 0.89562825220945808269e+03, + 0.23973080494928652229e+03, -0.82379330407891643517e+03, + -0.82832817722549987138e+03, -0.23628941599219874092e+03, + 0.42361749827525852652e+03, 0.10866659302328866943e+04, + 0.68094016270826534765e+03, -0.47510490410077488832e+03, + -0.64091535031347018503e+03, -0.12080700951249993977e+04, + -0.51761127306034336470e+03, 0.61897739163962194198e+03, + 0.73629201333545358921e+03, 0.13923029562131684997e+04, + 0.83515432857015252921e+03, -0.37898072478001779473e+02, + -0.46945868793637174576e+03, -0.13570628659951521513e+04, + -0.16055542597614196438e+04, -0.15013572136216762374e+04, + -0.15352877076102590763e+04, -0.11144619856508538760e+04, + -0.83401027265691368484e+03, -0.60811194677393746133e+03, + -0.37556498083705304225e+03, -0.20500021279737157442e+03, + -0.12082585967338368960e+03, -0.14261572537182945553e+03, + 0.91260559456554190660e+02, -0.13366121641955575683e+03, + 0.22784041368141878081e+02, 0.78517809335926415315e+02, + -0.15037030334636267526e+03, 0.12031120549683487297e+03, + -0.14806858818573978454e+02, -0.96304141559495931801e+02, + 0.12923351662658006944e+03, -0.52705465269588351873e+02, + -0.87842191772648945403e+02, 0.19633704604594791476e+03, + -0.18926359441985195531e+03, 0.54954795613720044400e+02, + 0.13397337481448565200e+03, -0.26277371540923348903e+03, + 0.24791444954561848135e+03, -0.91525892793960693439e+02, + -0.11633522625205962697e+03, 0.25268137833602071396e+03, + -0.23690208819456265132e+03, 0.81328748184594033432e+02, + 0.11718407781557937142e+03, -0.23676507632432259243e+03, + 0.20599593280110337901e+03, -0.46233457941330350138e+02, + -0.14248700668385987456e+03, 0.24428820369225761056e+03, + -0.19745916151889306889e+03, 0.30929613178289756092e+02, + 0.15580792894810389271e+03, -0.25349414717407367448e+03, + 0.20853700089144231811e+03, -0.52024242353667716543e+02, + -0.12173895473472360607e+03, 0.21386175611884112868e+03, + -0.17859996844271395844e+03, 0.47625543989035598713e+02, + 0.93338829464540651770e+02, -0.15790034394884611402e+03, + 0.11076220897066514226e+03, 0.13894383453122623351e+02, + -0.13537221296474106680e+03, 0.17655996218891058902e+03, + -0.10943333232958788415e+03, -0.29321477610261300839e+02, + 0.16144387631982206699e+03, -0.21302761358354294430e+03, + 0.15682660481732506241e+03, -0.26006236215341331786e+02, + -0.10646432901061332643e+03, 0.17039712461616232986e+03, + -0.13723026776923941839e+03, 0.34062799610178380760e+02, + 0.74527785884241524172e+02, -0.12472399576732708226e+03, + 0.89871309114141268992e+02, 0.58589396919533536234e+01, + -0.10310426190789067391e+03, 0.14277794763203991124e+03, + -0.10041163938257079735e+03, 0.46426916845436369385e+03, + -0.59207893701898717609e+03, 0.27436094939792340597e+02, + 0.51636927079959218645e+03, -0.70420315092168630144e+03, + 0.52999417956087290804e+03, -0.86553005676145815528e+02, + -0.27633446693577167252e+03, 0.39187715751829819055e+03, + -0.15441825677529121208e+03, -0.19877208418865404838e+03, + 0.46382231447680817382e+03, -0.38226336906542951510e+03, + 0.30485413385088104832e+02, 0.44415460705183352275e+03, + -0.69014480603407719173e+03, 0.59280369998895469053e+03, + -0.12781479677620545488e+03, -0.39511745650051727807e+03, + 0.73880324734007615461e+03, -0.65670210153273342257e+03, + 0.26209472088813390656e+03, 0.26715719829735024859e+03, + -0.57617262046925316099e+03, 0.56883125865824126777e+03, + -0.23409938682216602501e+03, -0.13943858280357406443e+03, + 0.37602084341430850145e+03, -0.30315391810814179507e+03, + 0.71766011493189168391e+02, 0.17777545955092367080e+03, + -0.20214518781755364785e+03, 0.41555850800069052298e+02, + 0.22754482491193707006e+03, -0.33328019751244414692e+03, + 0.22043225421423355215e+03, 0.12003184418622107898e+03, + -0.41999315692827104840e+03, 0.53189464296413405009e+03, + -0.31366147718490373109e+03, -0.52445848122297597627e+02, + 0.39775829447483243939e+03, -0.46274332822984632685e+03, + 0.29022924377603305857e+03, 0.25312597346304883672e+02, + -0.19367312412927230980e+03, 0.15644916214876587901e+03, + 0.81713714862558646246e+02, -0.24096612519090521687e+03, + 0.19139321646351490358e+03, 0.14859797382775883534e+03, + -0.51337364396392558774e+03, 0.67719596365985307784e+03, + -0.40132187557406086853e+03, -0.15883517463315200757e+03, + 0.74228277223390671224e+03, -0.92807277086895635421e+03, + 0.62018078602552373013e+03, 0.48104113319548261529e+02, + -0.66717881289083925367e+03, 0.80497011537682385551e+03, + -0.57522522982507302913e+03, -0.26034065212040871984e+03, + 0.26833662904552755890e+03, -0.10718437479757312758e+04, + -0.74969705859275450166e+03, -0.92273415450446680097e+03, + -0.26427138550770077927e+04, -0.22740415682832845050e+04, + -0.31636015722839765658e+04, -0.44262644810908259387e+04, + -0.29217544275200143602e+04, -0.32586617484584544400e+04, + -0.18097041312778742395e+04, 0.96578066784063639716e+03, + 0.13514478684654104654e+04, 0.29439713993407481212e+04, + 0.27882968748108219188e+04, 0.34662720122834736003e+03, + -0.78725755133043026035e+03, -0.22932360303750065214e+04, + -0.25129913866176138981e+04, -0.31224833831872200562e+03, + 0.15420432320879494910e+04, 0.19878760259514274367e+04, + 0.15436461904501788922e+04, -0.48620443660778721551e+03, + -0.26506915965099315144e+04, -0.10698593881611570851e+04, + 0.34998707838668320846e+03, 0.13536056034340983842e+04, + 0.23992308111219085731e+04, -0.10345273571514971991e+04, + -0.20564803241109384544e+04, -0.43248770329251294697e+03, + -0.86296560265369535614e+02, 0.23001522500626078909e+04, + 0.98222794968867810894e+03, -0.20848594299451269762e+04, + -0.10185105862614886973e+04, 0.11212518544477724447e+03, + 0.12695312444682786008e+04, 0.14188468450726418268e+04, + -0.11703051687289953406e+04, -0.19508057399150904985e+04, + 0.65729881017756144956e+03, 0.15317923525347794111e+04, + 0.26718362766220911908e+03, -0.68517254656603438434e+03, + -0.15353220729263184694e+04, 0.40934353820812361846e+03, + 0.21459456392825518378e+04, -0.48710822963785165030e+03, + -0.16880721053724894318e+04, 0.13238897056846676037e+03, + 0.83121475882316906336e+03, 0.82443015629459432603e+03, + -0.43573316359152158839e+03, -0.18268602215349014841e+04, + 0.86260884509699735645e+03, 0.19063975423811248220e+04, + -0.13006270133230145802e+04, -0.96784279196020804648e+03, + 0.56497815965042821063e+03, 0.54275058926921133207e+03, + 0.67163942733651799699e+03, -0.14089309186893558490e+04, + -0.63561665804757706155e+03, 0.18453807646733309866e+04, + 0.14246658664086632484e+03, -0.15632179593141652276e+04, + -0.15264243251244451471e+03, 0.16674336867113074732e+04, + -0.44434816426159017055e+03, -0.84272079861687700486e+03, + 0.16032919307953889643e+03, 0.15577287023887510031e+03, + 0.12365829396272758913e+04, -0.15506911347977625155e+04, + -0.65024374562950958989e+03, 0.21534806647628233804e+04, + -0.57924016953749332970e+03, -0.13929018658101113033e+04, + 0.70363422821075062075e+03, 0.10571002911684204264e+04, + -0.86541021029238288520e+03, -0.58524028350939227039e+03, + 0.70930309274143894527e+03, 0.26458090666033962179e+03, + -0.21548478056088455901e+03, -0.63290867630344985173e+03, + 0.19504954682078312089e+03, 0.13000456889628446788e+04, + -0.12426427669688109745e+04, -0.86682390142124972954e+03, + 0.21393268379741966783e+04, -0.68998717553270421377e+03, + -0.13651013609499541417e+04, 0.11532109026109253591e+04, + 0.67724361536615992918e+03, -0.12160226580006285531e+04, + -0.23377204706273894885e+03, 0.14293969638625526386e+04, + -0.80693139906335977685e+03, -0.45310865413069927854e+03, + 0.67423749028434099273e+03, -0.16133661969435300421e+03, + 0.16259821734348540190e+03, -0.56017757726625814030e+03, + 0.24164496113745641992e+03, 0.70778844547781011443e+03, + -0.87556471889063391245e+03, -0.16872785123841615018e+03, + 0.91583937981904557546e+03, -0.96975700594606891514e+02, + -0.12176015631773377663e+04, 0.97661454034518908429e+03, + 0.81488516418408869413e+03, -0.18452938085138250699e+04, + 0.62215575683530482820e+03, 0.13584619379826428940e+04, + -0.15222573403857043104e+04, -0.32513232591764898416e+03, + 0.17166917781169420323e+04, -0.81255904170137443998e+03, + -0.11672920774427416291e+04, 0.15953751335287411166e+04, + 0.84398037074698351034e+02, -0.16540724051076745127e+04, + 0.10486370993185023508e+04, 0.97705990847563259649e+03, + -0.18646767117226177106e+04, 0.54179191882789882584e+03, + 0.12750835051290039246e+04, -0.13415828720882871039e+04, + -0.27010780801911852222e+03, 0.13524433729957886499e+04, + -0.44267356551413809029e+03, -0.13081177693683130201e+04, + 0.16206973671201346860e+04, -0.15749375103239194686e+04, + -0.54973130707130025030e+02, 0.27068570411221862742e+04, + -0.16552839895541014812e+04, -0.99562762379260641410e+03, + 0.14695608575559006113e+04, 0.10925245922419132967e+04, + -0.28106235515972271060e+04, 0.10549482835911758229e+04, + 0.24117417599171849361e+04, -0.31007621182686275461e+04, + 0.51361927051282327739e+03, 0.18807690550337104014e+04, + -0.96527712122714376619e+03, -0.11109313884352943660e+04, + 0.89096879626815587017e+03, 0.16804466121755210679e+04, + -0.24303306530986260441e+04, -0.15578158276101009960e+03, + 0.28741740895925267978e+04, -0.16889274380253721120e+04, + -0.15118705960427150785e+04, 0.20042985228074001043e+04, + 0.11988301256246470530e+04, -0.28092422220962039319e+04, + -0.31459295814986933237e+03, 0.43352516949493410721e+04, + -0.28376723450687222794e+04, -0.27895165328961802516e+04, + 0.50655328658688022188e+04, -0.47792210645932533453e+03, + -0.43008590211019327398e+04, 0.24362982965365681594e+04, + 0.33804651970734371389e+04, -0.40476600697688400032e+04, + -0.16809372541156280931e+04, 0.56164796131118073390e+04, + -0.17914696426811447054e+04, -0.39547522402910417441e+04, + 0.36371784031582619718e+04, 0.13027681432246597524e+04, + -0.24350398771647996909e+04, -0.12123748355400107357e+04, + 0.26237629815575096472e+04, 0.13142528233623550022e+04, + -0.36558362204529321389e+04, 0.49486517594941858533e+02, + 0.35821076876731140146e+04, -0.39151055426177344998e+03, + -0.42873517129920292064e+04, 0.18466306507200217766e+04, + 0.47843412243200982630e+04, -0.44530628933760253858e+04, + -0.27156301563256624831e+04, 0.53637979896035867569e+04, + 0.52164623882638613850e+03, -0.43820654551453899330e+04, + 0.36642410511255735628e+03, 0.32435188221335215530e+04, + 0.51273617918415482109e+03, -0.35940352589146823448e+04, + -0.88614457614003129038e+03, 0.49818086889782398430e+04, + -0.71888242422095188999e+02, -0.51359359840332044769e+04, + 0.66532678763299134062e+03, 0.55786455263124389603e+04, + -0.15182037074455508900e+04, -0.53425511801388165622e+04, + 0.26240493241864014635e+04, 0.34763492151478430969e+04, + -0.75732867545937779141e+03, -0.35001372352578146092e+04, + -0.13943421379097571844e+04, 0.61743690385113168304e+04, + 0.51254315929885433434e+03, -0.65669498148121419945e+04, + 0.48609024932497754889e+03, 0.49488509461457942962e+04, + 0.10940465612125301504e+04, -0.41950637885288088000e+04, + -0.28169770726683027533e+04, 0.39115961130367686565e+04, + 0.42212115299873676122e+04, -0.28542823616928094452e+04, + -0.57829869589526597338e+04, 0.22092595682301262059e+04, + 0.63187656631109994123e+04, -0.11520239457703864900e+04, + -0.43698976218108555258e+04, -0.25852314249219689373e+04, + 0.32307517519888006063e+04, 0.68859209690418556420e+04, + -0.38447266630991985039e+04, -0.62663349065513039022e+04, + 0.96312380137898173871e+03, 0.39249481266159591542e+04, + 0.51997697743560956951e+04, -0.33266121615143069903e+04, + -0.72302962459586788100e+04, 0.28018697500581083659e+03, + 0.57509734611869289438e+04, 0.49194285406839771895e+04, + -0.25264281566387721796e+04, -0.64530325560627343293e+04, + -0.37175152324959080943e+04, 0.48405137504381918916e+04, + 0.77140245100646943683e+04, 0.52514888633090788517e+03, + -0.45495128977867652793e+04, -0.74042082857964396680e+04, + -0.21225532280393781548e+04, 0.69899159401959013849e+04, + 0.73108882786962731188e+04, 0.20592421159197024281e+04, + -0.37584472144171745640e+04, -0.94619682919546157791e+04, + -0.55536534749076236039e+04, 0.34914481041734752580e+04, + 0.62144852586994038575e+04, 0.10099385032646665422e+05, + 0.43747622136657473675e+04, -0.48376510320424767997e+04, + -0.70383773289943310374e+04, -0.11603520990969833292e+05, + -0.73363089370473444433e+04, 0.12643863946343255122e+03, + 0.43467991492778455722e+04, 0.11626809064942508485e+05, + 0.13826104110766047597e+05, 0.13242196251311796004e+05, + 0.13086875970053368292e+05, 0.97611927051233742532e+04, + 0.72408872849626031893e+04, 0.52143218220222224772e+04, + 0.32986982973845470042e+04, 0.17248977347812526659e+04, + 0.11842927695747603138e+04, 0.96008400442230811223e+03, + -0.41931640852819037946e+03, 0.83167086443777532168e+03, + -0.71239710946584409612e+02, -0.54253053053974451814e+03, + 0.98268491404255019006e+03, -0.71945458092359490365e+03, + -0.37320914839258847451e+02, 0.81098183784971809018e+03, + -0.10234183271573932643e+04, 0.46542206387107751198e+03, + 0.54398615774074892215e+03, -0.13366244357343086904e+04, + 0.13308539411691585883e+04, -0.44017139786536932888e+03, + -0.84086128235316948576e+03, 0.17250147082858634349e+04, + -0.16364443834337910175e+04, 0.58475859864965025281e+03, + 0.81763559788259067318e+03, -0.17319233572419229858e+04, + 0.16081252740517077200e+04, -0.53209210342908045277e+03, + -0.83232867611551762366e+03, 0.16503436119209511617e+04, + -0.14335146567440485796e+04, 0.32917719137141710917e+03, + 0.97593258238662576787e+03, -0.16867172040872746948e+04, + 0.13790504357086069831e+04, -0.24991223165431495090e+03, + -0.10207141737369397561e+04, 0.16861444629877273655e+04, + -0.13814132945032663429e+04, 0.32113374837699166164e+03, + 0.84810741185233848682e+03, -0.14505161043128236997e+04, + 0.11766327286041901061e+04, -0.24939744222470997670e+03, + -0.73742021555321161941e+03, 0.11863453005674577980e+04, + -0.85265050402127019424e+03, -0.28985412579313724279e+02, + 0.90153100748864403613e+03, -0.12299236082362087927e+04, + 0.81408518703943570927e+03, 0.10217091165403071784e+03, + -0.98835804697815740383e+03, 0.13408426498994967915e+04, + -0.97250009617960427022e+03, 0.10704788793130144597e+03, + 0.76122216710065447387e+03, -0.11581893346202502926e+04, + 0.89462387532097511667e+03, -0.16123480242312575683e+03, + -0.59687491460904084306e+03, 0.94242376529900855076e+03, + -0.69510162387108118764e+03, 0.24205789638965800492e+02, + 0.65963561725437421046e+03, -0.94864611118707944115e+03, + 0.67385417478393139845e+03, -0.21667207311990559901e+04, + 0.24806612320601666397e+04, 0.35442394750858835550e+03, + -0.29049701904715993805e+04, 0.34966164682237408670e+04, + -0.22698859765933893868e+04, -0.19058701355569004932e+03, + 0.19926947765709949181e+04, -0.23502793701699079065e+04, + 0.81469823523059426407e+03, 0.12230102472451305857e+04, + -0.26592001346122410723e+04, 0.21461880191093632675e+04, + -0.19867555236563859467e+03, -0.23427548567395137979e+04, + 0.35783561983659128600e+04, -0.29733957408518967895e+04, + 0.46819180197045159275e+03, 0.22142874878127763623e+04, + -0.38484244529116654121e+04, 0.31991032799040076497e+04, + -0.10092557447238204986e+04, -0.17143827487320859291e+04, + 0.30851705118726504224e+04, -0.27285186157925345469e+04, + 0.73033255350936178729e+03, 0.12360991545283368396e+04, + -0.22448702772706697033e+04, 0.14744946169533961893e+04, + 0.73045992215605380693e+02, -0.15150091897208662886e+04, + 0.14938402683215347224e+04, -0.32703843837048515297e+03, + -0.14298189124434852602e+04, 0.21586087868119680024e+04, + -0.15258331866356581941e+04, -0.47067888172408032688e+03, + 0.22491626965919435861e+04, -0.29208857032195705870e+04, + 0.16835579623272665231e+04, 0.39527293942529655624e+03, + -0.23022301212333400144e+04, 0.25432819080858339476e+04, + -0.13772994462214196574e+04, -0.58562895143405546605e+03, + 0.16157271073818642435e+04, -0.13098229107586969349e+04, + -0.30597458470727400481e+03, 0.15791821550173215201e+04, + -0.16394853776533975633e+04, -0.10764759648209064835e+03, + 0.22473996225808296003e+04, -0.34857090799057241384e+04, + 0.23653209680009936164e+04, 0.40586752392384374843e+03, + -0.34988849730036049550e+04, 0.46061710783887720027e+04, + -0.31383157814363448779e+04, -0.28023372258000495094e+03, + 0.34874624970304657836e+04, -0.41495577795926092222e+04, + 0.28982143933437228043e+04, 0.16539573531514715796e+04, + -0.16021797643059881011e+04, 0.60422319535000824544e+04, + 0.40807625861129890836e+04, 0.52776151704354624599e+04, + 0.14592451193840075575e+05, 0.12710851636425319157e+05, + 0.17744923413787408208e+05, 0.24371977719849677669e+05, + 0.16663341606948521076e+05, 0.17804010417548375699e+05, + 0.10268097997193437550e+05, -0.53303334944299049312e+04, + -0.77879393296156322322e+04, -0.16056000982913765256e+05, + -0.15808871593504054545e+05, -0.18584759924999352734e+04, + 0.45522276594231007039e+04, 0.12443038848167352626e+05, + 0.14351024992192145874e+05, 0.15343440438080942840e+04, + -0.86310308651104314777e+04, -0.10799038912176674785e+05, + -0.90008448004008860153e+04, 0.30651977075286540639e+04, + 0.14604321471975754321e+05, 0.58673998924192201230e+04, + -0.16483340921160204289e+04, -0.79132978452373226901e+04, + -0.13093346131575950494e+05, 0.57115241811375344696e+04, + 0.11260168288717119140e+05, 0.27775562738024473219e+04, + 0.91019857089166364972e+02, -0.12559551898784486184e+05, + -0.54967722312591567970e+04, 0.11406184419979072118e+05, + 0.60288670649973892068e+04, -0.98677628962513108490e+03, + -0.68309816675265701633e+04, -0.79604278829008326284e+04, + 0.64021033621544647758e+04, 0.11081463305276276515e+05, + -0.38672783848580506856e+04, -0.84161485471819341910e+04, + -0.14951819822594168272e+04, 0.37443102098278209269e+04, + 0.86411399779210205452e+04, -0.23214819081030841517e+04, + -0.11986934509061513381e+05, 0.27951396973200708089e+04, + 0.93259967333217900887e+04, -0.71486310062962434131e+03, + -0.45748275038538595254e+04, -0.47061827531514536531e+04, + 0.25380573285605910314e+04, 0.10135305207375533428e+05, + -0.48664654904073950092e+04, -0.10475925177813433038e+05, + 0.70863771353716892918e+04, 0.54716103654029557219e+04, + -0.30722743062854797245e+04, -0.32675353214802676121e+04, + -0.33968147523176658069e+04, 0.75326300312757421125e+04, + 0.36829261468733993752e+04, -0.10143180212784269315e+05, + -0.12250358503757709059e+04, 0.93371365507257123681e+04, + 0.20756881304361607476e+03, -0.88408153614973452932e+04, + 0.23826571396194053705e+04, 0.43743825679379297071e+04, + -0.23104778011708586405e+03, -0.16916613817867926173e+04, + -0.61333147978104143476e+04, 0.81525792953250975188e+04, + 0.37299260287277666066e+04, -0.11737217987842950606e+05, + 0.27187921417228230894e+04, 0.83374796529284267308e+04, + -0.43961861642995472721e+04, -0.56178162240095807647e+04, + 0.47615800236969062098e+04, 0.31851105660405487470e+04, + -0.38586200467701537491e+04, -0.14830361266578950108e+04, + 0.10848900120221273937e+04, 0.37262249758070956887e+04, + -0.12681008912934100863e+04, -0.72019812232433523604e+04, + 0.71077066790476164897e+04, 0.44115352512509252847e+04, + -0.11350052523389003909e+05, 0.32732780522117241162e+04, + 0.80111564029089395262e+04, -0.65391984861587870910e+04, + -0.39904407154496871044e+04, 0.72606438022736738276e+04, + 0.69429136053663978601e+03, -0.74148810739844020645e+04, + 0.41636130892118671909e+04, 0.25563354860664767330e+04, + -0.35034540223728690762e+04, 0.46562566830972980370e+03, + -0.44876233045193811222e+03, 0.27943886853047674776e+04, + -0.12537470401908558415e+04, -0.37796591576904506837e+04, + 0.45180969621443973665e+04, 0.13790040238778394723e+04, + -0.54875750208961471799e+04, 0.76555665775869988465e+03, + 0.67670735669019777561e+04, -0.56169711559531142484e+04, + -0.42390433218316611601e+04, 0.99443018337719677220e+04, + -0.31744402960290876763e+04, -0.77685133474593831124e+04, + 0.85828425461623610317e+04, 0.17817933481937300257e+04, + -0.95682251179949125799e+04, 0.45351740017036127028e+04, + 0.64957256206959455085e+04, -0.88592125320744980854e+04, + -0.55811300896573925456e+03, 0.93939669633699468250e+04, + -0.61179627407683119600e+04, -0.51020736557355630794e+04, + 0.10048507736463494439e+05, -0.27664777051899245635e+04, + -0.71866345498272712575e+04, 0.73398395972733396775e+04, + 0.18516310197538728062e+04, -0.80309658718887912983e+04, + 0.30035639752270635654e+04, 0.68352752428585736197e+04, + -0.87712314131212024222e+04, 0.63331346216401007041e+04, + 0.27854921367876577278e+04, -0.13283756487806744190e+05, + 0.59043282830016150911e+04, 0.71225537100606279637e+04, + -0.79457951824387018860e+04, -0.54601838699988202279e+04, + 0.13371401610720560711e+05, -0.41978907608719955533e+04, + -0.11942018408986798022e+05, 0.13558724511613123468e+05, + 0.31937662576289927330e+02, -0.10772556289362571988e+05, + 0.42970337990674042885e+04, 0.72428989348699751645e+04, + -0.60379245196379861227e+04, -0.76204173907796039202e+04, + 0.12271965404203085200e+05, 0.21076763516386952801e+03, + -0.13927962974859761744e+05, 0.84025398765913796524e+04, + 0.77971187235178458650e+04, -0.11142356237452015193e+05, + -0.44440822783722105669e+04, 0.13944882260472601047e+05, + -0.82989360051816447594e+03, -0.18410373614146443288e+05, + 0.13294860953340410560e+05, 0.11548165907268161391e+05, + -0.22390640653099460906e+05, 0.21973896077320164295e+04, + 0.19460216413400143210e+05, -0.11372137326993319220e+05, + -0.14827635676498384782e+05, 0.18049772146432231239e+05, + 0.73121904238237693789e+04, -0.24351697225396717840e+05, + 0.66702736356438908842e+04, 0.18441340706653816596e+05, + -0.15202674945957487580e+05, -0.81331457934744985323e+04, + 0.12127797202120456859e+05, 0.64108710484826106040e+04, + -0.13391918018294740250e+05, -0.57613025996255328209e+04, + 0.17466980630109981576e+05, -0.38779816931042819306e+03, + -0.17619938750808028999e+05, 0.33714170036324026114e+04, + 0.19145704107611378276e+05, -0.93521293222631156823e+04, + -0.20464235271798723261e+05, 0.19252193205828065402e+05, + 0.12765677882491279888e+05, -0.23957518884706267272e+05, + -0.33580138156217599317e+04, 0.20157203271306221723e+05, + -0.40474202501124278797e+03, -0.16219798667365523215e+05, + -0.25991272109632732281e+04, 0.18166573224330069934e+05, + 0.26744067713692375037e+04, -0.22781772762941553083e+05, + 0.90357991308219720850e+03, 0.23260063596215317375e+05, + -0.31175854095365848480e+04, -0.25370542783474964381e+05, + 0.66914901617821360560e+04, 0.24235863414443439979e+05, + -0.10654314366905629868e+05, -0.17540158219208184164e+05, + 0.34079042658704693167e+04, 0.18015765495051855396e+05, + 0.43783331428838646389e+04, -0.27699856628249548521e+05, + -0.18404963786742596312e+04, 0.29037589129485229932e+05, + -0.88264693640375799077e+03, -0.23389249833540980035e+05, + -0.57485902841136694406e+04, 0.20290937767429892119e+05, + 0.13056013495942042937e+05, -0.18706429043170392106e+05, + -0.19382292812060630240e+05, 0.13650184314160935173e+05, + 0.26241976093428227614e+05, -0.99704927899272224749e+04, + -0.28792489908104671485e+05, 0.38946346564178120389e+04, + 0.21579733831907127751e+05, 0.12272881279941282628e+05, + -0.16884475452862126986e+05, -0.29694385965043409669e+05, + 0.16369518669799184863e+05, 0.28965744732356833993e+05, + -0.25758054940276088018e+04, -0.20691467404545335739e+05, + -0.22723844243940620800e+05, 0.15358476819170980889e+05, + 0.32924944505473817117e+05, -0.32902701057144651031e+03, + -0.27463076447828545497e+05, -0.22574992675406338094e+05, + 0.11201663179775121534e+05, 0.31102713138439201430e+05, + 0.16342980836283797544e+05, -0.22292358091163612698e+05, + -0.35134079072937689489e+05, -0.42063075451499726114e+04, + 0.22987748257327664760e+05, 0.33683607522919744952e+05, + 0.96413605278548075148e+04, -0.31781551027830708335e+05, + -0.34635515254494610417e+05, -0.99135584501591820299e+04, + 0.18346096674270753283e+05, 0.43755950388126671896e+05, + 0.25122982886901118036e+05, -0.14313719480700927306e+05, + -0.31259338138110502769e+05, -0.45847748643677485234e+05, + -0.19955638492872698407e+05, 0.20610269230151592637e+05, + 0.35221567968443829159e+05, 0.52609784072379210556e+05, + 0.34302241554474217992e+05, 0.52834846752688770266e+03, + -0.21675638247771566967e+05, -0.53479296838978283631e+05, + -0.64373546914138816646e+05, -0.62548108477711080923e+05, + -0.60322932219238311518e+05, -0.45895980654619073903e+05, + -0.33827006863264949061e+05, -0.24225208685650617554e+05, + -0.15343863079351140186e+05, -0.81697217152242274096e+04, + -0.56737985474239894756e+04, -0.38065216845312502301e+04, + 0.87111579340653702275e+03, -0.28875922951093921256e+04, + 0.54042507408567423965e+01, 0.19653538855367019096e+04, + -0.34540741556826155829e+04, 0.23545245426630494876e+04, + 0.45376864848048950307e+03, -0.32735910525339963897e+04, + 0.40003372082270057035e+04, -0.18955664183929684441e+04, + -0.18691782206092595970e+04, 0.48552186005906096398e+04, + -0.49382535901711780753e+04, 0.17892936219575276482e+04, + 0.28135119679383892617e+04, -0.60244095368738035177e+04, + 0.57540035520769779396e+04, -0.20219776807062455646e+04, + -0.29746028647746270508e+04, 0.62188043370726354624e+04, + -0.57309875145717132909e+04, 0.18232542492699665218e+04, + 0.31096409208685163321e+04, -0.60566924184143754246e+04, + 0.52581600760981464191e+04, -0.12480619044111936091e+04, + -0.34925977362357425591e+04, 0.60928215146482671116e+04, + -0.50198214522177950130e+04, 0.98223987672500243207e+03, + 0.35703389344153179081e+04, -0.59489395921400446241e+04, + 0.48439486384845376961e+04, -0.10360954141405497921e+04, + -0.31378699814520050495e+04, 0.52422330212877113809e+04, + -0.41698008880649667844e+04, 0.74101201663067297432e+03, + 0.28834507501607376980e+04, -0.45312930628447111303e+04, + 0.33103163474840334857e+04, -0.67504864218430412848e+02, + -0.31766496764489820634e+04, 0.44737443937704301788e+04, + -0.30804222272494207573e+04, -0.14322937669228275581e+03, + 0.32975568608884154855e+04, -0.45714724861549539128e+04, + 0.32874516488416552420e+04, -0.24236055287554671622e+03, + -0.27958077683885280749e+04, 0.41342086673821495424e+04, + -0.31062785755059535404e+04, 0.41177950245105796512e+03, + 0.23388050022684683427e+04, -0.35706853248175093540e+04, + 0.26426827543416261506e+04, -0.17820113556368025343e+03, + -0.23291557850046874591e+04, 0.34003723594869725275e+04, + -0.24243000723290620044e+04, 0.58049577463823834478e+04, + -0.58534990872156404293e+04, -0.22326934372179448474e+04, + 0.90118519073315947026e+04, -0.97665779031472848146e+04, + 0.53785050376871849949e+04, 0.21706519277827164842e+04, + -0.71537817409262415822e+04, 0.75076563567847406375e+04, + -0.22015507336542041230e+04, -0.42649088941548689036e+04, + 0.85597856723276909179e+04, -0.67493650429353419895e+04, + 0.68236089712143007091e+03, 0.69712594258456847456e+04, + -0.10459462401936763854e+05, 0.84039662929864916805e+04, + -0.82907292617508551302e+03, -0.69033475823061835399e+04, + 0.11232201080201419245e+05, -0.86835064430729617015e+04, + 0.18717212661615753859e+04, 0.60223910512807651685e+04, + -0.93621415310338779818e+04, 0.74057826581513718338e+04, + -0.81055406414936055626e+03, -0.50400714730565787249e+04, + 0.74012852426539757289e+04, -0.40786339064756921289e+04, + -0.13912911107575744154e+04, 0.60031776964575001330e+04, + -0.55323474359591127723e+04, 0.12150929333268763912e+04, + 0.48822001932975535965e+04, -0.74607887432871903002e+04, + 0.54285506008193906382e+04, 0.10807384706114830806e+04, + -0.69021132035810178422e+04, 0.90909151786286565766e+04, + -0.51262108583441604424e+04, -0.15207080574291067023e+04, + 0.74866965382751695870e+04, -0.79792511011696551577e+04, + 0.38450243482735168072e+04, 0.28033122203241778152e+04, + -0.62837396272725118251e+04, 0.51289799997382942820e+04, + 0.59179738670030872072e+03, -0.55035950707421725383e+04, + 0.65242382233494472530e+04, -0.14426962734787200588e+04, + -0.55059860347297799308e+04, 0.10199974313352055105e+05, + -0.77735806969965460667e+04, 0.21155403606550439832e+02, + 0.92418074642811570811e+04, -0.12922045378108594377e+05, + 0.90309843438086154492e+04, 0.80840894969610098997e+03, + -0.10186628352572077347e+05, 0.12030113098829871888e+05, + -0.82846347928663089988e+04, -0.55400769729171361178e+04, + 0.50818563631315837483e+04, -0.18788058953302839654e+05, + -0.12613320653070972185e+05, -0.16663091283532347006e+05, + -0.45096099883651048003e+05, -0.39686740446782459912e+05, + -0.55420304732852702728e+05, -0.75209794645598682109e+05, + -0.52688101225418635295e+05, -0.54628181711301585892e+05, + -0.32295013574549699115e+05, 0.16351147763265204048e+05, + 0.24963639686471375171e+05, 0.49030153249764676730e+05, + 0.49881760999054000422e+05, 0.56315496081614483046e+04, + -0.14640135857398910957e+05, -0.37811020055641754880e+05, + -0.45561729611280927202e+05, -0.42728498955120767278e+04, + 0.27020599778686773789e+05, 0.32799494335999166651e+05, + 0.29110344690917769185e+05, -0.10488171101895926768e+05, + -0.45044440778808391769e+05, -0.17911864982404524199e+05, + 0.41918128849899003399e+04, 0.25763909860657196987e+05, + 0.39852536468915124715e+05, -0.17501255831139369548e+05, + -0.34591172972672458855e+05, -0.95907046728257701034e+04, + 0.78068391886472306851e+03, 0.38319279035068742814e+05, + 0.17273534479736492358e+05, -0.35049483937070617685e+05, + -0.19584293336849208572e+05, 0.39406677768518543417e+04, + 0.20668280411962121434e+05, 0.24888137195874707686e+05, + -0.19609860738241619401e+05, -0.35011654842313459085e+05, + 0.12535706941653090325e+05, 0.25911875490373640787e+05, + 0.46346704637558959803e+04, -0.11432462926409560168e+05, + -0.27125019582304783398e+05, 0.73320699595846481316e+04, + 0.37376537440317093569e+05, -0.89099511059359374485e+04, + -0.28813512303334919125e+05, 0.21800213053371408023e+04, + 0.14064499854827587114e+05, 0.14954929350774093109e+05, + -0.81878460787750300369e+04, -0.31442353219119235291e+05, + 0.15351009583191367710e+05, 0.32133314057688203320e+05, + -0.21538404088275692629e+05, -0.17310636330416127748e+05, + 0.94092326996143856377e+04, 0.10805239810533210402e+05, + 0.96025818034125841223e+04, -0.22485098944480650971e+05, + -0.11991939638703393939e+05, 0.31378115898258092784e+05, + 0.47653933187799893858e+04, -0.30554619963369026664e+05, + 0.96150865163235039290e+03, 0.26325402082204025646e+05, + -0.70786991271793567648e+04, -0.12944190936502305703e+05, + -0.76932205105212790386e+03, 0.71276300210614417665e+04, + 0.17406823180164774385e+05, -0.24367108799363260914e+05, + -0.11674497675088505275e+05, 0.35728674241854867432e+05, + -0.71546929199000296649e+04, -0.27281832645818336459e+05, + 0.14627923002178542447e+05, 0.17154515891968221695e+05, + -0.15086459424897648205e+05, -0.93009240203161261888e+04, + 0.11428174268435945123e+05, 0.48448655836755933706e+04, + -0.31288934131691239600e+04, -0.12212291397880488148e+05, + 0.46463795869105724705e+04, 0.21982302027430196176e+05, + -0.22239378193243090209e+05, -0.12976963012622185488e+05, + 0.34116061851670572651e+05, -0.89034768546631439676e+04, + -0.25862938889947628923e+05, 0.20610467293718844303e+05, + 0.12939806844811131668e+05, -0.23760703844221308827e+05, + -0.70024667781990774529e+03, 0.21775443622898772446e+05, + -0.12221864196846345294e+05, -0.79164086303706144463e+04, + 0.10140961207544236458e+05, -0.24163443714058425371e+03, + 0.14498214506048128669e+03, -0.77938211700534166084e+04, + 0.36132813740919987140e+04, 0.11383449875832306134e+05, + -0.13178409468410623958e+05, -0.53664243295475944251e+04, + 0.18010073807036733342e+05, -0.29204609188614667801e+04, + -0.21021138509997879737e+05, 0.17889969100196012732e+05, + 0.12513517220361069121e+05, -0.30237630804752374388e+05, + 0.93466024391985010880e+04, 0.24430996234254806041e+05, + -0.26716945106276067236e+05, -0.56681865574151042892e+04, + 0.29896379894393216091e+05, -0.14141774358731376196e+05, + -0.20291669010182660713e+05, 0.27691021230151181953e+05, + 0.16868302186203768542e+04, -0.29380470329655418027e+05, + 0.19456796202742858441e+05, 0.15218946592185779082e+05, + -0.30518039546035317471e+05, 0.79820161214708505213e+04, + 0.22652915429678716464e+05, -0.22657681131662244297e+05, + -0.64271429328808890205e+04, 0.26016692189163935836e+05, + -0.10501820955405926725e+05, -0.20271440156094173290e+05, + 0.26715791139638804452e+05, -0.15093217605706542599e+05, + -0.13131801101653585647e+05, 0.37468224269561120309e+05, + -0.11733088160355240689e+05, -0.25091658469381360192e+05, + 0.23863096264240812161e+05, 0.16198549430029528594e+05, + -0.37457845790620980551e+05, 0.99475990839178066381e+04, + 0.34204201668209956551e+05, -0.35030971850723311945e+05, + -0.55116906262775037249e+04, 0.33788199445450518397e+05, + -0.11029535234510743976e+05, -0.24653878182128657500e+05, + 0.20793820741103707405e+05, 0.20459694054721981956e+05, + -0.35852707623609516304e+05, 0.72379926660329851984e+03, + 0.39279661744280063431e+05, -0.24365566983384731429e+05, + -0.22726832785610575229e+05, 0.34355838716233243758e+05, + 0.95337000746974117646e+04, -0.39949608974911199766e+05, + 0.74531397998276297585e+04, 0.46271452735783866956e+05, + -0.36764422846849527559e+05, -0.27735010128318313946e+05, + 0.58007785451320763968e+05, -0.60149978857641735885e+04, + -0.51359946723190376360e+05, 0.30668533490311059722e+05, + 0.38526447706241357082e+05, -0.47451733087515036459e+05, + -0.18642220030737902562e+05, 0.62136196216824340809e+05, + -0.14408170498530842451e+05, -0.50042701352340038284e+05, + 0.37134086330265534343e+05, 0.27054982577685386786e+05, + -0.34785107316402391007e+05, -0.19420851293230785814e+05, + 0.39365927044425756321e+05, 0.14815998438653210542e+05, + -0.48741414615781286557e+05, 0.17272720901255599983e+04, + 0.49802534279961582797e+05, -0.12477342004424057450e+05, + -0.50407389682136454212e+05, 0.27242338151842359366e+05, + 0.51670499623257514031e+05, -0.49376274063385513728e+05, + -0.34431629459602780116e+05, 0.62219760401832383650e+05, + 0.11763818718625849215e+05, -0.54448131842066090030e+05, + -0.21025675627881591936e+04, 0.47159896071073926578e+05, + 0.70772717692270944099e+04, -0.52341136153694809764e+05, + -0.42145190897674692678e+04, 0.61194383073491357209e+05, + -0.37442376546706659610e+04, -0.62008217913547290664e+05, + 0.88652198255551993498e+04, 0.67315687763732319581e+05, + -0.17128162487617279112e+05, -0.64472415174485169700e+05, + 0.25146107430131982255e+05, 0.51220024991011778184e+05, + -0.93041925598557045305e+04, -0.52845918977424254990e+05, + -0.70639119026250300521e+04, 0.72932852113920744159e+05, + 0.38147659109040882868e+04, -0.75563619563116270001e+05, + -0.68053732339261512152e+03, 0.64329612465263649938e+05, + 0.17298436172613211966e+05, -0.57077224651019772864e+05, + -0.35364881670338887488e+05, 0.52041866185616047005e+05, + 0.52198058979773770261e+05, -0.38135991019581997534e+05, + -0.69664543369175007683e+05, 0.26281675087046478438e+05, + 0.76902302462868596194e+05, -0.70131929119830147101e+04, + -0.61897482249810331268e+05, -0.33631061821102019167e+05, + 0.49967648052696080413e+05, 0.75499061894120022771e+05, + -0.41050712467696488602e+05, -0.78427070427598227980e+05, + 0.27794246838188114452e+04, 0.61613576928675785894e+05, + 0.58792957986374072789e+05, -0.41857578260830377985e+05, + -0.87720503613567649154e+05, -0.12729706217889211075e+04, + 0.75948750624146618065e+05, 0.61301216651802016713e+05, + -0.29864668266382581351e+05, -0.86557470104750434984e+05, + -0.42540499304004413716e+05, 0.60074700898264825810e+05, + 0.94192422945527214324e+05, 0.14872650636768119512e+05, + -0.65903229762140283128e+05, -0.90760260172874055570e+05, + -0.24902291796203553531e+05, 0.84262592489570946782e+05, + 0.95702365328686093562e+05, 0.28148440503847021319e+05, + -0.52657601265278579376e+05, -0.11749700658905705495e+06, + -0.67537522415855928557e+05, 0.35104426075785355351e+05, + 0.90105777365305460989e+05, 0.12218586518043719116e+06, + 0.53445856492380196869e+05, -0.51887627566168288467e+05, + -0.10123425295758275024e+06, -0.14030000031712130294e+06, + -0.93303996350745612290e+05, -0.43963761665925358102e+04, + 0.62623384830021183006e+05, 0.14385312090702055139e+06, + 0.17534586416885856306e+06, 0.17222712639017411857e+06, + 0.16288861106408422347e+06, 0.12585458180117821030e+06, + 0.92414088844170692028e+05, 0.65845732662724709371e+05, + 0.41550247870433180651e+05, 0.22902388597792909422e+05, + 0.15348712519491404237e+05, 0.93386854437465954106e+04, + -0.35131498168525649817e+03, 0.59669162332822288590e+04, + 0.50170101047193622890e+03, -0.39983486407878253885e+04, + 0.69641102499837352298e+04, -0.44743269369375857423e+04, + -0.13446494725304316944e+04, 0.71320022111042781034e+04, + -0.85510748954760110792e+04, 0.41329658853913333587e+04, + 0.37093542579863365063e+04, -0.99688225575670203398e+04, + 0.10283017439656003262e+05, -0.39574856210778493733e+04, + -0.53971069659516879256e+04, 0.11978566207872148880e+05, + -0.11514632514358894696e+05, 0.40203911482419698586e+04, + 0.60525459366702498301e+04, -0.12578453429341680021e+05, + 0.11533424104004223409e+05, -0.35533776103862769560e+04, + -0.64921069713158804007e+04, 0.12478989550821692319e+05, + -0.10831068400545722398e+05, 0.26378875607964610026e+04, + 0.70486125158792046932e+04, -0.12385524362502821532e+05, + 0.10252591468653023185e+05, -0.20912795397722652524e+04, + -0.71183595522143932612e+04, 0.11912317857003650715e+05, + -0.96386029514128968003e+04, 0.18985908280982616816e+04, + 0.65431901135462367165e+04, -0.10731409381004734314e+05, + 0.84254929094703729788e+04, -0.13194625167470392171e+04, + -0.61608355607087351018e+04, 0.95676860044350614771e+04, + -0.70697550314598429395e+04, 0.38960602515020372039e+03, + 0.63453130768411965619e+04, -0.91429354519404751045e+04, + 0.64575815543185217393e+04, -0.98300436912501556463e+01, + -0.63557986544996238081e+04, 0.89614190355248138076e+04, + -0.64226466630278955563e+04, 0.34303888534841763658e+03, + 0.57048674848561022372e+04, -0.83041273167158124124e+04, + 0.61221147463519891971e+04, -0.59806779262221857607e+03, + -0.49881009867194607068e+04, 0.74415067866796489398e+04, + -0.54771808554730378091e+04, 0.38736971640737903044e+03, + 0.47676416929777515179e+04, -0.69666033745991508113e+04, + 0.49667711038391526017e+04, -0.92722192326444474020e+04, + 0.80159332675543810183e+04, 0.56529729530157246700e+04, + -0.16307246402827637212e+05, 0.16115454219336601454e+05, + -0.73558685747322142561e+04, -0.61323258145497748046e+04, + 0.14194952116865772041e+05, -0.13681800807985489882e+05, + 0.32795866309876259947e+04, 0.85783000489222376928e+04, + -0.16016881170304319312e+05, 0.12309683629433018723e+05, + -0.12208957769410358196e+04, -0.12306762799575768440e+05, + 0.18068764031619550224e+05, -0.14021602263645001585e+05, + 0.55344204427666807078e+03, 0.12570390554974464976e+05, + -0.19265089195013741119e+05, 0.13792286073715742532e+05, + -0.13891208538255482381e+04, -0.12076048386380789452e+05, + 0.16709220285941311886e+05, -0.11820859402258622140e+05, + -0.78560830543414954263e+03, 0.11039612840449086434e+05, + -0.14158099995843822398e+05, 0.67073179920493321333e+04, + 0.42341995086374718085e+04, -0.12806563685782726679e+05, + 0.11331715325708675664e+05, -0.24490465465384331765e+04, + -0.95614566965295052796e+04, 0.14662031762619439178e+05, + -0.10799053247359706802e+05, -0.15480468673077166386e+04, + 0.12592148096206359696e+05, -0.16693964116869898135e+05, + 0.92351740676273602730e+04, 0.32220812312036473486e+04, + -0.14214133818159778457e+05, 0.14779372237585866969e+05, + -0.65069646452220258652e+04, -0.64341058704057168143e+04, + 0.13238825740502254121e+05, -0.10896014363058520757e+05, + -0.50477347748015438356e+03, 0.10841405299738788017e+05, + -0.13940521884752648475e+05, 0.52267715221175594706e+04, + 0.78542432967454678874e+04, -0.17660643127304560039e+05, + 0.14833199013629247929e+05, -0.20106213703303824332e+04, + -0.14352556787246636304e+05, 0.21474500955490395427e+05, + -0.15483034599323496877e+05, -0.11805864486868326821e+04, + 0.17356094495678375097e+05, -0.20464815105868503451e+05, + 0.13993556079705273078e+05, 0.10516170090600560798e+05, + -0.91521652906115614314e+04, 0.33883695607751746138e+05, + 0.23036580618045485608e+05, 0.30516044019859557011e+05, + 0.81584358291644850397e+05, 0.72417892614159980440e+05, + 0.10096993729560574866e+06, 0.13597522113063937286e+06, + 0.96904083431425635354e+05, 0.98336687730887919315e+05, + 0.59104100321948943019e+05, -0.29270476718895857630e+05, + -0.46559557556471190765e+05, -0.87750388382982200710e+05, + -0.91689212105037426227e+05, -0.10126924167033279446e+05, + 0.27483659173602543888e+05, 0.67252124948985234369e+05, + 0.84304923991266288795e+05, 0.70061210001648014440e+04, + -0.49459775003673013998e+05, -0.58294780245129804825e+05, + -0.54750656028900564706e+05, 0.20616570942583697615e+05, + 0.81281148573500948260e+05, 0.31977982636160108086e+05, + -0.60523926401405360593e+04, -0.48768308155181883194e+05, + -0.70944189973602042301e+05, 0.31294126961090234545e+05, + 0.62261782432788371807e+05, 0.18924123707308644953e+05, + -0.31413810676033281197e+04, -0.68390585702951255371e+05, + -0.31798073656850639964e+05, 0.63164733219418143563e+05, + 0.36801471196179998515e+05, -0.84589887010822985758e+04, + -0.36694781470069632633e+05, -0.45450909817112398741e+05, + 0.35210619336666182789e+05, 0.64439996687392878812e+05, + -0.23520066987561905989e+05, -0.46741340801069658482e+05, + -0.83622066188705903187e+04, 0.20429100608616976388e+05, + 0.49696994607775857730e+05, -0.13493835023574016304e+05, + -0.68096950089289370226e+05, 0.16532131684211748507e+05, + 0.52093853105702321045e+05, -0.39316784297143030926e+04, + -0.25262784837432536733e+05, -0.27721591715399488749e+05, + 0.15360633163665916072e+05, 0.57048279333424259676e+05, + -0.28307801499678716937e+05, -0.57597209547494712751e+05, + 0.38228173250363157422e+05, 0.32064374350291280280e+05, + -0.16987469582955935039e+05, -0.20589888790066619549e+05, + -0.15929157680910746421e+05, 0.39291958082608187397e+05, + 0.22819122607977984444e+05, -0.57005746830601296097e+05, + -0.99041772531858041475e+04, 0.57677392529788899992e+05, + -0.40913833904638718195e+04, -0.46096964446808575303e+05, + 0.12310587636229556665e+05, 0.22651362447850155149e+05, + 0.34631796996126608974e+04, -0.15536494787559826364e+05, + -0.29400872983326764370e+05, 0.43095135419462305435e+05, + 0.21062077337089875073e+05, -0.63578638054896873655e+05, + 0.10971265078426773471e+05, 0.51540064998484725947e+05, + -0.27775358296788737789e+05, -0.31095576191471402126e+05, + 0.28310052272358319897e+05, 0.15531009206130176608e+05, + -0.19538905545845464076e+05, -0.93681796403972057306e+04, + 0.53353294647061929936e+04, 0.23306306451539618138e+05, + -0.98146657100284301123e+04, -0.38946410222900725785e+05, + 0.40245213577746784722e+05, 0.22782916077438523644e+05, + -0.60439202256146767468e+05, 0.14355019727272445380e+05, + 0.48444704500105945044e+05, -0.37953454029704735149e+05, + -0.24199748314191681857e+05, 0.44837053326431043388e+05, + -0.80314351668166204945e+03, -0.37750438834539469099e+05, + 0.21206884067819661141e+05, 0.14270853090728145617e+05, + -0.17249256008238924551e+05, -0.14018289902115468522e+04, + 0.16211332382104487806e+04, 0.12833020512606601187e+05, + -0.61616354934035598490e+04, -0.20116256683836993034e+05, + 0.22649082851311959530e+05, 0.11330324530372165100e+05, + -0.34073576455182657810e+05, 0.60156937251370800368e+04, + 0.38270798366834431363e+05, -0.33209053319085476687e+05, + -0.21752952997935168241e+05, 0.54032928874458368227e+05, + -0.16397352518797222729e+05, -0.44548729633575880143e+05, + 0.48311895861675846390e+05, 0.10745163809172352558e+05, + -0.54713690122161220643e+05, 0.25797293067595703178e+05, + 0.37123096632728476834e+05, -0.50773317285594552231e+05, + -0.26723665766950794023e+04, 0.53299284968230640516e+05, + -0.35688244118812282977e+05, -0.26928916281840534793e+05, + 0.54491122488844725012e+05, -0.13561774086128389172e+05, + -0.41767254900544656266e+05, 0.41164708587383342092e+05, + 0.12394279224172265458e+05, -0.48548167350141317002e+05, + 0.20560615867062722828e+05, 0.35567554169401788386e+05, + -0.47822591461681622604e+05, 0.21896969441225224728e+05, + 0.29029559370153911004e+05, -0.63001280381253403903e+05, + 0.13012695075673769679e+05, 0.48976002307755159563e+05, + -0.41761521279660213622e+05, -0.29058167880889730441e+05, + 0.63365292564780393150e+05, -0.14384132651888974578e+05, + -0.58573223569186877285e+05, 0.55048603116787620820e+05, + 0.16338214339864365684e+05, -0.61306809721636636823e+05, + 0.16804737628622904595e+05, 0.47554802642763097538e+05, + -0.40163657201646819885e+05, -0.33428563231481093680e+05, + 0.62587970673655443534e+05, -0.32688719413439589516e+04, + -0.66293070045341330115e+05, 0.42234046374852092413e+05, + 0.39104532316791002813e+05, -0.61782787264835627866e+05, + -0.12108760054820239020e+05, 0.68295103815703143482e+05, + -0.19462376797473429178e+05, -0.70638226244639794459e+05, + 0.61444051059236517176e+05, 0.39826408135138357466e+05, + -0.90705152659874802339e+05, 0.10025372610824586445e+05, + 0.81522614559227833524e+05, -0.49454020536693577014e+05, + -0.60809809840231740964e+05, 0.75509732320311755757e+05, + 0.28724816950361659110e+05, -0.95989455703494604677e+05, + 0.18457011460123394500e+05, 0.81542492521312145982e+05, + -0.54633265858037135331e+05, -0.51313620897601307661e+05, + 0.59302929841018754814e+05, 0.34951001412374571373e+05, + -0.68926734347187477397e+05, -0.22953681540605233749e+05, + 0.81738622956481587607e+05, -0.41965481469924652629e+04, + -0.83691091841759553063e+05, 0.24639290647167515999e+05, + 0.80516779860855705920e+05, -0.47310754458951771085e+05, + -0.79070375227085198276e+05, 0.77054154941360073281e+05, + 0.55255653574652220414e+05, -0.96926204825922744931e+05, + -0.23575997868717822712e+05, 0.88827142055206393707e+05, + 0.81661512664045658312e+04, -0.81999701532648192369e+05, + -0.11011817130121229638e+05, 0.89306836898683526670e+05, + 0.29550420505065972065e+04, -0.99291067173071554862e+05, + 0.79231533930104815227e+04, 0.99990772250056455960e+05, + -0.15473248824930707997e+05, -0.10737834075745845621e+06, + 0.26226492779465675994e+05, 0.10354976614665309899e+06, + -0.35542481335144715558e+05, -0.89154532796403218526e+05, + 0.15572290816793862177e+05, 0.91806740452697413275e+05, + 0.47219484652415367236e+04, -0.11593304406249713793e+06, + -0.46415749016886666141e+04, 0.11895431288177294482e+06, + 0.53978854348669938190e+04, -0.10625366143764162553e+06, + -0.30723478532105698832e+05, 0.96109861733862504479e+05, + 0.57750579669255013869e+05, -0.86895999165800050832e+05, + -0.84763365204504909343e+05, 0.64025689852756186156e+05, + 0.11139941720314513077e+06, -0.41653431199753067631e+05, + -0.12394322937561299477e+06, 0.62512418717880682379e+04, + 0.10618600452837036573e+06, 0.55052865224128981936e+05, + -0.87223384507962342468e+05, -0.11634369195309682982e+06, + 0.62342878485226414341e+05, 0.12799912025234712928e+06, + 0.11597513822015012011e+04, -0.10798990700767096132e+06, + -0.92527483943197396002e+05, 0.69153205548270416330e+05, + 0.14072338450568349799e+06, 0.51032135440231313623e+04, + -0.12567888208181421214e+06, -0.10095264329024913604e+06, + 0.48880429801037833386e+05, 0.14375605802483976004e+06, + 0.67394061138313889387e+05, -0.97641322358451972832e+05, + -0.15258844409262380213e+06, -0.28550300096835348086e+05, + 0.11178363536131395085e+06, 0.14835448117534909397e+06, + 0.38051950460419546289e+05, -0.13435168847251366242e+06, + -0.15885000335887089022e+06, -0.48201472438144439366e+05, + 0.90916204536677687429e+05, 0.18928318017336778576e+06, + 0.11028400025800301228e+06, -0.52619854717481408443e+05, + -0.15448171204799634870e+06, -0.19643066293069301173e+06, + -0.86569731004892091732e+05, 0.79392610577876112075e+05, + 0.17305682169740062091e+06, 0.22610508943679172080e+06, + 0.15246439117048354819e+06, 0.11585949287344876211e+05, + -0.10779445097162092861e+06, -0.23327697797855158569e+06, + -0.28735675988548382884e+06, -0.28499767745445814217e+06, + -0.26504591800478991354e+06, -0.20735803556202742038e+06, + -0.15205770837172909523e+06, -0.10760944277649364085e+06, + -0.67764772355383436661e+05, -0.38631477372216795629e+05, + -0.24690096686719465652e+05, -0.14263284223613844006e+05, + -0.18575827185411008031e+04, -0.74651514807967096203e+04, + -0.13014135080472497066e+04, 0.45534541198141196219e+04, + -0.80772304083776043626e+04, 0.49191083288233339772e+04, + 0.18625089781438571208e+04, -0.85977847493669323740e+04, + 0.10186447883032498794e+05, -0.49825773193028871901e+04, + -0.42121506055102190658e+04, 0.11581592364065261791e+05, + -0.12060451035305461119e+05, 0.48264639564301560313e+04, + 0.59620231085026316578e+04, -0.13601669810354196670e+05, + 0.13145893733874761892e+05, -0.45886513054696924883e+04, + -0.69530887626843223188e+04, 0.14425731020352066480e+05, + -0.13189954543167634256e+05, 0.39767855781013799970e+04, + 0.76045725938585956101e+04, -0.14496537871462413023e+05, + 0.12580094701536210778e+05, -0.31131135055310155622e+04, + -0.80777430298399285675e+04, 0.14257271963093027807e+05, + -0.11829399642365509862e+05, 0.24589089911261730776e+04, + 0.81139066184124658321e+04, -0.13594696481899860373e+05, + 0.10938277556274981180e+05, -0.20049332374165669535e+04, + -0.76994607364491148473e+04, 0.12458967268853188216e+05, + -0.96989142049615165888e+04, 0.13940231517321290085e+04, + 0.73258877394943901891e+04, -0.11306464892864407375e+05, + 0.84208338438895152649e+04, -0.65361581855708027433e+03, + -0.72216233206613133007e+04, 0.10577241238194203106e+05, + -0.76013536370170359078e+04, 0.25218858506853399604e+03, + 0.70547255471867929373e+04, -0.10083079505295909257e+05, + 0.72292790165446731407e+04, -0.32416015401116487737e+03, + -0.65366578084748771289e+04, 0.94384532613387164020e+04, + -0.68648848747330694096e+04, 0.48694601453275646463e+03, + 0.59145215187346666426e+04, -0.86686423371059408964e+04, + 0.63161890549663439742e+04, -0.37244219699868705220e+03, + -0.56126703758797784758e+04, 0.81450494669295640051e+04, + -0.57951835757285616637e+04, 0.87232690149598547578e+04, + -0.62194038368811752662e+04, -0.73423720662913119668e+04, + 0.17150265170968537859e+05, -0.15608139519422777084e+05, + 0.57244484762460688216e+04, 0.82476534450248709618e+04, + -0.15838723623248029980e+05, 0.14277286972916754166e+05, + -0.26821009426944738152e+04, -0.98331091503989282501e+04, + 0.17258780537000904587e+05, -0.12905617852788594973e+05, + 0.11266300980214082301e+04, 0.12782240985138636461e+05, + -0.18294589678713487956e+05, 0.13693656539586281724e+05, + 0.28162501600547659564e+03, -0.13301149244891594208e+05, + 0.19299013914506558649e+05, -0.12751712462687588413e+05, + -0.36482653813840624935e+03, 0.13774501356934790238e+05, + -0.17356091378777768114e+05, 0.10982921241279180322e+05, + 0.28873098166103900439e+04, -0.13369308658347246819e+05, + 0.15605228640813240418e+05, -0.64764809025367821960e+04, + -0.59598869578332478341e+04, 0.15166655254143921411e+05, + -0.13050877939631407571e+05, 0.27593664964619624698e+04, + 0.10716779693170956307e+05, -0.16424681903142980445e+05, + 0.12148427407431307074e+05, 0.13777896023741864155e+04, + -0.13454457874988751428e+05, 0.17867942853795655537e+05, + -0.97173646751196356490e+04, -0.38320546346306900887e+04, + 0.15626761954928659179e+05, -0.15968494357959694753e+05, + 0.65689756160381612062e+04, 0.78785555736245996741e+04, + -0.15536214809152734233e+05, 0.12903738254107505782e+05, + -0.28050235156746094134e+02, -0.12104968012236984578e+05, + 0.16473364250865331996e+05, -0.77480908777390513933e+04, + -0.64453974927543904414e+04, 0.17912958058043768688e+05, + -0.16317191329203598798e+05, 0.38821711310800101273e+04, + 0.13012288379602838177e+05, -0.20971786588831011613e+05, + 0.15664852438130283190e+05, 0.80787656144439336003e+03, + -0.17123026322264082410e+05, 0.20260887928207666846e+05, + -0.13835868540210109131e+05, -0.11363519407514126215e+05, + 0.93816435815517670562e+04, -0.35280190503057681781e+05, + -0.24586226742574068339e+05, -0.32261824801154321904e+05, + -0.85745282688278821297e+05, -0.76666844700942994677e+05, + -0.10660109832656750223e+06, -0.14289593807669921080e+06, + -0.10306827194129909913e+06, -0.10299889075511720148e+06, + -0.62578844007426690951e+05, 0.30387971190515800117e+05, + 0.50197935983166142250e+05, 0.91346228854765053256e+05, + 0.97540362862131310976e+05, 0.10703132734663300653e+05, + -0.29907181408062937408e+05, -0.69482803757880203193e+05, + -0.90329592201901628869e+05, -0.66942853626057722067e+04, + 0.52530423276817338774e+05, 0.60189153000792175590e+05, + 0.59517210449075289944e+05, -0.23238397929911010579e+05, + -0.85144733515742787858e+05, -0.33187649860103301762e+05, + 0.48997191465896003137e+04, 0.53285072746822246700e+05, + 0.73375254122050464503e+05, -0.32467291877838197252e+05, + -0.65137897468146235042e+05, -0.21329115341967022687e+05, + 0.49291698084080726403e+04, 0.70913955665071334806e+05, + 0.33973885398135978903e+05, -0.66184421192848967621e+05, + -0.39871055024718807545e+05, 0.10087720479119834636e+05, + 0.37897962765484655392e+05, 0.48155586501616351597e+05, + -0.36776454509320792567e+05, -0.68655491206031292677e+05, + 0.25442401575633542961e+05, 0.48993994234181198408e+05, + 0.87550076170130396349e+04, -0.21233273649138674955e+05, + -0.52753486334542263648e+05, 0.14359939928754774883e+05, + 0.71983979986490900046e+05, -0.17745446385969455150e+05, + -0.54708291093484607700e+05, 0.41621491342721428737e+04, + 0.26310488932722793834e+05, 0.29787603174611511349e+05, + -0.16676633715396812477e+05, -0.60069201588853480644e+05, + 0.30266734781122529967e+05, 0.59920769372812108486e+05, + -0.39358107079144188901e+05, -0.34495352843600325286e+05, + 0.17925731000950723683e+05, 0.22509681073938299960e+05, + 0.15421170614583419592e+05, -0.39945380134790088050e+05, + -0.25116295191643672297e+05, 0.60258957506662271044e+05, + 0.11396301718368500588e+05, -0.62607876077699846064e+05, + 0.63129453025895154497e+04, 0.47100506146466592327e+05, + -0.12485727982883165168e+05, -0.23160299742658720788e+05, + -0.53907790133235348549e+04, 0.18535409962418201758e+05, + 0.29205446794287618104e+05, -0.44599872434050426818e+05, + -0.21867895656789743953e+05, 0.65682923615476131090e+05, + -0.96879910097548727208e+04, -0.56054586062026959553e+05, + 0.30189319592820011167e+05, 0.32982361817307129968e+05, + -0.30966433154959173407e+05, -0.14844521216565446593e+05, + 0.19266072485831606173e+05, 0.10506657153296058823e+05, + -0.52997162638958288881e+04, -0.25713012774117843946e+05, + 0.11810176525063094232e+05, 0.39897259830306124059e+05, + -0.42024764179235746269e+05, -0.23510145145750695519e+05, + 0.62450597544910473516e+05, -0.13521575103621096787e+05, + -0.52442343098506513343e+05, 0.40588976275197142968e+05, + 0.25985002742192144069e+05, -0.48620505526982233278e+05, + 0.25856434208434425273e+04, 0.38259467238909492153e+05, + -0.21504029445797448716e+05, -0.14947232774596526724e+05, + 0.17172561946010351676e+05, 0.30578046682782073731e+04, + -0.33103033999199151367e+04, -0.12430345527127668902e+05, + 0.62093393087414096954e+04, 0.20660383700179725565e+05, + -0.22725335855109882687e+05, -0.13302327230353352206e+05, + 0.37029048203047532297e+05, -0.68444624774951616928e+04, + -0.40551587648444736260e+05, 0.35743162008095736383e+05, + 0.22017974953728418768e+05, -0.56200876056710818375e+05, + 0.16890218715027749568e+05, 0.46923289989274780964e+05, + -0.50513217578509051236e+05, -0.11930075582697256323e+05, + 0.58182526801136795257e+05, -0.27343946899850252521e+05, + -0.39419514446860819589e+05, 0.54094361916159461543e+05, + 0.22435598271209032646e+04, -0.55865520744598121382e+05, + 0.37686365122908056946e+05, 0.27931803972503425030e+05, + -0.56694722586207179120e+05, 0.13455887350073953712e+05, + 0.44679968437421266572e+05, -0.43577647575907511055e+05, + -0.13480043603433119642e+05, 0.52086260997986522852e+05, + -0.22781186900204058475e+05, -0.36535042514841501543e+05, + 0.49867432592493496486e+05, -0.18986224058838004566e+05, + -0.34313891580633026024e+05, 0.62365063117985235294e+05, + -0.73801367728364648428e+04, -0.53955049139210641442e+05, + 0.42351780956549591792e+05, 0.30811787119863762200e+05, + -0.63522225340750548639e+05, 0.12435834281094093967e+05, + 0.59118192151529670809e+05, -0.51715007118337765860e+05, + -0.21692428161991305387e+05, 0.64177561240949231433e+05, + -0.14957992674208790049e+05, -0.52328766670970719133e+05, + 0.44043601352142279211e+05, 0.32629398501651790866e+05, + -0.64322178159947812674e+05, 0.51860955298081207729e+04, + 0.65893016700896027032e+05, -0.43036620833460394351e+05, + -0.39342206669383005647e+05, 0.64423704964251483034e+05, + 0.88990071702641944285e+04, -0.68733663054522534367e+05, + 0.25011052346611675603e+05, 0.64278541568247339455e+05, + -0.60867452699608627881e+05, -0.33641178151869251451e+05, + 0.84210807315842292155e+05, -0.99480966966262603819e+04, + -0.76646725642518169479e+05, 0.47076475625181941723e+05, + 0.57175461663106179913e+05, -0.71393026752087171189e+05, + -0.26368893597473401314e+05, 0.88291106041820370592e+05, + -0.13684559050895242763e+05, -0.78565860129479755415e+05, + 0.47639277945925503445e+05, 0.55654387904408897157e+05, + -0.59264420689702026721e+05, -0.36890492120008922939e+05, + 0.70913741202710501966e+05, 0.21029251993383157242e+05, + -0.81002879066909095854e+05, 0.55396825294988602764e+04, + 0.82556180446491591283e+05, -0.27056011205212707864e+05, + -0.76671067402063665213e+05, 0.48329415947729576146e+05, + 0.72023571757885962143e+05, -0.71795096019803764648e+05, + -0.52113340397294850845e+05, 0.89206016535156391910e+05, + 0.26964316762734863005e+05, -0.86029768093574544764e+05, + -0.12035862017897201440e+05, 0.83891359681657821056e+05, + 0.97611217588253330177e+04, -0.89241246624603125383e+05, + 0.17938680313714175441e+03, 0.95657095034072612179e+05, + -0.91936754689129429607e+04, -0.95815062656886977493e+05, + 0.16113323294346808325e+05, 0.10137279569662621361e+06, + -0.23653267958839271159e+05, -0.98745600451477672323e+05, + 0.29575365790494048269e+05, 0.91120525820232389378e+05, + -0.15561972677784566258e+05, -0.93396457774419846828e+05, + 0.12281112026275993685e+04, 0.10939465934118589212e+06, + 0.31966982551606170091e+04, -0.11132650333653009147e+06, + -0.88387703396789329418e+04, 0.10378847595451386587e+06, + 0.31804783911296686711e+05, -0.95374966137293245993e+05, + -0.55940220929663999414e+05, 0.85731784723017335637e+05, + 0.81612650029587544850e+05, -0.63549561551413295092e+05, + -0.10554775762908594334e+06, 0.39041003158131476084e+05, + 0.11855847956240571511e+06, -0.15389470695978397998e+04, + -0.10726321032690259744e+06, -0.53097353016561122786e+05, + 0.88903788538782842807e+05, 0.10680637105690067983e+06, + -0.56384562333662732271e+05, -0.12380127738382521784e+06, + -0.57716607064271047420e+04, 0.11039343340755983081e+06, + 0.86960400544740172336e+05, -0.67977195934807139565e+05, + -0.13370775215428258525e+06, -0.75195603457725892440e+04, + 0.12269915068421552132e+06, 0.98868961567069505691e+05, + -0.47970728654086167808e+05, -0.14055849921816366259e+06, + -0.63781466070940157806e+05, 0.94155894439599083853e+05, + 0.14672139693354573683e+06, 0.30828222137472901522e+05, + -0.11108425147599578486e+06, -0.14425584092654913547e+06, + -0.34035007867296852055e+05, 0.12686764325870368339e+06, + 0.15584300433790730312e+06, 0.48835776378984308394e+05, + -0.92667680489301696070e+05, -0.18027876015733755776e+06, + -0.10718098866746714339e+06, 0.47196913872105476912e+05, + 0.15560851535162093933e+06, 0.18722211304438952357e+06, + 0.83401893717621394899e+05, -0.72560937629352032673e+05, + -0.17368995096679800190e+06, -0.21636914886840953841e+06, + -0.14743365459535329137e+06, -0.14965756181447182826e+05, + 0.10887184337440870877e+06, 0.22442441340908623533e+06, + 0.27863086867773957783e+06, 0.27898465835873782635e+06, + 0.25554927224013375235e+06, 0.20202722742923631449e+06, + 0.14823842652396438643e+06, 0.10397156802077722386e+06, + 0.65591280273283977294e+05, 0.38408288722184188373e+05, + 0.23455037637081753928e+05, 0.13152573209420073908e+05, + 0.36274760277668706294e+04, 0.55146023774819877872e+04, + 0.14867974562454487568e+04, -0.26311426379322424509e+04, + 0.50382517644550316618e+04, -0.28871756166549930640e+04, + -0.12475818272550613983e+04, 0.54005087165398581419e+04, + -0.63472034275533796972e+04, 0.31333098473537488644e+04, + 0.25347688945642471481e+04, -0.70902678616881412381e+04, + 0.74317577357467998809e+04, -0.30482092759302772720e+04, + -0.35288480646711241207e+04, 0.82086015798661137524e+04, + -0.79672929593158569332e+04, 0.27896275819308248174e+04, + 0.42143367388358028620e+04, -0.87513429828722291859e+04, + 0.79936893363468016105e+04, -0.23839797799377279262e+04, + -0.46651732666659563620e+04, 0.88571323352806539333e+04, + -0.76852125846598446515e+04, 0.19157553987073526969e+04, + 0.49022143681566485611e+04, -0.86685654919517510280e+04, + 0.71952781122460455663e+04, -0.14995449830789918906e+04, + -0.49217365681681612841e+04, 0.82366559995008155965e+04, + -0.65968639404372297577e+04, 0.11433094471474657894e+04, + 0.47625703257296145239e+04, -0.76363653888010776427e+04, + 0.59127440156144875800e+04, -0.80447625817833898054e+03, + -0.45508383681431923833e+04, 0.70005297466090933085e+04, + -0.52413619458612911330e+04, 0.48125702378182836583e+03, + 0.43649412037267247797e+04, -0.64664091073712070283e+04, + 0.47051298069627182485e+04, -0.26197219429360023923e+03, + -0.41810441565669079864e+04, 0.60444231452744534181e+04, + -0.43466242057498402573e+04, 0.19296848825220396861e+03, + 0.39339199934556604603e+04, -0.56618827219046470418e+04, + 0.40766233127589985088e+04, -0.20051603895177146342e+03, + -0.36656203005776133068e+04, 0.52941264218762926248e+04, + -0.38092681830324850125e+04, 0.14823208690803650711e+03, + 0.35150955249317507878e+04, -0.50472402358178751456e+04, + 0.35803279533300510593e+04, -0.44604220095166492683e+04, + 0.24708415682985400963e+04, 0.48254692399166633550e+04, + -0.97128702396432981914e+04, 0.82099537585547168419e+04, + -0.23166066645128444179e+04, -0.54615620573651713130e+04, + 0.93140946735909674317e+04, -0.79445866653278098966e+04, + 0.10992838174249236545e+04, 0.59560417228816122588e+04, + -0.99187324233499311958e+04, 0.72073989696749258655e+04, + -0.48401165235821315491e+03, -0.72100363479824509341e+04, + 0.10031627847239275070e+05, -0.72334676462618881487e+04, + -0.59531344060980097765e+03, 0.75805539928258194777e+04, + -0.10458332316956351860e+05, 0.63619400885238810588e+04, + 0.10946263657194708685e+04, -0.83092719561669582617e+04, + 0.96996406496216986852e+04, -0.54906038537472131793e+04, + -0.26510603338870041625e+04, 0.84265072842399931687e+04, + -0.91760779338954635023e+04, 0.33806347817784685503e+04, + 0.41028891269779041977e+04, -0.93967559331400843803e+04, + 0.79202615456361190809e+04, -0.16386460692372909307e+04, + -0.63844032479347933986e+04, 0.97637407192884438700e+04, + -0.72242877862417753931e+04, -0.69978233389615240867e+03, + 0.77545121170826432717e+04, -0.10286438140203736111e+05, + 0.55053623849439400146e+04, 0.24023722051010813630e+04, + -0.92105904066455386783e+04, 0.92951064047741183458e+04, + -0.36394147577313183319e+04, -0.49522342375183270633e+04, + 0.95509259300913436164e+04, -0.80082833960546868184e+04, + 0.32072430404255214853e+03, 0.71390308590419326720e+04, + -0.10144194531401957647e+05, 0.54279514581425546567e+04, + 0.28009879219454719532e+04, -0.98352231003488759598e+04, + 0.95891515517545540206e+04, -0.30506617647198077066e+04, + -0.63725469024978556263e+04, 0.11127853850587071065e+05, + -0.86333872272445842100e+04, -0.15974833200534439470e+03, + 0.90574290129190649168e+04, -0.10802162300800795492e+05, + 0.74024275292349957454e+04, 0.65130508824665384964e+04, + -0.50946662867403119890e+04, 0.19666505319638195942e+05, + 0.14157690350392113032e+05, 0.18257060492416825582e+05, + 0.48452546792505578196e+05, 0.43592971575568888511e+05, + 0.60401330926538343192e+05, 0.80770597149232067750e+05, + 0.58743933838746401307e+05, 0.58071228661460074363e+05, + 0.35518211353303006035e+05, -0.16945852028036893898e+05, + -0.28983064213031328109e+05, -0.51180955969229573384e+05, + -0.55628559730306682468e+05, -0.61348791711251360539e+04, + 0.17460619666184498783e+05, 0.38598406583556687110e+05, + 0.51905451355073215382e+05, 0.34449745099278302405e+04, + -0.29963594418073058478e+05, -0.33419816628911074076e+05, + -0.34643520879650233837e+05, 0.13947016365067123843e+05, + 0.47923965471820461971e+05, 0.18541648692448889051e+05, + -0.20284339750898843704e+04, -0.31130379608449002262e+05, + -0.40823156549885010463e+05, 0.18102708005653552391e+05, + 0.36655138968256287626e+05, 0.12762601881134012729e+05, + -0.36049197642101412384e+04, -0.39554729233558995475e+05, + -0.19483544075611043809e+05, 0.37295866716623335378e+05, + 0.23105595331329335750e+05, -0.62949481161213816449e+04, + -0.21063404091192431224e+05, -0.27404920130441503716e+05, + 0.20672190192292167922e+05, 0.39226721290253139159e+05, + -0.14722833144758678827e+05, -0.27606049876976387168e+05, + -0.49372675995472927752e+04, 0.11890449418374428205e+05, + 0.30035257116920045519e+05, -0.81802330995755137337e+04, + -0.40875490509786286566e+05, 0.10207917671558308939e+05, + 0.30891642322094146948e+05, -0.23926377725746447140e+04, + -0.14704359208314190255e+05, -0.17186706816377980431e+05, + 0.97143121755250103888e+04, 0.33968996336865246121e+05, + -0.17359541815444343229e+05, -0.33506698524430663383e+05, + 0.21771514036252832739e+05, 0.19939108851750017493e+05, + -0.10218429327579797246e+05, -0.13102196247451294767e+05, + -0.80738748157232066660e+04, 0.21881844397317305265e+05, + 0.14785515346612824942e+05, -0.34265483315443008905e+05, + -0.68553994221702605500e+04, 0.36276240556866709085e+05, + -0.45022248936848527592e+04, -0.25976851177325166645e+05, + 0.68430899638111914101e+04, 0.12775377132760633685e+05, + 0.38684066283922575167e+04, -0.11493214359829338719e+05, + -0.15741711349313252867e+05, 0.24937235316854032135e+05, + 0.12138749731899410108e+05, -0.36480420849013709812e+05, + 0.45416560396665126973e+04, 0.32568945064391213236e+05, + -0.17478609902006483026e+05, -0.18875686202948807477e+05, + 0.18202207585176449356e+05, 0.75479120938601263333e+04, + -0.10176309596930030239e+05, -0.62961001653882922255e+04, + 0.28268148297428642763e+04, 0.15185559873892629184e+05, + -0.75027615961042965864e+04, -0.21916045946724625537e+05, + 0.23501800772401089489e+05, 0.13138190821302387121e+05, + -0.34780556982789603353e+05, 0.68587830565676276819e+04, + 0.30416836410271651403e+05, -0.23339720303261387016e+05, + -0.14868270415231547304e+05, 0.28122791651095551060e+05, + -0.22575748169997468722e+04, -0.20948897453327626863e+05, + 0.11768134352403973026e+05, 0.84364578007222917222e+04, + -0.92713522537528879184e+04, -0.24481444056996192558e+04, + 0.25945957514379228996e+04, 0.65627262344278897217e+04, + -0.34235279968434665534e+04, -0.11408746833878079997e+05, + 0.12310920957677777551e+05, 0.81630418850216628925e+04, + -0.21452232947819695255e+05, 0.40460186803171918655e+04, + 0.23143230978477342433e+05, -0.20662998713758057420e+05, + -0.11989925652934109166e+05, 0.31461759099568618694e+05, + -0.94171159431275591487e+04, -0.26476770038293710968e+05, + 0.28308124897192810749e+05, 0.71437416832524450001e+04, + -0.33268222485130223504e+05, 0.15594246364241438641e+05, + 0.22470640808554562682e+05, -0.30963315210065062274e+05, + -0.90655931796277513968e+03, 0.31379019529448421963e+05, + -0.21273899423676935839e+05, -0.15675853598147556113e+05, + 0.31788524377915553487e+05, -0.72163429274937816444e+04, + -0.25654183475060472119e+05, 0.24835789374084615702e+05, + 0.77460372688210136403e+04, -0.29842867198909036233e+05, + 0.13352036595896706785e+05, 0.20289860883945737442e+05, + -0.28010583212485984404e+05, 0.90438078189455736720e+04, + 0.20935221212773853040e+05, -0.33526199201866169460e+05, + 0.14850078991718432917e+04, 0.31425997724419983570e+05, + -0.23069563599657893064e+05, -0.17717855522960126109e+05, + 0.34687664832747504988e+05, -0.58964094690927277043e+04, + -0.32413460564503850037e+05, 0.26707322697066654655e+05, + 0.14026477656902008675e+05, -0.35972750751648076402e+05, + 0.71643045180237322711e+04, 0.30605912448870709341e+05, + -0.25608038518926772667e+05, -0.17484555063676809368e+05, + 0.35861813637030405516e+05, -0.38110681950291518660e+04, + -0.35533313865423835523e+05, 0.23748270475214754697e+05, + 0.21389817977762460941e+05, -0.36080599758202253724e+05, + -0.34496376548976204504e+04, 0.37556541661050665425e+05, + -0.16105372332901259142e+05, -0.32037610667918550462e+05, + 0.32845638436944274872e+05, 0.15381374010879289926e+05, + -0.42728883346900642209e+05, 0.53911673332723194108e+04, + 0.39321601478103140835e+05, -0.24405897265684958256e+05, + -0.29416305419977619749e+05, 0.36868478707514368580e+05, + 0.13292824686505884529e+05, -0.44500256574331171578e+05, + 0.53405828256076210891e+04, 0.41227759395821471117e+05, + -0.22663513183767634473e+05, -0.32126810105013992143e+05, + 0.32027062386391156906e+05, 0.21062976772311925743e+05, + -0.39532236252301328932e+05, -0.10473407460510068631e+05, + 0.43664116726882886724e+05, -0.37391951698189254785e+04, + -0.44116855394226673525e+05, 0.15596041970673888500e+05, + 0.40021007179207481386e+05, -0.26776297717867761094e+05, + -0.35908293370096384024e+05, 0.36700124942641523376e+05, + 0.26658758287498087157e+05, -0.44689020328473932750e+05, + -0.16353727006603232439e+05, 0.45506821147376052977e+05, + 0.83199660783136896498e+04, -0.46514674052865972044e+05, + -0.45606909383535357847e+04, 0.48237735828505399695e+05, + -0.13885524585919438323e+04, -0.50340234199740283657e+05, + 0.55647469276596111740e+04, 0.50180198325168516021e+05, + -0.91547352569343875075e+04, -0.52167888269374670926e+05, + 0.11575637410383764291e+05, 0.51447831126960874826e+05, + -0.13315978414675821114e+05, -0.50412819509021748672e+05, + 0.85054227620723049768e+04, 0.51375325982486407156e+05, + -0.33609807355994034879e+04, -0.56392359029294158972e+05, + -0.11010480722428901572e+04, 0.56978326081479259301e+05, + 0.63528174884360241776e+04, -0.55221502794818399707e+05, + -0.17729073123217756802e+05, 0.51394426698219074751e+05, + 0.29579325955194424751e+05, -0.46022950281727156835e+05, + -0.42885918361189062125e+05, 0.34339841822941452847e+05, + 0.54539864397932746215e+05, -0.19918863968920944899e+05, + -0.61949666527545457939e+05, -0.13200959481812715239e+04, + 0.58782629447814841114e+05, 0.27817967202446299780e+05, + -0.48894379472352869925e+05, -0.53743066525457346870e+05, + 0.27956075899034865870e+05, 0.65293551537528561312e+05, + 0.51510762583599180289e+04, -0.60868851728772089700e+05, + -0.44850897932861946174e+05, 0.36535874362656068115e+05, + 0.69268824702994592371e+05, 0.51989350062197863735e+04, + -0.65153870159043442982e+05, -0.52897764358834559971e+05, + 0.25848942022535335127e+05, 0.74626714770648686681e+05, + 0.33125097323298170522e+05, -0.49571545471578283468e+05, + -0.77029816479061890277e+05, -0.17613615160960591311e+05, + 0.59759312846198299667e+05, 0.76666852518598345341e+05, + 0.16458106349696201505e+05, -0.65359044204335164977e+05, + -0.83206734348291007336e+05, -0.26921694454154916457e+05, + 0.51295444171907372947e+05, 0.93539382521858089603e+05, + 0.56944322008826980891e+05, -0.23249083563544088975e+05, + -0.84974739847717413795e+05, -0.97348745283071228187e+05, + -0.43968685055268782889e+05, 0.36433594179493018601e+05, + 0.94430155405846104259e+05, 0.11310061009241349529e+06, + 0.77715248613551273593e+05, 0.96171255135703540873e+04, + -0.59489659231408295454e+05, -0.11790878769197579823e+06, + -0.14715750801541592227e+06, -0.14876659554857067997e+06, + -0.13437796302052092506e+06, -0.10718524225637757627e+06, + -0.78816342768376794993e+05, -0.54675753731975542905e+05, + -0.34699869566670582572e+05, -0.20701272927399444598e+05, + -0.12163688402523674085e+05, -0.66856491453144753905e+04, + -0.26915604136998149443e+04, -0.21985413143833729919e+04, + -0.81087949780835992897e+03, 0.50416631008836390038e+03, + -0.13464134686326349311e+04, 0.68309521560605139712e+03, + 0.31984759372149869705e+03, -0.13818521524887698888e+04, + 0.16112971506604283149e+04, -0.80286520657225617015e+03, + -0.62582115970312179343e+03, 0.17757620603624186515e+04, + -0.18698570415402011804e+04, 0.77817024654252475102e+03, + 0.86682860612554918589e+03, -0.20413029341967753680e+04, + 0.19874956198001918892e+04, -0.69922287832637118754e+03, + -0.10476241827941657903e+04, 0.21807246032436878522e+04, + -0.19927839592165366867e+04, 0.59349228880931275398e+03, + 0.11656442396564139017e+04, -0.22116967809893026242e+04, + 0.19188661532313815314e+04, -0.47849917331291902656e+03, + -0.12229270556842463975e+04, 0.21618497165882372428e+04, + -0.17924549152298072840e+04, 0.36993156135701394760e+03, + 0.12316688043300903246e+04, -0.20552072775426963744e+04, + 0.16402668805648550006e+04, -0.27370048941082092142e+03, + -0.12027297203109255861e+04, 0.19175707138039754227e+04, + -0.14800369695750512165e+04, 0.19501534547308787637e+03, + 0.11510046384412323732e+04, -0.17676463634710926272e+04, + 0.13277157284410620832e+04, -0.13279902318781475401e+03, + -0.10873427173129932726e+04, 0.16229832749473405329e+04, + -0.11918884671149126007e+04, 0.86793873901947392824e+02, + 0.10235580877291473598e+04, -0.14946114622697132290e+04, + 0.10799065714011608179e+04, -0.53358162390946077380e+02, + -0.96736075680249018660e+03, 0.13921415006153858940e+04, + -0.99436158369998577200e+03, 0.30177635203426678601e+02, + 0.92633279473697700723e+03, -0.13207030610581264227e+04, + 0.93724561900662945391e+03, -0.13382120851211702472e+02, + -0.90515928987886582036e+03, 0.12842753985418992215e+04, + -0.90794431215988629447e+03, 0.95608916687120392908e+03, + -0.37101471969239463533e+03, -0.12716311375920552109e+04, + 0.22892816141377256827e+04, -0.18109361751104411269e+04, + 0.36761273360028866364e+03, 0.14322099197748561892e+04, + -0.22469757644712581168e+04, 0.18285837456807773833e+04, + -0.16741060870945045735e+03, -0.14776782219531892224e+04, + 0.23527095845796434332e+04, -0.16597870807334638812e+04, + 0.66857471046540780435e+02, 0.17022007985557081611e+04, + -0.22985346279788077481e+04, 0.15947104201595582254e+04, + 0.23390066057836830282e+03, -0.17996025056360156213e+04, + 0.23700670052160025989e+04, -0.13254575497890743918e+04, + -0.43584253828201781289e+03, 0.20561734931992095881e+04, + -0.22529924849354874823e+04, 0.11405080873972428890e+04, + 0.83254130024860216963e+03, -0.21568878228709932046e+04, + 0.22261551940244476100e+04, -0.73411699280850564264e+03, + -0.11160843464146682891e+04, 0.23766127199676752753e+04, + -0.19711013742007100973e+04, 0.40027313323432866810e+03, + 0.15661858637165921664e+04, -0.23890376343105854176e+04, + 0.17651141482863342844e+04, 0.15457765318472755212e+03, + -0.18579758038133977607e+04, 0.24577817495516396775e+04, + -0.12949895720676861401e+04, -0.61813590940237315863e+03, + 0.22502519555837784537e+04, -0.22500183627353358133e+04, + 0.85101831646361779349e+03, 0.12571179067767182005e+04, + -0.23975740398794418979e+04, 0.20297670119941096800e+04, + -0.14531755656337466576e+03, -0.17266459051956580879e+04, + 0.25410758851909190525e+04, -0.14783480062304436160e+04, + -0.49437241071104841694e+03, 0.22565315663504629811e+04, + -0.23293975056077315458e+04, 0.88986012532734105207e+03, + 0.13023476878406702326e+04, -0.24766073651348901876e+04, + 0.19980447587997105074e+04, -0.40056573665532781092e+02, + -0.19859226885221232806e+04, 0.23965407409285858193e+04, + -0.16546149702755519684e+04, -0.15367107300915595260e+04, + 0.11366922465648219713e+04, -0.45420438879760758937e+04, + -0.33939264007613573995e+04, -0.42796011065097545725e+04, + -0.11376607347859773654e+05, -0.10290727730212045572e+05, + -0.14201931177164500696e+05, -0.18975569669808868639e+05, + -0.13877740851339620349e+05, -0.13616243932367420712e+05, + -0.83586085281259347539e+04, 0.39247827130529103670e+04, + 0.69312326730845043130e+04, 0.11927042420480733199e+05, + 0.13153431853030384445e+05, 0.14698948922098970797e+04, + -0.42269358169362740227e+04, -0.89111872022124989599e+04, + -0.12368071397309651729e+05, -0.73737252045757054475e+03, + 0.70950049993061038549e+04, 0.77132197814908577129e+04, + 0.83510276946279191179e+04, -0.34519072528338851953e+04, + -0.11202601350368822750e+05, -0.43105154466817439243e+04, + 0.32123018017330662133e+03, 0.75223897372975616236e+04, + 0.94439216513504725299e+04, -0.41938576732804267522e+04, + -0.85743726379917043232e+04, -0.31423102270647759724e+04, + 0.10173714826821183124e+04, 0.91747019366100539628e+04, + 0.46340291299984746729e+04, -0.87329649608139861812e+04, + -0.55433052687182125737e+04, 0.16029120724397130289e+04, + 0.48680865479898811827e+04, 0.64751478493581244038e+04, + -0.48313945268456091071e+04, -0.92955821146728612803e+04, + 0.35281661904997631609e+04, 0.64605558055334267920e+04, + 0.11608077620936271614e+04, -0.27735793522652406864e+04, + -0.70908744431112390885e+04, 0.19287728777168758825e+04, + 0.96383337691693905072e+04, -0.24335493589356724442e+04, + -0.72491541030107073311e+04, 0.57662869671116129666e+03, + 0.34084555433698383240e+04, 0.41172111939473097664e+04, + -0.23487732924977813127e+04, -0.79731092864742504389e+04, + 0.41273766690001784809e+04, 0.77864192378159259533e+04, + -0.50036833010470427325e+04, -0.47842457022250109731e+04, + 0.24287714909488558988e+04, 0.31448004040389537295e+04, + 0.17680405482055916764e+04, -0.49935276804549648659e+04, + -0.35975521092947674333e+04, 0.80954596838453971941e+04, + 0.16841537855774295167e+04, -0.86887734414030328480e+04, + 0.12397240739429601035e+04, 0.59728774205046402130e+04, + -0.15663435179491611962e+04, -0.29344029299790431651e+04, + -0.10729191707340373796e+04, 0.28989973199427486179e+04, + 0.35499586651882186743e+04, -0.58123312056355825916e+04, + -0.27909604982371329243e+04, 0.84216562524209839466e+04, + -0.86954899944978205895e+03, -0.78256015718077442216e+04, + 0.41785640428678889293e+04, 0.44955941480278825111e+04, + -0.44361254587504108713e+04, -0.15809387861524990058e+04, + 0.22297439835174304790e+04, 0.15562524447756900372e+04, + -0.62434146271168992826e+03, -0.37120425036472161082e+04, + 0.19498717241166420990e+04, 0.49949047588885005098e+04, + -0.54486184566506244664e+04, -0.30647381650787465333e+04, + 0.80622564736170406832e+04, -0.14443338661404723098e+04, + -0.73116593719241282088e+04, 0.55766367267822124631e+04, + 0.35114366064077562442e+04, -0.67196356246951527282e+04, + 0.68306116276408249632e+03, 0.47844430374816802214e+04, + -0.26828373207446925335e+04, -0.19841396830600369867e+04, + 0.20976917033900476781e+04, 0.70929541270542154052e+03, + -0.74337667565967433347e+03, -0.14589252941614317933e+04, + 0.79622014543800298725e+03, 0.26180614002148154214e+04, + -0.27816916453992239440e+04, -0.20411299589341176670e+04, + 0.51304713081131676518e+04, -0.96962000017965999632e+03, + -0.54962388625997218696e+04, 0.49599178775674590725e+04, + 0.27128712352985849066e+04, -0.73229951026628423278e+04, + 0.21915500020996305466e+04, 0.61925142240155510081e+04, + -0.65777290502678079065e+04, -0.17781813454617592924e+04, + 0.79044451061247500547e+04, -0.36988864379850415389e+04, + -0.53131107868412273092e+04, 0.73557046404508546402e+04, + 0.12526548734101274363e+03, -0.73091567300231808986e+04, + 0.49711949543704004100e+04, 0.36722156771955815202e+04, + -0.74199383633172237751e+04, 0.16170718321645119886e+04, + 0.61091920617995483553e+04, -0.58829266769935093180e+04, + -0.18303824980870599575e+04, 0.70731607763612219060e+04, + -0.32176788913918280741e+04, -0.47006588196878819872e+04, + 0.65460839574757474111e+04, -0.18206344217074124572e+04, + -0.51854952927731701493e+04, 0.75465792449255395695e+04, + 0.14070794477255964239e+03, -0.75270693942358711865e+04, + 0.52219156928188795064e+04, 0.42489818504477761962e+04, + -0.79398220013686659513e+04, 0.11769901128346532460e+04, + 0.74408376809737610529e+04, -0.58324958384604533421e+04, + -0.35851443469375994937e+04, 0.83578996778169293975e+04, + -0.14223162695466201058e+04, -0.73798123288824272095e+04, + 0.61300169308071845080e+04, 0.39553839206937032031e+04, + -0.83602188384370510903e+04, 0.10843412023292914910e+04, + 0.80118898233242607603e+04, -0.54698554490549568072e+04, + -0.48523442377406991000e+04, 0.83917340079642817727e+04, + 0.53384203297947146893e+03, -0.85901808462261324166e+04, + 0.41521506418771887184e+04, 0.67270389146228790196e+04, + -0.74298196818057667770e+04, -0.29290287922558109130e+04, + 0.91253225113483131281e+04, -0.12268348491408717109e+04, + -0.84806777039003991376e+04, 0.53136102602313358148e+04, + 0.63694568892915540346e+04, -0.80024191207681878950e+04, + -0.28355841532263802947e+04, 0.94624291637728856585e+04, + -0.82651133844049218169e+03, -0.90780027231560798100e+04, + 0.45293225553600314015e+04, 0.76535019640731443360e+04, + -0.72204676517604675610e+04, -0.50159639629514558692e+04, + 0.92069420096276480763e+04, 0.21820915648714285453e+04, + -0.98611118194872251479e+04, 0.10113640410689308737e+04, + 0.98529847161467259866e+04, -0.36824452916154796185e+04, + -0.88105849299555993639e+04, 0.62029689190119397608e+04, + 0.75405175448427498850e+04, -0.79157792409397707161e+04, + -0.57064425378763025947e+04, 0.93904635126541252248e+04, + 0.40769927820681036792e+04, -0.10120641097328700198e+05, + -0.22378389795005696215e+04, 0.10772041328828780024e+05, + 0.86499122566505457144e+03, -0.10886699391899544935e+05, + 0.54149550161213221600e+03, 0.11139467214708329266e+05, + -0.13743149497552317371e+04, -0.11055467182951240829e+05, + 0.21782163624211029855e+04, 0.11274222891714340221e+05, + -0.23685883450878818621e+04, -0.11275220894652618881e+05, + 0.24921683029036598782e+04, 0.11642599377110374917e+05, + -0.19533568359960729595e+04, -0.11791720255835569333e+05, + 0.12812940320112279551e+04, 0.12228808067296828085e+05, + 0.13049220347760814320e+03, -0.12276042891140197753e+05, + -0.17431688915583179096e+04, 0.12329001702121158814e+05, + 0.41101285089335287921e+04, -0.11591640456331238966e+05, + -0.65728418503610591870e+04, 0.10355277330614546372e+05, + 0.94723054710995129426e+04, -0.77825208187399548478e+04, + -0.11836333156901733673e+05, 0.42601730613677955262e+04, + 0.13615670166302339567e+05, 0.71647767408526533472e+03, + -0.13470144813662906017e+05, -0.61029488432773960085e+04, + 0.11202729553819483044e+05, 0.11410641572315646044e+05, + -0.58521348898103851752e+04, -0.14457396025418684076e+05, + -0.15489820731811139467e+04, 0.13983478056957756053e+05, + 0.97628475114968296111e+04, -0.82585930340686027193e+04, + -0.15070272789552347604e+05, -0.14030548528919839555e+04, + 0.14505691601466058273e+05, 0.11892138515485894459e+05, + -0.58690494650585042109e+04, -0.16591938853345487587e+05, + -0.72582373463576113863e+04, 0.10969822128611267544e+05, + 0.16998853969978445093e+05, 0.41456920067252594890e+04, + -0.13433806454642601238e+05, -0.17131338256935676327e+05, + -0.33201919992458151683e+04, 0.14153479004903647365e+05, + 0.18623552949754670408e+05, 0.62173186565348323711e+04, + -0.11876189692225992985e+05, -0.20373924770429599448e+05, + -0.12721756385222292010e+05, 0.48348152481630559123e+04, + 0.19401866992965591635e+05, 0.21263092308084495016e+05, + 0.97625969465391426638e+04, -0.77338662148548528421e+04, + -0.21450598726820167940e+05, -0.24860469027090668533e+05, + -0.17202592514410633157e+05, -0.24602626967227870409e+04, + 0.13564524633590572193e+05, 0.26049289150730266556e+05, + 0.32607776131937429454e+05, 0.33286476750654575881e+05, + 0.29677673617310894770e+05, 0.23855266755063235905e+05, + 0.17600000629922538792e+05, 0.12055043514257156858e+05, + 0.77261851943537112675e+04, 0.46600030005294438524e+04, + 0.26565335388615176271e+04, 0.14362290604894146782e+04, + 0.73839297968214145840e+03, 0.36179603617373243196e+03, + 0.16925505549075319323e+03, 0.75714419197234306580e+02, + 0.32428468207838903936e+02, 0.13312218976079659427e+02, + 0.52425658721108199245e+01, 0.19821616473717063034e+01, + 0.71997259217186937441, 0.25136746085818584273, + 0.84394221493349880214e-01, 0.27257466787145225029e-01, + 0.84713700759025487713e-02, 0.25340428177399788347e-02, + 0.72968577040068377613e-03, 0.20228491989842200638e-03, + 0.53990445757808367246e-04, 0.13873731599654503841e-04, + 0.34321621417141247236e-05, 0.81732384504757285166e-06, + 0.18732903311821788379e-06, 0.41315440025942135325e-07, + 0.87661115201652485437e-08, 0.17887877364455834488e-08, + 0.35092661013625587041e-09, 0.66161594643733598419e-10, + 0.11982062763938392685e-10, 0.20834032743503809564e-11, + 0.34760548372179332104e-12, 0.55616120578893337081e-13, + 0.85274089970997959124e-14, 0.12520097870955820205e-14, + 0.17587845500270760964e-15, 0.23617693993931203833e-16, + 0.30286598999218694148e-17, 0.37049217075049367313e-18, + 0.43182269949978378907e-19, 0.47891948589016694136e-20, + 0.50469336847711077898e-21, 0.50456413463071236884e-22, + 0.47772164145834966821e-23, 0.42753383048522807842e-24, + 0.36089467763568325814e-25, 0.28666786647597024377e-26, + 0.21370793013259747423e-27, 0.14908028854322500963e-28, + 0.96990231752949149297e-30, 0.58627050845859327484e-31, + 0.32782957945702488152e-32, 0.16873590958364086158e-33, + 0.79478197221766885549e-35, 0.34024440183946799566e-36, + 0.13130426251485154863e-37, 0.45226389160035131993e-39, + 0.13733435793187908330e-40, 0.36194622600098632253e-42, + 0.81109792573263635093e-44, 0.15027026086025338929e-45, + 0.22098056283279005105e-47, 0.24183893120880619259e-49, + 0.17509531235990047362e-51, 0.62906701403698332886e-54 + ] + + ESERK4ConstantCache{eltype(Bᵢ), typeof(zprev)}(ms, Cᵤ, Cₑ, zprev, Bᵢ, 1, 0, 0) +end + +function SERK2ConstantCache(zprev) + ms = [10, 20, 30, 40, 50, 60, 80, 100, 150, 200, 250] + Bᵢ = [-0.96362760400868230359, + -1.44600406818307636314, + 45.70873580547182513101, + 21.77666554440200741283, + -347.48805911864252493615, + -85.13943254169653584995, + 927.12331469668538375117, + 119.26005393567274381894, + -1013.54002814119894537725, + -54.02407949187814040215, + 389.73246098337597231875, + -0.86721690285776698026, + -0.14247964606254165387, + -3.42874922514483193581, + 3.31129999294675858579, + 40.26458190656864388757, + 6.21625585676302527816, + 49.91496636080542259606, + -49.60291259660618834459, + -301.85262401649691810235, + -39.59682671920758423312, + -191.08213803615251435986, + 196.90114563541760617227, + 799.11070006504678531201, + 76.95241936604297450231, + 265.69350414417590400262, + -286.18278976196086205164, + -871.05995882277682085260, + -45.11225312859123448561, + -121.28287419671590896542, + 137.67098469196315591034, + 335.17496503284280606749, + -0.55552086456412841375, + -0.66637137556846204323, + 0.32841341615080460459, + 1.13286106389630703006, + -5.78406832376563251330, + 5.39220351112540630112, + 27.19910702656031276092, + 26.81822323262986529357, + -13.36297457317238013275, + -10.98063978011500907428, + 83.11884806933920799565, + -82.60257882008195906565, + -216.70911268002635097218, + -159.84229677365436828040, + 80.68055068116780148557, + 26.82613763535254847170, + -321.91265424845295228806, + 337.59508526194247224339, + 608.80276919553148218256, + 294.37312132011533094555, + -150.78252961473515370017, + -22.12614711973167658243, + 461.09353713065712554453, + -506.15490935635142477622, + -700.09775705192021177936, + -165.37179901028432027488, + 86.09410471137518072737, + 5.20218086081884489857, + -219.65432596547356070005, + 250.86521029018081208051, + 282.08133215105397084699, + -0.35562638797822015979, + -0.96920761460842985713, + 0.50712704647579098793, + -0.19881356188030135934, + 0.87060525762980689457, + -2.70169713195842708942, + -2.06966650654738471005, + 5.35675430280412978590, + 20.33247106765178457977, + 36.13250646805210664070, + -18.72136240923262917590, + 7.05834552818738369950, + -11.41711283297713031004, + 35.21949128031247511217, + 39.07800060513270778983, + -89.42490151485905869322, + -174.07691846417199599273, + -205.64366790028512355093, + 106.27283716515583478213, + -38.62940246231941898714, + 37.46381704091592013128, + -118.12109169672949349206, + -184.49202529961010554871, + 388.49875886421608583987, + 504.16143673655602697181, + 369.15654437403549081864, + -191.38221982229620721228, + 67.25392406888734342374, + -44.18384742198838210925, + 142.40993474499103399467, + 304.86693716918244945191, + -607.78033491695282464207, + -585.69396476150939179206, + -204.84058258834846810714, + 106.99004289659143296376, + -36.43217257257210661692, + 17.30702637562075452138, + -55.86298231535410963033, + -161.29195264411046650821, + 310.22372123782685093829, + 236.12926859606432117289, + -0.50756220355217507301, + -0.56050268297758665259, + 0.00291753781535847171, + 0.19139373844506024636, + -0.13861814582400311391, + -2.81456462077018754186, + 3.84654994607172628918, + -4.11653976287417489033, + -0.72612663327699966676, + 6.06736711554703500582, + 23.77854592119173560150, + 23.19875248127983979884, + -1.17247608520798385356, + -6.96343073995197947568, + 5.09143221050110650339, + 34.02475921928724744703, + -44.64064080736773121316, + 52.83203805767665528492, + 19.53569468626604432870, + -101.14886356390445598663, + -177.52579447039758520077, + -145.01001529188047811658, + 13.73897451355871268674, + 37.72595714751182072177, + -27.93148131718527338307, + -115.94473470939605874719, + 148.44543421552094741855, + -190.65966851094114531406, + -99.70559724393923772823, + 434.33859621501676429034, + 468.74354519033653332372, + 279.66762682937394401961, + -36.29554341729693334173, + -64.49478440803135015358, + 48.11012873286868796185, + 150.25827273347411505711, + -190.98609860753094835673, + 260.36071707464839164459, + 167.29766039095417795579, + -670.85011085660073604231, + -511.29698877250666555483, + -163.55372232431253110008, + 25.65278607533514687589, + 34.39828263844597699972, + -25.65925004310830459531, + -65.76727185536445574598, + 84.31194862881892504447, + -119.58186159906821899312, + -88.35293627529978266466, + 338.54504377337661935599, + 197.24075987524443576149, + -0.47915337514860878443, + -0.46942193202031889943, + -0.27641291121172062439, + 0.49679229986838996380, + -0.41740583828251531795, + 0.23467075562112899023, + -0.74942506179570167468, + -0.33407066855369210723, + -0.11131355930744686600, + -1.53073730812523667311, + -1.65151679038455911908, + 7.48452803719470427524, + 20.11376150647138061345, + 22.26924496382475737732, + 8.14589560726002659408, + -17.89564518402425008503, + 15.32006286484124402136, + -8.75939608117697154910, + 7.44986626032478138626, + 17.38974661750732764176, + -12.20041243226810401268, + 36.72392270154158921969, + 16.87803233626993915095, + -114.81963019153562299834, + -146.30413673490264159227, + -142.55714840331057757794, + -40.90534558038467594088, + 102.64382790071843487567, + -88.32504975651407619353, + 51.12814447965548936281, + -20.11730008110154344081, + -102.45072269804201425814, + 87.96466151458372451089, + -185.71502811994952253372, + -45.45624062829280376263, + 469.38472943866122477630, + 386.56087238807327821632, + 273.35882737774568340683, + 68.70662449193447685047, + -188.15452060977756332250, + 161.59156583741673784971, + -94.49524782495392116743, + 20.98827698077106163055, + 181.76536381851292389911, + -170.53738731544871143342, + 313.37342321366094211044, + 43.34322325705441159016, + -702.55797925772344569850, + -424.25507479689161982606, + -158.03992887619330076632, + -36.58427458037816393244, + 106.80806942525390468290, + -91.23328908032419803931, + 53.84905625910185023031, + -7.57811288168275432042, + -98.33635397888258466992, + 98.00081231061029995999, + -166.78374386580807708924, + -12.42187857072948808934, + 346.94838256660989372904, + 164.58091976403687795028, + -0.21580452348860487688, + -0.73625906157905640637, + -0.22522285300640032535, + 0.29506092498527269896, + -0.08763148848873193730, + -0.07434942566555027832, + 0.14158090936471934285, + -0.09698870257903949299, + -0.61105664388240465978, + 0.15521266001364023013, + -0.52917137461752083993, + -1.75621275212130489862, + 2.76932343819962012432, + -5.60969565543255654916, + 3.66014050171349047957, + 5.73489609887472262528, + 11.06811176222420201043, + 29.48333947793154052874, + 8.31125806781374087961, + -10.94621111178455485913, + 2.41696652095950081929, + 3.89440928139322517509, + -6.42364760640104570655, + 4.26141459231835728616, + 14.19196633844950916625, + -15.03620702799788233506, + 22.85583410477462251720, + 12.15937040333234975265, + -29.36518755073138819967, + 76.68311750034494878037, + -49.23921432591014024638, + -96.75280701522144966020, + -87.87290439570645617096, + -179.09020590131115113763, + -45.25863121627668306246, + 61.32375894850506625744, + -9.31441630149719657084, + -27.36956289687151766543, + 41.87974027318112035800, + -27.16194008638997559046, + -61.91674730341299692782, + 81.56836673815705296420, + -121.02191486823691946029, + -18.12606228380447603854, + 91.28634154872743522446, + -292.15778541454091055130, + 185.40352072306532704715, + 418.18882168743886040829, + 246.36829114742891988499, + 335.91776561639665032999, + 79.05379681735334429504, + -110.03327642051530688150, + 11.24837455105589256732, + 55.42083476029976196742, + -82.14211452346562225557, + 52.45918009793477665426, + 90.93254198819583677960, + -135.58842022023921458640, + 202.96796552610160802033, + -2.45253564348795283223, + -109.53904215392363141746, + 415.74542011828953036456, + -261.67821468810154783569, + -649.15175774213741988206, + -283.49249543273839435642, + -191.84659435488487133625, + -43.25044214466841907551, + 61.66055181406150609291, + -4.14536111829911213533, + -33.06411220108560655717, + 48.43902183540018313579, + -30.56742896618826677013, + -42.82896227040692593846, + 70.44341683084074645649, + -106.51014312954386298316, + 11.53589628083483376031, + 44.81424895349020687263, + -197.29462771049671232504, + 123.52380047909130666994, + 328.91145220539402771465, + 114.40625498320125075224, + -0.10587399292915353199, + -0.72322645466022728034, + -0.33678594642407994053, + 0.14761788483895690871, + 0.19888896635473610197, + -0.35137390418849845375, + 0.34924771787862057826, + -0.25027498098314987507, + 0.14878561671118786802, + -0.06265062702211258994, + 0.94650884362274645412, + -2.20091513155538720525, + 0.19859247473447388943, + 0.69843051144521184348, + -3.03200500724269605968, + 2.78340824853673307615, + -2.15127211255913586285, + -2.04829583063548481547, + 3.52828908965631082850, + 6.04196026585645107332, + 8.08824807206029738893, + 23.80091303350159037677, + 18.65257721930665013588, + -11.21275916354142232478, + -2.98010440282564204040, + 9.42428089370491051113, + -10.06058047559873891430, + 6.86141285031143333129, + -3.80536372319000548714, + 1.39099127905236019664, + -12.89755363669541310401, + 30.86488481225314473022, + -1.42280271654188128494, + -10.71203073849915021754, + 45.23366118992370843443, + -39.85467662427483759302, + 28.74604589591331205156, + 37.94933391495729324561, + -60.57599232485605966758, + -94.49423883207958851926, + -67.87704307646217216643, + -132.22705661340989991004, + -122.97635517308098940248, + 79.97853850226681515778, + 5.81278924974691069139, + -44.52226651339192642354, + 50.21262818190000842833, + -32.62389852173822646364, + 17.06677153016607562108, + -5.26184231169500993275, + 46.60486394216564320914, + -115.67457349233488628215, + 1.97852290236533545631, + 41.98554160400037460477, + -177.23681738796918239132, + 150.66068109777134509386, + -100.66818814741102983135, + -177.23093124806538867233, + 268.67620751474015605709, + 389.44758416352198082677, + 186.36667443865280802129, + 238.48234034052111951496, + 238.34006700135003598007, + -161.32363924184085135494, + 0.46151388913119711921, + 70.78986893374539590695, + -83.51561631039911048902, + 51.81032346482079731231, + -25.86836506729071061272, + 6.49057626440389068279, + -62.90279719405006630950, + 160.87022643491616236133, + -0.80975059473243837793, + -58.71971761804874034851, + 252.54200842962626438748, + -208.20848908784566333452, + 127.80066004904480791993, + 292.24936720095769260297, + -427.26958278670844038061, + -584.27824818160854647431, + -205.82363390622026599885, + -133.73619925609943948075, + -138.67423187909196258261, + 96.43626430816465244789, + -4.07681525686787793461, + -35.86654163062316058586, + 44.06645010520367122808, + -26.14562341637445896936, + 12.58401923150315049327, + -2.42868229029039239819, + 28.42358753229295231790, + -74.28960169100335519943, + 0.09943625629084641704, + 27.11117121539740182357, + -118.75285671178046698060, + 95.41943291951113792493, + -53.31134390698743175108, + -155.08372746405038355988, + 220.95347030005981991962, + 288.44434963308714259256, + 79.44319718582937639439, + 1.83708169958911593511, + -4.13592850840482650909, + 3.02873770760792071499, + -3.58135022384788070937, + 3.47171174072481658612, + -2.88376515880837747119, + 2.30146598782125311189, + -1.88929483588035207475, + 1.65135365801351863269, + -1.47550959766406375451, + 1.30355358767736806413, + -1.08641590062793413907, + 0.83715194195655739939, + -0.56168669333972853774, + 0.28174503055587835076, + -1.34401382361210952610, + 1.60319860339591269138, + -1.10063246999957597971, + -0.59351974098291682136, + 0.96786704836877379687, + -1.70880814550302484456, + 0.57099704423611219450, + 0.06222209692051305918, + -1.44874912684446477407, + 0.42980988275748055472, + 1.31957988190222086367, + -4.22478102542349898130, + 1.89266654883271590037, + 5.53736249924134682487, + 3.57735265285767134458, + 0.76854021150794249451, + 19.45873676716082201210, + 20.33929057730105682822, + 8.77630431345455619407, + -13.88322049708971306359, + 1.46597338883456451697, + 9.36782847497834580963, + -12.89851438395901972456, + 9.21857943147477598700, + -3.46922367132117948074, + -1.91434732875155089182, + 4.62750113995828638025, + -5.29260894562594064183, + 4.12382604397188057277, + -2.25334112977422629243, + 13.78097005688474574470, + -13.25070308309062738772, + 8.39313773505435278821, + 14.36644480662678091676, + -16.62507189550715125392, + 24.67336786683622307237, + -4.00637372655851731196, + -8.05293037127315791679, + 30.76952517365137040883, + -14.51533030162556769938, + -14.36546356332510576692, + 61.88574902609164496425, + -26.02465510897767231313, + -91.48474247220707411543, + -55.82713054479270908814, + -15.14043391349819955849, + -107.63550197761858839840, + -129.63927996530060227087, + -45.78566011750933029134, + 78.66599362343349355342, + -5.45170680891075765118, + -57.31248677626727072720, + 77.34141705967337543370, + -53.62367548418851015413, + 18.57147865899569794124, + 14.45786008369322850342, + -30.54775700177061281693, + 34.36563825787920478660, + -26.56921544535988033431, + 14.54017583430681170853, + -49.89482389907371384652, + 38.85980846582449999005, + -19.12855797086255549289, + -69.27146093466005538630, + 72.76251202202475099057, + -98.04939339326551817067, + 6.47285681387482902949, + 49.01606483668490454875, + -145.14467062674887642970, + 77.31794993399755355767, + 46.39912716093589040156, + -248.06336975773365338682, + 100.83685160958418691735, + 390.00430043688351133824, + 231.76160894334012141371, + 55.05055649837591857931, + 193.04524156919106303576, + 247.12567147936729838875, + 81.10153176729728841110, + -145.92374757471381485630, + 10.62002871738718035033, + 103.37573500504383616772, + -139.73111449043844345397, + 93.36830939139929341763, + -27.83746379309911489486, + -34.44859924356084945885, + 63.49481926702648593164, + -69.85250687105082079142, + 53.47488167461045094342, + -29.26414827072310487210, + 66.50470797387342258844, + -38.81381144797794746637, + 7.48836698835098157900, + 119.32906565273184185116, + -119.38847069287258761960, + 148.23141382111333541616, + -4.23073862308830417334, + -86.19922685992074207206, + 233.13930771832832533619, + -131.01934060615761268309, + -60.03170679346858662484, + 368.66695008942070899138, + -147.47499005406291416875, + -598.60274520087716609851, + -351.28438316122861806434, + -72.46786676597049847715, + -107.49728532184803952987, + -142.52206938362397181663, + -45.23750351322320284453, + 84.00651660308847112901, + -7.12819811611877263147, + -56.49294287111950296776, + 76.99262631799680889344, + -49.52819945476980478816, + 12.22413213343171278780, + 23.63347953499739162453, + -39.61458545091856109366, + 42.84367571789899642454, + -32.51521931196879933168, + 17.79887014066879302732, + -29.43898724279516443403, + 11.27538782795171101725, + 5.62862001658200750143, + -65.94630921159898662154, + 64.53189884763320094407, + -75.09644746164133266575, + 1.76824410276191379410, + 45.91551663991392473463, + -119.37065682045019343605, + 69.07009222262571768169, + 27.43302650211154514182, + -181.91991385504221057090, + 72.37694242272357314505, + 300.31714143004347761234, + 175.27796048410871776468, + 31.86128988648172466469, + -0.01646950595548564780, + -0.23417458644218536179, + -0.45940329309245891976, + -0.52637184552590587927, + 0.17072180628456340434, + 0.20084959362143109396, + -0.12140177558064094154, + -0.12374800658139828435, + 0.26770311382963657421, + -0.21883663732132788149, + 0.08037059113106720387, + 0.04665740890955685782, + -0.07781408265423216120, + 0.02171026462815809840, + 0.09391182331695682728, + -0.20619666717160767266, + 0.28114300666778652138, + -0.28979337634608121066, + 0.23643487333252191651, + -0.13133355623746484353, + 0.16855590862481373282, + -0.42370226875454580773, + -0.50624478714513576616, + 0.66060571956145375250, + -1.33645026887191376019, + 0.79594269674411688431, + -0.63045267631538615127, + -0.45064972919940560203, + 0.44294196914961636580, + -0.53607079616840869196, + -0.82930755243549625355, + 1.47004594488597528645, + -1.87305384670731767116, + -0.29023132419440034191, + 2.66301701948555669119, + -3.89100636724489712392, + -0.22636313831098325844, + 3.67694990279328948191, + 5.52882336053922074370, + 1.47341303024965064594, + 2.00696989544243242776, + 7.41578503888090345697, + 20.01662409105681916799, + 19.44845465998083611225, + -5.27155493234912331246, + -9.80280863537481117476, + 6.80992936529352288488, + 2.61940721301520262898, + -8.07940849506493918852, + 5.73004687639709064939, + 0.06217476766309016495, + -5.40175384007282044507, + 6.71878971979610373211, + -4.48439905141189054660, + -0.33228378384036133530, + 5.10596578231295694650, + -8.56396626934948201892, + 9.45398753923881507433, + -7.98497948938993484802, + 4.49564852324409613971, + -3.32224263328520086347, + 5.79215081712574786366, + 9.50120182168369353803, + -11.66090063692933753714, + 20.80886895683824988623, + -10.62342224109679200694, + 6.21808360105284307906, + 11.80027895944733273836, + -11.90466513717240282233, + 12.38000034688521644455, + 10.90911152445783294240, + -23.36349137855725288659, + 31.88718913190107429045, + 0.62139325051621263629, + -37.17417809342745016465, + 55.92669522096502987552, + 9.91258368873385187214, + -64.41736921067311527622, + -84.34599370348865932101, + -25.77834061710466073691, + -13.57293752549232301874, + -47.15353070058741735693, + -116.06534035577666941208, + -120.59041195909644272888, + 35.78326598542403047531, + 55.82935718143995273977, + -38.66306598999774024605, + -16.00164403369468857363, + 47.37531075403592950579, + -31.18078971269806842770, + -4.94870270577876780749, + 38.67328114444782727332, + -47.39998687690110301673, + 34.82230215785007487739, + -5.86982404186632056309, + -22.99065015094265262974, + 44.71471176749209064383, + -51.23065778375229939456, + 44.10241510390596886282, + -24.98036648755751443218, + 13.15229768343192162661, + -16.67914004396700988764, + -47.21892368791257865723, + 54.67092702414046812009, + -86.71093139342740130360, + 38.82264990922794822836, + -14.00685576297175138905, + -64.04753972668584083294, + 65.83043163423602095463, + -64.72893970339660540958, + -37.08079267577866744432, + 96.23928189502520069709, + -138.16305454360548310433, + 8.26733183313510266998, + 140.98925905071990882789, + -216.73789294320556564344, + -59.76135844363187743511, + 286.83879012344925740763, + 342.26160927473586070846, + 114.72966188699088263547, + 32.45975146980820369436, + 93.04130110939904341194, + 209.40773977724902010777, + 231.93615593783849249121, + -74.36541785573268725784, + -98.37605589301428210547, + 67.02351793540455560105, + 32.31137123986965775657, + -89.31817700303889751012, + 56.11564033020219000036, + 12.97413922564651933556, + -78.39468963622984176709, + 95.72097805214396259998, + -73.62186458677398093187, + 19.57325541093677401250, + 34.26358574188812866623, + -75.93216428971790321611, + 89.30002822639202975097, + -77.96179784248570854288, + 44.31531691875997580610, + -17.75716710653787799856, + 14.00791196084666623278, + 81.62792567123551634722, + -91.04773673910456466274, + 131.42355720151016384989, + -52.64640392766719401152, + 6.75107508674865730569, + 114.70409353648659589453, + -119.52785528314154817053, + 113.96836528009471578571, + 45.40714716131624584250, + -143.78931613300864000848, + 214.50325126290670141316, + -24.54775509598891147789, + -198.10057928175169195129, + 309.77217992427330273131, + 111.48347192157989127281, + -455.60338438146476391921, + -507.95581358254599990687, + -182.18867541353759520462, + -33.56831703502118813276, + -55.13990809639962975552, + -116.53947073212357565808, + -135.34555190047257156039, + 45.81662189324985234862, + 53.73577186078789935664, + -35.93068208715388323071, + -19.59230455048312791178, + 51.66297398643507676752, + -31.34535842371225911052, + -8.71111872995479430415, + 47.22186587993563477994, + -57.47692513929336399769, + 45.51355705444129284842, + -14.57932335853129757197, + -16.09166769013786790765, + 40.38831621378495384533, + -48.46608154123989464779, + 42.80321616965722597570, + -24.38441265682574865536, + 7.74618213060392157843, + -1.96916980100553451472, + -44.68706195255146695899, + 48.74731989927676067964, + -65.23798167778537049344, + 23.72147145553722680233, + 2.68408600714282119526, + -64.22514320716967972658, + 67.67663144127972429942, + -63.19881772392933072524, + -17.99372942454829171766, + 70.57822129236964769916, + -108.50163428726072822883, + 16.79589936037887909492, + 92.72347454391457688416, + -146.97076152488142497532, + -63.58790860645250830885, + 234.98848537205370234915, + 248.73113054654916709296, + 93.95675819183355770292, + 12.76458876710363554707, + -286.46648022831436719571, + 569.35678274789518127363, + -559.60742280955298610934, + 542.13423996260587500728, + -520.50199859297822513327, + 493.06432213649759432883, + -461.03594576348791633791, + 426.10815939053838974360, + -389.34610364590594144829, + 351.51917174401091870095, + -313.39102773655645250983, + 275.85890653649562409555, + -239.77363779366936569204, + 205.85849800570079537465, + -174.58599027007176118786, + 146.23272366540851407990, + -120.87931547984838687171, + 98.50377370470964422111, + -78.98104439216923822187, + 62.13652187341686783384, + -47.72289750730514867882, + 35.44795792499807873810, + -24.95515490466360830624, + 15.84766894545143500750, + -7.68400168702261421316, + 11.99637516714722806910, + -17.69945868342960437758, + 12.45595555886025884718, + -9.04776059922533093527, + 5.84406747177049457065, + -3.85529834113929759098, + 1.76336025524555006783, + -0.89068359876585911916, + 0.09169349164027747190, + -0.60865761007772944957, + 0.93616150986284851765, + -1.81842553430586106877, + 1.42058857849817288255, + -0.69844987201769359597, + -1.24566836539379477422, + 2.10850845292644262230, + -1.99683037918531325339, + -0.39318660951380746127, + 1.88868505945889397779, + -0.98022889302016513735, + -3.12128651447930449692, + 2.40258048620016406716, + 5.21406275200390734170, + 3.30027770081220195308, + 0.92025270257716984545, + 2.03435954609290714501, + 1.75296786816885341587, + 15.40166910609020156642, + 20.75287115405955518099, + 9.19933232170808068418, + -9.40509163121854996348, + -7.63253440324286724916, + 13.61187021615556602683, + -7.36947201684253094811, + -1.14105970027935188504, + 3.50383922845643480670, + -0.69202064529276607896, + -3.61042638521966674503, + 4.79868788601131601723, + -2.45025978925572074374, + -2.47609095795827327535, + 6.86466392613255660393, + -9.13182547054578819257, + 8.10781994357813751151, + -4.78425506469951677957, + 0.26952309313961497761, + 3.55501738424325219867, + -5.71415796706760303891, + 5.52531113663123285562, + -3.36350285655106695515, + 0.23257534271181246055, + 8.05454649467160521681, + -6.19411623546401646223, + 11.13441819282567735172, + -2.47049075354166536300, + -0.17391593565235385910, + 13.54213887408658401057, + -14.27715734500464428436, + 17.78812425321446966109, + -3.23707601018287771666, + -6.95306388714886303148, + 24.73168451277928170384, + -21.57238525750243596235, + 12.36581100435431324058, + 16.78680419931325218386, + -29.47553095928824973271, + 27.00504475561134754003, + 11.19949517559872731454, + -34.80307892514215950541, + 19.52343924987096812629, + 46.87054871775732323158, + -36.23723925762560327257, + -84.92729213218825634613, + -51.92765619846355917844, + -15.13535599325871494614, + -13.24438472430461111173, + -9.39455580134505296996, + -94.00111349032648888624, + -121.50593159745680793549, + -58.83535185492175401123, + 61.28829178753445461325, + 40.70538156659694095652, + -76.03626342880855304429, + 39.08535744724688498763, + 11.66832882885517719274, + -24.59108947873034267673, + 6.69745339776133086218, + 20.84681333139119630005, + -29.33794204054616017174, + 17.01662539337043256182, + 11.29849962065219237672, + -36.26278995976439745164, + 49.13449914997554657248, + -42.34437612379303317311, + 22.40957296408085497319, + 4.48076678131902195190, + -26.66688283304824125253, + 38.66544859775578402150, + -36.19623363746183031253, + 21.77016329146908191206, + -3.26771533306053507673, + -35.70924780110571106206, + 34.18864817798134225768, + -56.07656750001689971441, + 19.51182718782654745837, + -4.09129210780491359145, + -55.74783422353508655078, + 63.90778095133721592447, + -80.90763751273252069041, + 21.63014561341875818812, + 22.64058090383863941497, + -99.08235560401402608477, + 89.72078284821866134280, + -54.04141712802027086582, + -64.86615708002936742105, + 116.53510731152302071223, + -104.87129201022561630907, + -54.94348046325833223591, + 153.20747249721074467743, + -87.02439345352925670340, + -193.44717110810591975678, + 150.59818763065706548332, + 357.29933551266549329739, + 218.18836082189403668963, + 63.42858893571074219153, + 26.88708442107847318425, + 18.68476453389004277028, + 175.00644989620477076642, + 224.76844926999746121510, + 112.81319983002219942136, + -119.60398466214262214180, + -70.36585794781242952922, + 135.06359832471372328655, + -66.67956589567910441474, + -28.08975998044155275579, + 50.57541920408495883521, + -16.15708890634118333196, + -37.57970614436781886525, + 54.99307260700138755283, + -34.41204569337484997504, + -16.95108610620295053195, + 61.63396459425273832267, + -84.77717136075435178100, + 71.12512459980708001694, + -33.95207083658407754001, + -16.10320678192800514239, + 56.52147716195609916667, + -77.76455991277610735324, + 71.43107829577219547446, + -42.66995560533611353549, + 6.06980191758534903812, + 59.77456289909505926516, + -65.66869029668525570287, + 100.13915905957261998083, + -44.76192831653064985176, + 15.73451185842585076102, + 79.62300537934756050618, + -98.83265280648325301627, + 127.67659199417606430416, + -40.67592344906042711727, + -27.85520434580954329817, + 145.06985313441654739108, + -134.60698199619756110224, + 82.49284254970990559741, + 95.18898350725277168749, + -172.92598312195511311984, + 153.92859096632238902203, + 88.41773444579916940711, + -237.26691354510822407065, + 134.13033845639148466944, + 294.63556559675674861865, + -230.98399266157576903424, + -542.57428147956920838624, + -334.41147293722036692998, + -95.57944404229685630980, + -20.80314428518122582545, + -11.48007557487890650805, + -99.45913530520893175435, + -127.66646432102561448119, + -65.61709295377363559965, + 70.66941495892984903548, + 37.73163341575367013547, + -73.97028738574550743579, + 35.18193967713015268828, + 19.14350966385481811471, + -31.24337219345173011220, + 11.26167684401785784587, + 20.50027594670260810972, + -31.03533399658952873779, + 20.38267912327755126967, + 8.38055290684768117160, + -33.01373855522565747833, + 45.88276800444496217324, + -37.58204107623698320140, + 16.35542952840734187703, + 12.26655723814102572078, + -34.95785722075888912741, + 46.67547811637160037890, + -42.35634730729276498096, + 25.20070471583354176914, + -3.05557751834216073661, + -32.68200404871337383383, + 39.17203469108222435580, + -56.67152186777419586861, + 29.33664264266302268425, + -12.40728425687574265623, + -36.80806072994491984218, + 49.39944913786461455629, + -64.99048699911270432494, + 23.18834908788356941045, + 11.39764521259193408298, + -69.88133776318845491460, + 66.01441542283289720672, + -40.47425030698735781698, + -47.08386844823964878515, + 85.83103776576542998100, + -75.86892865654905904194, + -44.70208057149678637643, + 118.85946623263288302041, + -66.39265933694959187505, + -148.35987806289784884939, + 117.05895508641614810585, + 269.80962036825997074629, + 168.49451658549256194419, + 47.10829220619891799515, + 5.11169642004104218813 + ] + + SERK2ConstantCache{eltype(Bᵢ), typeof(zprev)}(ms, zprev, Bᵢ, 1, 0, 0) +end diff --git a/src/tableaus/rkn_tableaus.jl b/src/tableaus/rkn_tableaus.jl new file mode 100644 index 0000000000..c9b50e05ff --- /dev/null +++ b/src/tableaus/rkn_tableaus.jl @@ -0,0 +1,2472 @@ +struct FineRKN4ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + a21::T + a31::T + a32::T + a41::T + #a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + abar21::T + abar31::T + abar32::T + abar41::T + abar42::T + abar43::T + abar51::T + abar52::T + abar53::T + abar54::T + b1::T + #b2::T + b3::T + b4::T + b5::T + bbar1::T + #bbar2::T + bbar3::T + bbar4::T + bbar5::T + btilde1::T + #btilde2::T + btilde3::T + btilde4::T + btilde5::T + bptilde1::T + #bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T +end + +function FineRKN4ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 1) + c2 = convert(T2, 2 // 9) + c3 = convert(T2, 1 // 3) + c4 = convert(T2, 3 // 4) + c5 = convert(T2, 1 // 1) + a21 = convert(T, 2 // 81) + a31 = convert(T, 1 // 36) + a32 = convert(T, 1 // 36) + a41 = convert(T, 9 // 128) + #a42 = convert(T, 0 // 1) + a43 = convert(T, 27 // 128) + a51 = convert(T, 11 // 60) + a52 = convert(T, -3 // 20) + a53 = convert(T, 9 // 25) + a54 = convert(T, 8 // 75) + abar21 = convert(T, 2 // 9) + abar31 = convert(T, 1 // 12) + abar32 = convert(T, 1 // 4) + abar41 = convert(T, 69 // 128) + abar42 = convert(T, -243 // 128) + abar43 = convert(T, 135 // 64) + abar51 = convert(T, -17 // 12) + abar52 = convert(T, 27 // 4) + abar53 = convert(T, -27 // 5) + abar54 = convert(T, 16 // 15) + b1 = convert(T, 19 // 180) + #b2 = convert(T, 0 // 1) + b3 = convert(T, 63 // 200) + b4 = convert(T, 16 // 225) + b5 = convert(T, 1 // 120) + bbar1 = convert(T, 1 // 9) + #bbar2 = convert(T, 0 // 1) + bbar3 = convert(T, 9 // 20) + bbar4 = convert(T, 16 // 45) + bbar5 = convert(T, 1 // 12) + btilde1 = convert(T, 25 // 1116) + #btilde2 = convert(T, 0 // 1) + btilde3 = convert(T, -63 // 1240) + btilde4 = convert(T, 64 // 1395) + btilde5 = convert(T, -13 // 744) + bptilde1 = convert(T, 2 // 125) + #bptilde2 = convert(T, 0 // 1) + bptilde3 = convert(T, -27 // 625) + bptilde4 = convert(T, 32 // 625) + bptilde5 = convert(T, -3 // 125) + FineRKN4ConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, + a52, a53, a54, abar21, abar31, abar32, abar41, abar42, abar43, abar51, + abar52, abar53, abar54, b1, b3, b4, b5, bbar1, bbar3, bbar4, bbar5, btilde1, + btilde3, btilde4, btilde5, bptilde1, + bptilde3, bptilde4, bptilde5) +end + +struct FineRKN5ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + a21::T + a31::T + a32::T + a41::T + #a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + a61::T + a62::T + a63::T + a64::T + #a65::T + a71::T + #a72::T + a73::T + a74::T + a75::T + #a76::T + abar21::T + abar31::T + abar32::T + abar41::T + abar42::T + abar43::T + abar51::T + abar52::T + abar53::T + abar54::T + abar61::T + abar62::T + abar63::T + abar64::T + abar65::T + abar71::T + #abar72::T + abar73::T + abar74::T + abar75::T + abar76::T + b1::T + #b2::T + b3::T + b4::T + b5::T + #b6::T + #b7::T + bbar1::T + #bbar2::T + bbar3::T + bbar4::T + bbar5::T + bbar6::T + #bbar7::T + btilde1::T + #btilde2::T + btilde3::T + btilde4::T + btilde5::T + #btilde6::T + #btilde7::T + bptilde1::T + #bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T + bptilde6::T + bptilde7::T +end + +function FineRKN5ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 1) + c2 = convert(T2, 8 // 39) + c3 = convert(T2, 4 // 13) + c4 = convert(T2, 5 // 6) + c5 = convert(T2, 43 // 47) + c6 = convert(T2, 1 // 1) # 36463 // 36464 + c7 = convert(T2, 1 // 1) + a21 = convert(T, 32 // 1521) + a31 = convert(T, 4 // 169) + a32 = convert(T, 4 // 169) + a41 = convert(T, 175 // 5184) + #a42 = convert(T, 0 // 1) + a43 = convert(T, 1625 // 5184) + a51 = convert(T, -342497279 // 5618900760) + a52 = convert(T, 6827067 // 46824173) + a53 = convert(T, 35048741 // 102161832) + a54 = convert(T, -2201514 // 234120865) + a61 = convert(T, -7079 // 52152) + a62 = convert(T, 767 // 2173) + a63 = convert(T, 14027 // 52152) + a64 = convert(T, 30 // 2173) + #a65 = convert(T, 0 // 1) + a71 = convert(T, 4817 // 51600) + #a72 = convert(T, 0 // 1) + a73 = convert(T, 388869 // 1216880) + a74 = convert(T, 3276 // 23575) + a75 = convert(T, -1142053 // 22015140) + #a76 = convert(T, 0 // 1) + abar21 = convert(T, 8 // 39) + abar31 = convert(T, 1 // 13) + abar32 = convert(T, 3 // 13) + abar41 = convert(T, 7385 // 6912) + abar42 = convert(T, -9425 // 2304) + abar43 = convert(T, 13325 // 3456) + abar51 = convert(T, 223324757 // 91364240) + abar52 = convert(T, -174255393 // 18272848) + abar53 = convert(T, 382840094 // 46824173) + abar54 = convert(T, -39627252 // 234120865) + abar61 = convert(T, 108475 // 36464) + abar62 = convert(T, -9633 // 848) + abar63 = convert(T, 7624604 // 806183) + abar64 = convert(T, 8100 // 49979) + abar65 = convert(T, -4568212 // 19446707) + abar71 = convert(T, 4817 // 51600) + #abar72 = convert(T, 0 // 1) + abar73 = convert(T, 1685099 // 3650640) + abar74 = convert(T, 19656 // 23575) + abar75 = convert(T, -53676491 // 88060560) + abar76 = convert(T, 53 // 240) + b1 = convert(T, 4817 // 51600) + #b2 = convert(T, 0 // 1) + b3 = convert(T, 388869 // 1216880) + b4 = convert(T, 3276 // 23575) + b5 = convert(T, -1142053 // 22015140) + #b6 = convert(T, 0 // 1) + #b7 = convert(T, 0 // 1) + bbar1 = convert(T, 4817 // 51600) + #bbar2 = convert(T, 0 // 1) + bbar3 = convert(T, 1685099 // 3650640) + bbar4 = convert(T, 19656 // 23575) + bbar5 = convert(T, -53676491 // 88060560) + bbar6 = convert(T, 53 // 240) + #bbar7 = convert(T, 0 // 1) + btilde1 = convert(T, 8151 // 2633750) + #btilde2 = convert(T, 0 // 1) + btilde3 = convert(T, -1377519 // 186334750) + btilde4 = convert(T, 586872 // 28879375) + btilde5 = convert(T, -36011118 // 2247378875) + #btilde6 = convert(T, 0 // 1) + #btilde7 = convert(T, 0 // 1) + bptilde1 = convert(T, 8151 // 2633750) + #bptilde2 = convert(T, 0 // 1) + bptilde3 = convert(T, -5969249 // 559004250) + bptilde4 = convert(T, 3521232 // 28879375) + bptilde5 = convert(T, -846261273 // 4494757750) + bptilde6 = convert(T, 4187 // 36750) + bptilde7 = convert(T, -1 // 25) + FineRKN5ConstantCache(c1, c2, c3, c4, c5, c6, c7, a21, a31, a32, a41, a43, a51, + a52, a53, a54, a61, a62, a63, a64, a71, a73, a74, a75, + abar21, abar31, abar32, abar41, abar42, abar43, abar51, + abar52, abar53, abar54, abar61, abar62, abar63, abar64, abar65, + abar71, abar73, abar74, abar75, abar76, b1, b3, b4, + b5, bbar1, bbar3, bbar4, bbar5, bbar6, btilde1, btilde3, btilde4, btilde5, bptilde1, + bptilde3, bptilde4, bptilde5, bptilde6, bptilde7) +end + +struct IRKN3ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + bconst1::T + bconst2::T + c1::T2 + a21::T + b1::T + b2::T + bbar1::T + bbar2::T +end + +function IRKN3ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + bconst1 = convert(T, 1.5) + bconst2 = convert(T, -0.5) + c1 = convert(T2, 0.5) + a21 = convert(T, 0.125) + b1 = convert(T, 0.6666666666666666) + b2 = convert(T, 0.8333333333333334) + bbar1 = convert(T, 0.3333333333333333) + bbar2 = convert(T, 0.4166666666666667) + IRKN3ConstantCache(bconst1, bconst2, c1, a21, b1, b2, bbar1, bbar2) +end + +function IRKN3ConstantCache(T::Type, T2::Type) + bconst1 = convert(T, 3 // 2) + bconst2 = convert(T, -1 // 2) + c1 = convert(T2, 1 // 2) + a21 = convert(T, 1 // 8) + b1 = convert(T, 2 // 3) + b2 = convert(T, 5 // 6) + bbar1 = convert(T, 1 // 3) + bbar2 = convert(T, 5 // 12) + IRKN3ConstantCache(bconst1, bconst2, c1, a21, b1, b2, bbar1, bbar2) +end + +struct IRKN4ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + bconst1::T + bconst2::T + c1::T2 + c2::T2 + a21::T + # a31::T + a32::T + b1::T + b2::T + b3::T + bbar1::T + bbar2::T + bbar3::T +end + +function IRKN4ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + bconst1 = convert(T, 1.5) + bconst2 = convert(T, -0.5) + c1 = convert(T2, 0.25) + c2 = convert(T2, 0.75) + a21 = convert(T, 0.03125) + # a31 = convert(T,0) + a32 = convert(T, 0.28125) + b1 = convert(T, 1.0555555555555556) + b2 = convert(T, -0.16666666666666666) + b3 = convert(T, 0.6111111111111112) + bbar1 = convert(T, -0.05555555555555555) + bbar2 = convert(T, 0.2916666666666667) + bbar3 = convert(T, 0.125) + IRKN4ConstantCache(bconst1, bconst2, c1, c2, a21, a32, b1, b2, b3, bbar1, bbar2, bbar3) +end + +function IRKN4ConstantCache(T::Type, T2::Type) + bconst1 = convert(T, 3 // 2) + bconst2 = convert(T, -1 // 2) + c1 = convert(T2, 1 // 4) + c2 = convert(T2, 3 // 4) + a21 = convert(T, 1 // 32) + # a31 = convert(T,0) + a32 = convert(T, 9 // 32) + b1 = convert(T, 19 // 18) + b2 = convert(T, -1 // 6) + b3 = convert(T, 11 // 18) + bbar1 = convert(T, -1 // 18) + bbar2 = convert(T, 7 // 24) + bbar3 = convert(T, 1 // 8) + IRKN4ConstantCache(bconst1, bconst2, c1, c2, a21, a32, b1, b2, b3, bbar1, bbar2, bbar3) +end + +struct Nystrom5VelocityIndependentConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + bbar1::T + bbar2::T + bbar3::T + b1::T + b2::T + b3::T + b4::T +end + +function Nystrom5VelocityIndependentConstantCache(T::Type{<:CompiledFloats}, + T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.2) + c2 = convert(T2, 0.6666666666666666) + # c3 = convert(T2,1) + a21 = convert(T, 0.02) + a31 = convert(T, -0.037037037037037035) + a32 = convert(T, 0.25925925925925924) + a41 = convert(T, 0.3) + a42 = convert(T, -0.05714285714285714) + a43 = convert(T, 0.2571428571428571) + bbar1 = convert(T, 0.041666666666666664) + bbar2 = convert(T, 0.2976190476190476) + bbar3 = convert(T, 0.16071428571428573) + b1 = bbar1 + b2 = convert(T, 0.37202380952380953) + b3 = convert(T, 0.48214285714285715) + b4 = convert(T, 0.10416666666666667) + Nystrom5VelocityIndependentConstantCache(c1, c2, a21, a31, a32, a41, a42, a43, bbar1, + bbar2, bbar3, b1, b2, b3, b4) +end + +function Nystrom5VelocityIndependentConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 5) + c2 = convert(T2, 2 // 3) + # c3 = convert(T2,1) + a21 = convert(T, 1 // 50) + a31 = convert(T, -1 // 27) + a32 = convert(T, 7 // 27) + a41 = convert(T, 3 // 10) + a42 = convert(T, -2 // 35) + a43 = convert(T, 9 // 35) + bbar1 = convert(T, 14 // 336) + bbar2 = convert(T, 100 // 336) + bbar3 = convert(T, 54 // 336) + b1 = bbar1 + b2 = convert(T, 125 // 336) + b3 = convert(T, 162 // 336) + b4 = convert(T, 35 // 336) + Nystrom5VelocityIndependentConstantCache(c1, c2, a21, a31, a32, a41, a42, a43, bbar1, + bbar2, bbar3, b1, b2, b3, b4) +end + +struct ERKN4ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + b1::T + b2::T + b3::T + b4::T + bp1::T # bp denotes bprime + bp2::T + bp3::T + bp4::T + btilde1::T + btilde2::T + btilde3::T + btilde4::T + bptilde1::T + bptilde2::T + bptilde3::T + bptilde4::T +end + +function ERKN4ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 4) + c2 = convert(T2, 7 // 10) + c3 = convert(T2, 1) + a21 = convert(T, 1 // 32) + a31 = convert(T, 19 // 600) + a32 = convert(T, 16 // 75) + a41 = convert(T, 32 // 315) + a42 = convert(T, 58 // 315) + a43 = convert(T, 3 // 14) + btilde1 = convert(T, 1 // 21 - 14 // 375) + btilde2 = convert(T, 28 // 81 - 136 // 375) + btilde3 = convert(T, 50 // 567 - 2 // 25) + btilde4 = convert(T, 1 // 54 - 1 // 50) + bptilde1 = convert(T, 1 // 14 - 17 // 231) + bptilde2 = convert(T, 32 // 81 - 116 // 297) + bptilde3 = convert(T, 250 // 567 - 925 // 2079) + bptilde4 = convert(T, 5 // 54 - 1 // 11) + b1 = convert(T, 1 // 21) + b2 = convert(T, 28 // 81) + b3 = convert(T, 50 // 567) + b4 = convert(T, 1 // 54) + bp1 = convert(T, 1 // 14) + bp2 = convert(T, 32 // 81) + bp3 = convert(T, 250 // 567) + bp4 = convert(T, 5 // 54) + ERKN4ConstantCache(c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, + bp3, bp4, btilde1, btilde2, btilde3, btilde4, bptilde1, bptilde2, + bptilde3, bptilde4) +end + +function ERKN4ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + ERKN4ConstantCache(convert(T2, 0.25), + convert(T2, 0.7), + convert(T2, 1.0), + convert(T, 0.03125), + convert(T, 0.03166666666666667), + convert(T, 0.21333333333333335), + convert(T, 0.10158730158730159), + convert(T, 0.18412698412698414), + convert(T, 0.21428571428571427), + convert(T, 0.047619047619047616), + convert(T, 0.345679012345679), + convert(T, 0.08818342151675485), + convert(T, 0.018518518518518517), + convert(T, 0.07142857142857142), + convert(T, 0.3950617283950617), + convert(T, 0.4409171075837742), + convert(T, 0.09259259259259259), + convert(T, 0.010285714285714285), + convert(T, -0.016987654320987654), + convert(T, 0.00818342151675485), + convert(T, -0.0014814814814814814), + convert(T, -0.0021645021645021645), + convert(T, 0.004489337822671156), + convert(T, -0.004008337341670675), + convert(T, 0.0016835016835016834)) +end + +struct ERKN5ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + b1::T + b2::T + b3::T + b4::T + bp1::T # bp denotes bprime + bp2::T + bp3::T + bp4::T + btilde1::T + btilde2::T + btilde3::T + btilde4::T + # bptilde1::T + # bptilde2::T + # bptilde3::T + # bptilde4::T +end + +function ERKN5ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 2) + c2 = convert(T2, 19 // 70) + c3 = convert(T2, 44 // 51) + a21 = convert(T, 1 // 8) + a31 = convert(T, 2907 // 343000) + a32 = convert(T, 1216 // 42875) + a41 = convert(T, 6624772 // Int64(128538819)) + a42 = convert(T, 6273905 // Int64(54121608)) + a43 = convert(T, Int64(210498365) // Int64(1028310552)) + b1 = convert(T, 479 // 5016) + b2 = convert(T, 235 // 1776) + b3 = convert(T, 145775 // 641744) + b4 = convert(T, 309519 // 6873416) + btilde1 = convert(T, 479 // 5016 - 184883 // 2021250) + btilde2 = convert(T, 235 // 1776 - 411163 // 3399375) + btilde3 = convert(T, 145775 // 641744 - 6 // 25) + btilde4 = convert(T, 309519 // 6873416 - 593028 // Int64(12464375)) + bp1 = b1 + bp2 = convert(T, 235 // 888) + bp3 = convert(T, 300125 // 962616) + bp4 = convert(T, 2255067 // 6873416) + # bptilde1 = convert(T,0) + # bptilde2 = convert(T,0) + # bptilde3 = convert(T,0) + # bptilde4 = convert(T,0) + ERKN5ConstantCache(c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, b4, bp1, bp2, + bp3, bp4, btilde1, btilde2, btilde3, btilde4) +end + +function ERKN5ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + ERKN5ConstantCache(convert(T2, 0.5), + convert(T2, 0.2714285714285714), + convert(T2, 0.8627450980392157), + convert(T, 0.125), + convert(T, 0.008475218658892128), + convert(T, 0.028361516034985424), + convert(T, 0.051539076300366506), + convert(T, 0.11592236875149756), + convert(T, 0.20470310704348388), + convert(T, 0.09549441786283891), + convert(T, 0.13231981981981983), + convert(T, 0.22715444164651324), + convert(T, 0.04503132067082801), + convert(T, 0.09549441786283891), + convert(T, 0.26463963963963966), + convert(T, 0.3117806061814888), + convert(T, 0.32808533631603265), + convert(T, 0.004024782736060931), + convert(T, 0.011367291781577495), + convert(T, -0.012845558353486749), + convert(T, -0.0025465161641516788)) +end + +struct ERKN7ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + a61::T + a62::T + a63::T + a64::T + a65::T + a71::T + a73::T + a74::T + a75::T + a76::T + b1::T + b3::T + b4::T + b5::T + b6::T + bp1::T # bp denotes bprime + bp3::T + bp4::T + bp5::T + bp6::T + bp7::T + btilde1::T + btilde3::T + btilde4::T + btilde5::T + btilde6::T + bptilde1::T + bptilde3::T + bptilde4::T + bptilde5::T + bptilde6::T + bptilde7::T +end + +function ERKN7ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 108816483 // 943181462) + c2 = convert(T2, 108816483 // 471590731) + c3 = convert(T2, 151401202 // 200292705) + c4 = convert(T2, 682035803 // 631524599) + c5 = convert(T2, 493263404 // 781610081) + c6 = convert(T2, 1) + a21 = convert(T, 5107771 // 767472028) + a31 = convert(T, 5107771 // 575604021) + a32 = convert(T, 16661485 // 938806552) + a41 = convert(T, 325996677 // 876867260) + a42 = convert(T, -397622579 // 499461366) + a43 = convert(T, 541212017 // 762248206) + a51 = convert(T, 82243160 // 364375691) + a52 = convert(T, -515873404 // 1213273815) + a53 = convert(T, 820109726 // 1294837243) + a54 = convert(T, 36245507 // 242779260) + a61 = convert(T, 3579594 // 351273191) + a62 = convert(T, 34292133 // 461028419) + a63 = convert(T, 267156948 // 2671391749) + a64 = convert(T, 22665163 // 1338599875) + a65 = convert(T, -3836509 // 1614789462) + a71 = convert(T, 53103334 // 780726093) + a73 = convert(T, 352190060 // 1283966121) + a74 = convert(T, 37088117 // 2206150964) + a75 = convert(T, 7183323 // 1828127386) + a76 = convert(T, 187705681 // 1370684829) + b1 = convert(T, 53103334 // 780726093) + b3 = convert(T, 352190060 // 1283966121) + b4 = convert(T, 37088117 // 2206150964) + b5 = convert(T, 7183323 // 1828127386) + b6 = convert(T, 187705681 // 1370684829) + bp1 = convert(T, 53103334 // 780726093) + bp3 = convert(T, 244481296 // 685635505) + bp4 = convert(T, 41493456 // 602487871) + bp5 = convert(T, -45498718 // 926142189) + bp6 = convert(T, 1625563237 // 4379140271) + bp7 = convert(T, 191595797 // 1038702495) + btilde1 = convert(T, 53103334 // 780726093 - 41808761 // 935030896) + btilde3 = convert(T, 352190060 // 1283966121 - 46261019 // 135447428) + btilde4 = convert(T, 37088117 // 2206150964 - 289298425 // 1527932372) + btilde5 = convert(T, 7183323 // 1828127386 + 52260067 // 3104571287) + btilde6 = convert(T, 187705681 // 1370684829 + 49872919 // 848719175) + bptilde1 = convert(T, 53103334 // 780726093 - 41808761 // 935030896) + bptilde3 = convert(T, 244481296 // 685635505 - 224724272 // 506147085) + bptilde4 = convert(T, 41493456 // 602487871 - 2995752066 // 3862177123) + bptilde5 = convert(T, -45498718 // 926142189 - 170795979 // 811534085) + bptilde6 = convert(T, 1625563237 // 4379140271 + 177906423 // 1116903503) + bptilde7 = convert(T, 191595797 // 1038702495 + 655510901 // 2077404990) + ERKN7ConstantCache(c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a42, a43, a51, a52, a53, + a54, a61, a62, a63, a64, a65, a71, a73, a74, a75, a76, b1, b3, b4, + b5, + b6, bp1, bp3, bp4, bp5, bp6, bp7, btilde1, btilde3, btilde4, btilde5, + btilde6, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, bptilde7) +end + +function ERKN7ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + ERKN7ConstantCache(convert(T2, 108816483 // 943181462), + convert(T2, 0.23074347277618568), + convert(T2, 0.7558997318449516), + convert(T2, 1.0799829556599743), + convert(T2, 0.6310862871278652), + convert(T2, 1.0), + convert(T, 0.006655318778601792), + convert(T, 0.008873758371469056), + convert(T, 0.01774751674293811), + convert(T, 0.37177426033673555), + convert(T, -0.796102774043188), + convert(T, 0.7100207160080872), + convert(T, 0.2257097880879216), + convert(T, -0.4251912450611983), + convert(T, 0.6333689662029593), + convert(T, 0.14929408302834435), + convert(T, 0.010190342137439119), + convert(T, 0.07438182026691938), + convert(T, 0.10000665312379087), + convert(T, 0.016931992467129134), + convert(T, -0.002375857094861324), + convert(T, 0.06801788037587723), + convert(T, 0.2742985614960786), + convert(T, 0.01681123259704543), + convert(T, 0.003929333948504177), + convert(T, 0.13694299158249457), + convert(T, 0.06801788037587723), + convert(T, 0.2742985614960786), + convert(T, 0.01681123259704543), + convert(T, 0.003929333948504177), + convert(T, 0.13694299158249457), + convert(T, 0.06801788037587723), + convert(T, 0.35657618985177847), + convert(T, 0.06887019307314819), + convert(T, -0.049127141102520276), + convert(T, 0.371206021365649), + convert(T, 0.18445685643606738), + convert(T, 0.023304105484742516), + convert(T, -0.06724368617214582), + convert(T, -0.1725285773981577), + convert(T, 0.020762597600343137), + convert(T, 0.1957055604852179), + convert(T, 0.023304105484742516), + convert(T, -0.08741386493634701), + convert(T, -0.7067938872093759), + convert(T, -0.25958777628335805), + convert(T, 0.5304914229443385), + convert(T, 0.5)) +end + +struct DPRKN4ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + b1::T + b2::T + b3::T + bp1::T # bp denotes bprime + bp2::T + bp3::T + bp4::T + btilde1::T + btilde2::T + btilde3::T + btilde4::T + bptilde1::T + bptilde2::T + bptilde3::T + bptilde4::T +end + +function DPRKN4ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 4) + c2 = convert(T2, 7 // 10) + c3 = convert(T2, 1) + a21 = convert(T, 1 // 32) + a31 = convert(T, 7 // 1000) + a32 = convert(T, 119 // 500) + a41 = convert(T, 1 // 14) + a42 = convert(T, 8 // 27) + a43 = convert(T, 25 // 189) + b1 = convert(T, 1 // 14) + b2 = convert(T, 8 // 27) + b3 = convert(T, 25 // 189) + # b4 = convert(T, 0) + bp1 = convert(T, 1 // 14) + bp2 = convert(T, 32 // 81) + bp3 = convert(T, 250 // 567) + bp4 = convert(T, 5 // 54) + btilde1 = convert(T, 1 // 14 + 7 // 150) + btilde2 = convert(T, 8 // 27 - 67 // 150) + btilde3 = convert(T, 25 // 189 - 3 // 20) + btilde4 = convert(T, 1 // 20) + bptilde1 = convert(T, 1 // 14 - 13 // 21) + bptilde2 = convert(T, 32 // 81 + 20 // 27) + bptilde3 = convert(T, 250 // 567 - 275 // 189) + bptilde4 = convert(T, 5 // 54 + 1 // 3) + DPRKN4ConstantCache(c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, + bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, + bptilde1, bptilde2, bptilde3, bptilde4) +end + +function DPRKN4ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.25) + c2 = convert(T2, 0.7) + c3 = convert(T2, 1.0) + a21 = convert(T, 0.03125) + a31 = convert(T, 0.007) + a32 = convert(T, 0.238) + a41 = convert(T, 0.07142857142857142) + a42 = convert(T, 0.2962962962962963) + a43 = convert(T, 0.13227513227513227) + b1 = convert(T, 0.07142857142857142) + b2 = convert(T, 0.2962962962962963) + b3 = convert(T, 0.13227513227513227) + bp1 = convert(T, 0.07142857142857142) + bp2 = convert(T, 0.3950617283950617) + bp3 = convert(T, 0.4409171075837742) + bp4 = convert(T, 0.09259259259259259) + btilde1 = convert(T, 0.11809523809523809) + btilde2 = convert(T, -0.15037037037037038) + btilde3 = convert(T, -0.017724867724867727) + btilde4 = convert(T, 0.05) + bptilde1 = convert(T, -0.5476190476190477) + bptilde2 = convert(T, 1.1358024691358024) + bptilde3 = convert(T, -1.0141093474426808) + bptilde4 = convert(T, 0.42592592592592593) + DPRKN4ConstantCache(c1, c2, c3, a21, a31, a32, a41, a42, a43, b1, b2, b3, + bp1, bp2, bp3, bp4, btilde1, btilde2, btilde3, btilde4, + bptilde1, bptilde2, bptilde3, bptilde4) +end +struct DPRKN5ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + a21::T + a31::T + a32::T + a41::T + # a42::T + a43::T + a51::T + # a52::T + a53::T + a54::T + a61::T + # a62::T + a63::T + a64::T + a65::T + b1::T + # b2::T + b3::T + b4::T + b5::T + # b6::T + bp1::T # bp denotes bprime + # bp2::T + bp3::T + bp4::T + bp5::T + bp6::T + btilde1::T + # btilde2::T + btilde3::T + btilde4::T + btilde5::T + # btilde6::T + bptilde1::T + # bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T + bptilde6::T +end + +function DPRKN5ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 8) + c2 = convert(T2, 1 // 4) + c3 = convert(T2, 1 // 2) + c4 = convert(T2, 3 // 4) + c5 = convert(T2, 1) + a21 = convert(T, 1 // 128) + a31 = convert(T, 1 // 96) + a32 = convert(T, 1 // 48) + a41 = convert(T, 1 // 24) + # a42 = convert(T, 0) + a43 = convert(T, 1 // 12) + a51 = convert(T, 9 // 128) + # a52 = convert(T, 0) + a53 = convert(T, 9 // 64) + a54 = convert(T, 9 // 128) + a61 = convert(T, 7 // 90) + # a62 = convert(T, 0) + a63 = convert(T, 4 // 15) + a64 = convert(T, 1 // 15) + a65 = convert(T, 4 // 45) + b1 = convert(T, 7 // 90) + # b2 = convert(T,0) + b3 = convert(T, 4 // 15) + b4 = convert(T, 1 // 15) + b5 = convert(T, 4 // 45) + # b6 = convert(T, 0) + bp1 = convert(T, 7 // 90) + # bp2 = convert(T,0) + bp3 = convert(T, 16 // 45) + bp4 = convert(T, 2 // 15) + bp5 = convert(T, 16 // 45) + bp6 = convert(T, 7 // 90) + btilde1 = convert(T, 7 // 90 - 1 // 6) + # btilde2 = convert(T,0) + btilde3 = convert(T, 4 // 15) + btilde4 = convert(T, 1 // 15 - 1 // 3) + btilde5 = convert(T, 4 // 45) + #btilde6 = convert(T, 0) + bptilde1 = convert(T, 7 // 90) + # bptilde2 = convert(T,0) + bptilde3 = convert(T, 16 // 45 - 2 // 3) + bptilde4 = convert(T, 2 // 15 + 1 // 3) + bptilde5 = convert(T, 16 // 45 - 2 // 3) + bptilde6 = convert(T, 7 // 90) + DPRKN5ConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, + a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, + bp3, bp4, bp5, bp6, btilde1, btilde3, btilde4, btilde5, + bptilde1, bptilde3, bptilde4, bptilde5, bptilde6) +end + +function DPRKN5ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.125) + c2 = convert(T2, 0.25) + c3 = convert(T2, 0.5) + c4 = convert(T2, 0.75) + c5 = convert(T2, 1.0) + a21 = convert(T, 1 // 128) + a31 = convert(T, 1 // 96) + a32 = convert(T, 1 // 48) + a41 = convert(T, 1 // 24) + a43 = convert(T, 1 // 12) + a51 = convert(T, 7 // 90) + a53 = convert(T, 4 // 15) + a54 = convert(T, 1 // 15) + a61 = convert(T, 0.07777777777777778) + a63 = convert(T, 0.26666666666666666) + a64 = convert(T, 0.06666666666666667) + a65 = convert(T, 0.08888888888888889) + b1 = convert(T, 0.07777777777777778) + b3 = convert(T, 0.26666666666666666) + b4 = convert(T, 0.06666666666666667) + b5 = convert(T, 0.08888888888888889) + bp1 = convert(T, 0.07777777777777778) + bp3 = convert(T, 0.35555555555555557) + bp4 = convert(T, 0.13333333333333333) + bp5 = convert(T, 0.35555555555555557) + bp6 = convert(T, 0.07777777777777778) + btilde1 = convert(T, -0.08888888888888888) + btilde3 = convert(T, 0.26666666666666666) + btilde4 = convert(T, -0.26666666666666666) + btilde5 = convert(T, 0.08888888888888889) + bptilde1 = convert(T, 0.07777777777777778) + bptilde3 = convert(T, -0.31111111111111106) + bptilde4 = convert(T, 0.4666666666666667) + bptilde5 = convert(T, -0.31111111111111106) + bptilde6 = convert(T, 0.07777777777777778) + DPRKN5ConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a43, a51, + a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, + bp3, bp4, bp5, bp6, btilde1, btilde3, btilde4, btilde5, + bptilde1, bptilde3, bptilde4, bptilde5, bptilde6) +end + +struct DPRKN6ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + a61::T + # a62::T + a63::T + a64::T + a65::T + b1::T + # b2::T + b3::T + b4::T + b5::T + # b6::T + bp1::T # bp denotes bprime + # bp2::T + bp3::T + bp4::T + bp5::T + bp6::T + btilde1::T + btilde2::T + btilde3::T + btilde4::T + btilde5::T + # btilde6::T + bptilde1::T + # bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T + bptilde6::T + r14::T + r13::T + r12::T + r11::T + r10::T + r34::T + r33::T + r32::T + r31::T + r44::T + r43::T + r42::T + r41::T + r54::T + r53::T + r52::T + r51::T + r64::T + r63::T + r62::T + r61::T + rp14::T + rp13::T + rp12::T + rp11::T + rp10::T + rp34::T + rp33::T + rp32::T + rp31::T + rp44::T + rp43::T + rp42::T + rp41::T + rp54::T + rp53::T + rp52::T + rp51::T + rp64::T + rp63::T + rp62::T + rp61::T +end + +function DPRKN6ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.12929590313670442) + c2 = convert(T2, 0.25859180627340883) + c3 = convert(T2, 0.67029708261548) + c4 = convert(T2, 0.9) + c5 = convert(T2, 1.0) + a21 = convert(T, 0.008358715283968025) + a31 = convert(T, 0.011144953711957367) + a32 = convert(T, 0.022289907423914734) + a41 = convert(T, 0.1454747428010918) + a42 = convert(T, -0.22986064052264749) + a43 = convert(T, 0.3090349872029675) + a51 = convert(T, -0.20766826295078997) + a52 = convert(T, 0.6863667842925143) + a53 = convert(T, -0.19954927787234925) + a54 = convert(T, 0.12585075653062489) + a61 = convert(T, 0.07811016144349478) + a63 = convert(T, 0.2882917411897668) + a64 = convert(T, 0.12242553717457041) + a65 = convert(T, 0.011172560192168035) + b1 = convert(T, 0.07811016144349478) + b3 = convert(T, 0.2882917411897668) + b4 = convert(T, 0.12242553717457041) + b5 = convert(T, 0.011172560192168035) + bp1 = convert(T, 0.07811016144349478) + bp3 = convert(T, 0.3888434787059826) + bp4 = convert(T, 0.3713207579288423) + bp5 = convert(T, 0.11172560192168035) + bp6 = convert(T, 0.05) + btilde1 = convert(T, -0.9807490989269235) + btilde2 = convert(T, 2.406751371924452) + btilde3 = convert(T, -1.559600370364267) + btilde4 = convert(T, 0.12242553717457041) + btilde5 = convert(T, 0.011172560192168035) + bptilde1 = convert(T, 0.023504273504273504) + bptilde3 = convert(T, -0.07242330719764424) + bptilde4 = convert(T, 0.17543989844952962) + bptilde5 = convert(T, -0.2765208647561589) + bptilde6 = convert(T, 0.15) + r14 = convert(T, 0.21367521367521367) + r13 = convert(T, -0.9066951566951567) + r12 = convert(T, 1.5161443494776827) + r11 = convert(T, -1.245014245014245) + r10 = convert(T, 0.5) + r34 = convert(T, -0.6583937017967658) + r33 = convert(T, 2.5384011164109506) + r32 = convert(T, -3.577652872294921) + r31 = convert(T, 1.9859371988705032) + r44 = convert(T, 1.5949081677229964) + r43 = convert(T, -5.164133553908094) + r42 = convert(T, 5.547586751052329) + r41 = convert(T, -1.8559358276926614) + r54 = convert(T, -2.513826043237808) + r53 = convert(T, 7.273336685101391) + r52 = convert(T, -6.926987319144182) + r51 = convert(T, 2.178649237472767) + r64 = convert(T, 1.3636363636363635) + r63 = convert(T, -3.7409090909090907) + r62 = convert(T, 3.440909090909091) + r61 = convert(T, -1.0636363636363637) + rp14 = convert(T, 1.2820512820512822) + rp13 = convert(T, -4.533475783475783) + rp12 = convert(T, 6.064577397910731) + rp11 = convert(T, -3.735042735042735) + rp10 = convert(T, 1) + rp34 = convert(T, -3.950362210780595) + rp33 = convert(T, 12.692005582054751) + rp32 = convert(T, -14.310611489179683) + rp31 = convert(T, 5.95781159661151) + rp44 = convert(T, 9.56944900633798) + rp43 = convert(T, -25.820667769540467) + rp42 = convert(T, 22.190347004209315) + rp41 = convert(T, -5.567807483077984) + rp54 = convert(T, -15.082956259426847) + rp53 = convert(T, 36.366683425506956) + rp52 = convert(T, -27.707949276576727) + rp51 = convert(T, 6.5359477124183005) + rp64 = convert(T, 8.181818181818182) + rp63 = convert(T, -18.704545454545453) + rp62 = convert(T, 13.763636363636364) + rp61 = convert(T, -3.190909090909091) + DPRKN6ConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, + a52, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, + bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, + btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, + r14, r13, r12, r11, r10, r34, r33, r32, r31, r44, r43, r42, r41, + r54, + r53, r52, r51, r64, r63, r62, r61, rp14, rp13, rp12, rp11, rp10, + rp34, + rp33, rp32, rp31, rp44, rp43, rp42, rp41, rp54, rp53, rp52, rp51, + rp64, rp63, rp62, rp61) +end + +function DPRKN6ConstantCache(T::Type, T2::Type) + R = sqrt(big(8581)) + c1 = convert(T2, (209 - R) / 900) + c2 = convert(T2, (209 - R) / 450) + c3 = convert(T2, (209 + R) / 450) + c4 = convert(T2, 9 // 10) + c5 = convert(T2, 1) + a21 = convert(T, (26131 - 209R) / 81_0000) + a31 = convert(T, (26131 - 209R) / 60_7500) + a32 = convert(T, (26131 - 209R) / 30_3750) + a41 = convert(T, (980403512254 + 7781688431R) / 116944_6992_1875) + a42 = convert(T, -(126288_4486208 + 153854_81287R) / 116944_6992_1875) + a43 = convert(T, (7166_233_891_441 + 786_945_632_99R) / 46_777_879_687_500) + a51 = convert(T, -9(329260 + 3181R) / 2704_0000) + a52 = convert(T, 27(35129 + 3331R) / 1352_0000) + a53 = convert(T, -27(554358343 + 31040327R) / 46406048_0000) + a54 = convert(T, 153(8555_257 - 67973R) / 274592_0000) + a61 = convert(T, 329 // 4212) + # a62 = convert(T,0) + a63 = convert(T, (8411_9543 + 366_727R) / 4096_22616) + a64 = convert(T, (8411_9543 - 366_727R) / 4096_22616) + a65 = convert(T, 200 // 17901) + b1 = convert(T, 329 // 4212) + # b2 = convert(T,0) + b3 = a63 + b4 = a64 + b5 = convert(T, 200 // 17901) + # b6 = convert(T,0) + bp1 = b1 + # bp2 = b2 + bp3 = convert(T, (389225579 + 96856R) / 10_2405_6540) + bp4 = convert(T, (389225579 - 96856R) / 10_2405_6540) + bp5 = convert(T, 2000 // 17901) + bp6 = convert(T, 1 // 20) + btilde1 = convert(T, 329 // 4212 - (2701 + 23R) / 4563) + btilde2 = convert(T, (9829 + 131R) / 9126) + btilde3 = convert(T, (8411_9543 + 366_727R) / 4096_22616 - 5(1798 + 17R) / 9126) + btilde4 = b4 + btilde5 = b5 + # btilde6 = convert(T,0) + bptilde1 = convert(T, 329 // 4212 - 115 // 2106) + # btildep2 = convert(T,0) + bptilde3 = convert(T, + (389225579 + 96856R) / 10_2405_6540 - + (8411_9543 + 366_727R) / 2560_14135) + bptilde4 = convert(T, + (389225579 - 96856R) / 10_2405_6540 - + (8411_9543 - 366_727R) / 2560_14135) + bptilde5 = convert(T, 2000 // 17901 - 6950 // 17901) + bptilde6 = convert(T, 1 // 20 + 1 // 10) + r14 = convert(T, 900 // 4212) + r13 = convert(T, -3819 // 4212) + r12 = convert(T, 6386 // 4212) + r11 = convert(T, -5244 // 4212) + r10 = convert(T, 2106 // 4212) + r34 = convert(T, 1800 * (5860823 - 152228R) / 22529243880) + r33 = convert(T, -6 * (4929647204 - 156109769R) / 22529243880) + r32 = convert(T, (22190560391 - 1109665151R) / 22529243880) + r31 = convert(T, 18 * (81356461 + 25954829R) / 22529243880) + r44 = convert(T, 1800 * (5860823 + 152228R) / 22529243880) + r43 = convert(T, -6 * (4929647204 + 156109769R) / 22529243880) + r42 = convert(T, (22190560391 + 1109665151R) / 22529243880) + r41 = convert(T, 18 * (81356461 - 25954829R) / 22529243880) + r54 = convert(T, -200 * 225 // 17901) + r53 = convert(T, 200 * 651 // 17901) + r52 = convert(T, -200 * 620 // 17901) + r51 = convert(T, 200 * 195 // 17901) + r64 = convert(T, 15 // 11) + r63 = convert(T, -823 // 220) + r62 = convert(T, 757 // 220) + r61 = convert(T, -117 // 110) + rp14 = convert(T, 5400 // 4212) + rp13 = convert(T, -19095 // 4212) + rp12 = convert(T, 25544 // 4212) + rp11 = convert(T, -15732 // 4212) + rp10 = convert(T, 1) + rp34 = convert(T, 5400 * (5860823 - 152228R) / 11264621940) + rp33 = convert(T, -15 * (4929647204 - 156109769R) / 11264621940) + rp32 = convert(T, 2 * (22190560391 - 1109665151R) / 11264621940) + rp31 = convert(T, 27 * (81356461 + 25954829R) / 11264621940) + rp44 = convert(T, 5400 * (5860823 + 152228R) / 11264621940) + rp43 = convert(T, -15 * (4929647204 + 156109769R) / 11264621940) + rp42 = convert(T, 2 * (22190560391 + 1109665151R) / 11264621940) + rp41 = convert(T, 27 * (81356461 - 25954829R) / 11264621940) + rp54 = convert(T, -1000 * 270 // 17901) + rp53 = convert(T, 1000 * 651 // 17901) + rp52 = convert(T, -1000 * 496 // 17901) + rp51 = convert(T, 1000 * 117 // 17901) + rp64 = convert(T, 1800 // 220) + rp63 = convert(T, -4115 // 220) + rp62 = convert(T, 3028 // 220) + rp61 = convert(T, -702 // 220) + DPRKN6ConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, + a52, a53, a54, a61, a63, a64, a65, b1, b3, b4, b5, bp1, + bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, + btilde5, bptilde1, bptilde3, bptilde4, bptilde5, bptilde6, + r14, r13, r12, r11, r10, r34, r33, r32, r31, r44, r43, r42, r41, + r54, + r53, r52, r51, r64, r63, r62, r61, rp14, rp13, rp12, rp11, rp10, + rp34, + rp33, rp32, rp31, rp44, rp43, rp42, rp41, rp54, rp53, rp52, rp51, + rp64, rp63, rp62, rp61) +end + +struct DPRKN6FMConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + a61::T + a62::T + a63::T + a64::T + a65::T + b1::T + b2::T + b3::T + b4::T + b5::T + # b6::T + bp1::T # bp denotes bprime + bp2::T + bp3::T + bp4::T + bp5::T + bp6::T + btilde1::T + btilde2::T + btilde3::T + btilde4::T + btilde5::T + # btilde6::T + bptilde1::T + bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T + # bptilde6::T +end + +function DPRKN6FMConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 10) + c2 = convert(T2, 3 // 10) + c3 = convert(T2, 7 // 10) + c4 = convert(T2, 17 // 25) + c5 = convert(T2, 1) + a21 = convert(T, 1 // 200) + a31 = convert(T, -1 // 2200) + a32 = convert(T, 1 // 22) + a41 = convert(T, 637 // 6600) + a42 = convert(T, -7 // 110) + a43 = convert(T, 7 // 33) + a51 = convert(T, 225437 // 1968750) + a52 = convert(T, -30073 // 281250) + a53 = convert(T, 65569 // 281250) + a54 = convert(T, -9367 // 984375) + a61 = convert(T, 151 // 2142) + a62 = convert(T, 5 // 116) + a63 = convert(T, 385 // 1368) + a64 = convert(T, 55 // 168) + a65 = convert(T, -6250 // 28101) + b1 = convert(T, 151 // 2142) + b2 = convert(T, 5 // 116) + b3 = convert(T, 385 // 1368) + b4 = convert(T, 55 // 168) + b5 = convert(T, -6250 // 28101) + # b6 = convert(T, 0) + bp1 = convert(T, 151 // 2142) + bp2 = convert(T, 25 // 522) + bp3 = convert(T, 275 // 684) + bp4 = convert(T, 275 // 252) + bp5 = convert(T, -78125 // 112404) + bp6 = convert(T, 1 // 12) + btilde1 = convert(T, 151 // 2142 - 1349 // 157500) + btilde2 = convert(T, 5 // 116 - 7873 // 50000) + btilde3 = convert(T, 385 // 1368 - 192199 // 900000) + btilde4 = convert(T, 55 // 168 - 521683 // 2100000) + btilde5 = convert(T, -6250 // 28101 + 16 // 125) + # btilde6 = convert(T, 0) + bptilde1 = convert(T, 151 // 2142 - 1349 // 157500) + bptilde2 = convert(T, 25 // 522 - 7873 // 45000) + bptilde3 = convert(T, 275 // 684 - 27457 // 90000) + bptilde4 = convert(T, 275 // 252 - 521683 // 630000) + bptilde5 = convert(T, -78125 // 112404 + 2 // 5) + # bptilde6 = convert(T, 0) + DPRKN6FMConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, + a53, a54, a61, a62, a63, a64, a65, b1, b2, b3, b4, b5, bp1, bp2, + bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, + bptilde1, bptilde2, bptilde3, bptilde4, bptilde5) +end + +function DPRKN6FMConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.1) + c2 = convert(T2, 0.3) + c3 = convert(T2, 0.7) + c4 = convert(T2, 0.68) + c5 = convert(T2, 1.0) + a21 = convert(T, 0.005) + a31 = convert(T, -0.00045454545454545455) + a32 = convert(T, 0.045454545454545456) + a41 = convert(T, 0.09651515151515151) + a42 = convert(T, -0.06363636363636363) + a43 = convert(T, 0.21212121212121213) + a51 = convert(T, 0.11450768253968253) + a52 = convert(T, -0.10692622222222223) + a53 = convert(T, 0.23313422222222221) + a54 = convert(T, -0.00951568253968254) + a61 = convert(T, 0.07049486461251167) + a62 = convert(T, 0.04310344827586207) + a63 = convert(T, 0.2814327485380117) + a64 = convert(T, 0.3273809523809524) + a65 = convert(T, -0.22241201380733783) + b1 = convert(T, 0.07049486461251167) + b2 = convert(T, 0.04310344827586207) + b3 = convert(T, 0.2814327485380117) + b4 = convert(T, 0.3273809523809524) + b5 = convert(T, -0.22241201380733783) + bp1 = convert(T, 0.07049486461251167) + bp2 = convert(T, 0.04789272030651341) + bp3 = convert(T, 0.402046783625731) + bp4 = convert(T, 1.0912698412698412) + bp5 = convert(T, -0.6950375431479306) + bp6 = convert(T, 0.08333333333333333) + btilde1 = convert(T, 0.061929785247432305) + btilde2 = convert(T, -0.11435655172413792) + btilde3 = convert(T, 0.06787830409356727) + btilde4 = convert(T, 0.07896047619047619) + btilde5 = convert(T, -0.09441201380733782) + bptilde1 = convert(T, 0.061929785247432305) + bptilde2 = convert(T, -0.12706283524904216) + bptilde3 = convert(T, 0.0969690058479532) + bptilde4 = convert(T, 0.26320158730158716) + bptilde5 = convert(T, -0.2950375431479306) + DPRKN6FMConstantCache(c1, c2, c3, c4, c5, a21, a31, a32, a41, a42, a43, a51, a52, + a53, a54, a61, a62, a63, a64, a65, b1, b2, b3, b4, b5, bp1, bp2, + bp3, bp4, bp5, bp6, btilde1, btilde2, btilde3, btilde4, btilde5, + bptilde1, bptilde2, bptilde3, bptilde4, bptilde5) +end + +struct DPRKN8ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + a51::T + a52::T + a53::T + a54::T + a61::T + a62::T + a63::T + a64::T + a65::T + a71::T + a72::T + a73::T + a74::T + a75::T + a76::T + a81::T + a82::T + a83::T + a84::T + a85::T + a86::T + a87::T + a91::T + # a92::T + a93::T + a94::T + a95::T + a96::T + a97::T + # a98::T + b1::T + # b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + # b8::T + # b9::T + bp1::T + # bp2::T + bp3::T + bp4::T + bp5::T + bp6::T + bp7::T + bp8::T + # bp9::T + btilde1::T + # btilde2::T + btilde3::T + btilde4::T + btilde5::T + btilde6::T + btilde7::T + # btilde8::T + # btilde9::T + bptilde1::T + # bptilde2::T + bptilde3::T + bptilde4::T + bptilde5::T + bptilde6::T + bptilde7::T + bptilde8::T + bptilde9::T +end + +function DPRKN8ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 20) + c2 = convert(T2, 1 // 10) + c3 = convert(T2, 3 // 10) + c4 = convert(T2, 1 // 2) + c5 = convert(T2, 7 // 10) + c6 = convert(T2, 9 // 10) + c7 = convert(T2, 1) + c8 = convert(T2, 1) + a21 = convert(T, 1 // 800) + a31 = convert(T, 1 // 600) + a32 = convert(T, 1 // 300) + a41 = convert(T, 9 // 200) + a42 = convert(T, -9 // 100) + a43 = convert(T, 9 // 100) + a51 = convert(T, -66701 // 197352) + a52 = convert(T, 28325 // 32892) + a53 = convert(T, -2665 // 5482) + a54 = convert(T, 2170 // 24669) + a61 = convert(T, 2270_15747 // 30425_1000) + a62 = convert(T, -5489_7451 // 30425_100) + a63 = convert(T, 12942_349 // 10141_700) + a64 = convert(T, -9499 // 304_251) + a65 = convert(T, 539 // 9250) + a71 = convert(T, -11318_91597 // 9017_89000) + a72 = convert(T, 4196_4921 // 1288_2700) + a73 = convert(T, -6663_147 // 3220_675) + a74 = convert(T, 270_954 // 644_135) + a75 = convert(T, -108 // 5875) + a76 = convert(T, 114 // 1645) + a81 = convert(T, 138_369_59 // 3667458) + a82 = convert(T, -177_314_50 // 1833729) + a83 = convert(T, 106_3919_505 // 15647_8208) + a84 = convert(T, -332_138_45 // 3911_9552) + a85 = convert(T, 133_35 // 285_44) + a86 = convert(T, -705 // 14272) + a87 = convert(T, 1645 // 57088) + a91 = convert(T, 223 // 7938) + # a92 = convert(T,0) + a93 = convert(T, 1175 // 8064) + a94 = convert(T, 925 // 6048) + a95 = convert(T, 41 // 448) + a96 = convert(T, 925 // 14112) + a97 = convert(T, 1175 // 72576) + # a98 = convert(T,0) + b1 = convert(T, 223 // 7938) + # b2 = convert(T,0) + b3 = convert(T, 1175 // 8064) + b4 = convert(T, 925 // 6048) + b5 = convert(T, 41 // 448) + b6 = convert(T, 925 // 14112) + b7 = convert(T, 1175 // 72576) + # b8 = convert(T,0) + # b9 = convert(T,0) + bp1 = convert(T, 223 // 7938) + # bp2 = convert(T,0) + bp3 = convert(T, 5875 // 36288) + bp4 = convert(T, 4625 // 21168) + bp5 = convert(T, 41 // 224) + bp6 = convert(T, 4625 // 21168) + bp7 = convert(T, 5875 // 36288) + bp8 = convert(T, 223 // 7938) + # bp9 = convert(T,0) + btilde1 = convert(T, 223 // 7938 - 7987_313 // 10994_1300) + # btilde2 = convert(T,0) + btilde3 = convert(T, 1175 // 8064 - 1610_737 // 4467_4560) + btilde4 = convert(T, 925 // 6048 - 10023_263 // 3350_5920) + btilde5 = convert(T, 41 // 448 + 497_221 // 1240_9600) + btilde6 = convert(T, 925 // 14112 - 1002_3263 // 7818_0480) + btilde7 = convert(T, 1175 // 72576 - 1610_737 // 40207_1040) + # btilde8 = convert(T,0) + # btilde9 = convert(T,0) + bptilde1 = convert(T, 223 // 7938 - 7987_313 // 10994_1300) + # bptilde2 = convert(T,0) + bptilde3 = convert(T, 5875 // 36288 - 1610_737 // 4020_7104) + bptilde4 = convert(T, 4625 // 21168 - 1002_3263 // 2345_4144) + bptilde5 = convert(T, 41 // 224 + 497_221 // 620_4800) + bptilde6 = convert(T, 4625 // 21168 - 1002_3263 // 2345_4144) + bptilde7 = convert(T, 5875 // 36288 - 1610_737 // 40207_104) + bptilde8 = convert(T, 223 // 7938 + 4251_941 // 5497_0650) + bptilde9 = convert(T, -3 // 20) + DPRKN8ConstantCache(c1, c2, c3, c4, c5, c6, c7, c8, a21, a31, a32, a41, a42, a43, a51, + a52, a53, a54, a61, a62, a63, a64, a65, a71, a72, a73, a74, a75, + a76, a81, a82, a83, a84, a85, a86, a87, a91, a93, a94, a95, a96, + a97, b1, b3, b4, b5, b6, b7, bp1, bp3, bp4, bp5, bp6, bp7, bp8, + btilde1, btilde3, btilde4, btilde5, btilde6, btilde7, bptilde1, + bptilde3, bptilde4, bptilde5, bptilde6, bptilde7, bptilde8, + bptilde9) +end + +function DPRKN8ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + DPRKN8ConstantCache(convert(T2, 0.05), + convert(T2, 0.1), + convert(T2, 0.3), + convert(T2, 0.5), + convert(T2, 0.7), + convert(T2, 0.9), + convert(T2, 1.0), + convert(T2, 1.0), + convert(T, 0.00125), + convert(T, 0.0016666666666666668), + convert(T, 0.0033333333333333335), + convert(T, 0.045), + convert(T, -0.09), + convert(T, 0.09), + convert(T, -0.3379798532571243), + convert(T, 0.8611516478170984), + convert(T, -0.48613644655235316), + convert(T, 0.0879646519923791), + convert(T, 0.7461462641043086), + convert(T, -1.804347430246737), + convert(T, 1.2761518285888953), + convert(T, -0.031220932716737166), + convert(T, 0.05827027027027027), + convert(T, -1.2551623461807584), + convert(T, 3.257463187064823), + convert(T, -2.068866619575089), + convert(T, 0.4206478455603251), + convert(T, -0.018382978723404254), + convert(T, 0.06930091185410335), + convert(T, 3.772901830095941), + convert(T, -9.669613121677195), + convert(T, 6.7991544547851674), + convert(T, -0.8490343907823893), + convert(T, 0.4671734865470852), + convert(T, -0.04939742152466368), + convert(T, 0.028815162556053812), + convert(T, 0.028092718568909044), + convert(T, 0.1457093253968254), + convert(T, 0.1529431216931217), + convert(T, 0.09151785714285714), + convert(T, 0.06554705215419501), + convert(T, 0.01618992504409171), + convert(T, 0.028092718568909044), + convert(T, 0.1457093253968254), + convert(T, 0.1529431216931217), + convert(T, 0.09151785714285714), + convert(T, 0.06554705215419501), + convert(T, 0.01618992504409171), + convert(T, 0.028092718568909044), + convert(T, 0.1618992504409171), + convert(T, 0.2184901738473167), + convert(T, 0.18303571428571427), + convert(T, 0.2184901738473167), + convert(T, 0.1618992504409171), + convert(T, 0.028092718568909044), + convert(T, -0.044557986852984274), + convert(T, 0.10965442077101599), + convert(T, -0.14620589436135464), + convert(T, 0.1315853049252192), + convert(T, -0.06265966901200913), + convert(T, 0.012183824530112887), + convert(T, -0.044557986852984274), + convert(T, 0.12183824530112887), + convert(T, -0.2088655633733638), + convert(T, 0.2631706098504384), + convert(T, -0.2088655633733638), + convert(T, 0.12183824530112887), + convert(T, 0.10544201314701572), + convert(T, -0.15)) +end + +struct DPRKN12ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + c12::T2 + c13::T2 + c14::T2 + c15::T2 + c16::T2 + a21::T + a31::T + a32::T + a41::T + a42::T + a43::T + a51::T + # a52::T + a53::T + a54::T + a61::T + # a62::T + a63::T + a64::T + a65::T + a71::T + # a72::T + a73::T + a74::T + a75::T + a76::T + a81::T + # a82::T + # a83::T + a84::T + a85::T + a86::T + a87::T + a91::T + # a92::T + a93::T + a94::T + a95::T + a96::T + a97::T + a98::T + a101::T + # a102::T + a103::T + a104::T + a105::T + a106::T + a107::T + a108::T + a109::T + a111::T + # a112::T + a113::T + a114::T + a115::T + a116::T + a117::T + a118::T + a119::T + a1110::T + a121::T + # a122::T + a123::T + a124::T + a125::T + a126::T + a127::T + a128::T + a129::T + a1210::T + a1211::T + a131::T + # a132::T + a133::T + a134::T + a135::T + a136::T + a137::T + a138::T + a139::T + a1310::T + a1311::T + a1312::T + a141::T + # a142::T + a143::T + a144::T + a145::T + a146::T + a147::T + a148::T + a149::T + a1410::T + a1411::T + a1412::T + a1413::T + a151::T + # a152::T + a153::T + a154::T + a155::T + a156::T + a157::T + a158::T + a159::T + a1510::T + a1511::T + a1512::T + a1513::T + a1514::T + a161::T + # a162::T + a163::T + a164::T + a165::T + a166::T + a167::T + a168::T + a169::T + a1610::T + a1611::T + a1612::T + a1613::T + a1614::T + a1615::T + a171::T + # a172::T + a173::T + a174::T + a175::T + a176::T + a177::T + a178::T + a179::T + a1710::T + a1711::T + a1712::T + a1713::T + a1714::T + a1715::T + # a1716::T + b1::T + # b2::T + # b3::T + # b4::T + # b5::T + # b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + # b16::T + # b17::T + bp1::T + # bp2::T + # bp3::T + # bp4::T + # bp5::T + # bp6::T + bp7::T + bp8::T + bp9::T + bp10::T + bp11::T + bp12::T + bp13::T + bp14::T + bp15::T + bp16::T + bp17::T + btilde1::T + # btilde2::T + # btilde3::T + # btilde4::T + # btilde5::T + # btilde6::T + btilde7::T + btilde8::T + btilde9::T + btilde10::T + btilde11::T + btilde12::T + btilde13::T + btilde14::T + btilde15::T + # btilde16::T + # btilde17::T + bptilde1::T + # bptilde2::T + # bptilde3::T + # bptilde4::T + # bptilde5::T + # bptilde6::T + bptilde7::T + bptilde8::T + bptilde9::T + bptilde10::T + bptilde11::T + bptilde12::T + bptilde13::T + bptilde14::T + bptilde15::T + bptilde16::T + bptilde17::T +end + +function DPRKN12ConstantCache(T::Type, T2::Type) + c1 = convert(T2, 1 // 50) + c2 = convert(T2, 1 // 25) + c3 = convert(T2, 1 // 10) + c4 = convert(T2, 2 // 15) + c5 = convert(T2, 4 // 25) + c6 = convert(T2, 1 // 20) + c7 = convert(T2, 1 // 5) + c8 = convert(T2, 1 // 4) + c9 = convert(T2, 1 // 3) + c10 = convert(T2, 1 // 2) + c11 = convert(T2, 5 // 9) + c12 = convert(T2, 3 // 4) + c13 = convert(T2, 6 // 7) + c14 = convert(T2, 8437 // 8926) + c15 = convert(T2, 1) + c16 = convert(T2, 1) + a21 = convert(T, 1 // 5000) + a31 = convert(T, 1 // 3750) + a32 = convert(T, 1 // 1875) + a41 = convert(T, 7 // 2400) + a42 = convert(T, -1 // 240) + a43 = convert(T, 1 // 160) + a51 = convert(T, 2 // 1215) + # a52 = convert(T,0) + a53 = convert(T, 4 // 729) + a54 = convert(T, 32 // 18225) + a61 = convert(T, 152 // 78125) + # a62 = convert(T,0) + a63 = convert(T, 1408 // 196875) + a64 = convert(T, 2048 // 703125) + a65 = convert(T, 432 // 546875) + a71 = convert(T, 29 // 51200) + # a72 = convert(T,0) + a73 = convert(T, 341 // 387072) + a74 = convert(T, -151 // 345600) + a75 = convert(T, 243 // 716800) + a76 = convert(T, -11 // 110592) + a81 = convert(T, 37 // 12000) + # a82 = convert(T,0) + # a83 = convert(T,0) + a84 = convert(T, 2 // 1125) + a85 = convert(T, 27 // 10000) + a86 = convert(T, 5 // 3168) + a87 = convert(T, 224 // 20625) + a91 = convert(T, 100467472123373 // 27511470744477696) + # a92 = convert(T,0) + a93 = convert(T, 101066550784375 // 25488568483854336) + a94 = convert(T, 49478218404275 // 15475202293768704) + a95 = convert(T, 21990175014231 // 2674726322379776) + a96 = convert(T, -3576386017671875 // 2723635603703291904) + a97 = convert(T, 16163228153 // 1654104722787) + a98 = convert(T, 38747524076705 // 10316801529179136) + a101 = convert(T, 62178936641284701329 // 16772293867250014666848) + # a102 = convert(T,0) + a103 = convert(T, 46108564356250 // 9072835168325103) + a104 = convert(T, 1522561724950 // 1296119309760729) + a105 = convert(T, -45978886013453735443 // 2174186242050927827184) + a106 = convert(T, 299403512366617849203125 // 4981371278573254356053856) + a107 = convert(T, 15571226634087127616 // 774466927638876610083) + a108 = convert(T, -133736375367792139885 // 4717207650164066625051) + a109 = convert(T, 7461389216 // 501451974639) + a111 = convert(T, 501256914705531962342417557181 // 14270506505142656332600844507392) + # a112 = convert(T,0) + a113 = convert(T, -1143766215625 // 132752960853408) + a114 = convert(T, -6864570325 // 1185294293334) + a115 = convert(T, 194348369382310456605879163404183 // 99893545535998594328205911551744) + a116 = convert(T, + -94634958447010580589908066176109375 // + 27549212808177898050085930321520256) + a117 = convert(T, -17006472665356285286219618514 // 155584463413110817059022733377) + a118 = convert(T, 33530528814694461893884349656345 // 14270506505142656332600844507392) + a119 = convert(T, -13439782155791134368 // 17777268379678341919) + a1110 = convert(T, 1441341768767571 // 13159456712985856) + a121 = convert(T, + parse(BigInt, "105854110734231079069010159870911189747853") // + parse(BigInt, "5156624149476760916008179453333467046288864")) + # a122 = convert(T,0) + a123 = convert(T, -144579793509250000 // 19842290513127000261) + a124 = convert(T, -101935644099967250 // 48188419817594143491) + a125 = convert(T, + parse(BigInt, "1585474394319811696785932424388196965") // + parse(BigInt, "1709257457318830856936350991091849456")) + a126 = convert(T, + parse(BigInt, "-843499776333774172853009613469456309715703125") // + parse(BigInt, "510505790798199330684809765880013237582597536")) + a127 = convert(T, + parse(BigInt, "-15057703799298260121553794369056896088480") // + parse(BigInt, "714327132646734138085088291809720015274157")) + a128 = convert(T, + parse(BigInt, "1749840442221344572962864758990584360232600") // + parse(BigInt, "1450300542040339007627300471250037606768743")) + a129 = convert(T, -11255775246405733991656178432768 // 27206626483067760480757659602193) + a1210 = convert(T, 669010348769579696 // 7368057640845834597) + a1211 = convert(T, 4598083098752 // 858563707934367) + a131 = convert(T, + parse(BigInt, "-1639758773684715326849438048667467886824967397") // + parse(BigInt, "11447568726280607813664651120965112496134881280")) + # a132 = convert(T,0) + a133 = convert(T, 3942453384375 // 314673684985856) + a134 = convert(T, 11737114158175 // 1719466921529856) + a135 = convert(T, + -23710715033675876683332701739887457 // + 4940189888325748664958546898558976) + a136 = convert(T, + parse(BigInt, "498150575499633273684774666731162498301909124515625") // + parse(BigInt, "87415924307623977386706008889913792042985180430336")) + a137 = convert(T, + parse(BigInt, "64881557768202140428371179540010005713998551") // + parse(BigInt, "85896810580242200654071863296887242202224768")) + a138 = convert(T, + parse(BigInt, "-2336309182318568698279006266321563486172654055") // + parse(BigInt, "18316109962048972501863441793544179993815810048")) + a139 = convert(T, + -493399374030747471036018890494175 // 251658285736841065236836942273664) + a1310 = convert(T, 418285003077108927126515545155 // 455369916679568501838710898688) + a1311 = convert(T, -15171723902781457 // 63532954684873728) + a1312 = convert(T, 1501203688494867 // 9434957026426880) + a141 = convert(T, + parse(BigInt, "34188549803371802849576690267872548602326398788953") // + parse(BigInt, "42496542183406636759747616530102745233754251202880")) + # a142 = convert(T,0) + a143 = convert(T, -18971246281693750 // 1138830954584356089) + a144 = convert(T, -59230464334542700 // 2765732318276293359) + a145 = convert(T, + parse(BigInt, "5147939981309774383134903239728881770043") // + parse(BigInt, "305929030949718561059100251282184099064")) + a146 = convert(T, + parse(BigInt, + "-3625720213550267723370658302114678215563058405229078120") // + parse(BigInt, "324512095420929759624784749347170583153994213035432256")) + a147 = convert(T, + parse(BigInt, "-60305503318319653518547439098565661266182518307816") // + parse(BigInt, "17856872599361492097414471889911176856851308259643")) + a148 = convert(T, + parse(BigInt, "-1036461878759982363277481306266144563833492657780645") // + parse(BigInt, "67994467493450618815596186448164392374006801924608")) + a149 = convert(T, + parse(BigInt, "128398681100219349205889126776607047000") // + parse(BigInt, "7473801441221286756994805323613917077")) + a1410 = convert(T, -49156374556350058671822606102117 // 9039888303968618912866414995904) + a1411 = convert(T, 12253036339964386945 // 8828680926314891943) + a1412 = convert(T, -647188390508758231059 // 1092148506009694282240) + a1413 = convert(T, 10915833599872 // 368729913707897) + a151 = convert(T, + parse(BigInt, + "-4939337286263213195547765488387521892799075623007291241961609516532") // + parse(BigInt, + "5408250052307451520718178852915698257207815452080611897685945761264")) + # a152 = convert(T,0) + a153 = convert(T, + 7588799849596321243074032368290625 // + parse(BigInt, "3147217749590114939838670370597819616")) + a154 = convert(T, + 16870665568420512953501332587233725 // + 955405388268427749593882076788623812) + a155 = convert(T, + parse(BigInt, + "-808642515918378014850308582271476014669568437579087796060") // + parse(BigInt, + "54447992506702009927986632715967769032585338753056786562")) + a156 = convert(T, + parse(BigInt, + "4610328329649866588704236006423149172472141907645890762410296050212") // + parse(BigInt, + "2135428689710103309390449198881479603148467934048051598947383737508")) + a157 = convert(T, + parse(BigInt, + "4159963831215576225909381034291748993887819834160487158570788681") // + parse(BigInt, + "1040533184037697645660563795162185415624171583014576682740416336")) + a158 = convert(T, + parse(BigInt, + "7381392142124351279433801934148706553542137071890521365664606664449580") // + parse(BigInt, + "259596002510757672994472584939953516345975141699869371088925396540699")) + a159 = convert(T, + parse(BigInt, + "-3336834334584052813468828675971359774694437229547862706920") // + parse(BigInt, + "132102862435303266640535426836147775872819092781208127980")) + a1510 = convert(T, + parse(BigInt, + "426619379967412086875039012957475466130081426048213491790") // + parse(BigInt, + "55162410119399855550108207148248549410926885937244965785")) + a1511 = convert(T, + parse(BigInt, "-630755628691078947314733435975762542732598947") // + parse(BigInt, "333503232300511886435069380727586592765317456")) + a1512 = convert(T, + parse(BigInt, "1522350657470125698997653827133798314909646891") // + parse(BigInt, "1520094067152619944607524353149267399623188480")) + a1513 = convert(T, + 305575414262755427083262606101825880 // + parse(BigInt, "65839748482572312891297405431209259829")) + a1514 = convert(T, + parse(BigInt, "256624643108055110568255672032710477795") // + parse(BigInt, "22874609758516552135947898572671559986304")) + a161 = convert(T, + parse(BigInt, + "-571597862947184314270186718640978947715678864684269066846") // + parse(BigInt, + "2077055064880303907616135969012720011907767004397744786340")) + # a162 = convert(T,0) + a163 = convert(T, 66981514290625 // 1829501741761029) + a164 = convert(T, 43495576635800 // 4443075658562499) + a165 = convert(T, + -127865248353371207265315478623656127 // + 10401415428935853634424440540325344) + a166 = convert(T, + parse(BigInt, + "1316565142658075739557231574080234814338066993483960326560") // + parse(BigInt, + "92668695535091962564795912774190176478892159517481612467")) + a167 = convert(T, + parse(BigInt, + "3881494143728609118531066904799685950051960514138645179820") // + parse(BigInt, + "2446349095978358868919950548516272963929118212742344026549")) + a168 = convert(T, + parse(BigInt, + "162922667049680755852592453758428194006198229544701786842910") // + parse(BigInt, + "66288722243155885736983218667976563740242178853010092663614")) + a169 = convert(T, + parse(BigInt, "-43986024977384568043684084266385512680544563954") // + parse(BigInt, "4922783599524658241955780540171948284522386185")) + a1610 = convert(T, + parse(BigInt, "285912200202585226675651763671663063668290787") // + parse(BigInt, "65371192072964016939690070594254881767827200")) + a1611 = convert(T, -6776815256667778089672518929 // 3693654613173093729492918708) + a1612 = convert(T, + 398946554885847045598775476868169 // 344154261237450078839899047372800) + a1613 = convert(T, -76630698033396272 // 4432017119727044925) + a1614 = convert(T, 28401702316003037 // 1469612686944417840) + a1615 = convert(T, + 66049942462586341419969330578128801 // + parse(BigInt, "12691068622536592094919763114637498325")) + a171 = convert(T, + parse(BigInt, + "83940754497395557520874219603241359529066454343054832302344735") // + parse(BigInt, + "64192596456995578553872477759926464976144474354415663868673233")) + # a172 = convert(T,0) + a173 = convert(T, 892543892035485503125 // 51401651664490002607536) + a174 = convert(T, -12732238157949399705325 // 686579204375687891972088) + a175 = convert(T, + parse(BigInt, "5290376174838819557032232941734928484252549") // + parse(BigInt, "357179779572898187570048915214361602000384")) + a176 = convert(T, + parse(BigInt, + "26873229338017506937199991804717456666650215387938173031932210") // + parse(BigInt, + "2863980005760296740624015421425947092438943496681472214589916")) + a177 = convert(T, + parse(BigInt, + "-1976497866818803305857417297961598735637414137241493515492778650") // + parse(BigInt, + "378029217824623393200881653405474359138017953416246216408422692")) + a178 = convert(T, + parse(BigInt, + "-1002860756304839757040188283199900676042073362417943601440986856950") // + parse(BigInt, + "20486915674765670626893195919603679319429068544972409068469849579")) + a179 = convert(T, + parse(BigInt, + "87398661196965758104117684348440686081062878816711392590") // + parse(BigInt, "2282122412587168891929052689609009868137678763277087160")) + a1710 = convert(T, + parse(BigInt, + "-7922242431969626895355493632206885458496418610471389") // + parse(BigInt, "748272134517487495468365669337985635214015258726400")) + a1711 = convert(T, + parse(BigInt, "2777643183645212014464950387658055285") // + parse(BigInt, "1141545470045611737197667093465955392")) + a1712 = convert(T, + parse(BigInt, "-1372659703515496442825084239977218110461") // + parse(BigInt, "1313121960368535725613950174847107891200")) + a1713 = convert(T, 6144417902699179309851023 // 85608793932459282773805825) + a1714 = convert(T, 140294243355138853053241 // 64884622846351585391642880) + a1715 = convert(T, + parse(BigInt, "168671028523891369934964082754523881107337") // + parse(BigInt, "24062875279623260368388427013982199424119600")) + # a1716 = convert(T,0) + b1 = convert(T, 63818747 // 5262156900) + # b2 = convert(T,0) + # b3 = convert(T,0) + # b4 = convert(T,0) + # b5 = convert(T,0) + # b6 = convert(T,0) + b7 = convert(T, 22555300000000 // 261366897038247) + b8 = convert(T, 1696514453125 // 6717619827072) + b9 = convert(T, -45359872 // 229764843) + b10 = convert(T, 19174962087 // 94371046000) + b11 = convert(T, -19310468 // 929468925) + b12 = convert(T, 16089185487681 // 146694672924800) + b13 = convert(T, 1592709632 // 41841694125) + b14 = convert(T, 52675701958271 // 4527711056573100) + b15 = convert(T, + parse(BigInt, "12540904472870916741199505796420811396") // + parse(BigInt, "2692319557780977037279406889319526430375")) + # b16 = convert(T,0) + # b17 = convert(T,0) + bp1 = convert(T, 63818747 // 5262156900) + # bp2 = convert(T,0) + # bp3 = convert(T,0) + # bp4 = convert(T,0) + # bp5 = convert(T,0) + # bp6 = convert(T,0) + bp7 = convert(T, 451106000000000 // 4965971043726693) + bp8 = convert(T, 8482572265625 // 26870479308288) + bp9 = convert(T, -181439488 // 689294529) + bp10 = convert(T, 57524886261 // 188742092000) + bp11 = convert(T, -38620936 // 929468925) + bp12 = convert(T, 144802669389129 // 586778691699200) + bp13 = convert(T, 6370838528 // 41841694125) + bp14 = convert(T, 368729913707897 // 4527711056573100) + bp15 = convert(T, + parse(BigInt, "111940113324845802831946788738852162520696") // + parse(BigInt, "1316544263754897771229629968877248424453375")) + bp16 = convert(T, -113178587 // 12362232960) + bp17 = convert(T, 1 // 40) + + btilde1 = convert(T, + Int64(63818747) // Int64(5262156900) - + Int64(27121957) // Int64(1594593000)) + # btilde2 = convert(T,0) + # btilde3 = convert(T,0) + # btilde4 = convert(T,0) + # btilde5 = convert(T,0) + # btilde6 = convert(T,0) + btilde7 = convert(T, + Int64(22555300000000) // Int64(261366897038247) - + Int64(4006163300000) // Int64(55441463008113)) + btilde8 = convert(T, + Int64(1696514453125) // Int64(6717619827072) - + Int64(9466403125) // Int64(25445529648)) + btilde9 = convert(T, + Int64(-45359872) // Int64(229764843) + + Int64(163199648) // Int64(406149975)) + btilde10 = convert(T, + Int64(19174962087) // Int64(94371046000) - + Int64(23359833) // Int64(69636250)) + btilde11 = convert(T, + Int64(-19310468) // Int64(929468925) + + Int64(18491714) // Int64(140828625)) + btilde12 = convert(T, + Int64(16089185487681) // Int64(146694672924800) - + Int64(11052304606701) // Int64(58344472186000)) + btilde13 = convert(T, + Int64(1592709632) // Int64(41841694125) - + Int64(1191129152) // Int64(44377554375)) + btilde14 = convert(T, + Int64(52675701958271) // Int64(4527711056573100) - + Int64(2033811086741) // Int64(124730332137000)) + btilde15 = convert(T, + parse(BigInt, "12540904472870916741199505796420811396") // + parse(BigInt, "2692319557780977037279406889319526430375") - + parse(BigInt, "3616943474975740389660406409450169802") // + parse(BigInt, "951830146690244407118982233597812374375")) + # btilde16 = convert(T,0) + # btilde17 = convert(T,0) + bptilde1 = convert(T, + Int64(63818747) // Int64(5262156900) - + Int64(27121957) // Int64(1594593000)) + # bptilde2 = convert(T,0) + # bptilde3 = convert(T,0) + # bptilde4 = convert(T,0) + # bptilde5 = convert(T,0) + # bptilde6 = convert(T,0) + bptilde7 = convert(T, + Int64(451106000000000) // Int64(4965971043726693) - + Int64(4217014000000) // Int64(55441463008113)) + bptilde8 = convert(T, + Int64(8482572265625) // Int64(26870479308288) - + Int64(47332015625) // Int64(101782118592)) + bptilde9 = convert(T, + Int64(-181439488) // Int64(689294529) + + Int64(652798592) // Int64(1218449925)) + bptilde10 = convert(T, + Int64(57524886261) // Int64(188742092000) - + Int64(70079499) // Int64(139272500)) + bptilde11 = convert(T, + Int64(-38620936) // Int64(929468925) + + Int64(36983428) // Int64(140828625)) + bptilde12 = convert(T, + Int64(144802669389129) // Int64(586778691699200) - + Int64(99470741460309) // Int64(233377888744000)) + bptilde13 = convert(T, + Int64(6370838528) // Int64(41841694125) - + Int64(4764516608) // Int64(44377554375)) + bptilde14 = convert(T, + Int64(368729913707897) // Int64(4527711056573100) - + Int64(14236677607187) // Int64(124730332137000)) + bptilde15 = convert(T, + parse(BigInt, "111940113324845802831946788738852162520696") // + parse(BigInt, "1316544263754897771229629968877248424453375") - + parse(BigInt, "198066487470143918516004831967805004004") // + parse(BigInt, "2855490440070733221356946700793437123125")) + bptilde16 = convert(T, Int64(-113178587) // Int64(12362232960) - Int64(1) // Int64(50)) + bptilde17 = convert(T, 1 // 40) + DPRKN12ConstantCache(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, + c16, a21, a31, a32, a41, a42, a43, a51, a53, a54, a61, a63, a64, + a65, a71, a73, a74, a75, a76, a81, a84, a85, a86, a87, a91, a93, + a94, a95, a96, a97, a98, a101, a103, a104, a105, a106, a107, a108, + a109, a111, a113, a114, a115, a116, a117, a118, a119, a1110, a121, + a123, a124, a125, a126, a127, a128, a129, a1210, a1211, a131, a133, + a134, a135, a136, a137, a138, a139, a1310, a1311, a1312, a141, + a143, a144, a145, a146, a147, a148, a149, a1410, a1411, a1412, + a1413, a151, a153, a154, a155, a156, a157, a158, a159, a1510, + a1511, a1512, a1513, a1514, a161, a163, a164, a165, a166, a167, + a168, a169, a1610, a1611, a1612, a1613, a1614, a1615, a171, a173, + a174, a175, a176, a177, a178, a179, a1710, a1711, a1712, a1713, + a1714, a1715, b1, b7, b8, b9, b10, b11, b12, b13, b14, b15, bp1, + bp7, bp8, bp9, bp10, bp11, bp12, bp13, bp14, bp15, bp16, bp17, + btilde1, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, + btilde13, btilde14, btilde15, bptilde1, bptilde7, bptilde8, + bptilde9, bptilde10, bptilde11, bptilde12, bptilde13, bptilde14, + bptilde15, bptilde16, bptilde17) +end + +function DPRKN12ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + DPRKN12ConstantCache(convert(T2, 2.0e-2), + convert(T2, 4.0e-2), + convert(T2, 1.0e-1), + convert(T2, 1.33333333333333333333333333333e-1), + convert(T2, 1.6e-1), + convert(T2, 5.0e-2), + convert(T2, 2.0e-1), + convert(T2, 2.5e-1), + convert(T2, 3.33333333333333333333333333333e-1), + convert(T2, 5.0e-1), + convert(T2, 5.55555555555555555555555555556e-1), + convert(T2, 7.5e-1), + convert(T2, 8.57142857142857142857142857143e-1), + convert(T2, 9.45216222272014340129957427739e-1), + convert(T2, 1.0e0), + convert(T2, 1.0e0), + convert(T, 2.0e-4), + convert(T, 2.66666666666666666666666666667e-4), + convert(T, 5.33333333333333333333333333333e-4), + convert(T, 2.91666666666666666666666666667e-3), + convert(T, -4.16666666666666666666666666667e-3), + convert(T, 6.25e-3), + convert(T, 1.64609053497942386831275720165e-3), + convert(T, 5.48696844993141289437585733882e-3), + convert(T, 1.75582990397805212620027434842e-3), + convert(T, 1.9456e-3), + convert(T, 7.15174603174603174603174603175e-3), + convert(T, 2.91271111111111111111111111111e-3), + convert(T, 7.89942857142857142857142857143e-4), + convert(T, 5.6640625e-4), + convert(T, 8.80973048941798941798941798942e-4), + convert(T, -4.36921296296296296296296296296e-4), + convert(T, 3.39006696428571428571428571429e-4), + convert(T, -9.94646990740740740740740740741e-5), + convert(T, 3.08333333333333333333333333333e-3), + convert(T, 1.77777777777777777777777777778e-3), + convert(T, 2.7e-3), + convert(T, 1.57828282828282828282828282828e-3), + convert(T, 1.08606060606060606060606060606e-2), + convert(T, 3.65183937480112971375119150338e-3), + convert(T, 3.96517171407234306617557289807e-3), + convert(T, 3.19725826293062822350093426091e-3), + convert(T, 8.22146730685543536968701883401e-3), + convert(T, -1.31309269595723798362013884863e-3), + convert(T, 9.77158696806486781562609494147e-3), + convert(T, 3.75576906923283379487932641079e-3), + convert(T, 3.70724106871850081019565530521e-3), + convert(T, 5.08204585455528598076108163479e-3), + convert(T, 1.17470800217541204473569104943e-3), + convert(T, -2.11476299151269914996229766362e-2), + convert(T, 6.01046369810788081222573525136e-2), + convert(T, 2.01057347685061881846748708777e-2), + convert(T, -2.83507501229335808430366774368e-2), + convert(T, 1.48795689185819327555905582479e-2), + convert(T, 3.51253765607334415311308293052e-2), + convert(T, -8.61574919513847910340576078545e-3), + convert(T, -5.79144805100791652167632252471e-3), + convert(T, 1.94555482378261584239438810411e0), + convert(T, -3.43512386745651359636787167574e0), + convert(T, -1.09307011074752217583892572001e-1), + convert(T, 2.3496383118995166394320161088e0), + convert(T, -7.56009408687022978027190729778e-1), + convert(T, 1.09528972221569264246502018618e-1), + convert(T, 2.05277925374824966509720571672e-2), + convert(T, -7.28644676448017991778247943149e-3), + convert(T, -2.11535560796184024069259562549e-3), + convert(T, 9.27580796872352224256768033235e-1), + convert(T, -1.65228248442573667907302673325e0), + convert(T, -2.10795630056865698191914366913e-2), + convert(T, 1.20653643262078715447708832536e0), + convert(T, -4.13714477001066141324662463645e-1), + convert(T, 9.07987398280965375956795739516e-2), + convert(T, 5.35555260053398504916870658215e-3), + convert(T, -1.43240788755455150458921091632e-1), + convert(T, 1.25287037730918172778464480231e-2), + convert(T, 6.82601916396982712868112411737e-3), + convert(T, -4.79955539557438726550216254291e0), + convert(T, 5.69862504395194143379169794156e0), + convert(T, 7.55343036952364522249444028716e-1), + convert(T, -1.27554878582810837175400796542e-1), + convert(T, -1.96059260511173843289133255423e0), + convert(T, 9.18560905663526240976234285341e-1), + convert(T, -2.38800855052844310534827013402e-1), + convert(T, 1.59110813572342155138740170963e-1), + convert(T, 8.04501920552048948697230778134e-1), + convert(T, -1.66585270670112451778516268261e-2), + convert(T, -2.1415834042629734811731437191e-2), + convert(T, 1.68272359289624658702009353564e1), + convert(T, -1.11728353571760979267882984241e1), + convert(T, -3.37715929722632374148856475521e0), + convert(T, -1.52433266553608456461817682939e1), + convert(T, 1.71798357382154165620247684026e1), + convert(T, -5.43771923982399464535413738556e0), + convert(T, 1.38786716183646557551256778839e0), + convert(T, -5.92582773265281165347677029181e-1), + convert(T, 2.96038731712973527961592794552e-2), + convert(T, -9.13296766697358082096250482648e-1), + convert(T, 2.41127257578051783924489946102e-3), + convert(T, 1.76581226938617419820698839226e-2), + convert(T, -1.48516497797203838246128557088e1), + convert(T, 2.15897086700457560030782161561e0), + convert(T, 3.99791558311787990115282754337e0), + convert(T, 2.84341518002322318984542514988e1), + convert(T, -2.52593643549415984378843352235e1), + convert(T, 7.7338785423622373655340014114e0), + convert(T, -1.8913028948478674610382580129e0), + convert(T, 1.00148450702247178036685959248e0), + convert(T, 4.64119959910905190510518247052e-3), + convert(T, 1.12187550221489570339750499063e-2), + convert(T, -2.75196297205593938206065227039e-1), + convert(T, 3.66118887791549201342293285553e-2), + convert(T, 9.7895196882315626246509967162e-3), + convert(T, -1.2293062345886210304214726509e1), + convert(T, 1.42072264539379026942929665966e1), + convert(T, 1.58664769067895368322481964272e0), + convert(T, 2.45777353275959454390324346975e0), + convert(T, -8.93519369440327190552259086374e0), + convert(T, 4.37367273161340694839327077512e0), + convert(T, -1.83471817654494916304344410264e0), + convert(T, 1.15920852890614912078083198373e0), + convert(T, -1.72902531653839221518003422953e-2), + convert(T, 1.93259779044607666727649875324e-2), + convert(T, 5.20444293755499311184926401526e-3), + convert(T, 1.30763918474040575879994562983e0), + convert(T, 1.73641091897458418670879991296e-2), + convert(T, -1.8544456454265795024362115588e-2), + convert(T, 1.48115220328677268968478356223e1), + convert(T, 9.38317630848247090787922177126e0), + convert(T, -5.2284261999445422541474024553e0), + convert(T, -4.89512805258476508040093482743e1), + convert(T, 3.82970960343379225625583875836e1), + convert(T, -1.05873813369759797091619037505e1), + convert(T, 2.43323043762262763585119618787e0), + convert(T, -1.04534060425754442848652456513e0), + convert(T, 7.17732095086725945198184857508e-2), + convert(T, 2.16221097080827826905505320027e-3), + convert(T, 7.00959575960251423699282781988e-3), + convert(T, 0.012127868517185414), + convert(T, 0.08629746251568875), + convert(T, 0.2525469581187147), + convert(T, -0.1974186799326823), + convert(T, 0.2031869190789726), + convert(T, -0.020775808077714918), + convert(T, 0.10967804874502014), + convert(T, 0.038065132526466504), + convert(T, 0.01163406880432423), + convert(T, 0.0046580297040248785), + convert(T, 0.012127868517185414), + convert(T, 0.09083943422704079), + convert(T, 0.3156836976483934), + convert(T, -0.2632249065769097), + convert(T, 0.3047803786184589), + convert(T, -0.041551616155429835), + convert(T, 0.2467756096762953), + convert(T, 0.15226053010586602), + convert(T, 0.08143848163026961), + convert(T, 0.08502571193890811), + convert(T, -0.009155189630077963), + convert(T, 0.025), + convert(T, -0.004880833389821577), + convert(T, 0.014038126584857338), + convert(T, -0.11947921920803832), + convert(T, 0.20440246507662121), + convert(T, -0.1322681492223791), + convert(T, 0.11053069299761689), + convert(T, -0.07975385787102851), + convert(T, 0.011224330486437457), + convert(T, -0.004671596801593694), + convert(T, 0.0008580413473282841), + convert(T, -0.004880833389821577), + convert(T, 0.014776975352481408), + convert(T, -0.1493490240100479), + convert(T, 0.2725366201021616), + convert(T, -0.19840222383356862), + convert(T, 0.22106138599523378), + convert(T, -0.17944618020981415), + convert(T, 0.04489732194574983), + convert(T, -0.03270117761115586), + convert(T, 0.015662325288859434), + convert(T, -0.029155189630077964), + convert(T, 0.025)) +end diff --git a/src/tableaus/symplectic_tableaus.jl b/src/tableaus/symplectic_tableaus.jl new file mode 100644 index 0000000000..98676979c3 --- /dev/null +++ b/src/tableaus/symplectic_tableaus.jl @@ -0,0 +1,807 @@ +struct Symplectic2ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + b1::T + b2::T +end + +function PseudoVerletLeapfrogConstantCache(T, T2) + a1 = convert(T, 1) + a2 = convert(T, 0) + b1 = convert(T, 1 // 2) + b2 = convert(T, 1 // 2) + Symplectic2ConstantCache{T, T2}(a1, a2, b1, b2) +end + +function McAte2ConstantCache(T, T2) + a2 = convert(T, 1 - (1 / 2) * sqrt(convert(T, 2))) + a1 = convert(T, 1 - a2) + b2 = convert(T, 1 / (2 * (1 - a2))) + b1 = convert(T, 1 - b2) + Symplectic2ConstantCache{T, T2}(a1, a2, b1, b2) +end + +function VerletLeapfrogConstantCache(T, T2) + a1 = convert(T, 1 // 2) + a2 = convert(T, 1 // 2) + b1 = convert(T, 0) + b2 = convert(T, 1) + Symplectic2ConstantCache{T, T2}(a1, a2, b1, b2) +end + +struct Symplectic3ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + b1::T + b2::T + b3::T +end + +function Ruth3ConstantCache(T, T2) + a1 = convert(T, 2 // 3) + a2 = convert(T, -2 // 3) + a3 = convert(T, 1) + b1 = convert(T, 7 // 24) + b2 = convert(T, 3 // 4) + b3 = convert(T, -1 // 24) + Symplectic3ConstantCache{T, T2}(a1, a2, a3, b1, b2, b3) +end + +function McAte3ConstantCache(T, T2) + a1 = convert(T, 0.9196615230173999) + a2 = convert(T, 0.25 / a1 - a1 / 2) + a3 = convert(T, 1 - a1 - a2) + b1 = convert(T, a3) + b2 = convert(T, a2) + b3 = convert(T, a1) + Symplectic3ConstantCache{T, T2}(a1, a2, a3, b1, b2, b3) +end + +struct Symplectic4ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + b1::T + b2::T + b3::T + b4::T +end + +function CandyRoz4ConstantCache(T, T2) + a1 = convert(T, (2 + T(2)^(1 // 3) + convert(T, 2)^(-1 // 3)) / 6) + a2 = convert(T, (1 - T(2)^(1 // 3) - convert(T, 2)^(-1 // 3)) / 6) + a3 = convert(T, a2) + a4 = convert(T, a1) + b1 = convert(T, 0) + b2 = convert(T, (2 - T(2)^(1 // 3))^-1) + b3 = convert(T, (1 - T(2)^(2 // 3))^-1) + b4 = convert(T, b2) + Symplectic4ConstantCache{T, T2}(a1, a2, a3, a4, b1, b2, b3, b4) +end + +function McAte4ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.515352837431122936) + a2 = convert(T, -0.085782019412973646) + a3 = convert(T, 0.441583023616466524) + a4 = convert(T, 0.128846158365384185) + b1 = convert(T, 0.134496199277431089) + b2 = convert(T, -0.224819803079420806) + b3 = convert(T, 0.756320000515668291) + b4 = convert(T, 0.334003603286321425) + Symplectic4ConstantCache{T, T2}(a1, a2, a3, a4, b1, b2, b3, b4) +end + +function McAte4ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.515352837431122936") + a2 = convert(T, big"-0.085782019412973646") + a3 = convert(T, big" 0.441583023616466524") + a4 = convert(T, big" 0.128846158365384185") + b1 = convert(T, big" 0.134496199277431089") + b2 = convert(T, big"-0.224819803079420806") + b3 = convert(T, big" 0.756320000515668291") + b4 = convert(T, big" 0.334003603286321425") + Symplectic4ConstantCache{T, T2}(a1, a2, a3, a4, b1, b2, b3, b4) +end + +struct Symplectic45ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + b1::T + b2::T + b3::T + b4::T + b5::T +end + +function CalvoSanz4ConstantCache(T, T2) + a1 = convert(T, 0.205177661542290) + a2 = convert(T, 0.403021281604210) + a3 = -convert(T, 0.12092087633891) + a4 = convert(T, 0.512721933192410) + a5 = convert(T, 0.0) + b1 = convert(T, 0.061758858135626) + b2 = convert(T, 0.33897802655364) + b3 = convert(T, 0.61479130717558) + b4 = -convert(T, 0.14054801465937) + b5 = convert(T, 0.12501982279453) + Symplectic45ConstantCache{T, T2}(a1, a2, a3, a4, a5, b1, b2, b3, b4, b5) +end + +# Broken +# http://epubs.siam.org/doi/pdf/10.1137/0916010 +# On the numerical integration of ordinary differential equations by symmetric composition methods +function McAte42ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.40518861839525227722) + a2 = convert(T, -0.28714404081652408900) + a3 = 1 - 2a1 - 2a2 + a4 = a2 + a5 = a1 + b1 = convert(T, -3 // 73) + b2 = convert(T, 17 // 59) + b3 = 1 - 2b1 - 2b2 + b4 = b2 + b5 = b1 + Symplectic45ConstantCache{T, T2}(a1, a2, a3, a4, a5, b1, b2, b3, b4, b5) +end + +function McAte42ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.40518861839525227722") + a2 = convert(T, big"-0.28714404081652408900") + a3 = 1 - 2a1 - 2a2 + a4 = a2 + a5 = a1 + b1 = convert(T, -3 // 73) + b2 = convert(T, 17 // 59) + b3 = 1 - 2b1 - 2b2 + b4 = b2 + b5 = b1 + Symplectic45ConstantCache{T, T2}(a1, a2, a3, a4, a5, b1, b2, b3, b4, b5) +end + +struct Symplectic5ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T +end + +function McAte5ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.339839625839110000) + a2 = convert(T, -0.088601336903027329) + a3 = convert(T, 0.5858564768259621188) + a4 = convert(T, -0.603039356536491888) + a5 = convert(T, 0.3235807965546976394) + a6 = convert(T, 0.4423637942197494587) + b1 = convert(T, 0.1193900292875672758) + b2 = convert(T, 0.6989273703824752308) + b3 = convert(T, -0.1713123582716007754) + b4 = convert(T, 0.4012695022513534480) + b5 = convert(T, 0.0107050818482359840) + b6 = convert(T, -0.0589796254980311632) + Symplectic5ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6) +end + +function McAte5ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.339839625839110000") + a2 = convert(T, big"-0.088601336903027329") + a3 = convert(T, big"0.5858564768259621188") + a4 = convert(T, big"-0.603039356536491888") + a5 = convert(T, big"0.3235807965546976394") + a6 = convert(T, big"0.4423637942197494587") + b1 = convert(T, big"0.1193900292875672758") + b2 = convert(T, big"0.6989273703824752308") + b3 = convert(T, big"-0.1713123582716007754") + b4 = convert(T, big"0.4012695022513534480") + b5 = convert(T, big"0.0107050818482359840") + b6 = convert(T, big"-0.0589796254980311632") + Symplectic5ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6) +end + +struct Symplectic6ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + a7::T + a8::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T +end + +function Yoshida6ConstantCache(T, T2) + a1 = convert(T, 0.78451361047756) + a2 = convert(T, 0.23557321335936) + a3 = convert(T, -1.1776799841789) + a4 = convert(T, 1.3151863206839) + a5 = convert(T, a3) + a6 = convert(T, a2) + a7 = convert(T, a1) + a8 = convert(T, 0.0) + b1 = a1 / 2 + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, b4) + b6 = convert(T, b3) + b7 = convert(T, b2) + b8 = convert(T, b1) + Symplectic6ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4, b5, b6, + b7, b8) +end + +struct Symplectic62ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + a7::T + a8::T + a9::T + a10::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T +end + +function KahanLi6ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.39216144400731413927925056) + a2 = convert(T, 0.33259913678935943859974864) + a3 = convert(T, -0.70624617255763935980996482) + a4 = convert(T, 0.08221359629355080023149045) + a5 = convert(T, 0.79854399093482996339895035) + a6 = a4 + a7 = a3 + a8 = a2 + a9 = a1 + a10 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = b5 + b7 = b4 + b8 = b3 + b9 = b2 + b10 = b1 + Symplectic62ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, b1, b2, b3, + b4, b5, b6, b7, b8, b9, b10) +end + +function KahanLi6ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.39216144400731413927925056") + a2 = convert(T, big"0.33259913678935943859974864") + a3 = convert(T, big"-0.70624617255763935980996482") + a4 = convert(T, big"0.08221359629355080023149045") + a5 = convert(T, big"0.79854399093482996339895035") + a6 = a4 + a7 = a3 + a8 = a2 + a9 = a1 + a10 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = b5 + b7 = b4 + b8 = b3 + b9 = b2 + b10 = b1 + Symplectic62ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, b1, b2, b3, + b4, b5, b6, b7, b8, b9, b10) +end + +struct McAte8ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + a7::T + a8::T + a9::T + a10::T + a11::T + a12::T + a13::T + a14::T + a15::T + a16::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T +end + +function McAte8ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.74167036435061295344822780) + a2 = convert(T, -0.40910082580003159399730010) + a3 = convert(T, 0.19075471029623837995387626) + a4 = convert(T, -0.57386247111608226665638773) + a5 = convert(T, 0.29906418130365592384446354) + a6 = convert(T, 0.33462491824529818378495798) + a7 = convert(T, 0.31529309239676659663205666) + a8 = convert(T, -0.79688793935291635401978884) + a9 = a7 + a10 = a6 + a11 = a5 + a12 = a4 + a13 = a3 + a14 = a2 + a15 = a1 + a16 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = b8 + b10 = b7 + b11 = b6 + b12 = b5 + b13 = b4 + b14 = b3 + b15 = b2 + b16 = b1 + McAte8ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, + a15, a16, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, + b15, b16) +end + +function McAte8ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.74167036435061295344822780") + a2 = convert(T, big"-0.40910082580003159399730010") + a3 = convert(T, big"0.19075471029623837995387626") + a4 = convert(T, big"-0.57386247111608226665638773") + a5 = convert(T, big"0.29906418130365592384446354") + a6 = convert(T, big"0.33462491824529818378495798") + a7 = convert(T, big"0.31529309239676659663205666") + a8 = convert(T, big"-0.79688793935291635401978884") + a9 = a7 + a10 = a6 + a11 = a5 + a12 = a4 + a13 = a3 + a14 = a2 + a15 = a1 + a16 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = b8 + b10 = b7 + b11 = b6 + b12 = b5 + b13 = b4 + b14 = b3 + b15 = b2 + b16 = b1 + McAte8ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, + a15, a16, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, + b15, b16) +end + +struct KahanLi8ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + a7::T + a8::T + a9::T + a10::T + a11::T + a12::T + a13::T + a14::T + a15::T + a16::T + a17::T + a18::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T + b17::T + b18::T +end + +function KahanLi8ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.13020248308889008087881763) + a2 = convert(T, 0.56116298177510838456196441) + a3 = convert(T, -0.38947496264484728640807860) + a4 = convert(T, 0.15884190655515560089621075) + a5 = convert(T, -0.39590389413323757733623154) + a6 = convert(T, 0.18453964097831570709183254) + a7 = convert(T, 0.25837438768632204729397911) + a8 = convert(T, 0.29501172360931029887096624) + a9 = convert(T, -0.60550853383003451169892108) + a10 = a8 + a11 = a7 + a12 = a6 + a13 = a5 + a14 = a4 + a15 = a3 + a16 = a2 + a17 = a1 + a18 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = convert(T, (a8 + a9) / 2) + b10 = b9 + b11 = b8 + b12 = b7 + b13 = b6 + b14 = b5 + b15 = b4 + b16 = b3 + b17 = b2 + b18 = b1 + KahanLi8ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, + a14, a15, a16, a17, a18, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, + b14, b15, b16, b17, b18) +end + +function KahanLi8ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.13020248308889008087881763") + a2 = convert(T, big"0.56116298177510838456196441") + a3 = convert(T, big"-0.38947496264484728640807860") + a4 = convert(T, big"0.15884190655515560089621075") + a5 = convert(T, big"-0.39590389413323757733623154") + a6 = convert(T, big"0.18453964097831570709183254") + a7 = convert(T, big"0.25837438768632204729397911") + a8 = convert(T, big"0.29501172360931029887096624") + a9 = convert(T, big"-0.60550853383003451169892108") + a10 = a8 + a11 = a7 + a12 = a6 + a13 = a5 + a14 = a4 + a15 = a3 + a16 = a2 + a17 = a1 + a18 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = convert(T, (a8 + a9) / 2) + b10 = b9 + b11 = b8 + b12 = b7 + b13 = b6 + b14 = b5 + b15 = b4 + b16 = b3 + b17 = b2 + b18 = b1 + KahanLi8ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, + a14, a15, a16, a17, a18, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, + b14, b15, b16, b17, b18) +end + +struct SofSpa10ConstantCache{T, T2} <: OrdinaryDiffEqConstantCache + a1::T + a2::T + a3::T + a4::T + a5::T + a6::T + a7::T + a8::T + a9::T + a10::T + a11::T + a12::T + a13::T + a14::T + a15::T + a16::T + a17::T + a18::T + a19::T + a20::T + a21::T + a22::T + a23::T + a24::T + a25::T + a26::T + a27::T + a28::T + a29::T + a30::T + a31::T + a32::T + a33::T + a34::T + a35::T + a36::T + b1::T + b2::T + b3::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + b16::T + b17::T + b18::T + b19::T + b20::T + b21::T + b22::T + b23::T + b24::T + b25::T + b26::T + b27::T + b28::T + b29::T + b30::T + b31::T + b32::T + b33::T + b34::T + b35::T + b36::T +end + +function SofSpa10ConstantCache(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + a1 = convert(T, 0.07879572252168641926390768) + a2 = convert(T, 0.31309610341510852776481247) + a3 = convert(T, 0.02791838323507806610952027) + a4 = convert(T, -0.22959284159390709415121340) + a5 = convert(T, 0.13096206107716486317465686) + a6 = convert(T, -0.26973340565451071434460973) + a7 = convert(T, 0.07497334315589143566613711) + a8 = convert(T, 0.11199342399981020488957508) + a9 = convert(T, 0.36613344954622675119314812) + a10 = convert(T, -0.39910563013603589787862981) + a11 = convert(T, 0.10308739852747107731580277) + a12 = convert(T, 0.41143087395589023782070412) + a13 = convert(T, -0.00486636058313526176219566) + a14 = convert(T, -0.39203335370863990644808194) + a15 = convert(T, 0.05194250296244964703718290) + a16 = convert(T, 0.05066509075992449633587434) + a17 = convert(T, 0.04967437063972987905456880) + a18 = convert(T, 0.04931773575959453791768001) + a19 = a17 + a20 = a16 + a21 = a15 + a22 = a14 + a23 = a13 + a24 = a12 + a25 = a11 + a26 = a10 + a27 = a9 + a28 = a8 + a29 = a7 + a30 = a6 + a31 = a5 + a32 = a4 + a33 = a3 + a34 = a2 + a35 = a1 + a36 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = convert(T, (a8 + a9) / 2) + b10 = convert(T, (a9 + a10) / 2) + b11 = convert(T, (a10 + a11) / 2) + b12 = convert(T, (a11 + a12) / 2) + b13 = convert(T, (a12 + a13) / 2) + b14 = convert(T, (a13 + a14) / 2) + b15 = convert(T, (a14 + a15) / 2) + b16 = convert(T, (a15 + a16) / 2) + b17 = convert(T, (a16 + a17) / 2) + b18 = convert(T, (a17 + a18) / 2) + b19 = b18 + b20 = b17 + b21 = b16 + b22 = b15 + b23 = b14 + b24 = b13 + b25 = b12 + b26 = b11 + b27 = b10 + b28 = b9 + b29 = b8 + b30 = b7 + b31 = b6 + b32 = b5 + b33 = b4 + b34 = b3 + b35 = b2 + b36 = b1 + SofSpa10ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, + a14, a15, a16, a17, a18, + a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, + a31, a32, a33, a34, + a35, a36, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, + b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, + b31, b32, b33, b34, + b35, b36) +end + +function SofSpa10ConstantCache(T::Type, T2::Type) + a1 = convert(T, big"0.07879572252168641926390768") + a2 = convert(T, big"0.31309610341510852776481247") + a3 = convert(T, big"0.02791838323507806610952027") + a4 = convert(T, big"-0.22959284159390709415121340") + a5 = convert(T, big"0.13096206107716486317465686") + a6 = convert(T, big"-0.26973340565451071434460973") + a7 = convert(T, big"0.07497334315589143566613711") + a8 = convert(T, big"0.11199342399981020488957508") + a9 = convert(T, big"0.36613344954622675119314812") + a10 = convert(T, big"-0.39910563013603589787862981") + a11 = convert(T, big"0.10308739852747107731580277") + a12 = convert(T, big"0.41143087395589023782070412") + a13 = convert(T, big"-0.00486636058313526176219566") + a14 = convert(T, big"-0.39203335370863990644808194") + a15 = convert(T, big"0.05194250296244964703718290") + a16 = convert(T, big"0.05066509075992449633587434") + a17 = convert(T, big"0.04967437063972987905456880") + a18 = convert(T, big"0.04931773575959453791768001") + a19 = a17 + a20 = a16 + a21 = a15 + a22 = a14 + a23 = a13 + a24 = a12 + a25 = a11 + a26 = a10 + a27 = a9 + a28 = a8 + a29 = a7 + a30 = a6 + a31 = a5 + a32 = a4 + a33 = a3 + a34 = a2 + a35 = a1 + a36 = convert(T, 0) + b1 = convert(T, a1 / 2) + b2 = convert(T, (a1 + a2) / 2) + b3 = convert(T, (a2 + a3) / 2) + b4 = convert(T, (a3 + a4) / 2) + b5 = convert(T, (a4 + a5) / 2) + b6 = convert(T, (a5 + a6) / 2) + b7 = convert(T, (a6 + a7) / 2) + b8 = convert(T, (a7 + a8) / 2) + b9 = convert(T, (a8 + a9) / 2) + b10 = convert(T, (a9 + a10) / 2) + b11 = convert(T, (a10 + a11) / 2) + b12 = convert(T, (a11 + a12) / 2) + b13 = convert(T, (a12 + a13) / 2) + b14 = convert(T, (a13 + a14) / 2) + b15 = convert(T, (a14 + a15) / 2) + b16 = convert(T, (a15 + a16) / 2) + b17 = convert(T, (a16 + a17) / 2) + b18 = convert(T, (a17 + a18) / 2) + b19 = b18 + b20 = b17 + b21 = b16 + b22 = b15 + b23 = b14 + b24 = b13 + b25 = b12 + b26 = b11 + b27 = b10 + b28 = b9 + b29 = b8 + b30 = b7 + b31 = b6 + b32 = b5 + b33 = b4 + b34 = b3 + b35 = b2 + b36 = b1 + SofSpa10ConstantCache{T, T2}(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, + a14, a15, a16, a17, a18, + a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, + a31, a32, a33, a34, + a35, a36, + b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, + b14, b15, b16, b17, b18, + b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, + b31, b32, b33, b34, + b35, b36) +end diff --git a/src/tableaus/verner_tableaus.jl b/src/tableaus/verner_tableaus.jl new file mode 100644 index 0000000000..1773305838 --- /dev/null +++ b/src/tableaus/verner_tableaus.jl @@ -0,0 +1,3894 @@ +## Vern6 +struct Vern6ExtraStages{T, T2} + c10::T2 + a1001::T + a1004::T + a1005::T + a1006::T + a1007::T + a1008::T + a1009::T + c11::T2 + a1101::T + a1104::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + c12::T2 + a1201::T + a1204::T + a1205::T + a1206::T + a1207::T + a1208::T + a1209::T + a1210::T + a1211::T +end + +function Vern6ExtraStages(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + # Extra stages for Order 5 + c10 = convert(T2, 0.5) + a1001 = convert(T, 0.016524159013572806) + a1004 = convert(T, 0.3053128187514179) + a1005 = convert(T, 0.2071200938201979) + a1006 = convert(T, -1.293879140655123) + a1007 = convert(T, 57.11988411588149) + a1008 = convert(T, -55.87979207510932) + a1009 = convert(T, 0.024830028297766014) + # Extra stages for Order 6 + c11 = convert(T2, 0.828) + a1101 = convert(T, 0.038150081818627744) + a1104 = convert(T, 0.2502358252513705) + a1105 = convert(T, 0.3249441447817608) + a1106 = convert(T, 1.8224606658327962) + a1107 = convert(T, -67.7137233269262) + a1108 = convert(T, 66.03587911808127) + a1109 = convert(T, -0.0363881087495127) + a1110 = convert(T, 0.106441599909888) + c12 = convert(T2, 0.28) + a1201 = convert(T, 0.11178168039666012) + a1204 = convert(T, 0.025757505109345213) + a1205 = convert(T, 3.785140856363646) + a1206 = convert(T, 92.34088993695727) + a1207 = convert(T, -3819.461508432344) + a1208 = convert(T, 3732.492711530704) + a1209 = convert(T, -1.0756940209963033) + a1210 = convert(T, -3.231539970732086) + a1211 = convert(T, -4.707539085458635) + + Vern6ExtraStages(c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, + a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, + a1205, a1206, a1207, a1208, a1209, a1210, a1211) +end + +function Vern6ExtraStages(T, T2) + # Extra stages for Order 5 + c10 = convert(T2, 1 // 2) + a1001 = convert(T, + BigInt(35289331988986254405692535758830683) // + BigInt(2135620454874580332949729350544993288)) + a1004 = convert(T, + BigInt(313937014583068512255490687992212890625) // + BigInt(1028247080705354654473994781524199691557)) + a1005 = convert(T, + BigInt(1309307687253621245836726130885318359375) // + BigInt(6321490412177191231557635904400612215708)) + a1006 = convert(T, + -BigInt(35295844079877524186147726060781875) // + BigInt(27279088881521314684841470427640876)) + a1007 = convert(T, + BigInt(794353492803973228770716697389421875) // + BigInt(13906777037439977359946774228636361)) + a1008 = convert(T, + -BigInt(15228408956329265381787438679500067) // + BigInt(272520859345009876882656783678732)) + a1009 = convert(T, 28587810357600962662801 / 1151340224617184234295192) + # Extra stages for Order 6 + c11 = convert(T2, 207 // 250) + a1101 = convert(T, + BigInt(2486392061981208591025761263164027224438868971) // + BigInt(65173964076983042387381877152862343994140625000)) + a1104 = convert(T, + BigInt(2330654500023704838558579323179918419669) // + BigInt(9313832252765893609365894760182968220625)) + a1105 = convert(T, + BigInt(5283259505481013273874688940942473187741) // + BigInt(16258977397575080328080339260289640472500)) + a1106 = convert(T, + BigInt(9989685106081485386057729811605187743723) // + BigInt(5481427003263510055949691042076757812500)) + a1107 = convert(T, + -BigInt(65815640423883764662985178413751186161) // + BigInt(971969007022721623945108012714453125)) + a1108 = convert(T, + BigInt(183066350554023250298437927498791289370414247) // + BigInt(2772225538584491748887703284492309570312500)) + a1109 = convert(T, + -426178927623072052719640507155669 // + 11712038417736656029207275390625000) + a1110 = convert(T, 3248339841 // 30517578125) + c12 = convert(T2, 7 // 25) + a1201 = convert(T, + BigInt(4676747786898097735038451956075910033997933945857) // + BigInt(41838231186922043164464169766109251031526972656250)) + a1204 = convert(T, + BigInt(1320032412954312695441306548681592444623240) // + BigInt(51248457773784347881352490499724836575577977)) + a1205 = convert(T, + BigInt(2087002134582726310861746540254017903014374710) // + BigInt(551367099344274428347227263044005314054687829)) + a1206 = convert(T, + BigInt(3432932836484348829479408524345545011748570706) // + BigInt(37176735450871998946806722732624135633015625)) + a1207 = convert(T, + -BigInt(2316434358511265475362584844804601519943610264) // + BigInt(606481922490173339581866127622363581143375)) + a1208 = convert(T, + BigInt(82514605285282414051716141603447021470923168793) // + BigInt(22107104196177512751528507591142367597656250)) + a1209 = convert(T, + -BigInt(7560161019374651900153317984708038834) // + BigInt(7028170531590816328729091157353515625)) + a1210 = convert(T, + -BigInt(21655450552377696842870155771710589332) // + BigInt(6701278878958685336695179940732421875)) + a1211 = convert(T, + -3194830887993202085244614477336220 // + 678662636676110315314332975245759) + + Vern6ExtraStages(c10, a1001, a1004, a1005, a1006, a1007, a1008, a1009, c11, a1101, + a1104, a1105, a1106, a1107, a1108, a1109, a1110, c12, a1201, a1204, + a1205, a1206, a1207, a1208, a1209, a1210, a1211) +end + +""" +Coefficients for the polynomial +bᵢΘ = ri1*Θ + ri2*Θ^2 + ri3*Θ^3 + ... +""" +struct Vern6InterpolationCoefficients{T} + r011::T + r012::T + r013::T + r014::T + r015::T + r016::T + r042::T + r043::T + r044::T + r045::T + r046::T + r052::T + r053::T + r054::T + r055::T + r056::T + r062::T + r063::T + r064::T + r065::T + r066::T + r072::T + r073::T + r074::T + r075::T + r076::T + r082::T + r083::T + r084::T + r085::T + r086::T + r092::T + r093::T + r094::T + r095::T + r096::T + r102::T + r103::T + r104::T + r105::T + r106::T + r112::T + r113::T + r114::T + r115::T + r116::T + r122::T + r123::T + r124::T + r125::T + r126::T +end + +function Vern6InterpolationCoefficients(T::Type{<:CompiledFloats}) + r011 = convert(T, 1) + r012 = convert(T, -7.778593856495576) + r013 = convert(T, 27.0524385722671) + r014 = convert(T, -45.780190114576975) + r015 = convert(T, 36.723777410436384) + r016 = convert(T, -11.183042432947357) + r042 = convert(T, 16.632102138279762) + r043 = convert(T, -86.25583404770623) + r044 = convert(T, 171.73305461826962) + r045 = convert(T, -149.67744091315947) + r046 = convert(T, 47.826380659879696) + r052 = convert(T, 27.10835046149758) + r053 = convert(T, -140.58676162962996) + r054 = convert(T, 279.90447579689163) + r055 = convert(T, -243.95644583707966) + r056 = convert(T, 77.95131832728772) + r062 = convert(T, 283.70753264670356) + r063 = convert(T, -1471.3371557366656) + r064 = convert(T, 2929.3928569314394) + r065 = convert(T, -2553.17199842168) + r066 = convert(T, 815.8141610498723) + r072 = convert(T, -11365.512865164834) + r073 = convert(T, 58942.74718938947) + r074 = convert(T, -117353.43045697975) + r075 = convert(T, 102281.77209230464) + r076 = convert(T, -32682.059078573824) + r082 = convert(T, 11100.250191051131) + r083 = convert(T, -57567.067013355576) + r084 = convert(T, 114614.48808378985) + r085 = convert(T, -99894.591091309) + r086 = convert(T, 31919.283963225014) + r092 = convert(T, -3.0022825150732126) + r093 = convert(T, 14.946122435958785) + r094 = convert(T, -27.826954732510288) + r095 = convert(T, 21.824672217437076) + r096 = convert(T, -5.941557405812358) + r102 = convert(T, -19.610347376201034) + r103 = convert(T, 93.13370014508226) + r104 = convert(T, -165.3493635542416) + r105 = convert(T, 129.73901617804057) + r106 = convert(T, -37.91300539268019) + r112 = convert(T, -18.23029074639409) + r113 = convert(T, 96.74593449012313) + r114 = convert(T, -199.08634973839895) + r115 = convert(T, 180.85605899200485) + r116 = convert(T, -60.285352997334954) + r122 = convert(T, -13.563796638614157) + r123 = convert(T, 90.62137973668116) + r124 = convert(T, -204.04515601697273) + r125 = convert(T, 190.48135937835858) + r126 = convert(T, -63.493786459452856) + + Vern6InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r042, r043, r044, + r045, r046, r052, r053, r054, r055, r056, r062, r063, + r064, r065, r066, r072, r073, r074, r075, r076, r082, + r083, r084, r085, r086, r092, r093, r094, r095, r096, + r102, r103, r104, r105, r106, r112, r113, r114, r115, + r116, r122, r123, r124, r125, r126) +end + +function Vern6InterpolationCoefficients(T) + r011 = convert(T, 1) + r012 = convert(T, -940811006205413129 // 120948724610397495) + r013 = convert(T, 88342864458754360181 // 3265615564480732365) + r014 = convert(T, -99667000922033025307 // 2177077042987154910) + r015 = convert(T, 7995049273203130972 // 217707704298715491) + r016 = convert(T, -7303903485456272500 // 653123112896146473) + r042 = convert(T, 2214248281250000 // 133130993475189) + r043 = convert(T, -49918013252500000000 // 578720428636646583) + r044 = convert(T, 1440368506953125000 // 8387252588936907) + r045 = convert(T, -28873797587500000000 // 192906809545548861) + r046 = convert(T, 27678103515625000000 // 578720428636646583) + r052 = convert(T, 893038428789062500 // 32943296570459319) + r053 = convert(T, -125047567320625000000 // 889469007402401613) + r054 = convert(T, 82988785418183593750 // 296489669134133871) + r055 = convert(T, -72330565909375000000 // 296489669134133871) + r056 = convert(T, 69335281738281250000 // 889469007402401613) + r062 = convert(T, 40331864555500 // 142160006043) + r063 = convert(T, -5647463071672000 // 3838320163161) + r064 = convert(T, 3747982556193250 // 1279440054387) + r065 = convert(T, -3266630520520000 // 1279440054387) + r066 = convert(T, 3131355943750000 // 3838320163161) + r072 = convert(T, -143250206750000 // 12603936879) + r073 = convert(T, 461347522996000000 // 7827044801859) + r074 = convert(T, -13312037070125000 // 113435431911) + r075 = convert(T, 266854670860000000 // 2609014933953) + r076 = convert(T, -255803940625000000 // 7827044801859) + r082 = convert(T, 3753451420391 // 338141155) + r083 = convert(T, -3679035166143248 // 63908678295) + r084 = convert(T, 4883240297928691 // 42605785530) + r085 = convert(T, -425608752364336 // 4260578553) + r086 = convert(T, 407983850042500 // 12781735659) + r092 = convert(T, -69713 // 23220) + r093 = convert(T, 4685161 // 313470) + r094 = convert(T, -135239 // 4860) + r095 = convert(T, 228046 // 10449) + r096 = convert(T, -186250 // 31347) + r102 = convert(T, -132664 // 6765) + r103 = convert(T, 17011336 // 182655) + r104 = convert(T, -10067296 // 60885) + r105 = convert(T, 1579832 // 12177) + r106 = convert(T, -1385000 // 36531) + r112 = convert(T, -2734375000 // 149990751) + r113 = convert(T, 391796875000 // 4049750277) + r114 = convert(T, -6250000000 // 31393413) + r115 = convert(T, 244140625000 // 1349916759) + r116 = convert(T, -244140625000 // 4049750277) + r122 = convert(T, -15453125 // 1139292) + r123 = convert(T, 1393796875 // 15380442) + r124 = convert(T, -2092203125 // 10253628) + r125 = convert(T, 488281250 // 2563407) + r126 = convert(T, -488281250 // 7690221) + + Vern6InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r042, r043, r044, + r045, r046, r052, r053, r054, r055, r056, r062, r063, + r064, r065, r066, r072, r073, r074, r075, r076, r082, + r083, r084, r085, r086, r092, r093, r094, r095, r096, + r102, r103, r104, r105, r106, r112, r113, r114, r115, + r116, r122, r123, r124, r125, r126) +end + +""" +From Verner's Website +""" +struct Vern6Tableau{T, T2} + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + a21::T + a31::T + a32::T + a41::T + a43::T + a51::T + a53::T + a54::T + a61::T + a63::T + a64::T + a65::T + a71::T + a73::T + a74::T + a75::T + a76::T + a81::T + a83::T + a84::T + a85::T + a86::T + a87::T + a91::T + a94::T + a95::T + a96::T + a97::T + a98::T + btilde1::T + btilde4::T + btilde5::T + btilde6::T + btilde7::T + btilde8::T + btilde9::T + extra::Vern6ExtraStages{T, T2} + interp::Vern6InterpolationCoefficients{T} +end + +function Vern6Tableau(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c1 = convert(T2, 0.06) + c2 = convert(T2, 0.09593333333333333) + c3 = convert(T2, 0.1439) + c4 = convert(T2, 0.4973) + c5 = convert(T2, 0.9725) + c6 = convert(T2, 0.9995) + a21 = convert(T, 0.06) + a31 = convert(T, 0.019239962962962962) + a32 = convert(T, 0.07669337037037037) + a41 = convert(T, 0.035975) + a43 = convert(T, 0.107925) + a51 = convert(T, 1.3186834152331484) + a53 = convert(T, -5.042058063628562) + a54 = convert(T, 4.220674648395414) + a61 = convert(T, -41.87259166432751) + a63 = convert(T, 159.43256216313748) + a64 = convert(T, -122.11921356501004) + a65 = convert(T, 5.531743066200053) + a71 = convert(T, -54.430156935316504) + a73 = convert(T, 207.06725136501848) + a74 = convert(T, -158.61081378459) + a75 = convert(T, 6.991816585950242) + a76 = convert(T, -0.01859723106220323) + a81 = convert(T, -54.66374178728198) + a83 = convert(T, 207.95280625538936) + a84 = convert(T, -159.2889574744995) + a85 = convert(T, 7.018743740796944) + a86 = convert(T, -0.018338785905045722) + a87 = convert(T, -0.0005119484997882099) + a91 = convert(T, 0.03438957868357036) + a94 = convert(T, 0.25826245556335037) + a95 = convert(T, 0.4209371189673537) + a96 = convert(T, 4.40539646966931) + a97 = convert(T, -176.48311902429865) + a98 = convert(T, 172.36413340141507) + # b1 =convert(T,0.04301298296577122) + # b4 =convert(T,0.23882842561019763) + # b5 =convert(T,0.44938719155539175) + # b6 =convert(T,2.2956854086040193) + # b7 =convert(T,-73.02457612433467) + # b8 =convert(T,70.96432878226597) + # b9 =convert(T,0.03333333333333333) + btilde1 = convert(T, 0.008623404282200854) + btilde4 = convert(T, -0.019434029953152708) + btilde5 = convert(T, 0.028450072588037983) + btilde6 = convert(T, -2.1097110610652914) + btilde7 = convert(T, 103.45854289996397) + btilde8 = convert(T, -101.39980461914912) + btilde9 = convert(T, 0.03333333333333333) + + extra = Vern6ExtraStages(T, T2) + interp = Vern6InterpolationCoefficients(T) + + Vern6Tableau(c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, + a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, + a95, a96, a97, a98, btilde1, btilde4, btilde5, btilde6, btilde7, btilde8, + btilde9, extra, interp) +end + +function Vern6Tableau(T, T2) + c1 = convert(T2, 3 // 50) + c2 = convert(T2, 1439 // 15000) + c3 = convert(T2, 1439 // 10000) + c4 = convert(T2, 4973 // 10000) + c5 = convert(T2, 389 // 400) + c6 = convert(T2, 1999 // 2000) + a21 = convert(T, 3 // 50) + a31 = convert(T, 519479 // 27000000) + a32 = convert(T, 2070721 // 27000000) + a41 = convert(T, 1439 // 40000) + a43 = convert(T, 4317 // 40000) + a51 = convert(T, 109225017611 // 82828840000) + a53 = convert(T, -417627820623 // 82828840000) + a54 = convert(T, 43699198143 // 10353605000) + a61 = convert(T, -8036815292643907349452552172369 // 191934985946683241245914401600) + a63 = convert(T, 246134619571490020064824665 // 1543816496655405117602368) + a64 = convert(T, -13880495956885686234074067279 // 113663489566254201783474344) + a65 = convert(T, 755005057777788994734129 // 136485922925633667082436) + a71 = convert(T, + -BigInt(1663299841566102097180506666498880934230261) // + BigInt(30558424506156170307020957791311384232000)) + a73 = convert(T, + 130838124195285491799043628811093033 // 631862949514135618861563657970240) + a74 = convert(T, + -BigInt(3287100453856023634160618787153901962873) // + BigInt(20724314915376755629135711026851409200)) + a75 = convert(T, + 2771826790140332140865242520369241 // 396438716042723436917079980147600) + a76 = convert(T, -1799166916139193 // 96743806114007800) + a81 = convert(T, + -BigInt(832144750039369683895428386437986853923637763) // + BigInt(15222974550069600748763651844667619945204887)) + a83 = convert(T, + 818622075710363565982285196611368750 // + 3936576237903728151856072395343129) + a84 = convert(T, + -BigInt(9818985165491658464841194581385463434793741875) // + BigInt(61642597962658994069869370923196463581866011)) + a85 = convert(T, + BigInt(31796692141848558720425711042548134769375) // + BigInt(4530254033500045975557858016006308628092)) + a86 = convert(T, -14064542118843830075 // 766928748264306853644) + a87 = convert(T, -1424670304836288125 // 2782839104764768088217) + a91 = convert(T, 382735282417 // 11129397249634) + a94 = convert(T, 5535620703125000 // 21434089949505429) + a95 = convert(T, 13867056347656250 // 32943296570459319) + a96 = convert(T, 626271188750 // 142160006043) + a97 = convert(T, -51160788125000 // 289890548217) + a98 = convert(T, 163193540017 // 946795234) + # b1 =convert(T,124310637869885675646798613//2890072468789466426596827670) + # b4 =convert(T,265863151737164990361330921875//1113197271463372303940319369579) + # b5 =convert(T,3075493557174030806536302953125//6843749922042323876546949699876) + # b6 =convert(T,67798000008733879813263055//29532792147666737550036372) + # b7 =convert(T,-1099436585155390846238326375//15055706496446408859196167) + # b8 =convert(T,26171252653086373181571802//368794478890732346033505) + # b9 =convert(T,1//30) + btilde1 = convert(T, 12461131651614938103148389 // 1445036234394733213298413835) + btilde4 = convert(T, -21633909117387045317965953125 // 1113197271463372303940319369579) + btilde5 = convert(T, 21633909117387045317965953125 // 760416658004702652949661077764) + btilde6 = convert(T, -6922850917563854501749105 // 3281421349740748616670708) + btilde7 = convert(T, 173071272939096362543727625 // 1672856277382934317688463) + btilde8 = convert(T, -74791376208282344108625901 // 737588957781464692067010) + btilde9 = convert(T, 1 // 30) + + extra = Vern6ExtraStages(T, T2) + interp = Vern6InterpolationCoefficients(T) + + Vern6Tableau(c1, c2, c3, c4, c5, c6, a21, a31, a32, a41, a43, a51, a53, a54, a61, a63, + a64, a65, a71, a73, a74, a75, a76, a81, a83, a84, a85, a86, a87, a91, a94, + a95, a96, a97, a98, btilde1, btilde4, btilde5, btilde6, btilde7, btilde8, + btilde9, extra, interp) +end + +## Vern7 +struct Vern7ExtraStages{T, T2} + c11::T2 + a1101::T + a1104::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + c12::T2 + a1201::T + a1204::T + a1205::T + a1206::T + a1207::T + a1208::T + a1209::T + a1211::T + c13::T2 + a1301::T + a1304::T + a1305::T + a1306::T + a1307::T + a1308::T + a1309::T + a1311::T + a1312::T + c14::T2 + a1401::T + a1404::T + a1405::T + a1406::T + a1407::T + a1408::T + a1409::T + a1411::T + a1412::T + a1413::T + c15::T2 + a1501::T + a1504::T + a1505::T + a1506::T + a1507::T + a1508::T + a1509::T + a1511::T + a1512::T + a1513::T + c16::T2 + a1601::T + a1604::T + a1605::T + a1606::T + a1607::T + a1608::T + a1609::T + a1611::T + a1612::T + a1613::T +end + +@fold function Vern7ExtraStages(::Type{T}, + ::Type{T2}) where {T <: CompiledFloats, + T2 <: CompiledFloats} + c11 = convert(T2, 1) + a1101 = convert(T, 0.04715561848627222) + a1104 = convert(T, 0.25750564298434153) + a1105 = convert(T, 0.2621665397741262) + a1106 = convert(T, 0.15216092656738558) + a1107 = convert(T, 0.49399691700324844) + a1108 = convert(T, -0.29430311714032503) + a1109 = convert(T, 0.0813174723249511) + c12 = convert(T2, 0.29) + a1201 = convert(T, 0.0523222769159969) + a1204 = convert(T, 0.22495861826705715) + a1205 = convert(T, 0.017443709248776376) + a1206 = convert(T, -0.007669379876829393) + a1207 = convert(T, 0.03435896044073285) + a1208 = convert(T, -0.0410209723009395) + a1209 = convert(T, 0.025651133005205617) + a1211 = convert(T, -0.0160443457) + c13 = convert(T2, 0.125) + a1301 = convert(T, 0.053053341257859085) + a1304 = convert(T, 0.12195301011401886) + a1305 = convert(T, 0.017746840737602496) + a1306 = convert(T, -0.0005928372667681495) + a1307 = convert(T, 0.008381833970853752) + a1308 = convert(T, -0.01293369259698612) + a1309 = convert(T, 0.009412056815253861) + a1311 = convert(T, -0.005353253107275676) + a1312 = convert(T, -0.06666729992455811) + c14 = convert(T2, 0.25) + a1401 = convert(T, 0.03887903257436304) + a1404 = convert(T, -0.0024403203308301317) + a1405 = convert(T, -0.0013928917214672623) + a1406 = convert(T, -0.00047446291558680135) + a1407 = convert(T, 0.00039207932413159514) + a1408 = convert(T, -0.00040554733285128004) + a1409 = convert(T, 0.00019897093147716726) + a1411 = convert(T, -0.00010278198793179169) + a1412 = convert(T, 0.03385661513870267) + a1413 = convert(T, 0.1814893063199928) + c15 = convert(T2, 0.53) + a1501 = convert(T, 0.05723681204690013) + a1504 = convert(T, 0.22265948066761182) + a1505 = convert(T, 0.12344864200186899) + a1506 = convert(T, 0.04006332526666491) + a1507 = convert(T, -0.05269894848581452) + a1508 = convert(T, 0.04765971214244523) + a1509 = convert(T, -0.02138895885042213) + a1511 = convert(T, 0.015193891064036402) + a1512 = convert(T, 0.12060546716289655) + a1513 = convert(T, -0.022779423016187374) + c16 = convert(T2, 0.79) + a1601 = convert(T, 0.051372038802756814) + a1604 = convert(T, 0.5414214473439406) + a1605 = convert(T, 0.350399806692184) + a1606 = convert(T, 0.14193112269692182) + a1607 = convert(T, 0.10527377478429423) + a1608 = convert(T, -0.031081847805874016) + a1609 = convert(T, -0.007401883149519145) + a1611 = convert(T, -0.006377932504865363) + a1612 = convert(T, -0.17325495908361865) + a1613 = convert(T, -0.18228156777622026) + + Vern7ExtraStages(c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, c12, a1201, + a1204, a1205, a1206, a1207, a1208, a1209, a1211, c13, a1301, a1304, + a1305, a1306, a1307, a1308, a1309, a1311, a1312, c14, a1401, a1404, + a1405, a1406, a1407, a1408, a1409, a1411, a1412, a1413, c15, a1501, + a1504, a1505, a1506, a1507, a1508, a1509, a1511, a1512, a1513, c16, + a1601, a1604, a1605, a1606, a1607, a1608, a1609, a1611, a1612, a1613) +end + +@fold function Vern7ExtraStages(::Type{T}, ::Type{T2}) where {T, T2} + c11 = convert(T2, 1) + a1101 = convert(T, big" .4715561848627222170431765108838175679569e-1") + a1104 = convert(T, big" .2575056429843415189596436101037687580986") + a1105 = convert(T, big" .2621665397741262047713863095764527711129") + a1106 = convert(T, big" .1521609265673855740323133199165117535523") + a1107 = convert(T, big" .4939969170032484246907175893227876844296") + a1108 = convert(T, big"-.2943031171403250441557244744092703429139") + a1109 = convert(T, big" .8131747232495109999734599440136761892478e-1") + c12 = convert(T2, 29 // 100) + a1201 = convert(T, big" .5232227691599689815470932256735029887614e-1") + a1204 = convert(T, big" .2249586182670571550244187743667190903405") + a1205 = convert(T, big" .1744370924877637539031751304611402542578e-1") + a1206 = convert(T, big"-.7669379876829393188009028209348812321417e-2") + a1207 = convert(T, big" .3435896044073284645684381456417912794447e-1") + a1208 = convert(T, big"-.4102097230093949839125144540100346681769e-1") + a1209 = convert(T, big" .2565113300520561655297104906598973655221e-1") + a1211 = convert(T, big"-.160443457e-1") + c13 = convert(T2, 1 // 8) + a1301 = convert(T, big" .5305334125785908638834747243817578898946e-1") + a1304 = convert(T, big" .1219530101140188607092225622195251463666") + a1305 = convert(T, big" .1774684073760249704011573985936092552347e-1") + a1306 = convert(T, big"-.5928372667681494328907467430302313286925e-3") + a1307 = convert(T, big" .8381833970853750873624781948796072714855e-2") + a1308 = convert(T, big"-.1293369259698611956700998079778496462996e-1") + a1309 = convert(T, big" .9412056815253860804791356641605087829772e-2") + a1311 = convert(T, big"-.5353253107275676032399320754008272222345e-2") + a1312 = convert(T, big"-.6666729992455811078380186481263955324311e-1") + c14 = convert(T2, 1 // 4) + a1401 = convert(T, big" .3887903257436303686399931060834951327899e-1") + a1404 = convert(T, big"-.2440320330830131517910045090190069290791e-2") + a1405 = convert(T, big"-.1392891721467262281273220992320214734208e-2") + a1406 = convert(T, big"-.4744629155868013465038358934145339168472e-3") + a1407 = convert(T, big" .3920793241315951369383517310870803393356e-3") + a1408 = convert(T, big"-.4055473328512800136385880031750264996936e-3") + a1409 = convert(T, big" .1989709314771672628794304728258886009267e-3") + a1411 = convert(T, big"-.1027819879317916884712606136811051029682e-3") + a1412 = convert(T, big" .3385661513870266715302548402957613704604e-1") + a1413 = convert(T, big" .1814893063199928004309543737509423302792") + c15 = convert(T2, 53 // 100) + a1501 = convert(T, big" .5723681204690012909606837582140921695189e-1") + a1504 = convert(T, big" .2226594806676118099285816235023183680020") + a1505 = convert(T, big" .1234486420018689904911221497830317287757") + a1506 = convert(T, big" .4006332526666490875113688731927762275433e-1") + a1507 = convert(T, big"-.5269894848581452066926326838943832327366e-1") + a1508 = convert(T, big" .4765971214244522856887315416093212596338e-1") + a1509 = convert(T, big"-.2138895885042213036387863538386958914368e-1") + a1511 = convert(T, big" .1519389106403640165459624646184297766866e-1") + a1512 = convert(T, big" .1206054671628965554251364472502413614358") + a1513 = convert(T, big"-.2277942301618737288237298052574548913451e-1") + c16 = convert(T2, 79 // 100) + a1601 = convert(T, big" .5137203880275681426595607279552927584506e-1") + a1604 = convert(T, big" .5414214473439405582401399378307410450482") + a1605 = convert(T, big" .3503998066921840081154745647747846804810") + a1606 = convert(T, big" .1419311226969218216861835872156617148040") + a1607 = convert(T, big" .1052737747842942254816302629823570359198") + a1608 = convert(T, big"-.3108184780587401700842726199589213259835e-1") + a1609 = convert(T, big"-.7401883149519145061791854716430279714483e-2") + a1611 = convert(T, big"-.6377932504865363437569726480040013149706e-2") + a1612 = convert(T, big"-.1732549590836186403386348310205265959935") + a1613 = convert(T, big"-.1822815677762202619429607513861847306420") + + Vern7ExtraStages(c11, a1101, a1104, a1105, a1106, a1107, a1108, a1109, c12, a1201, + a1204, a1205, a1206, a1207, a1208, a1209, a1211, c13, a1301, a1304, + a1305, a1306, a1307, a1308, a1309, a1311, a1312, c14, a1401, a1404, + a1405, a1406, a1407, a1408, a1409, a1411, a1412, a1413, c15, a1501, + a1504, a1505, a1506, a1507, a1508, a1509, a1511, a1512, a1513, c16, + a1601, a1604, a1605, a1606, a1607, a1608, a1609, a1611, a1612, a1613) +end + +struct Vern7InterpolationCoefficients{T} + r011::T + r012::T + r013::T + r014::T + r015::T + r016::T + r017::T + r042::T + r043::T + r044::T + r045::T + r046::T + r047::T + r052::T + r053::T + r054::T + r055::T + r056::T + r057::T + r062::T + r063::T + r064::T + r065::T + r066::T + r067::T + r072::T + r073::T + r074::T + r075::T + r076::T + r077::T + r082::T + r083::T + r084::T + r085::T + r086::T + r087::T + r092::T + r093::T + r094::T + r095::T + r096::T + r097::T + r112::T + r113::T + r114::T + r115::T + r116::T + r117::T + r122::T + r123::T + r124::T + r125::T + r126::T + r127::T + r132::T + r133::T + r134::T + r135::T + r136::T + r137::T + r142::T + r143::T + r144::T + r145::T + r146::T + r147::T + r152::T + r153::T + r154::T + r155::T + r156::T + r157::T + r162::T + r163::T + r164::T + r165::T + r166::T + r167::T +end + +@fold function Vern7InterpolationCoefficients(::Type{T}) where {T <: CompiledFloats} + r011 = convert(T, 1) + r012 = convert(T, -8.413387198332767) + r013 = convert(T, 33.675508884490895) + r014 = convert(T, -70.80159089484886) + r015 = convert(T, 80.64695108301298) + r016 = convert(T, -47.19413969837522) + r017 = convert(T, 11.133813442539243) + r042 = convert(T, 8.754921980674396) + r043 = convert(T, -88.4596828699771) + r044 = convert(T, 346.9017638429916) + r045 = convert(T, -629.2580030059837) + r046 = convert(T, 529.6773755604193) + r047 = convert(T, -167.35886986514018) + r052 = convert(T, 8.913387586637922) + r053 = convert(T, -90.06081846893218) + r054 = convert(T, 353.1807459217058) + r055 = convert(T, -640.6476819744374) + r056 = convert(T, 539.2646279047156) + r057 = convert(T, -170.38809442991547) + r062 = convert(T, 5.1733120298478) + r063 = convert(T, -52.271115900055385) + r064 = convert(T, 204.9853867374073) + r065 = convert(T, -371.8306118563603) + r066 = convert(T, 312.9880934374529) + r067 = convert(T, -98.89290352172495) + r072 = convert(T, 16.79537744079696) + r073 = convert(T, -169.70040000059728) + r074 = convert(T, 665.4937727009246) + r075 = convert(T, -1207.1638892336007) + r076 = convert(T, 1016.1291515818546) + r077 = convert(T, -321.06001557237494) + r082 = convert(T, -10.005997536098665) + r083 = convert(T, 101.1005433052275) + r084 = convert(T, -396.47391512378437) + r085 = convert(T, 719.1787707014183) + r086 = convert(T, -605.3681033918824) + r087 = convert(T, 191.27439892797935) + r092 = convert(T, 2.764708833638599) + r093 = convert(T, -27.934602637390462) + r094 = convert(T, 109.54779186137893) + r095 = convert(T, -198.7128113064482) + r096 = convert(T, 167.26633571640318) + r097 = convert(T, -52.85010499525706) + r112 = convert(T, -2.1696320280163506) + r113 = convert(T, 22.016696037569876) + r114 = convert(T, -86.90152427798948) + r115 = convert(T, 159.22388973861476) + r116 = convert(T, -135.9618306534588) + r117 = convert(T, 43.792401183280006) + r122 = convert(T, -4.890070188793804) + r123 = convert(T, 22.75407737425176) + r124 = convert(T, -30.78034218537731) + r125 = convert(T, -2.797194317207249) + r126 = convert(T, 31.369456637508403) + r127 = convert(T, -15.655927320381801) + r132 = convert(T, 10.862170929551967) + r133 = convert(T, -50.542971417827104) + r134 = convert(T, 68.37148040407511) + r135 = convert(T, 6.213326521632409) + r136 = convert(T, -69.68006323194157) + r137 = convert(T, 34.776056794509195) + r142 = convert(T, -11.37286691922923) + r143 = convert(T, 130.79058078246717) + r144 = convert(T, -488.65113677785604) + r145 = convert(T, 832.2148793276441) + r146 = convert(T, -664.7743368554426) + r147 = convert(T, 201.79288044241662) + r152 = convert(T, -5.919778732715007) + r153 = convert(T, 63.27679965889219) + r154 = convert(T, -265.432682088738) + r155 = convert(T, 520.1009254140611) + r156 = convert(T, -467.412109533902) + r157 = convert(T, 155.3868452824017) + r162 = convert(T, -10.492146197961823) + r163 = convert(T, 105.35538525188011) + r164 = convert(T, -409.43975011988937) + r165 = convert(T, 732.831448907654) + r166 = convert(T, -606.3044574733512) + r167 = convert(T, 188.0495196316683) + + Vern7InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r042, r043, + r044, r045, r046, r047, r052, r053, r054, r055, r056, + r057, r062, r063, r064, r065, r066, r067, r072, r073, + r074, r075, r076, r077, r082, r083, r084, r085, r086, + r087, r092, r093, r094, r095, r096, r097, r112, r113, + r114, r115, r116, r117, r122, r123, r124, r125, r126, + r127, r132, r133, r134, r135, r136, r137, r142, r143, + r144, r145, r146, r147, r152, r153, r154, r155, r156, + r157, r162, r163, r164, r165, r166, r167) +end + +@fold function Vern7InterpolationCoefficients(::Type{T}) where {T} + r011 = convert(T, big" 1") + r012 = convert(T, big"-8.413387198332767469319987751201351965810") + r013 = convert(T, big" 33.67550888449089654479469983556967202215") + r014 = convert(T, big"-70.80159089484886164618905961010838757357") + r015 = convert(T, big" 80.64695108301297872968868805293298389704") + r016 = convert(T, big"-47.19413969837521580145883430419406103536") + r017 = convert(T, big" 11.13381344253924186418881142808952641234") + r042 = convert(T, big" 8.754921980674397160629587282876763437696") + r043 = convert(T, big"-88.45968286997709426134300934922618655402") + r044 = convert(T, big" 346.9017638429916309499891288356321692825") + r045 = convert(T, big"-629.2580030059837046812187141184986252218") + r046 = convert(T, big" 529.6773755604192983874116479833480529304") + r047 = convert(T, big"-167.3588698651401860365089970240284051167") + r052 = convert(T, big" 8.913387586637921662996190126913331844214") + r053 = convert(T, big"-90.06081846893217794712014609702916991513") + r054 = convert(T, big" 353.1807459217057824951538014683541349020") + r055 = convert(T, big"-640.6476819744374433668701027882567716886") + r056 = convert(T, big" 539.2646279047155261551781390920363285084") + r057 = convert(T, big"-170.3880944299154827945664954924414008798") + r062 = convert(T, big" 5.173312029847800338889849068990984974299") + r063 = convert(T, big"-52.27111590005538823385270070373176751689") + r064 = convert(T, big" 204.9853867374073094711024260808085419491") + r065 = convert(T, big"-371.8306118563602890875634623992262437796") + r066 = convert(T, big" 312.9880934374529000210073972654145891826") + r067 = convert(T, big"-98.89290352172494693555119599233959305606") + r072 = convert(T, big" 16.79537744079695986364946329034055578253") + r073 = convert(T, big"-169.7004000005972744435739149730966805754") + r074 = convert(T, big" 665.4937727009246303131700313781960584913") + r075 = convert(T, big"-1207.163889233600728395392916633015853882") + r076 = convert(T, big" 1016.129151581854603280159105697386989470") + r077 = convert(T, big"-321.0600155723749421933210511704882816019") + r082 = convert(T, big"-10.00599753609866476866352971232058330270") + r083 = convert(T, big" 101.1005433052275068199636113246449312792") + r084 = convert(T, big"-396.4739151237843754958939772727577263768") + r085 = convert(T, big" 719.1787707014182914108130834128646525498") + r086 = convert(T, big"-605.3681033918824350795711030652978269725") + r087 = convert(T, big" 191.2743989279793520691961908384572824802") + r092 = convert(T, big" 2.764708833638599139713222853969606774131") + r093 = convert(T, big"-27.93460263739046178114640484830267988046") + r094 = convert(T, big" 109.5477918613789217803046856340175757800") + r095 = convert(T, big"-198.7128113064482116421691972646370773711") + r096 = convert(T, big" 167.2663357164031670694252647113936863857") + r097 = convert(T, big"-52.85010499525706346613022509203974406942") + r112 = convert(T, big"-2.169632028016350481156919876642428429100") + r113 = convert(T, big" 22.01669603756987625585768587320929912766") + r114 = convert(T, big"-86.90152427798948350846176288615482496306") + r115 = convert(T, big" 159.2238897386147443720253338471077193471") + r116 = convert(T, big"-135.9618306534587908363115231453760181702") + r117 = convert(T, big" 43.79240118328000419804718618785625308759") + r122 = convert(T, big"-4.890070188793803933769786966428026149549") + r123 = convert(T, big" 22.75407737425176120799532459991506803585") + r124 = convert(T, big"-30.78034218537730965082079824005797506535") + r125 = convert(T, big"-2.797194317207249021142015125037024035537") + r126 = convert(T, big" 31.36945663750840183161406140272783187147") + r127 = convert(T, big"-15.65592732038180043387678567111987465689") + r132 = convert(T, big" 10.86217092955196715517224349929627754387") + r133 = convert(T, big"-50.54297141782710697188187875653305700081") + r134 = convert(T, big" 68.37148040407511827604242008548181691494") + r135 = convert(T, big" 6.213326521632409162585500428935637861213") + r136 = convert(T, big"-69.68006323194158104163196358466588618336") + r137 = convert(T, big" 34.77605679450919341971367832748521086414") + r142 = convert(T, big"-11.37286691922922915922346687401389055763") + r143 = convert(T, big" 130.7905807824671644130452602841032046030") + r144 = convert(T, big"-488.6511367778560207543260583489312609826") + r145 = convert(T, big" 832.2148793276440873476229585070779183432") + r146 = convert(T, big"-664.7743368554426242883314487337054193624") + r147 = convert(T, big" 201.7928804424166224412127551654694479565") + r152 = convert(T, big"-5.919778732715006698693070786679427540601") + r153 = convert(T, big" 63.27679965889218829298274978013773800731") + r154 = convert(T, big"-265.4326820887379575820873554556433306580") + r155 = convert(T, big" 520.1009254140610824835871087519714692468") + r156 = convert(T, big"-467.4121095339020118993777963241667608460") + r157 = convert(T, big" 155.3868452824017054035883640343803117904") + r162 = convert(T, big"-10.49214619796182281022379415510181241136") + r163 = convert(T, big" 105.3553852518801101042787230303396283676") + r164 = convert(T, big"-409.4397501198893846479834816688367917005") + r165 = convert(T, big" 732.8314489076540326880337353277812147333") + r166 = convert(T, big"-606.3044574733512377981129469949015057785") + r167 = convert(T, big" 188.0495196316683024640077644607192667895") + + Vern7InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r042, r043, + r044, r045, r046, r047, r052, r053, r054, r055, r056, + r057, r062, r063, r064, r065, r066, r067, r072, r073, + r074, r075, r076, r077, r082, r083, r084, r085, r086, + r087, r092, r093, r094, r095, r096, r097, r112, r113, + r114, r115, r116, r117, r122, r123, r124, r125, r126, + r127, r132, r133, r134, r135, r136, r137, r142, r143, + r144, r145, r146, r147, r152, r153, r154, r155, r156, + r157, r162, r163, r164, r165, r166, r167) +end + +struct Vern7Tableau{T, T2} + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + a021::T + a031::T + a032::T + a041::T + a043::T + a051::T + a053::T + a054::T + a061::T + a063::T + a064::T + a065::T + a071::T + a073::T + a074::T + a075::T + a076::T + a081::T + a083::T + a084::T + a085::T + a086::T + a087::T + a091::T + a093::T + a094::T + a095::T + a096::T + a097::T + a098::T + a101::T + a103::T + a104::T + a105::T + a106::T + a107::T + b1::T + b4::T + b5::T + b6::T + b7::T + b8::T + b9::T + btilde1::T + btilde4::T + btilde5::T + btilde6::T + btilde7::T + btilde8::T + btilde9::T + btilde10::T +end + +@fold function Vern7Tableau(::Type{T}, + ::Type{T2}) where {T <: CompiledFloats, T2 <: CompiledFloats} + c2 = convert(T2, 0.005) + c3 = convert(T2, 0.10888888888888888) + c4 = convert(T2, 0.16333333333333333) + c5 = convert(T2, 0.4555) + c6 = convert(T2, 0.6095094489978381) + c7 = convert(T2, 0.884) + c8 = convert(T2, 0.925) + a021 = convert(T, 0.005) + a031 = convert(T, -1.07679012345679) + a032 = convert(T, 1.185679012345679) + a041 = convert(T, 0.04083333333333333) + a043 = convert(T, 0.1225) + a051 = convert(T, 0.6389139236255726) + a053 = convert(T, -2.455672638223657) + a054 = convert(T, 2.272258714598084) + a061 = convert(T, -2.6615773750187572) + a063 = convert(T, 10.804513886456137) + a064 = convert(T, -8.3539146573962) + a065 = convert(T, 0.820487594956657) + a071 = convert(T, 6.067741434696772) + a073 = convert(T, -24.711273635911088) + a074 = convert(T, 20.427517930788895) + a075 = convert(T, -1.9061579788166472) + a076 = convert(T, 1.006172249242068) + a081 = convert(T, 12.054670076253203) + a083 = convert(T, -49.75478495046899) + a084 = convert(T, 41.142888638604674) + a085 = convert(T, -4.461760149974004) + a086 = convert(T, 2.042334822239175) + a087 = convert(T, -0.09834843665406107) + a091 = convert(T, 10.138146522881808) + a093 = convert(T, -42.6411360317175) + a094 = convert(T, 35.76384003992257) + a095 = convert(T, -4.3480228403929075) + a096 = convert(T, 2.0098622683770357) + a097 = convert(T, 0.3487490460338272) + a098 = convert(T, -0.27143900510483127) + a101 = convert(T, -45.030072034298676) + a103 = convert(T, 187.3272437654589) + a104 = convert(T, -154.02882369350186) + a105 = convert(T, 18.56465306347536) + a106 = convert(T, -7.141809679295079) + a107 = convert(T, 1.3088085781613787) + b1 = convert(T, 0.04715561848627222) + b4 = convert(T, 0.25750564298434153) + b5 = convert(T, 0.26216653977412624) + b6 = convert(T, 0.15216092656738558) + b7 = convert(T, 0.4939969170032485) + b8 = convert(T, -0.29430311714032503) + b9 = convert(T, 0.08131747232495111) + # bhat1 = convert(T,0.044608606606341174) + # bhat4 = convert(T,0.26716403785713727) + # bhat5 = convert(T,0.22010183001772932) + # bhat6 = convert(T,0.2188431703143157) + # bhat7 = convert(T,0.22898717054112028) + # bhat10 = convert(T,0.02029518466335628) + btilde1 = convert(T, 0.002547011879931045) + btilde4 = convert(T, -0.00965839487279575) + btilde5 = convert(T, 0.04206470975639691) + btilde6 = convert(T, -0.0666822437469301) + btilde7 = convert(T, 0.2650097464621281) + btilde8 = convert(T, -0.29430311714032503) + btilde9 = convert(T, 0.08131747232495111) + btilde10 = convert(T, -0.02029518466335628) + + Vern7Tableau( + c2, c3, c4, c5, c6, c7, c8, a021, a031, a032, a041, a043, a051, a053, a054, + a061, a063, a064, a065, a071, a073, a074, a075, a076, a081, a083, a084, + a085, a086, a087, a091, a093, a094, a095, a096, a097, a098, a101, a103, + a104, a105, a106, a107, b1, b4, b5, b6, b7, b8, b9, btilde1, btilde4, + btilde5, btilde6, btilde7, btilde8, btilde9, btilde10) +end + +@fold function Vern7Tableau(::Type{T}, ::Type{T2}) where {T, T2} + c2 = convert(T2, 1 // 200) + c3 = convert(T2, 49 // 450) + c4 = convert(T2, 49 // 300) + c5 = convert(T2, 911 // 2000) + c6 = convert(T2, 3480084980 // 5709648941) + c7 = convert(T2, 221 // 250) + c8 = convert(T2, 37 // 40) + a021 = convert(T, 1 // 200) + a031 = convert(T, -4361 // 4050) + a032 = convert(T, 2401 // 2025) + a041 = convert(T, 49 // 1200) + a043 = convert(T, 49 // 400) + a051 = convert(T, 2454451729 // 3841600000) + a053 = convert(T, -9433712007 // 3841600000) + a054 = convert(T, 4364554539 // 1920800000) + a061 = convert(T, + -BigInt(6187101755456742839167388910402379177523537620) // + BigInt(2324599620333464857202963610201679332423082271)) + a063 = convert(T, + BigInt(27569888999279458303270493567994248533230000) // + BigInt(2551701010245296220859455115479340650299761)) + a064 = convert(T, + -BigInt(37368161901278864592027018689858091583238040000) // + BigInt(4473131870960004275166624817435284159975481033)) + a065 = convert(T, + BigInt(1392547243220807196190880383038194667840000000) // + BigInt(1697219131380493083996999253929006193143549863)) + a071 = convert(T, 11272026205260557297236918526339 // 1857697188743815510261537500000) + a073 = convert(T, -48265918242888069 // 1953194276993750) + a074 = convert(T, 26726983360888651136155661781228 // 1308381343805114800955157615625) + a075 = convert(T, -2090453318815827627666994432 // 1096684189897834170412307919) + a076 = convert(T, + BigInt(1148577938985388929671582486744843844943428041509) // + BigInt(1141532118233823914568777901158338927629837500000)) + a081 = convert(T, + BigInt(1304457204588839386329181466225966641) // + BigInt(108211771565488329642169667802016000)) + a083 = convert(T, -1990261989751005 // 40001418792832) + a084 = convert(T, + BigInt(2392691599894847687194643439066780106875) // + BigInt(58155654089143548047476915856270826016)) + a085 = convert(T, + -BigInt(1870932273351008733802814881998561250) // + BigInt(419326053051486744762255151208232123)) + a086 = convert(T, + BigInt(1043329047173803328972823866240311074041739158858792987034783181) // + BigInt(510851127745017966999893975119259285040213723744255237522144000)) + a087 = convert(T, -311918858557595100410788125 // 3171569057622789618800376448) + a091 = convert(T, + BigInt(17579784273699839132265404100877911157) // + BigInt(1734023495717116205617154737841023480)) + a093 = convert(T, -18539365951217471064750 // 434776548575709731377) + a094 = convert(T, + BigInt(447448655912568142291911830292656995992000) // + BigInt(12511202807447096607487664209063950964109)) + a095 = convert(T, + -BigInt(65907597316483030274308429593905808000000) // + BigInt(15158061430635748897861852383197382130691)) + a096 = convert(T, + BigInt(273847823027445129865693702689010278588244606493753883568739168819449761) // + BigInt(136252034448398939768371761610231099586032870552034688235302796640584360)) + a097 = convert(T, + BigInt(694664732797172504668206847646718750) // + BigInt(1991875650119463976442052358853258111)) + a098 = convert(T, + -19705319055289176355560129234220800 // + 72595753317320295604316217197876507) + a101 = convert(T, + -511858190895337044664743508805671 // 11367030248263048398341724647960) + a103 = convert(T, 2822037469238841750 // 15064746656776439) + a104 = convert(T, + -BigInt(23523744880286194122061074624512868000) // + BigInt(152723005449262599342117017051789699)) + a105 = convert(T, + BigInt(10685036369693854448650967542704000000) // + BigInt(575558095977344459903303055137999707)) + a106 = convert(T, + -BigInt(6259648732772142303029374363607629515525848829303541906422993) // + BigInt(876479353814142962817551241844706205620792843316435566420120)) + a107 = convert(T, + 17380896627486168667542032602031250 // + 13279937889697320236613879977356033) + b1 = convert(T, 96762636172307789 // 2051985304794103980) + b4 = convert(T, 312188947591288252500000 // 1212357694274963646019729) + b5 = convert(T, 13550580884964304000000000000 // 51686919683339547115937980629) + b6 = convert(T, + BigInt(72367769693133178898676076432831566019684378142853445230956642801) // + BigInt(475600216991873963561768100160364792981629064220601844848928537580)) + b7 = convert(T, 1619421054120605468750 // 3278200730370057108183) + b8 = convert(T, -66898316144057728000 // 227310933007074849597) + b9 = convert(T, 181081444637946577 // 2226845467039736466) + # bhat1 = convert(T,117807213929927//2640907728177740) + # bhat4 = convert(T,4758744518816629500000//17812069906509312711137) + # bhat5 = convert(T,1730775233574080000000000//7863520414322158392809673) + # bhat6 = convert(T,BigInt(2682653613028767167314032381891560552585218935572349997)//BigInt(12258338284789875762081637252125169126464880985167722660)) + # bhat7 = convert(T,40977117022675781250//178949401077111131341) + # bhat10 = convert(T,2152106665253777//106040260335225546) + btilde1 = convert(T, 522643094875451 // 205198530479410398) + btilde4 = convert(T, -550343178903849903000000 // 56980811630923291362927263) + btilde5 = convert(T, 197654115880170560000000000 // 4698810880303595192357998239) + btilde6 = convert(T, + BigInt(-3171408959554499061315206389277085667739969057641653677018211151) // + BigInt(47560021699187396356176810016036479298162906422060184484892853758)) + btilde7 = convert(T, 40831491787144609375000 // 154075434327392684084601) + btilde8 = convert(T, -66898316144057728000 // 227310933007074849597) + btilde9 = convert(T, 181081444637946577 // 2226845467039736466) + btilde10 = convert(T, -2152106665253777 // 106040260335225546) + + Vern7Tableau( + c2, c3, c4, c5, c6, c7, c8, a021, a031, a032, a041, a043, a051, a053, a054, + a061, a063, a064, a065, a071, a073, a074, a075, a076, a081, a083, a084, + a085, a086, a087, a091, a093, a094, a095, a096, a097, a098, a101, a103, + a104, a105, a106, a107, b1, b4, b5, b6, b7, b8, b9, btilde1, btilde4, + btilde5, btilde6, btilde7, btilde8, btilde9, btilde10) +end + +## Vern8 +struct Vern8ExtraStages{T, T2} + c14::T2 + a1401::T + a1406::T + a1407::T + a1408::T + a1409::T + a1410::T + a1411::T + a1412::T + c15::T2 + a1501::T + a1506::T + a1507::T + a1508::T + a1509::T + a1510::T + a1511::T + a1512::T + a1514::T + c16::T2 + a1601::T + a1606::T + a1607::T + a1608::T + a1609::T + a1610::T + a1611::T + a1612::T + a1614::T + a1615::T + c17::T2 + a1701::T + a1706::T + a1707::T + a1708::T + a1709::T + a1710::T + a1711::T + a1712::T + a1714::T + a1715::T + a1716::T + c18::T2 + a1801::T + a1806::T + a1807::T + a1808::T + a1809::T + a1810::T + a1811::T + a1812::T + a1814::T + a1815::T + a1816::T + a1817::T + c19::T2 + a1901::T + a1906::T + a1907::T + a1908::T + a1909::T + a1910::T + a1911::T + a1912::T + a1914::T + a1915::T + a1916::T + a1917::T + c20::T2 + a2001::T + a2006::T + a2007::T + a2008::T + a2009::T + a2010::T + a2011::T + a2012::T + a2014::T + a2015::T + a2016::T + a2017::T + c21::T2 + a2101::T + a2106::T + a2107::T + a2108::T + a2109::T + a2110::T + a2111::T + a2112::T + a2114::T + a2115::T + a2116::T + a2117::T +end + +function Vern8ExtraStages(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c14 = convert(T2, 1) + a1401 = convert(T, 0.04427989419007951) + a1406 = convert(T, 0.3541049391724449) + a1407 = convert(T, 0.2479692154956438) + a1408 = convert(T, -15.694202038838084) + a1409 = convert(T, 25.084064965558564) + a1410 = convert(T, -31.738367786260277) + a1411 = convert(T, 22.938283273988784) + a1412 = convert(T, -0.2361324633071542) + c15 = convert(T2, 0.3110177634953864) + a1501 = convert(T, 0.04620700646754963) + a1506 = convert(T, 0.045039041608424805) + a1507 = convert(T, 0.23368166977134244) + a1508 = convert(T, 37.83901368421068) + a1509 = convert(T, -15.949113289454246) + a1510 = convert(T, 23.028368351816102) + a1511 = convert(T, -44.85578507769412) + a1512 = convert(T, -0.06379858768647444) + a1514 = convert(T, -0.012595035543861663) + c16 = convert(T2, 0.1725) + a1601 = convert(T, 0.05037946855482041) + a1606 = convert(T, 0.041098361310460796) + a1607 = convert(T, 0.17180541533481958) + a1608 = convert(T, 4.614105319981519) + a1609 = convert(T, -1.7916678830853965) + a1610 = convert(T, 2.531658930485041) + a1611 = convert(T, -5.324977860205731) + a1612 = convert(T, -0.03065532595385635) + a1614 = convert(T, -0.005254479979429613) + a1615 = convert(T, -0.08399194644224793) + c17 = convert(T2, 0.7846) + a1701 = convert(T, 0.0408289713299708) + a1706 = convert(T, 0.4244479514247632) + a1707 = convert(T, 0.23260915312752345) + a1708 = convert(T, 2.677982520711806) + a1709 = convert(T, 0.7420826657338945) + a1710 = convert(T, 0.1460377847941461) + a1711 = convert(T, -3.579344509890565) + a1712 = convert(T, 0.11388443896001738) + a1714 = convert(T, 0.012677906510331901) + a1715 = convert(T, -0.07443436349946675) + a1716 = convert(T, 0.047827480797578516) + c18 = convert(T2, 0.37) + a1801 = convert(T, 0.052126823936684136) + a1806 = convert(T, 0.053925083967447975) + a1807 = convert(T, 0.01660758097434641) + a1808 = convert(T, -4.45448575792678) + a1809 = convert(T, 6.835218278632146) + a1810 = convert(T, -8.711334822181994) + a1811 = convert(T, 6.491635839232917) + a1812 = convert(T, -0.07072551809844346) + a1814 = convert(T, -0.018540314919932164) + a1815 = convert(T, 0.023504021054353848) + a1816 = convert(T, 0.2344795103407822) + a1817 = convert(T, -0.08241072501152899) + c19 = convert(T2, 0.5) + a1901 = convert(T, 0.05020102870355714) + a1906 = convert(T, 0.1552209034795498) + a1907 = convert(T, 0.1264268424089235) + a1908 = convert(T, -5.149206303539847) + a1909 = convert(T, 8.46834099903693) + a1910 = convert(T, -10.662130681081495) + a1911 = convert(T, 7.541833224959729) + a1912 = convert(T, -0.07436968113832143) + a1914 = convert(T, -0.020558876866183826) + a1915 = convert(T, 0.07753795264710298) + a1916 = convert(T, 0.10462592203525443) + a1917 = convert(T, -0.11792133064519794) + c20 = convert(T2, 0.7) + a2001 = convert(T, 0.03737341446457826) + a2006 = convert(T, 0.35049307053383166) + a2007 = convert(T, 0.49226528193730257) + a2008 = convert(T, 8.553695439359313) + a2009 = convert(T, -10.353172990305913) + a2010 = convert(T, 13.83320427252915) + a2011 = convert(T, -12.280924330784618) + a2012 = convert(T, 0.17191515956565098) + a2014 = convert(T, 0.036415831143144964) + a2015 = convert(T, 0.02961920580288763) + a2016 = convert(T, -0.2651793938627067) + a2017 = convert(T, 0.09429503961738067) + c21 = convert(T2, 0.9) + a2101 = convert(T, 0.039390583455282506) + a2106 = convert(T, 0.3558516141234424) + a2107 = convert(T, 0.419738222595261) + a2108 = convert(T, 0.8720449778071941) + a2109 = convert(T, 0.8989520834876595) + a2110 = convert(T, -0.6305806161059884) + a2111 = convert(T, -1.1218872205954835) + a2112 = convert(T, 0.04298219512400197) + a2114 = convert(T, 0.013325575668739157) + a2115 = convert(T, 0.018762270539641482) + a2116 = convert(T, -0.18594111329221055) + a2117 = convert(T, 0.17736142719246029) + + Vern8ExtraStages(c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, + a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, + a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, + c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, + a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, + a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, + a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, + a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, + a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, + a2114, a2115, a2116, a2117) +end + +function Vern8ExtraStages(T, T2) + c14 = convert(T2, 1) + a1401 = convert(T, big" .4427989419007951074716746668098518862111e-1") + a1406 = convert(T, big" .3541049391724448744815552028733568354121") + a1407 = convert(T, big" .2479692154956437828667629415370663023884") + a1408 = convert(T, big"-15.69420203883808405099207034271191213468") + a1409 = convert(T, big" 25.08406496555856261343930031237186278518") + a1410 = convert(T, big"-31.73836778626027646833156112007297739997") + a1411 = convert(T, big" 22.93828327398878395231483560344797018313") + a1412 = convert(T, big"-.2361324633071542145259900641263517600737") + c15 = convert(T2, big" .3110177634953863863927417318829099695921") + a1501 = convert(T, big" .4620700646754963101730413150238116432863e-1") + a1506 = convert(T, big" .4503904160842480866828520384400679697151e-1") + a1507 = convert(T, big" .2336816697713424410788701065340221126565") + a1508 = convert(T, big" 37.83901368421067410780338220861855254153") + a1509 = convert(T, big"-15.94911328945424610266139490307397370835") + a1510 = convert(T, big" 23.02836835181610285142510596329590091940") + a1511 = convert(T, big"-44.85578507769412524816130998016948002745") + a1512 = convert(T, big"-.6379858768647444009509067402330140781326e-1") + a1514 = convert(T, big"-.1259503554386166268241032464519842162533e-1") + c16 = convert(T2, 69 // 400) + a1601 = convert(T, big" .5037946855482040993065158747220696112586e-1") + a1606 = convert(T, big" .4109836131046079339916530614028848248545e-1") + a1607 = convert(T, big" .1718054153348195783296309209549424619697") + a1608 = convert(T, big" 4.61410531998151886974342237185977124648") + a1609 = convert(T, big"-1.791667883085396449712744996746836471721") + a1610 = convert(T, big" 2.531658930485041408462243518792913614971") + a1611 = convert(T, big"-5.32497786020573071925718815977276269909") + a1612 = convert(T, big"-.3065532595385634734924449496356513113607e-1") + a1614 = convert(T, big"-.5254479979429613570549519094377878106127e-2") + a1615 = convert(T, big"-.8399194644224792997538653464258058697156e-1") + c17 = convert(T2, 7846 // 10000) + a1701 = convert(T, big" .4082897132997079620207118756242653796386e-1") + a1706 = convert(T, big" .4244479514247632218892086657732332485609") + a1707 = convert(T, big" .2326091531275234539465100096964845486081") + a1708 = convert(T, big" 2.677982520711806062780528871014035962908") + a1709 = convert(T, big" .7420826657338945216477607044022963622057") + a1710 = convert(T, big" .1460377847941461193920992339731312296021") + a1711 = convert(T, big"-3.579344509890565218033356743825917680543") + a1712 = convert(T, big" .1138844389600173704531638716149985665239") + a1714 = convert(T, big" .1267790651033190047378693537615687232109e-1") + a1715 = convert(T, big"-.7443436349946674429752785032561552478382e-1") + a1716 = convert(T, big" .4782748079757851554575511473876987663388e-1") + c18 = convert(T2, 37 // 100) + a1801 = convert(T, big" .5212682393668413629928136927994514676607e-1") + a1806 = convert(T, big" .5392508396744797718209106862347065628649e-1") + a1807 = convert(T, big" .1660758097434640828541930599928251901718e-1") + a1808 = convert(T, big"-4.454485757926779655418936993298463071587") + a1809 = convert(T, big" 6.835218278632146381711296817968152631469") + a1810 = convert(T, big"-8.711334822181993739847172734848837971169") + a1811 = convert(T, big" 6.491635839232917053651267142703105653517") + a1812 = convert(T, big"-.7072551809844346422069985227700294651922e-1") + a1814 = convert(T, big"-.1854031491993216429111842937941202966440e-1") + a1815 = convert(T, big" .2350402105435384645116542087045962190647e-1") + a1816 = convert(T, big" .2344795103407822090556377813402774776461") + a1817 = convert(T, big"-.8241072501152898885823089698097768766651e-1") + c19 = convert(T2, 1 // 2) + a1901 = convert(T, big" .5020102870355713598699964419977883461362e-1") + a1906 = convert(T, big" .1552209034795498114932226104700567642339") + a1907 = convert(T, big" .1264268424089234914713091134864747506300") + a1908 = convert(T, big"-5.14920630353984701704917414605721854951") + a1909 = convert(T, big" 8.46834099903692926607453176331494311551") + a1910 = convert(T, big"-10.66213068108149527544209836207095498430") + a1911 = convert(T, big" 7.54183322495972836290996201569018333903") + a1912 = convert(T, big"-.743696811383214243944066492459357053774e-1") + a1914 = convert(T, big"-.2055887686618382619339821759221121764364e-1") + a1915 = convert(T, big" .775379526471029807261782993777862395844e-1") + a1916 = convert(T, big" .1046259220352544296313761971333987587377") + a1917 = convert(T, big"-.1179213306451979352145022687063013455111") + c20 = convert(T2, 7 // 10) + a2001 = convert(T, big" .3737341446457825692757506548800094134977e-1") + a2006 = convert(T, big" .3504930705338316406767087468339071089224") + a2007 = convert(T, big" .4922652819373025433298989824173484805373") + a2008 = convert(T, big" 8.553695439359312242284304421725315855379") + a2009 = convert(T, big"-10.35317299030591348532574006719207803272") + a2010 = convert(T, big" 13.83320427252914990351082875460544773493") + a2011 = convert(T, big"-12.28092433078461863729523583784519048012") + a2012 = convert(T, big" .1719151595656509762746810113378644307112") + a2014 = convert(T, big" .3641583114314496380113822384214528216140e-1") + a2015 = convert(T, big" .2961920580288763054890146412520723429115e-1") + a2016 = convert(T, big"-.2651793938627067002647615623738425030047") + a2017 = convert(T, big" .942950396173806655317007970358739475630e-1") + c21 = convert(T2, 9 // 10) + a2101 = convert(T, big" .3939058345528250943410670634923521987132e-1") + a2106 = convert(T, big" .3558516141234424183136697322755323715063") + a2107 = convert(T, big" .4197382225952610029372225526720065366258") + a2108 = convert(T, big" .872044977807194166293172525204036071060") + a2109 = convert(T, big" .898952083487659486126627160171417043611") + a2110 = convert(T, big"-.630580616105988359023456649527853470403") + a2111 = convert(T, big"-1.121887220595483550736681645425215081433") + a2112 = convert(T, big" .4298219512400197176967511031829197714867e-1") + a2114 = convert(T, big" .1332557566873915707013495891889190564164e-1") + a2115 = convert(T, big" .1876227053964148034446101291928097773800e-1") + a2116 = convert(T, big"-.1859411132922105570515379368592596513699") + a2117 = convert(T, big" .1773614271924602745226064729836361000042") + + Vern8ExtraStages(c14, a1401, a1406, a1407, a1408, a1409, a1410, a1411, a1412, c15, + a1501, a1506, a1507, a1508, a1509, a1510, a1511, a1512, a1514, c16, + a1601, a1606, a1607, a1608, a1609, a1610, a1611, a1612, a1614, a1615, + c17, a1701, a1706, a1707, a1708, a1709, a1710, a1711, a1712, a1714, + a1715, a1716, c18, a1801, a1806, a1807, a1808, a1809, a1810, a1811, + a1812, a1814, a1815, a1816, a1817, c19, a1901, a1906, a1907, a1908, + a1909, a1910, a1911, a1912, a1914, a1915, a1916, a1917, c20, a2001, + a2006, a2007, a2008, a2009, a2010, a2011, a2012, a2014, a2015, a2016, + a2017, c21, a2101, a2106, a2107, a2108, a2109, a2110, a2111, a2112, + a2114, a2115, a2116, a2117) +end + +struct Vern8InterpolationCoefficients{T} + r011::T + r012::T + r013::T + r014::T + r015::T + r016::T + r017::T + r018::T + r062::T + r063::T + r064::T + r065::T + r066::T + r067::T + r068::T + r072::T + r073::T + r074::T + r075::T + r076::T + r077::T + r078::T + r082::T + r083::T + r084::T + r085::T + r086::T + r087::T + r088::T + r092::T + r093::T + r094::T + r095::T + r096::T + r097::T + r098::T + r102::T + r103::T + r104::T + r105::T + r106::T + r107::T + r108::T + r112::T + r113::T + r114::T + r115::T + r116::T + r117::T + r118::T + r122::T + r123::T + r124::T + r125::T + r126::T + r127::T + r128::T + r142::T + r143::T + r144::T + r145::T + r146::T + r147::T + r148::T + r152::T + r153::T + r154::T + r155::T + r156::T + r157::T + r158::T + r162::T + r163::T + r164::T + r165::T + r166::T + r167::T + r168::T + r172::T + r173::T + r174::T + r175::T + r176::T + r177::T + r178::T + r182::T + r183::T + r184::T + r185::T + r186::T + r187::T + r188::T + r192::T + r193::T + r194::T + r195::T + r196::T + r197::T + r198::T + r202::T + r203::T + r204::T + r205::T + r206::T + r207::T + r208::T + r212::T + r213::T + r214::T + r215::T + r216::T + r217::T + r218::T +end + +function Vern8InterpolationCoefficients(T::Type{<:CompiledFloats}) + r011 = convert(T, 1) + r012 = convert(T, -10.039154650554519) + r013 = convert(T, 53.79210495862331) + r014 = convert(T, -165.0579057235472) + r015 = convert(T, 298.026456543461) + r016 = convert(T, -311.91254487079004) + r017 = convert(T, 174.60598526911716) + r018 = convert(T, -40.37066163211959) + r062 = convert(T, 158.1976739121776) + r063 = convert(T, -1543.96141721949) + r064 = convert(T, 6241.39874782878) + r065 = convert(T, -13136.516156406109) + r066 = convert(T, 15106.948493169599) + r067 = convert(T, -8996.489626298231) + r068 = convert(T, 2170.776389952444) + r072 = convert(T, 110.78115200797782) + r073 = convert(T, -1081.1905145356177) + r074 = convert(T, 4370.666940459977) + r075 = convert(T, -9199.113723922197) + r076 = convert(T, 10578.949209629855) + r077 = convert(T, -6299.975594978841) + r078 = convert(T, 1520.1305005543413) + r082 = convert(T, -7011.442038211314) + r083 = convert(T, 68429.55220744078) + r084 = convert(T, -276623.5714822198) + r085 = convert(T, 582220.4545548494) + r086 = convert(T, -669551.5244611246) + r087 = convert(T, 398731.3087623333) + r088 = convert(T, -96210.47174510667) + r092 = convert(T, 11206.397569848148) + r093 = convert(T, -109371.04854950662) + r094 = convert(T, 442127.8393698155) + r095 = convert(T, -930563.7629864562) + r096 = convert(T, 1.0701451335855902e6) + r097 = convert(T, -637292.8058429047) + r098 = convert(T, 153773.3309185794) + r102 = convert(T, -14179.231640455684) + r103 = convert(T, 138385.00931963572) + r104 = convert(T, -559415.549024087) + r105 = convert(T, 1.1774237946992505e6) + r106 = convert(T, -1.3540333227908213e6) + r107 = convert(T, 806353.893882505) + r108 = convert(T, -194566.3328138133) + r112 = convert(T, 10247.761767921746) + r113 = convert(T, -100015.05326375231) + r114 = convert(T, 404306.62401434296) + r115 = convert(T, -850959.9711689702) + r116 = convert(T, 978601.0462088685) + r117 = convert(T, -582776.4729907749) + r118 = convert(T, 140619.0037156383) + r122 = convert(T, -105.49303976850968) + r123 = convert(T, 1029.5801395803103) + r124 = convert(T, -4162.034181876453) + r125 = convert(T, 8759.996193602336) + r126 = convert(T, -10073.965556886049) + r127 = convert(T, 5999.247741473951) + r128 = convert(T, -1447.5674285888924) + r142 = convert(T, -14.863613373267432) + r143 = convert(T, 145.76359364894867) + r144 = convert(T, -587.6557063401914) + r145 = convert(T, 1227.3721512545558) + r146 = convert(T, -1394.4931057405536) + r147 = convert(T, 816.8562950730669) + r148 = convert(T, -192.97961452255882) + r152 = convert(T, 14.349685752905462) + r153 = convert(T, -150.29493444816657) + r154 = convert(T, 629.481242570029) + r155 = convert(T, -1352.5182073090607) + r156 = convert(T, 1575.8969337088804) + r157 = convert(T, -946.7876580472948) + r158 = convert(T, 229.87293777270722) + r162 = convert(T, -102.54524701110401) + r163 = convert(T, 1074.0326612646807) + r164 = convert(T, -4498.377917100411) + r165 = convert(T, 9665.320624003281) + r166 = convert(T, -11261.62224831288) + r167 = convert(T, 6765.902468760784) + r168 = convert(T, -1642.7103416043497) + r172 = convert(T, -38.13206313286474) + r173 = convert(T, 399.3854658292329) + r174 = convert(T, -1672.7487204919717) + r175 = convert(T, 3594.1072548585666) + r176 = convert(T, -4187.7015568029265) + r177 = convert(T, 2515.9412806490636) + r178 = convert(T, -610.8516609091005) + r182 = convert(T, -66.38279583069588) + r183 = convert(T, 595.8297683881103) + r184 = convert(T, -2188.7370600929717) + r185 = convert(T, 4213.839795282853) + r186 = convert(T, -4484.035731929197) + r187 = convert(T, 2500.6482514253466) + r188 = convert(T, -571.1622272434449) + r192 = convert(T, -90.4188757317306) + r193 = convert(T, 931.9503884048154) + r194 = convert(T, -3962.898377713156) + r195 = convert(T, 8733.31742002555) + r196 = convert(T, -10445.908189887661) + r197 = convert(T, 6426.218942917599) + r198 = convert(T, -1592.261308015418) + r202 = convert(T, -59.738843630388715) + r203 = convert(T, 544.8870146891725) + r204 = convert(T, -2090.4303749263127) + r205 = convert(T, 4194.418982707227) + r206 = convert(T, -4603.369436819628) + r207 = convert(T, 2619.2014135592976) + r208 = convert(T, -604.9687555793671) + r212 = convert(T, -59.20053764683937) + r213 = convert(T, 571.7660156218088) + r214 = convert(T, -2308.9495644453605) + r215 = convert(T, 4881.2341106861395) + r216 = convert(T, -5660.118807771202) + r217 = convert(T, 3408.7066890374217) + r218 = convert(T, -833.4379054819676) + + Vern8InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r018, r062, + r063, r064, r065, r066, r067, r068, r072, r073, r074, + r075, r076, r077, r078, r082, r083, r084, r085, r086, + r087, r088, r092, r093, r094, r095, r096, r097, r098, + r102, r103, r104, r105, r106, r107, r108, r112, r113, + r114, r115, r116, r117, r118, r122, r123, r124, r125, + r126, r127, r128, r142, r143, r144, r145, r146, r147, + r148, r152, r153, r154, r155, r156, r157, r158, r162, + r163, r164, r165, r166, r167, r168, r172, r173, r174, + r175, r176, r177, r178, r182, r183, r184, r185, r186, + r187, r188, r192, r193, r194, r195, r196, r197, r198, + r202, r203, r204, r205, r206, r207, r208, r212, r213, + r214, r215, r216, r217, r218) +end + +function Vern8InterpolationCoefficients(T) + r011 = convert(T, big" 1") + r012 = convert(T, big"-10.03915465055451898280745009553727015838") + r013 = convert(T, big" 53.79210495862331394937504547285261606206") + r014 = convert(T, big"-165.0579057235472167092186792753028629327") + r015 = convert(T, big" 298.0264565434610102489744601822776142620") + r016 = convert(T, big"-311.9125448707900689751032283191627986699") + r017 = convert(T, big" 174.6059852691171542761046061351126284335") + r018 = convert(T, big"-40.37066163211959429657758663355894180800") + r062 = convert(T, big" 158.1976739121776138067531004299642556045") + r063 = convert(T, big"-1543.961417219490013383329186557376850919") + r064 = convert(T, big" 6241.398747828780065219699818963300847515") + r065 = convert(T, big"-13136.51615640610824674042591770724411138") + r066 = convert(T, big" 15106.94849316959941770760848348143558467") + r067 = convert(T, big"-8996.489626298230413000758717864256649583") + r068 = convert(T, big" 2170.776389952444021264933974457050280938") + r072 = convert(T, big" 110.7811520079778201620910891542159716196") + r073 = convert(T, big"-1081.190514535617748557462051373884811281") + r074 = convert(T, big" 4370.666940459977376891679103587685016930") + r075 = convert(T, big"-9199.113723922197066947453657458673365167") + r076 = convert(T, big" 10578.94920962985483690180716390515207397") + r077 = convert(T, big"-6299.975594978841008450271944308599363057") + r078 = convert(T, big" 1520.130500554341433782477059435641543286") + r082 = convert(T, big"-7011.442038211314089634068023254940106045") + r083 = convert(T, big" 68429.55220744077890209519664603903716349") + r084 = convert(T, big"-276623.5714822198169288202316196287008724") + r085 = convert(T, big" 582220.4545548494658856503006312634684934") + r086 = convert(T, big"-669551.5244611245601905652331468068626208") + r087 = convert(T, big" 398731.3087623332757943809792249308827732") + r088 = convert(T, big"-96210.47174510666745715793578288559674281") + r092 = convert(T, big" 11206.39756984814734031374482605836502113") + r093 = convert(T, big"-109371.0485495066182770525095928736321803") + r094 = convert(T, big" 442127.8393698154661543505844693555049508") + r095 = convert(T, big"-930563.7629864562145364082427559715712707") + r096 = convert(T, big" 1070145.133585590072636708771436125254933") + r097 = convert(T, big"-637292.8058429046904373075590712408701797") + r098 = convert(T, big" 153773.3309185793956820086499888593205888") + r102 = convert(T, big"-14179.23164045568390825368995504736244876") + r103 = convert(T, big" 138385.0093196357218693716546019209270760") + r104 = convert(T, big"-559415.5490240869974273158302752589638112") + r105 = convert(T, big" 1177423.794699250413603625249340565972051") + r106 = convert(T, big"-1354033.322790821429356166591306087001182") + r107 = convert(T, big" 806353.8938825050195016379699232308969498") + r108 = convert(T, big"-194566.3328138133045593670938904445416121") + r112 = convert(T, big" 10247.76176792174468727263230424253072668") + r113 = convert(T, big"-100015.0532637523107509874155382267979521") + r114 = convert(T, big" 404306.6240143429367125014776377339233105") + r115 = convert(T, big"-850959.9711689702682710993795157496434280") + r116 = convert(T, big" 978601.0462088684697300958464199995189771") + r117 = convert(T, big"-582776.4729907748855939796622931794117500") + r118 = convert(T, big" 140619.0037156383022701488158207833280861") + r122 = convert(T, big"-105.4930397685096787379931952745881034169") + r123 = convert(T, big" 1029.580139580310194120073236423148130618") + r124 = convert(T, big"-4162.034181876452751021493197688100770349") + r125 = convert(T, big" 8759.996193602336131526447045580160767641") + r126 = convert(T, big"-10073.96555688604885441046004449728532151") + r127 = convert(T, big" 5999.247741473950186438936812025268574829") + r128 = convert(T, big"-1447.567428588892382130036646632729629570") + r142 = convert(T, big"-14.86361337326743122469601010648237947608") + r143 = convert(T, big" 145.7635936489486611601020590400812969906") + r144 = convert(T, big"-587.6557063401913588520708808169444817103") + r145 = convert(T, big" 1227.372151254555709980234511427063838550") + r146 = convert(T, big"-1394.493105740553645217117387304216418608") + r147 = convert(T, big" 816.8562950730668774494805290335070403105") + r148 = convert(T, big"-192.9796145225588132959328212730088960570") + r152 = convert(T, big" 14.34968575290546223276673100484047073648") + r153 = convert(T, big"-150.2949344481665658851785896351738227010") + r154 = convert(T, big" 629.4812425700290706612346725243246098946") + r155 = convert(T, big"-1352.518207309060677914698908083510085133") + r156 = convert(T, big" 1575.896933708880305858556996706058962503") + r157 = convert(T, big"-946.7876580472948045886633971120598201035") + r158 = convert(T, big" 229.8729377727072096359824945955196848017") + r162 = convert(T, big"-102.5452470111040085560664290210906322518") + r163 = convert(T, big" 1074.032661264680594125263250545103109541") + r164 = convert(T, big"-4498.377917100410634753487685261882069653") + r165 = convert(T, big" 9665.320624003280508099125255751992581938") + r166 = convert(T, big"-11261.62224831288113545795903649800929060") + r167 = convert(T, big" 6765.902468760784366342575368188597359812") + r168 = convert(T, big"-1642.710341604349689799450723704711058784") + r172 = convert(T, big"-38.13206313286473398334122725888547021750") + r173 = convert(T, big" 399.3854658292328681862496726489289700594") + r174 = convert(T, big"-1672.748720491971752312231602599596419744") + r175 = convert(T, big" 3594.107254858566583822606674735752304040") + r176 = convert(T, big"-4187.701556802926199931725021751236897492") + r177 = convert(T, big" 2515.941280649063720613355430002270532846") + r178 = convert(T, big"-610.8516609091004863949139257772330194915") + r182 = convert(T, big"-66.38279583069588062871084016403504860018") + r183 = convert(T, big" 595.8297683881103280237377269355990794854") + r184 = convert(T, big"-2188.737060092971609278770563269347103559") + r185 = convert(T, big" 4213.839795282852421559730676511794767863") + r186 = convert(T, big"-4484.035731929196864370162258757955490985") + r187 = convert(T, big" 2500.648251425346544829791147364129986790") + r188 = convert(T, big"-571.1622272434449401356158886201861909946") + r192 = convert(T, big"-90.41887573173058787343992868450872085904") + r193 = convert(T, big" 931.9503884048153706496188381219698380844") + r194 = convert(T, big"-3962.898377713156165984683269799703910403") + r195 = convert(T, big" 8733.317420025551238329244389917866097896") + r196 = convert(T, big"-10445.90818988766053535212385670877957360") + r197 = convert(T, big" 6426.218942917598693647793004359979629852") + r198 = convert(T, big"-1592.261308015418013416409177206823360972") + r202 = convert(T, big"-59.73884363038871206457816967313835076801") + r203 = convert(T, big" 544.8870146891724527559861176467523778088") + r204 = convert(T, big"-2090.430374926312850791322527518588562537") + r205 = convert(T, big" 4194.418982707226648046953315742901721971") + r206 = convert(T, big"-4603.369436819628073439413527693451638704") + r207 = convert(T, big" 2619.201413559297614510795648037620577207") + r208 = convert(T, big"-604.9687555793670790184208565420961249773") + r212 = convert(T, big"-59.20053764683937384859682230934791521325") + r213 = convert(T, big" 571.7660156218088014286377638724659591261") + r214 = convert(T, big"-2308.949564445360683785335401047607870804") + r215 = convert(T, big" 4881.234110686139058221334453291392021952") + r216 = convert(T, big"-5660.118807771202003386701685793459298252") + r217 = convert(T, big" 3408.706689037421803199133730396931709513") + r218 = convert(T, big"-833.4379054819676018284720384103746063216") + + Vern8InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r018, r062, + r063, r064, r065, r066, r067, r068, r072, r073, r074, + r075, r076, r077, r078, r082, r083, r084, r085, r086, + r087, r088, r092, r093, r094, r095, r096, r097, r098, + r102, r103, r104, r105, r106, r107, r108, r112, r113, + r114, r115, r116, r117, r118, r122, r123, r124, r125, + r126, r127, r128, r142, r143, r144, r145, r146, r147, + r148, r152, r153, r154, r155, r156, r157, r158, r162, + r163, r164, r165, r166, r167, r168, r172, r173, r174, + r175, r176, r177, r178, r182, r183, r184, r185, r186, + r187, r188, r192, r193, r194, r195, r196, r197, r198, + r202, r203, r204, r205, r206, r207, r208, r212, r213, + r214, r215, r216, r217, r218) +end + +struct Vern8Tableau{T, T2} + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + a0201::T + a0301::T + a0302::T + a0401::T + a0403::T + a0501::T + a0503::T + a0504::T + a0601::T + a0604::T + a0605::T + a0701::T + a0704::T + a0705::T + a0706::T + a0801::T + a0804::T + a0805::T + a0806::T + a0807::T + a0901::T + a0904::T + a0905::T + a0906::T + a0907::T + a0908::T + a1001::T + a1004::T + a1005::T + a1006::T + a1007::T + a1008::T + a1009::T + a1101::T + a1104::T + a1105::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + a1201::T + a1204::T + a1205::T + a1206::T + a1207::T + a1208::T + a1209::T + a1210::T + a1211::T + a1301::T + a1304::T + a1305::T + a1306::T + a1307::T + a1308::T + a1309::T + a1310::T + b1::T + b6::T + b7::T + b8::T + b9::T + b10::T + b11::T + b12::T + btilde1::T + btilde6::T + btilde7::T + btilde8::T + btilde9::T + btilde10::T + btilde11::T + btilde12::T + btilde13::T + extra::Vern8ExtraStages{T, T2} + interp::Vern8InterpolationCoefficients{T} +end + +function Vern8Tableau(T::Type{<:CompiledFloats}, T2::Type{<:CompiledFloats}) + c2 = convert(T2, 0.05) + c3 = convert(T2, 0.1065625) + c4 = convert(T2, 0.15984375) + c5 = convert(T2, 0.39) + c6 = convert(T2, 0.465) + c7 = convert(T2, 0.155) + c8 = convert(T2, 0.943) + c9 = convert(T2, 0.901802041735857) + c10 = convert(T2, 0.909) + c11 = convert(T2, 0.94) + #c12 =convert(T2, 1) + #c13 =convert(T2, 1) + a0201 = convert(T, 0.05) + a0301 = convert(T, -0.0069931640625) + a0302 = convert(T, 0.1135556640625) + a0401 = convert(T, 0.0399609375) + a0403 = convert(T, 0.1198828125) + a0501 = convert(T, 0.36139756280045754) + a0503 = convert(T, -1.3415240667004928) + a0504 = convert(T, 1.3701265039000352) + a0601 = convert(T, 0.049047202797202795) + a0604 = convert(T, 0.23509720422144048) + a0605 = convert(T, 0.18085559298135673) + a0701 = convert(T, 0.06169289044289044) + a0704 = convert(T, 0.11236568314640277) + a0705 = convert(T, -0.03885046071451367) + a0706 = convert(T, 0.01979188712522046) + a0801 = convert(T, -1.767630240222327) + a0804 = convert(T, -62.5) + a0805 = convert(T, -6.061889377376669) + a0806 = convert(T, 5.6508231982227635) + a0807 = convert(T, 65.62169641937624) + a0901 = convert(T, -1.1809450665549708) + a0904 = convert(T, -41.50473441114321) + a0905 = convert(T, -4.434438319103725) + a0906 = convert(T, 4.260408188586133) + a0907 = convert(T, 43.75364022446172) + a0908 = convert(T, 0.00787142548991231) + a1001 = convert(T, -1.2814059994414884) + a1004 = convert(T, -45.047139960139866) + a1005 = convert(T, -4.731362069449576) + a1006 = convert(T, 4.514967016593808) + a1007 = convert(T, 47.44909557172985) + a1008 = convert(T, 0.01059228297111661) + a1009 = convert(T, -0.0057468422638446166) + a1101 = convert(T, -1.7244701342624853) + a1104 = convert(T, -60.92349008483054) + a1105 = convert(T, -5.951518376222392) + a1106 = convert(T, 5.556523730698456) + a1107 = convert(T, 63.98301198033305) + a1108 = convert(T, 0.014642028250414961) + a1109 = convert(T, 0.06460408772358203) + a1110 = convert(T, -0.0793032316900888) + a1201 = convert(T, -3.301622667747079) + a1204 = convert(T, -118.01127235975251) + a1205 = convert(T, -10.141422388456112) + a1206 = convert(T, 9.139311332232058) + a1207 = convert(T, 123.37594282840426) + a1208 = convert(T, 4.62324437887458) + a1209 = convert(T, -3.3832777380682018) + a1210 = convert(T, 4.527592100324618) + a1211 = convert(T, -5.828495485811623) + a1301 = convert(T, -3.039515033766309) + a1304 = convert(T, -109.26086808941763) + a1305 = convert(T, -9.290642497400293) + a1306 = convert(T, 8.43050498176491) + a1307 = convert(T, 114.20100103783314) + a1308 = convert(T, -0.9637271342145479) + a1309 = convert(T, -5.0348840888021895) + a1310 = convert(T, 5.958130824002923) + b1 = convert(T, 0.04427989419007951) + b6 = convert(T, 0.3541049391724449) + b7 = convert(T, 0.24796921549564377) + b8 = convert(T, -15.694202038838085) + b9 = convert(T, 25.084064965558564) + b10 = convert(T, -31.738367786260277) + b11 = convert(T, 22.938283273988784) + b12 = convert(T, -0.2361324633071542) + # bhat1 = convert(T,0.044312615229089795) + # bhat6 = convert(T,0.35460956423432266) + # bhat7 = convert(T,0.2478480431366653) + # bhat8 = convert(T,4.4481347324757845) + # bhat9 = convert(T,19.846886366118735) + # bhat10= convert(T,-23.58162337746562) + # bhat13= convert(T,-0.36016794372897754) + btilde1 = convert(T, -3.272103901028138e-5) + btilde6 = convert(T, -0.0005046250618777704) + btilde7 = convert(T, 0.0001211723589784759) + btilde8 = convert(T, -20.142336771313868) + btilde9 = convert(T, 5.2371785994398286) + btilde10 = convert(T, -8.156744408794658) + btilde11 = convert(T, 22.938283273988784) + btilde12 = convert(T, -0.2361324633071542) + btilde13 = convert(T, 0.36016794372897754) + + extra = Vern8ExtraStages(T, T2) + interp = Vern8InterpolationCoefficients(T) + + Vern8Tableau(c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, + a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, + a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, + a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, + a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, + a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, + a1307, a1308, a1309, a1310, b1, b6, b7, b8, b9, b10, b11, b12, btilde1, + btilde6, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, + extra, interp) +end + +function Vern8Tableau(T, T2) + c2 = convert(T2, 1 // 20) + c3 = convert(T2, 341 // 3200) + c4 = convert(T2, 1023 // 6400) + c5 = convert(T2, 39 // 100) + c6 = convert(T2, 93 // 200) + c7 = convert(T2, 31 // 200) + c8 = convert(T2, 943 // 1000) + c9 = convert(T2, 7067558016280 // 7837150160667) + c10 = convert(T2, 909 // 1000) + c11 = convert(T2, 47 // 50) + #c12 =convert(T2, 1) + #c13 =convert(T2, 1) + a0201 = convert(T, 1 // 20) + a0301 = convert(T, -7161 // 1024000) + a0302 = convert(T, 116281 // 1024000) + a0401 = convert(T, 1023 // 25600) + a0403 = convert(T, 3069 // 25600) + a0501 = convert(T, 4202367 // 11628100) + a0503 = convert(T, -3899844 // 2907025) + a0504 = convert(T, 3982992 // 2907025) + a0601 = convert(T, 5611 // 114400) + a0604 = convert(T, 31744 // 135025) + a0605 = convert(T, 923521 // 5106400) + a0701 = convert(T, 21173 // 343200) + a0704 = convert(T, 8602624 // 76559175) + a0705 = convert(T, -26782109 // 689364000) + a0706 = convert(T, 5611 // 283500) + a0801 = convert(T, -1221101821869329 // 690812928000000) + a0804 = convert(T, -125 // 2) + a0805 = convert(T, -1024030607959889 // 168929280000000) + a0806 = convert(T, 1501408353528689 // 265697280000000) + a0807 = convert(T, 6070139212132283 // 92502016000000) + a0901 = convert(T, + -BigInt(1472514264486215803881384708877264246346044433307094207829051978044531801133057155) // + BigInt(1246894801620032001157059621643986024803301558393487900440453636168046069686436608)) + a0904 = convert(T, + -BigInt(5172294311085668458375175655246981230039025336933699114138315270772319372469280000) // + BigInt(124619381004809145897278630571215298365257079410236252921850936749076487132995191)) + a0905 = convert(T, + -BigInt(12070679258469254807978936441733187949484571516120469966534514296406891652614970375) // + BigInt(2722031154761657221710478184531100699497284085048389015085076961673446140398628096)) + a0906 = convert(T, + BigInt(780125155843893641323090552530431036567795592568497182701460674803126770111481625) // + BigInt(183110425412731972197889874507158786859226102980861859505241443073629143100805376)) + a0907 = convert(T, + BigInt(664113122959911642134782135839106469928140328160577035357155340392950009492511875) // + BigInt(15178465598586248136333023107295349175279765150089078301139943253016877823170816)) + a0908 = convert(T, + BigInt(10332848184452015604056836767286656859124007796970668046446015775000000) // + BigInt(1312703550036033648073834248740727914537972028638950165249582733679393783)) + a1001 = convert(T, + -BigInt(29055573360337415088538618442231036441314060511) // + BigInt(22674759891089577691327962602370597632000000000)) + a1004 = convert(T, -20462749524591049105403365239069 // 454251913499893469596231268750) + a1005 = convert(T, + -180269259803172281163724663224981097 // + 38100922558256871086579832832000000) + a1006 = convert(T, + BigInt(21127670214172802870128286992003940810655221489) // + BigInt(4679473877997892906145822697976708633673728000)) + a1007 = convert(T, + BigInt(318607235173649312405151265849660869927653414425413) // + BigInt(6714716715558965303132938072935465423910912000000)) + a1008 = convert(T, + 212083202434519082281842245535894 // + 20022426044775672563822865371173879) + a1009 = convert(T, + -BigInt(2698404929400842518721166485087129798562269848229517793703413951226714583) // + BigInt(469545674913934315077000442080871141884676035902717550325616728175875000000)) + a1101 = convert(T, + -BigInt(2342659845814086836951207140065609179073838476242943917) // + BigInt(1358480961351056777022231400139158760857532162795520000)) + a1104 = convert(T, -996286030132538159613930889652 // 16353068885996164905464325675) + a1105 = convert(T, -26053085959256534152588089363841 // 4377552804565683061011299942400) + a1106 = convert(T, + BigInt(20980822345096760292224086794978105312644533925634933539) // + BigInt(3775889992007550803878727839115494641972212962174156800)) + a1107 = convert(T, + BigInt(890722993756379186418929622095833835264322635782294899) // + BigInt(13921242001395112657501941955594013822830119803764736)) + a1108 = convert(T, + BigInt(161021426143124178389075121929246710833125) // + BigInt(10997207722131034650667041364346422894371443)) + a1109 = convert(T, + BigInt(300760669768102517834232497565452434946672266195876496371874262392684852243925359864884962513) // + BigInt(4655443337501346455585065336604505603760824779615521285751892810315680492364106674524398280000)) + a1110 = convert(T, -31155237437111730665923206875 // 392862141594230515010338956291) + a1201 = convert(T, + -BigInt(2866556991825663971778295329101033887534912787724034363) // + BigInt(868226711619262703011213925016143612030669233795338240)) + a1204 = convert(T, + -BigInt(16957088714171468676387054358954754000) // + BigInt(143690415119654683326368228101570221)) + a1205 = convert(T, + -BigInt(4583493974484572912949314673356033540575) // + BigInt(451957703655250747157313034270335135744)) + a1206 = convert(T, + BigInt(2346305388553404258656258473446184419154740172519949575) // + BigInt(256726716407895402892744978301151486254183185289662464)) + a1207 = convert(T, + BigInt(1657121559319846802171283690913610698586256573484808662625) // + BigInt(13431480411255146477259155104956093505361644432088109056)) + a1208 = convert(T, + BigInt(345685379554677052215495825476969226377187500) // + BigInt(74771167436930077221667203179551347546362089)) + a1209 = convert(T, + -BigInt(3205890962717072542791434312152727534008102774023210240571361570757249056167015230160352087048674542196011) // + BigInt(947569549683965814783015124451273604984657747127257615372449205973192657306017239103491074738324033259120)) + a1210 = convert(T, + BigInt(40279545832706233433100438588458933210937500) // + BigInt(8896460842799482846916972126377338947215101)) + a1211 = convert(T, + -BigInt(6122933601070769591613093993993358877250) // + BigInt(1050517001510235513198246721302027675953)) + a1301 = convert(T, + -BigInt(618675905535482500672800859344538410358660153899637) // + BigInt(203544282118214047100119475340667684874292102389760)) + a1304 = convert(T, + -BigInt(4411194916804718600478400319122931000) // + BigInt(40373053902469967450761491269633019)) + a1305 = convert(T, + -BigInt(16734711409449292534539422531728520225) // + BigInt(1801243715290088669307203927210237952)) + a1306 = convert(T, + BigInt(135137519757054679098042184152749677761254751865630525) // + BigInt(16029587794486289597771326361911895112703716593983488)) + a1307 = convert(T, + BigInt(38937568367409876012548551903492196137929710431584875) // + BigInt(340956454090191606099548798001469306974758443147264)) + a1308 = convert(T, + -BigInt(6748865855011993037732355335815350667265625) // + BigInt(7002880395717424621213565406715087764770357)) + a1309 = convert(T, + -BigInt(1756005520307450928195422767042525091954178296002788308926563193523662404739779789732685671) // + BigInt(348767814578469983605688098046186480904607278021030540735333862087061574934154942830062320)) + a1310 = convert(T, + BigInt(53381024589235611084013897674181629296875) // + BigInt(8959357584795694524874969598508592944141)) + b1 = convert(T, 44901867737754616851973 // 1014046409980231013380680) + b6 = convert(T, 791638675191615279648100000 // 2235604725089973126411512319) + b7 = convert(T, 3847749490868980348119500000 // 15517045062138271618141237517) + b8 = convert(T, -13734512432397741476562500000 // 875132892924995907746928783) + b9 = convert(T, + BigInt(12274765470313196878428812037740635050319234276006986398294443554969616342274215316330684448207141) // + BigInt(489345147493715517650385834143510934888829280686609654482896526796523353052166757299452852166040)) + b10 = convert(T, -9798363684577739445312500000 // 308722986341456031822630699) + b11 = convert(T, 282035543183190840068750 // 12295407629873040425991) + b12 = convert(T, -306814272936976936753 // 1299331183183744997286) + # bhat1 = convert(T, 10835401739407019406577//244521829356935137978320) + # bhat6 = convert(T, 13908189778321895491375000//39221135527894265375640567) + # bhat7 = convert(T, 73487947527027243487625000//296504045773342769773399443) + # bhat8 = convert(T, 68293140641257649609375000//15353208647806945749946119) + # bhat9 = convert(T, BigInt(22060647948996678611017711379974578860522018208949721559448560203338437626022142776381)//BigInt(1111542009262325874512959185795727215759010577565736079641376621381577236680929558640)) + # bhat10= convert(T,-547971229495642458203125000//23237214025700991642563601) + # bhat13= convert(T,-28735456870978964189//79783493704265043693) + btilde1 = convert(T, -225628434546552672055 // 6895515587865570890988624) + btilde6 = convert(T, -1128142172732763360275000 // 2235604725089973126411512319) + btilde7 = convert(T, 5640710863663816801375000 // 46551135186414814854423712551) + btilde8 = convert(T, -17627221448949427504296875000 // 875132892924995907746928783) + btilde9 = convert(T, + BigInt(17426957952517932078050241885889670195876481434157580946550703126433816616672116622859678756257765) // + BigInt(3327547002957265520022623672175874357244039108668945650483696382216358800754733949636279394729072)) + btilde10 = convert(T, -17627221448949427504296875000 // 2161060904390192222758414893) + btilde11 = convert(T, 282035543183190840068750 // 12295407629873040425991) + btilde12 = convert(T, -306814272936976936753 // 1299331183183744997286) + btilde13 = convert(T, 28735456870978964189 // 79783493704265043693) + + extra = Vern8ExtraStages(T, T2) + interp = Vern8InterpolationCoefficients(T) + + Vern8Tableau(c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, a0201, a0301, a0302, a0401, + a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, a0704, a0705, + a0706, a0801, a0804, a0805, a0806, a0807, a0901, a0904, a0905, a0906, + a0907, a0908, a1001, a1004, a1005, a1006, a1007, a1008, a1009, a1101, + a1104, a1105, a1106, a1107, a1108, a1109, a1110, a1201, a1204, a1205, + a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1304, a1305, a1306, + a1307, a1308, a1309, a1310, b1, b6, b7, b8, b9, b10, b11, b12, btilde1, + btilde6, btilde7, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, + extra, interp) +end + +## Vern9 +struct Vern9ExtraStages{T, T2} + c17::T2 + a1701::T + a1708::T + a1709::T + a1710::T + a1711::T + a1712::T + a1713::T + a1714::T + a1715::T + c18::T2 + a1801::T + a1808::T + a1809::T + a1810::T + a1811::T + a1812::T + a1813::T + a1814::T + a1815::T + a1817::T + c19::T2 + a1901::T + a1908::T + a1909::T + a1910::T + a1911::T + a1912::T + a1913::T + a1914::T + a1915::T + a1917::T + a1918::T + c20::T2 + a2001::T + a2008::T + a2009::T + a2010::T + a2011::T + a2012::T + a2013::T + a2014::T + a2015::T + a2017::T + a2018::T + a2019::T + c21::T2 + a2101::T + a2108::T + a2109::T + a2110::T + a2111::T + a2112::T + a2113::T + a2114::T + a2115::T + a2117::T + a2118::T + a2119::T + a2120::T + c22::T2 + a2201::T + a2208::T + a2209::T + a2210::T + a2211::T + a2212::T + a2213::T + a2214::T + a2215::T + a2217::T + a2218::T + a2219::T + a2220::T + a2221::T + c23::T2 + a2301::T + a2308::T + a2309::T + a2310::T + a2311::T + a2312::T + a2313::T + a2314::T + a2315::T + a2317::T + a2318::T + a2319::T + a2320::T + a2321::T + c24::T2 + a2401::T + a2408::T + a2409::T + a2410::T + a2411::T + a2412::T + a2413::T + a2414::T + a2415::T + a2417::T + a2418::T + a2419::T + a2420::T + a2421::T + c25::T2 + a2501::T + a2508::T + a2509::T + a2510::T + a2511::T + a2512::T + a2513::T + a2514::T + a2515::T + a2517::T + a2518::T + a2519::T + a2520::T + a2521::T + c26::T2 + a2601::T + a2608::T + a2609::T + a2610::T + a2611::T + a2612::T + a2613::T + a2614::T + a2615::T + a2617::T + a2618::T + a2619::T + a2620::T + a2621::T +end + +@fold function Vern9ExtraStages(::Type{T}, + ::Type{T2}) where {T <: CompiledFloats, + T2 <: CompiledFloats} + # FIVE ADDITIONAL STAGES FOR INTERPOLANT OF ORDER 8 + c17 = convert(T2, 1) + a1701 = convert(T, 0.014611976858423152) + a1708 = convert(T, -0.3915211862331339) + a1709 = convert(T, 0.23109325002895065) + a1710 = convert(T, 0.12747667699928525) + a1711 = convert(T, 0.2246434176204158) + a1712 = convert(T, 0.5684352689748513) + a1713 = convert(T, 0.058258715572158275) + a1714 = convert(T, 0.13643174034822156) + a1715 = convert(T, 0.030570139830827976) + c18 = convert(T2, 0.7404185470631561) + a1801 = convert(T, 0.015499736681895594) + a1808 = convert(T, 0.3355153219059635) + a1809 = convert(T, 0.20036139441918607) + a1810 = convert(T, 0.12520606592835493) + a1811 = convert(T, 0.22986763931842066) + a1812 = convert(T, -0.20202506534761813) + a1813 = convert(T, 0.05917103230665457) + a1814 = convert(T, -0.026518347830476387) + a1815 = convert(T, -0.023840946021309713) + a1817 = convert(T, 0.027181715702085017) + c19 = convert(T2, 0.888) + a1901 = convert(T, 0.013024539431143383) + a1908 = convert(T, -0.7452850902413112) + a1909 = convert(T, 0.2643867896429301) + a1910 = convert(T, 0.1313961758372754) + a1911 = convert(T, 0.21672538151229273) + a1912 = convert(T, 0.8734117564076053) + a1913 = convert(T, 0.011859056439357767) + a1914 = convert(T, 0.05876002941689551) + a1915 = convert(T, 0.003266518630202088) + a1917 = convert(T, -0.00895930864841793) + a1918 = convert(T, 0.06941415157202692) + c20 = convert(T2, 0.696) + a2001 = convert(T, 0.013970899969259426) + a2008 = convert(T, -0.46657653359576745) + a2009 = convert(T, 0.24163727872162571) + a2010 = convert(T, 0.12903633413456747) + a2011 = convert(T, 0.22167006717351054) + a2012 = convert(T, 0.6257275123364645) + a2013 = convert(T, 0.04355312415679284) + a2014 = convert(T, 0.10119624916672908) + a2015 = convert(T, 0.01808582254679721) + a2017 = convert(T, -0.020798755876891697) + a2018 = convert(T, -0.09022232517086219) + a2019 = convert(T, -0.12127967356222542) + c21 = convert(T2, 0.487) + a2101 = convert(T, 0.016046388883181127) + a2108 = convert(T, 0.09517712399458336) + a2109 = convert(T, 0.13591872646553177) + a2110 = convert(T, 0.1237765280959854) + a2111 = convert(T, 0.2335656264102966) + a2112 = convert(T, -0.09051508172625873) + a2113 = convert(T, -0.02537574270006131) + a2114 = convert(T, -0.13596316968871622) + a2115 = convert(T, -0.04679214284145113) + a2117 = convert(T, 0.05177958859391748) + a2118 = convert(T, 0.09672595677476774) + a2119 = convert(T, 0.14773126903407427) + a2120 = convert(T, -0.11507507129585039) + + # FIVE ADDITIONAL STAGES FOR INTERPOLANT OF ORDER 9 + c22 = convert(T2, 0.025) + a2201 = convert(T, 0.018029186238936207) + a2208 = convert(T, 0.06983601042028874) + a2209 = convert(T, -0.025412476607916634) + a2210 = convert(T, 0.008487827035463275) + a2211 = convert(T, -0.002427525516089802) + a2212 = convert(T, -0.10478397528938199) + a2213 = convert(T, -0.014731477952480419) + a2214 = convert(T, -0.03916338390816177) + a2215 = convert(T, -0.010056573432939595) + a2217 = convert(T, 0.011025103922048344) + a2218 = convert(T, 0.005092830749095398) + a2219 = convert(T, 0.04759715599420645) + a2220 = convert(T, 0.03386307003288383) + a2221 = convert(T, 0.02764422831404798) + c23 = convert(T2, 0.15) + a2301 = convert(T, 0.01677431640522778) + a2308 = convert(T, 0.6220437408820475) + a2309 = convert(T, -0.2060859809768842) + a2310 = convert(T, 0.11563949897660589) + a2311 = convert(T, 0.026641017933783588) + a2312 = convert(T, -0.937681079341877) + a2313 = convert(T, -0.13678064667021603) + a2314 = convert(T, -0.3678480995268297) + a2315 = convert(T, -0.09547871314402478) + a2317 = convert(T, 0.10134920184223697) + a2318 = convert(T, -0.08911323084568594) + a2319 = convert(T, 0.46641409889747604) + a2320 = convert(T, 0.450273629235458) + a2321 = convert(T, 0.18385224633268188) + c24 = convert(T2, 0.32) + a2401 = convert(T, 0.010711497314914442) + a2408 = convert(T, -0.07094336118221108) + a2409 = convert(T, 0.10021649003400916) + a2410 = convert(T, 0.13834539804680251) + a2411 = convert(T, 0.17963306335781634) + a2412 = convert(T, 0.09048246545576182) + a2413 = convert(T, -0.005460662294523339) + a2414 = convert(T, -0.030004579051196197) + a2415 = convert(T, -0.011451920269627991) + a2417 = convert(T, 0.010033946861093851) + a2418 = convert(T, -0.09506485282809046) + a2419 = convert(T, 0.04853358804093592) + a2420 = convert(T, 0.08013325919783924) + a2421 = convert(T, -0.1251643326835242) + c25 = convert(T2, 0.78) + a2501 = convert(T, 0.014101720888692213) + a2508 = convert(T, -0.3713379753704491) + a2509 = convert(T, 0.22312655481171803) + a2510 = convert(T, 0.12870053459181202) + a2511 = convert(T, 0.22246006596754947) + a2512 = convert(T, 0.5382853042550702) + a2513 = convert(T, 0.05417202616988763) + a2514 = convert(T, 0.1256968791308744) + a2515 = convert(T, 0.027844927890020542) + a2517 = convert(T, -0.0307740924620506) + a2518 = convert(T, 0.008569805293689777) + a2519 = convert(T, -0.15351746905870445) + a2520 = convert(T, -0.021799570305481963) + a2521 = convert(T, 0.014471288197371868) + c26 = convert(T2, 0.96) + a2601 = convert(T, 0.014246004117356466) + a2608 = convert(T, -0.3767107393295407) + a2609 = convert(T, 0.22523997807304214) + a2610 = convert(T, 0.128360307629253) + a2611 = convert(T, 0.22302387052616926) + a2612 = convert(T, 0.5463127827750747) + a2613 = convert(T, 0.0552619079137578) + a2614 = convert(T, 0.12856135087499826) + a2615 = convert(T, 0.028572506812964065) + a2617 = convert(T, -0.02398761886357109) + a2618 = convert(T, 0.055562244589105095) + a2619 = convert(T, -0.017406756507628386) + a2620 = convert(T, -0.03815462365996979) + a2621 = convert(T, 0.011118785048989178) + + Vern9ExtraStages(c17, a1701, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, + c18, a1801, a1808, a1809, a1810, a1811, a1812, a1813, a1814, a1815, + a1817, c19, a1901, a1908, a1909, a1910, a1911, a1912, a1913, a1914, + a1915, a1917, a1918, c20, a2001, a2008, a2009, a2010, a2011, a2012, + a2013, a2014, a2015, a2017, a2018, a2019, c21, a2101, a2108, a2109, + a2110, a2111, a2112, a2113, a2114, a2115, a2117, a2118, a2119, a2120, + c22, a2201, a2208, a2209, a2210, a2211, a2212, a2213, a2214, a2215, + a2217, a2218, a2219, a2220, a2221, c23, a2301, a2308, a2309, a2310, + a2311, a2312, a2313, a2314, a2315, a2317, a2318, a2319, a2320, a2321, + c24, a2401, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, + a2417, a2418, a2419, a2420, a2421, c25, a2501, a2508, a2509, a2510, + a2511, a2512, a2513, a2514, a2515, a2517, a2518, a2519, a2520, a2521, + c26, a2601, a2608, a2609, a2610, a2611, a2612, a2613, a2614, a2615, + a2617, a2618, a2619, a2620, a2621) +end + +@fold function Vern9ExtraStages(::Type{T}, ::Type{T2}) where {T, T2} + # FIVE ADDITIONAL STAGES FOR INTERPOLANT OF ORDER 8 + c17 = convert(T2, 1) + a1701 = convert(T, big" .1461197685842315252051541915018784713459e-1") + a1708 = convert(T, big"-.3915211862331339089410228267288242030810") + a1709 = convert(T, big" .2310932500289506415909675644868993669908") + a1710 = convert(T, big" .1274766769992852382560589467488989175618") + a1711 = convert(T, big" .2246434176204157731566981937082069688984") + a1712 = convert(T, big" .5684352689748512932705226972873692126743") + a1713 = convert(T, big" .5825871557215827200814768021863420902155e-1") + a1714 = convert(T, big" .1364317403482215641609022744494239843327") + a1715 = convert(T, big" .3057013983082797397721005067920369646664e-1") + c18 = convert(T2, big" .7404185470631561083004100761798676215811") + a1801 = convert(T, big" .1549973668189559302279946863304789372788e-1") + a1808 = convert(T, big" .3355153219059635054403439303177105512242") + a1809 = convert(T, big" .2003613944191860651552622660712101217322") + a1810 = convert(T, big" .1252060659283549312946162355194540994211") + a1811 = convert(T, big" .2298676393184206750544046308957155868736") + a1812 = convert(T, big"-.2020250653476181447824906889122391003637") + a1813 = convert(T, big" .5917103230665456601422111997583025339897e-1") + a1814 = convert(T, big"-.2651834783047638681693835956996437528251e-1") + a1815 = convert(T, big"-.2384094602130971415278110567256446033405e-1") + a1817 = convert(T, big" .2718171570208501807097257892166705118335e-1") + c19 = convert(T2, 888 // 1000) + a1901 = convert(T, big" .1302453943114338366054520296881099431474e-1") + a1908 = convert(T, big"-.7452850902413112085299330666038981625179") + a1909 = convert(T, big" .2643867896429300961465132150322749722129") + a1910 = convert(T, big" .1313961758372753932588328082078842388890") + a1911 = convert(T, big" .2167253815122927263092467187957410643315") + a1912 = convert(T, big" .8734117564076052559016338094938888451419") + a1913 = convert(T, big" .1185905643935776688228545787724340848142e-1") + a1914 = convert(T, big" .5876002941689550612992712203494447529933e-1") + a1915 = convert(T, big" .3266518630202087866399279690939423159022e-2") + a1917 = convert(T, big"-.8959308648417929824525368306101792182274e-2") + a1918 = convert(T, big" .6941415157202692219907482080827253287034e-1") + c20 = convert(T2, 696 // 1000) + a2001 = convert(T, big" .1397089996925942721283716334050740168797e-1") + a2008 = convert(T, big"-.4665765335957674596054673402956853940520") + a2009 = convert(T, big" .2416372787216257077935214889875485248580") + a2010 = convert(T, big" .1290363341345674735721677437066933999929") + a2011 = convert(T, big" .2216700671735105311080225734522323922813") + a2012 = convert(T, big" .6257275123364644931771253383573999863003") + a2013 = convert(T, big" .4355312415679284117869124964829805160429e-1") + a2014 = convert(T, big" .1011962491667290833450024852274278874501") + a2015 = convert(T, big" .1808582254679721049279369742685497400353e-1") + a2017 = convert(T, big"-.2079875587689169691156509689282083267654e-1") + a2018 = convert(T, big"-.9022232517086218976198252891464664868640e-1") + a2019 = convert(T, big"-.1212796735622254216011467740438097427634") + c21 = convert(T2, 487 // 1000) + a2101 = convert(T, big" .1604638888318112738641232352800290501904e-1") + a2108 = convert(T, big" .9517712399458336651642257453589397190702e-1") + a2109 = convert(T, big" .1359187264655317806136927180199100622471") + a2110 = convert(T, big" .1237765280959854006935081364365637515893") + a2111 = convert(T, big" .2335656264102966047058755123098072346246") + a2112 = convert(T, big"-.9051508172625873314662090873741762206189e-1") + a2113 = convert(T, big"-.2537574270006131028513276914038326155331e-1") + a2114 = convert(T, big"-.1359631696887162048002744757083947500478") + a2115 = convert(T, big"-.4679214284145113075088049469061349990847e-1") + a2117 = convert(T, big" .5177958859391748239949773879090325427473e-1") + a2118 = convert(T, big" .9672595677476773313884172931875718705561e-1") + a2119 = convert(T, big" .1477312690340742769720989417101989769314") + a2120 = convert(T, big"-.1150750712958503934434410263732282100773") + + # FIVE ADDITIONAL STAGES FOR INTERPOLANT OF ORDER 9 + c22 = convert(T2, 1 // 40) + a2201 = convert(T, big" .1802918623893620731908165792176564180038e-1") + a2208 = convert(T, big" .6983601042028873702545973390560096201728e-1") + a2209 = convert(T, big"-.2541247660791663512384395986842781657182e-1") + a2210 = convert(T, big" .8487827035463274491721441398893680307535e-2") + a2211 = convert(T, big"-.2427525516089801645451101966852425715128e-2") + a2212 = convert(T, big"-.1047839752893819879012607694745789515746") + a2213 = convert(T, big"-.1473147795248041942353840372690095884761e-1") + a2214 = convert(T, big"-.3916338390816177165706892282751065537530e-1") + a2215 = convert(T, big"-.1005657343293959419073236542225421561652e-1") + a2217 = convert(T, big" .1102510392204834322538452331445716455061e-1") + a2218 = convert(T, big" .5092830749095398308703438556315975226108e-2") + a2219 = convert(T, big" .4759715599420644505591133410826632557391e-1") + a2220 = convert(T, big" .3386307003288382751110965442296681690349e-1") + a2221 = convert(T, big" .2764422831404797700452373965825845732168e-1") + c23 = convert(T2, 15 // 100) + a2301 = convert(T, big" .1677431640522778042988664067637191163626e-1") + a2308 = convert(T, big" .6220437408820475326702539861577894278533") + a2309 = convert(T, big"-.2060859809768841878234097076241307428139") + a2310 = convert(T, big" .1156394989766058889629372195583391792474") + a2311 = convert(T, big" .2664101793378358946544219293685167025971e-1") + a2312 = convert(T, big"-.9376810793418770527505892794460093668860") + a2313 = convert(T, big"-.1367806466702160302637074581619101741312") + a2314 = convert(T, big"-.3678480995268296672182605288991379118419") + a2315 = convert(T, big"-.9547871314402478902820445838193201497337e-1") + a2317 = convert(T, big" .1013492018422369748729008873270013785313") + a2318 = convert(T, big"-.8911323084568593396468400926074881389560e-1") + a2319 = convert(T, big" .4664140988974760478895528270623735057521") + a2320 = convert(T, big" .4502736292354579812232681662308722738519") + a2321 = convert(T, big" .1838522463326818655346135218242696774099") + c24 = convert(T2, 32 // 100) + a2401 = convert(T, big" .1071149731491444187554380927165768658192e-1") + a2408 = convert(T, big"-.7094336118221108191937165464264324417735e-1") + a2409 = convert(T, big" .1002164900340091596740582334112699697590") + a2410 = convert(T, big" .1383453980468025108839271214703390659581") + a2411 = convert(T, big" .1796330633578163411338104055485109917477") + a2412 = convert(T, big" .9048246545576180974879274948815422276563e-1") + a2413 = convert(T, big"-.5460662294523338383345981122023862069115e-2") + a2414 = convert(T, big"-.3000457905119619782973021046143166498567e-1") + a2415 = convert(T, big"-.1145192026962799093665613252151017277867e-1") + a2417 = convert(T, big" .1003394686109385076849515422360600302176e-1") + a2418 = convert(T, big"-.9506485282809046129031027932806241113157e-1") + a2419 = convert(T, big" .4853358804093591445756711642658478691640e-1") + a2420 = convert(T, big" .8013325919783924638483373011297347396327e-1") + a2421 = convert(T, big"-.1251643326835242045676140618774248455713") + c25 = convert(T2, 78 // 100) + a2501 = convert(T, big" .1410172088869221367153586187761994182069e-1") + a2508 = convert(T, big"-.3713379753704491105936205420001801316029") + a2509 = convert(T, big" .2231265548117180273161442520179150684520") + a2510 = convert(T, big" .1287005345918120122888629169443916280865") + a2511 = convert(T, big" .2224600659675494761192249831098918110654") + a2512 = convert(T, big" .5382853042550701952740528638168708946100") + a2513 = convert(T, big" .5417202616988763101781128062036252796548e-1") + a2514 = convert(T, big" .1256968791308743925752109039299467082975") + a2515 = convert(T, big" .2784492789002054061504430663197543089132e-1") + a2517 = convert(T, big"-.3077409246205059733390460511525401688205e-1") + a2518 = convert(T, big" .8569805293689777608077303071761466118035e-2") + a2519 = convert(T, big"-.1535174690587044615794997685221990516897") + a2520 = convert(T, big"-.2179957030548196497189489878038029238243e-1") + a2521 = convert(T, big" .1447128819737186799295514239727801525027e-1") + c26 = convert(T2, 96 // 100) + a2601 = convert(T, big" .1424600411735646609296566581447532773183e-1") + a2608 = convert(T, big"-.3767107393295407091303982522049390741260") + a2609 = convert(T, big" .2252399780730421480874737297000189000070") + a2610 = convert(T, big" .1283603076292529988314451246143633426068") + a2611 = convert(T, big" .2230238705261692544876826347415151339678") + a2612 = convert(T, big" .5463127827750747224899202176094949607118") + a2613 = convert(T, big" .5526190791375779994553849469706124289752e-1") + a2614 = convert(T, big" .1285613508749982456581494397108686240388") + a2615 = convert(T, big" .2857250681296406482698934635829147899039e-1") + a2617 = convert(T, big"-.2398761886357108720930416967644499057175e-1") + a2618 = convert(T, big" .5556224458910509454379297181908734648749e-1") + a2619 = convert(T, big"-.1740675650762838674257930398070760254668e-1") + a2620 = convert(T, big"-.3815462365996979065575121886854199471011e-1") + a2621 = convert(T, big" .1111878504898917877407531966545730451506e-1") + + Vern9ExtraStages(c17, a1701, a1708, a1709, a1710, a1711, a1712, a1713, a1714, a1715, + c18, a1801, a1808, a1809, a1810, a1811, a1812, a1813, a1814, a1815, + a1817, c19, a1901, a1908, a1909, a1910, a1911, a1912, a1913, a1914, + a1915, a1917, a1918, c20, a2001, a2008, a2009, a2010, a2011, a2012, + a2013, a2014, a2015, a2017, a2018, a2019, c21, a2101, a2108, a2109, + a2110, a2111, a2112, a2113, a2114, a2115, a2117, a2118, a2119, a2120, + c22, a2201, a2208, a2209, a2210, a2211, a2212, a2213, a2214, a2215, + a2217, a2218, a2219, a2220, a2221, c23, a2301, a2308, a2309, a2310, + a2311, a2312, a2313, a2314, a2315, a2317, a2318, a2319, a2320, a2321, + c24, a2401, a2408, a2409, a2410, a2411, a2412, a2413, a2414, a2415, + a2417, a2418, a2419, a2420, a2421, c25, a2501, a2508, a2509, a2510, + a2511, a2512, a2513, a2514, a2515, a2517, a2518, a2519, a2520, a2521, + c26, a2601, a2608, a2609, a2610, a2611, a2612, a2613, a2614, a2615, + a2617, a2618, a2619, a2620, a2621) +end + +struct Vern9InterpolationCoefficients{T} + r011::T + r012::T + r013::T + r014::T + r015::T + r016::T + r017::T + r018::T + r019::T + r082::T + r083::T + r084::T + r085::T + r086::T + r087::T + r088::T + r089::T + r092::T + r093::T + r094::T + r095::T + r096::T + r097::T + r098::T + r099::T + r102::T + r103::T + r104::T + r105::T + r106::T + r107::T + r108::T + r109::T + r112::T + r113::T + r114::T + r115::T + r116::T + r117::T + r118::T + r119::T + r122::T + r123::T + r124::T + r125::T + r126::T + r127::T + r128::T + r129::T + r132::T + r133::T + r134::T + r135::T + r136::T + r137::T + r138::T + r139::T + r142::T + r143::T + r144::T + r145::T + r146::T + r147::T + r148::T + r149::T + r152::T + r153::T + r154::T + r155::T + r156::T + r157::T + r158::T + r159::T + r172::T + r173::T + r174::T + r175::T + r176::T + r177::T + r178::T + r179::T + r182::T + r183::T + r184::T + r185::T + r186::T + r187::T + r188::T + r189::T + r192::T + r193::T + r194::T + r195::T + r196::T + r197::T + r198::T + r199::T + r202::T + r203::T + r204::T + r205::T + r206::T + r207::T + r208::T + r209::T + r212::T + r213::T + r214::T + r215::T + r216::T + r217::T + r218::T + r219::T + r222::T + r223::T + r224::T + r225::T + r226::T + r227::T + r228::T + r229::T + r232::T + r233::T + r234::T + r235::T + r236::T + r237::T + r238::T + r239::T + r242::T + r243::T + r244::T + r245::T + r246::T + r247::T + r248::T + r249::T + r252::T + r253::T + r254::T + r255::T + r256::T + r257::T + r258::T + r259::T + r262::T + r263::T + r264::T + r265::T + r266::T + r267::T + r268::T + r269::T +end + +@fold function Vern9InterpolationCoefficients(::Type{T}) where {T <: CompiledFloats} + r011 = convert(T, 1) + r012 = convert(T, -28.330488700617398) + r013 = convert(T, 257.6535452078578) + r014 = convert(T, -1152.1544557434572) + r015 = convert(T, 2909.390878345409) + r016 = convert(T, -4355.005172868188) + r017 = convert(T, 3834.083497036262) + r018 = convert(T, -1835.419052683407) + r019 = convert(T, 368.7958613829998) + r082 = convert(T, 2.649656243770091) + r083 = convert(T, -96.30312807816006) + r084 = convert(T, 869.3095462492796) + r085 = convert(T, -3395.688567551074) + r086 = convert(T, 6796.933987158715) + r087 = convert(T, -7340.848417712072) + r088 = convert(T, 4082.8488969923656) + r089 = convert(T, -919.2934944890586) + r092 = convert(T, -1.5639451819287329) + r093 = convert(T, 56.8423973927286) + r094 = convert(T, -513.1052300304285) + r095 = convert(T, 2004.2867021103232) + r096 = convert(T, -4011.8533059139295) + r097 = convert(T, 4332.895839278586) + r098 = convert(T, -2409.8793479371448) + r099 = convert(T, 542.6079835318221) + r102 = convert(T, -0.8627103334967224) + r103 = convert(T, 31.355653751851733) + r104 = convert(T, -283.0413682227354) + r105 = convert(T, 1105.613463426007) + r106 = convert(T, -2213.0362006784526) + r107 = convert(T, 2390.1310977541207) + r108 = convert(T, -1329.3482661468738) + r109 = convert(T, 299.31580712657853) + r112 = convert(T, -1.5202953379012147) + r113 = convert(T, 55.25592121120227) + r114 = convert(T, -498.7844190970741) + r115 = convert(T, 1948.346888525776) + r116 = convert(T, -3899.8821364075516) + r117 = convert(T, 4211.964345158858) + r118 = convert(T, -2342.619408856117) + r119 = convert(T, 527.4637482204279) + r122 = convert(T, -3.8469388441255234) + r123 = convert(T, 139.81898409868404) + r124 = convert(T, -1262.1186876216004) + r125 = convert(T, 4930.075848057311) + r126 = convert(T, -9868.21948606954) + r127 = convert(T, 10657.908924348867) + r128 = convert(T, -5927.738759872814) + r129 = convert(T, 1334.688551172191) + r132 = convert(T, -0.39427130612001415) + r133 = convert(T, 14.329994760676497) + r134 = convert(T, -129.35406659945582) + r135 = convert(T, 505.28160770025175) + r136 = convert(T, -1011.3900801394333) + r137 = convert(T, 1092.3250517818917) + r138 = convert(T, -607.531701930281) + r139 = convert(T, 136.79172444804232) + r142 = convert(T, -0.9233145622082102) + r143 = convert(T, 33.55834582309799) + r144 = convert(T, -302.9246397549736) + r145 = convert(T, 1183.2813069678675) + r146 = convert(T, -2368.4989867901113) + r147 = convert(T, 2558.034559755808) + r148 = convert(T, -1422.7331755778803) + r149 = convert(T, 320.3423358787482) + r152 = convert(T, -0.20688628029300538) + r153 = convert(T, 7.519388975651663) + r154 = convert(T, -67.87605708082904) + r155 = convert(T, 265.136799698415) + r156 = convert(T, -530.7074807559026) + r157 = convert(T, 573.176549564149) + r158 = convert(T, -318.7905688834869) + r159 = convert(T, 71.77882490212657) + r172 = convert(T, -0.44724419067440996) + r173 = convert(T, 16.44684676010504) + r174 = convert(T, -154.40861059212955) + r175 = convert(T, 641.8986298540249) + r176 = convert(T, -1391.9392256879823) + r177 = convert(T, 1643.890568302952) + r178 = convert(T, -1004.0652972233179) + r179 = convert(T, 248.6243327770223) + r182 = convert(T, -0.1507876007899798) + r183 = convert(T, 5.527328824824632) + r184 = convert(T, -51.33833743084619) + r185 = convert(T, 209.60220027032804) + r186 = convert(T, -442.7692650421826) + r187 = convert(T, 505.0579312588053) + r188 = convert(T, -295.63364106156195) + r189 = convert(T, 69.70457078142275) + r192 = convert(T, -0.6413652207435296) + r193 = convert(T, 23.510132486246846) + r194 = convert(T, -218.36426832469724) + r195 = convert(T, 891.5292818535365) + r196 = convert(T, -1883.290177206008) + r197 = convert(T, 2148.2309544883997) + r198 = convert(T, -1257.4584015217124) + r199 = convert(T, 296.4838434449778) + r202 = convert(T, 1.8107293134448457) + r203 = convert(T, -66.37479657295337) + r204 = convert(T, 616.4952025401107) + r205 = convert(T, -2517.0030307773227) + r206 = convert(T, 5316.984175781034) + r207 = convert(T, -6064.976140789574) + r208 = convert(T, 3550.1095388883914) + r209 = convert(T, -837.0456783831302) + r212 = convert(T, 0.05176008760353718) + r213 = convert(T, -1.8973378625803488) + r214 = convert(T, 17.622648207936294) + r215 = convert(T, -71.94907400242467) + r216 = convert(T, 151.9871383765666) + r217 = convert(T, -173.36864987478606) + r218 = convert(T, 101.4806461521468) + r219 = convert(T, -23.927131084462175) + r222 = convert(T, 31.321782556688) + r223 = convert(T, -355.6570858339106) + r224 = convert(T, 1752.6852824895159) + r225 = convert(T, -4708.092293138363) + r226 = convert(T, 7370.900776193489) + r227 = convert(T, -6716.504964764566) + r228 = convert(T, 3303.940398161186) + r229 = convert(T, -678.5938956640391) + r232 = convert(T, -2.7196073341859246) + r233 = convert(T, 86.64045615858264) + r234 = convert(T, -454.1926030939031) + r235 = convert(T, 1014.7492211005434) + r236 = convert(T, -1133.583456714544) + r237 = convert(T, 610.4671827718666) + r238 = convert(T, -109.02334994495438) + r239 = convert(T, -12.337842943405471) + r242 = convert(T, 3.1772148014329233) + r243 = convert(T, -113.8098697715143) + r244 = convert(T, 978.0935981825675) + r245 = convert(T, -3575.1293776236703) + r246 = convert(T, 6764.3615198384505) + r247 = convert(T, -6987.161043852012) + r248 = convert(T, 3751.9057627895713) + r249 = convert(T, -821.4378043648254) + r252 = convert(T, 0.877284308346553) + r253 = convert(T, -31.51810423988375) + r254 = convert(T, 273.1229151353221) + r255 = convert(T, -993.2198643101782) + r256 = convert(T, 1787.888078312664) + r257 = convert(T, -1677.394835799641) + r258 = convert(T, 781.3579535062688) + r259 = convert(T, -141.11342691289855) + r262 = convert(T, 1.7194275817987157) + r263 = convert(T, -62.89867309250732) + r264 = convert(T, 580.333550787398) + r265 = convert(T, -2348.110620506761) + r266 = convert(T, 4921.119298612906) + r267 = convert(T, -5597.912448707917) + r268 = convert(T, 3288.5977751496216) + r269 = convert(T, -782.8483098245397) + + Vern9InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r018, r019, + r082, r083, r084, r085, r086, r087, r088, r089, r092, + r093, r094, r095, r096, r097, r098, r099, r102, r103, + r104, r105, r106, r107, r108, r109, r112, r113, r114, + r115, r116, r117, r118, r119, r122, r123, r124, r125, + r126, r127, r128, r129, r132, r133, r134, r135, r136, + r137, r138, r139, r142, r143, r144, r145, r146, r147, + r148, r149, r152, r153, r154, r155, r156, r157, r158, + r159, r172, r173, r174, r175, r176, r177, r178, r179, + r182, r183, r184, r185, r186, r187, r188, r189, r192, + r193, r194, r195, r196, r197, r198, r199, r202, r203, + r204, r205, r206, r207, r208, r209, r212, r213, r214, + r215, r216, r217, r218, r219, r222, r223, r224, r225, + r226, r227, r228, r229, r232, r233, r234, r235, r236, + r237, r238, r239, r242, r243, r244, r245, r246, r247, + r248, r249, r252, r253, r254, r255, r256, r257, r258, + r259, r262, r263, r264, r265, r266, r267, r268, r269) +end + +function Vern9InterpolationCoefficients(T) + r011 = convert(T, 1) + r012 = convert(T, big"-28.33048870061739823290767301658881994700") + r013 = convert(T, big" 257.6535452078577977252092979905248156497") + r014 = convert(T, big"-1152.154455743457311528752964691951881858") + r015 = convert(T, big" 2909.390878345408890936564599116550031880") + r016 = convert(T, big"-4355.005172868188498048946108887283528629") + r017 = convert(T, big" 3834.083497036262189455855371796461857871") + r018 = convert(T, big"-1835.419052683407081215583427992189311730") + r019 = convert(T, big" 368.7958613829998340610814211036270246107") + r082 = convert(T, big" 2.649656243770091212685381903551424676261") + r083 = convert(T, big"-96.30312807816005963630382777245983513008") + r084 = convert(T, big" 869.3095462492795755338599928089438369769") + r085 = convert(T, big"-3395.688567551074115525201961265641584358") + r086 = convert(T, big" 6796.933987158715680563278170147156885480") + r087 = convert(T, big"-7340.848417712071304684606060804637321789") + r088 = convert(T, big" 4082.848896992365666259441580054990759905") + r089 = convert(T, big"-919.2934944890586676320942978986329899642") + r092 = convert(T, big"-1.563945181928732780647121505551017046606") + r093 = convert(T, big" 56.84239739272860000194549791973820565214") + r094 = convert(T, big"-513.1052300304284642178552372517916694426") + r095 = convert(T, big" 2004.286702110323162741493515173880535381") + r096 = convert(T, big"-4011.853305913929339500285683507736138334") + r097 = convert(T, big" 4332.895839278586189971336003691596594090") + r098 = convert(T, big"-2409.879347937144606091337260195738587773") + r099 = convert(T, big" 542.6079835318221405169412532400889768401") + r102 = convert(T, big"-.8627103334967223830653368770735555216700") + r103 = convert(T, big" 31.35565375185173442495465167501846267906") + r104 = convert(T, big"-283.0413682227354209126847112083546012674") + r105 = convert(T, big" 1105.613463426006937052739159664962261462") + r106 = convert(T, big"-2213.036200678452629288185991597653042989") + r107 = convert(T, big" 2390.131097754120588994847482867886207858") + r108 = convert(T, big"-1329.348266146873716496636094950745123424") + r109 = convert(T, big" 299.3158071265785138462868993727082901209") + r112 = convert(T, big"-1.520295337901214839055193576160469820911") + r113 = convert(T, big" 55.25592121120227100440616045452813504748") + r114 = convert(T, big"-498.7844190970740738969945498750124435385") + r115 = convert(T, big" 1948.346888525776056658403461666308795237") + r116 = convert(T, big"-3899.882136407551390287649940376076923682") + r117 = convert(T, big" 4211.964345158858030803618536151121927765") + r118 = convert(T, big"-2342.619408856117128087568672414857706561") + r119 = convert(T, big" 527.4637482204278644179968961638568925209") + r122 = convert(T, big"-3.846938844125523400516071820264700141179") + r123 = convert(T, big" 139.8189840986840520353362018994734906611") + r124 = convert(T, big"-1262.118687621600386514715930156791825893") + r125 = convert(T, big" 4930.075848057311658057235318456802793199") + r126 = convert(T, big"-9868.219486069539059368988308801366826185") + r127 = convert(T, big" 10657.90892434886730229746304583865145121") + r128 = convert(T, big"-5927.738759872814112912292792695856187255") + r129 = convert(T, big" 1334.688551172190921099749059976639173619") + r132 = convert(T, big"-.3942713061200141454309326713125653612517") + r133 = convert(T, big" 14.32999476067649707020689155180345562459") + r134 = convert(T, big"-129.3540665994558117853022852051786116929") + r135 = convert(T, big" 505.2816077002517600897861155496606850457") + r136 = convert(T, big"-1011.390080139433268878243655218566636574") + r137 = convert(T, big" 1092.325051781891697669369143688906543465") + r138 = convert(T, big"-607.5317019302810290917918493845279272648") + r139 = convert(T, big" 136.7917244480423273434147193694336909663") + r142 = convert(T, big"-.9233145622082101394378429409444333268499") + r143 = convert(T, big" 33.55834582309798808260613735851232640640") + r144 = convert(T, big"-302.9246397549735936661321348695774835448") + r145 = convert(T, big" 1183.281306967867553342903125095128753568") + r146 = convert(T, big"-2368.498986790111516106072390247333149007") + r147 = convert(T, big" 2558.034559755808027369106332027405169828") + r148 = convert(T, big"-1422.733175577880214903071122439856598476") + r149 = convert(T, big" 320.3423358787481875842587982911148385364") + r152 = convert(T, big"-.2068862802930053801253649628830330891017") + r153 = convert(T, big" 7.519388975651662772174695012120581518594") + r154 = convert(T, big"-67.87605708082904058354114755731111898667") + r155 = convert(T, big" 265.1367996984150421661637988925923843021") + r156 = convert(T, big"-530.7074807559025368587558119659212235622") + r157 = convert(T, big" 573.1765495641490277116961329189087439579") + r158 = convert(T, big"-318.7905688834868978004500126002971837241") + r159 = convert(T, big" 71.77882490212657594681492031347005327988") + r172 = convert(T, big"-.4472441906744099441704338175964823026105") + r173 = convert(T, big" 16.44684676010503791623763886833381020592") + r174 = convert(T, big"-154.4086105921295528355180056633078150675") + r175 = convert(T, big" 641.8986298540248497333509289273669726482") + r176 = convert(T, big"-1391.939225687982391028602609567895699003") + r177 = convert(T, big" 1643.890568302952013019278202625162156841") + r178 = convert(T, big"-1004.065297223317845596795060426393517046") + r179 = convert(T, big" 248.6243327770222987362193390543305737239") + r182 = convert(T, big"-.1507876007899797948720901584434839156279") + r183 = convert(T, big" 5.527328824824632235316362126620825363280") + r184 = convert(T, big"-51.33833743084618751433903968701557585387") + r185 = convert(T, big" 209.6022002703280347991393999433060881829") + r186 = convert(T, big"-442.7692650421825928714839983614217797969") + r187 = convert(T, big" 505.0579312588052893780948070449787925777") + r188 = convert(T, big"-295.6336410615619366143935619944592839974") + r189 = convert(T, big" 69.70457078142274038253812108643441743987") + r192 = convert(T, big"-.6413652207435296452288504944964177537185") + r193 = convert(T, big" 23.51013248624684600263471193689787394701") + r194 = convert(T, big"-218.3642683246972281497485359238725613162") + r195 = convert(T, big" 891.5292818535365634586829868055833114383") + r196 = convert(T, big"-1883.290177206007885518558760085145850658") + r197 = convert(T, big" 2148.230954488399755970660772306573864434") + r198 = convert(T, big"-1257.458401521712336970840850120592935471") + r199 = convert(T, big" 296.4838434449778148523985255750527153802") + r202 = convert(T, big" 1.810729313444845732964058528284532356045") + r203 = convert(T, big"-66.37479657295337371220255196726289169374") + r204 = convert(T, big" 616.4952025401106511929691356878863855003") + r205 = convert(T, big"-2517.003030777322559684753470471663859295") + r206 = convert(T, big" 5316.984175781033401491488704359579721604") + r207 = convert(T, big"-6064.976140789574108556866601189158423779") + r208 = convert(T, big" 3550.109538888391317555902194852386816092") + r209 = convert(T, big"-837.0456783831301740195014698000522807852") + r212 = convert(T, big".5176008760353717918864555990277480363987e-1") + r213 = convert(T, big"-1.897337862580348756406065418550014243949") + r214 = convert(T, big" 17.62264820793629244181715147639285955422") + r215 = convert(T, big"-71.94907400242465946110661282550878163878") + r216 = convert(T, big" 151.9871383765666045085018751235590550206") + r217 = convert(T, big"-173.3686498747860565970136435029707518663") + r218 = convert(T, big" 101.4806461521468075879782291473158292931") + r219 = convert(T, big"-23.92713108446217690295957956014097092250") + r222 = convert(T, big" 31.32178255668799909977422939838912846070") + r223 = convert(T, big"-355.6570858339106059687054319211280026146") + r224 = convert(T, big" 1752.685282489515979253875884672206842255") + r225 = convert(T, big"-4708.092293138363367969732154806019707156") + r226 = convert(T, big" 7370.900776193488713149861391844801840850") + r227 = convert(T, big"-6716.504964764565347011489385051202629762") + r228 = convert(T, big" 3303.940398161185772296756776169088470785") + r229 = convert(T, big"-678.5938956640391428503413103061359428182") + r232 = convert(T, big"-2.719607334185924760747802644504744092917") + r233 = convert(T, big" 86.64045615858264001154848875638486632034") + r234 = convert(T, big"-454.1926030939030807863651114984001402596") + r235 = convert(T, big" 1014.749221100543425314268817989377200147") + r236 = convert(T, big"-1133.583456714543865890388885909333783663") + r237 = convert(T, big" 610.4671827718666569168001429679645990946") + r238 = convert(T, big"-109.0233499449543802317396567002119357593") + r239 = convert(T, big"-12.33784294340547057337599296127606178639") + r242 = convert(T, big" 3.177214801432923432265738869490200556403") + r243 = convert(T, big"-113.8098697715142983214434051918276259885") + r244 = convert(T, big" 978.0935981825675014833003847211971070224") + r245 = convert(T, big"-3575.129377623670076451027372711378100786") + r246 = convert(T, big" 6764.361519838450570830405988615992045681") + r247 = convert(T, big"-6987.161043852012362644872233028628887679") + r248 = convert(T, big" 3751.905762789571137088934326513342858381") + r249 = convert(T, big"-821.4378043648253954175634277881875971878") + r252 = convert(T, big" .8772843083465530069477626269697233842708") + r253 = convert(T, big"-31.51810423988375104361582759389916060143") + r254 = convert(T, big" 273.1229151353221133842213845530391043248") + r255 = convert(T, big"-993.2198643101781966584366870874238565290") + r256 = convert(T, big" 1787.888078312663987193988385659681964836") + r257 = convert(T, big"-1677.394835799640950953367739332661886275") + r258 = convert(T, big" 781.3579535062687952504707744453846824540") + r259 = convert(T, big"-141.1134269128985501802080532710905715931") + r262 = convert(T, big" 1.719427581798715782378897599231938082126") + r263 = convert(T, big"-62.89867309250732184389962568482931880335") + r264 = convert(T, big" 580.3335507873980391019057196688995930872") + r265 = convert(T, big"-2348.110620506760958600472968113883922730") + r266 = convert(T, big" 4921.119298612906015908637628774963068611") + r267 = convert(T, big"-5597.912448707916639109910311016358007839") + r268 = convert(T, big" 3288.597775149621789973016480733216881572") + r269 = convert(T, big"-782.8483098245396412116558219612402319811") + + Vern9InterpolationCoefficients(r011, r012, r013, r014, r015, r016, r017, r018, r019, + r082, r083, r084, r085, r086, r087, r088, r089, r092, + r093, r094, r095, r096, r097, r098, r099, r102, r103, + r104, r105, r106, r107, r108, r109, r112, r113, r114, + r115, r116, r117, r118, r119, r122, r123, r124, r125, + r126, r127, r128, r129, r132, r133, r134, r135, r136, + r137, r138, r139, r142, r143, r144, r145, r146, r147, + r148, r149, r152, r153, r154, r155, r156, r157, r158, + r159, r172, r173, r174, r175, r176, r177, r178, r179, + r182, r183, r184, r185, r186, r187, r188, r189, r192, + r193, r194, r195, r196, r197, r198, r199, r202, r203, + r204, r205, r206, r207, r208, r209, r212, r213, r214, + r215, r216, r217, r218, r219, r222, r223, r224, r225, + r226, r227, r228, r229, r232, r233, r234, r235, r236, + r237, r238, r239, r242, r243, r244, r245, r246, r247, + r248, r249, r252, r253, r254, r255, r256, r257, r258, + r259, r262, r263, r264, r265, r266, r267, r268, r269) +end + +""" +From Verner's Website +""" +struct Vern9Tableau{T, T2} + c1::T2 + c2::T2 + c3::T2 + c4::T2 + c5::T2 + c6::T2 + c7::T2 + c8::T2 + c9::T2 + c10::T2 + c11::T2 + c12::T2 + c13::T2 + a0201::T + a0301::T + a0302::T + a0401::T + a0403::T + a0501::T + a0503::T + a0504::T + a0601::T + a0604::T + a0605::T + a0701::T + a0704::T + a0705::T + a0706::T + a0801::T + a0806::T + a0807::T + a0901::T + a0906::T + a0907::T + a0908::T + a1001::T + a1006::T + a1007::T + a1008::T + a1009::T + a1101::T + a1106::T + a1107::T + a1108::T + a1109::T + a1110::T + a1201::T + a1206::T + a1207::T + a1208::T + a1209::T + a1210::T + a1211::T + a1301::T + a1306::T + a1307::T + a1308::T + a1309::T + a1310::T + a1311::T + a1312::T + a1401::T + a1406::T + a1407::T + a1408::T + a1409::T + a1410::T + a1411::T + a1412::T + a1413::T + a1501::T + a1506::T + a1507::T + a1508::T + a1509::T + a1510::T + a1511::T + a1512::T + a1513::T + a1514::T + a1601::T + a1606::T + a1607::T + a1608::T + a1609::T + a1610::T + a1611::T + a1612::T + a1613::T + b1::T + b8::T + b9::T + b10::T + b11::T + b12::T + b13::T + b14::T + b15::T + btilde1::T + btilde8::T + btilde9::T + btilde10::T + btilde11::T + btilde12::T + btilde13::T + btilde14::T + btilde15::T + btilde16::T +end + +@fold function Vern9Tableau(::Type{T}, + ::Type{T2}) where {T <: CompiledFloats, T2 <: CompiledFloats} + c1 = convert(T2, 0.03462) + c2 = convert(T2, 0.09702435063878045) + c3 = convert(T2, 0.14553652595817068) + c4 = convert(T2, 0.561) + c5 = convert(T2, 0.22900791159048503) + c6 = convert(T2, 0.544992088409515) + c7 = convert(T2, 0.645) + c8 = convert(T2, 0.48375) + c9 = convert(T2, 0.06757) + c10 = convert(T2, 0.25) + c11 = convert(T2, 0.6590650618730999) + c12 = convert(T2, 0.8206) + c13 = convert(T2, 0.9012) + a0201 = convert(T, 0.03462) + a0301 = convert(T, -0.03893354388572875) + a0302 = convert(T, 0.13595789452450918) + a0401 = convert(T, 0.03638413148954267) + a0403 = convert(T, 0.10915239446862801) + a0501 = convert(T, 2.0257639143939694) + a0503 = convert(T, -7.638023836496291) + a0504 = convert(T, 6.173259922102322) + a0601 = convert(T, 0.05112275589406061) + a0604 = convert(T, 0.17708237945550218) + a0605 = convert(T, 0.0008027762409222536) + a0701 = convert(T, 0.13160063579752163) + a0704 = convert(T, -0.2957276252669636) + a0705 = convert(T, 0.08781378035642955) + a0706 = convert(T, 0.6213052975225274) + a0801 = convert(T, 0.07166666666666667) + a0806 = convert(T, 0.33055335789153195) + a0807 = convert(T, 0.2427799754418014) + a0901 = convert(T, 0.071806640625) + a0906 = convert(T, 0.3294380283228177) + a0907 = convert(T, 0.1165190029271823) + a0908 = convert(T, -0.034013671875) + a1001 = convert(T, 0.04836757646340646) + a1006 = convert(T, 0.03928989925676164) + a1007 = convert(T, 0.10547409458903446) + a1008 = convert(T, -0.021438652846483126) + a1009 = convert(T, -0.10412291746271944) + a1101 = convert(T, -0.026645614872014785) + a1106 = convert(T, 0.03333333333333333) + a1107 = convert(T, -0.1631072244872467) + a1108 = convert(T, 0.03396081684127761) + a1109 = convert(T, 0.1572319413814626) + a1110 = convert(T, 0.21522674780318796) + a1201 = convert(T, 0.03689009248708622) + a1206 = convert(T, -0.1465181576725543) + a1207 = convert(T, 0.2242577768172024) + a1208 = convert(T, 0.02294405717066073) + a1209 = convert(T, -0.0035850052905728597) + a1210 = convert(T, 0.08669223316444385) + a1211 = convert(T, 0.43838406519683376) + a1301 = convert(T, -0.4866012215113341) + a1306 = convert(T, -6.304602650282853) + a1307 = convert(T, -0.2812456182894729) + a1308 = convert(T, -2.679019236219849) + a1309 = convert(T, 0.5188156639241577) + a1310 = convert(T, 1.3653531876033418) + a1311 = convert(T, 5.8850910885039465) + a1312 = convert(T, 2.8028087862720628) + a1401 = convert(T, 0.4185367457753472) + a1406 = convert(T, 6.724547581906459) + a1407 = convert(T, -0.42544428016461133) + a1408 = convert(T, 3.3432791530012653) + a1409 = convert(T, 0.6170816631175374) + a1410 = convert(T, -0.9299661239399329) + a1411 = convert(T, -6.099948804751011) + a1412 = convert(T, -3.002206187889399) + a1413 = convert(T, 0.2553202529443446) + a1501 = convert(T, -0.7793740861228848) + a1506 = convert(T, -13.937342538107776) + a1507 = convert(T, 1.2520488533793563) + a1508 = convert(T, -14.691500408016868) + a1509 = convert(T, -0.494705058533141) + a1510 = convert(T, 2.2429749091462368) + a1511 = convert(T, 13.367893803828643) + a1512 = convert(T, 14.396650486650687) + a1513 = convert(T, -0.79758133317768) + a1514 = convert(T, 0.4409353709534278) + a1601 = convert(T, 2.0580513374668867) + a1606 = convert(T, 22.357937727968032) + a1607 = convert(T, 0.9094981099755646) + a1608 = convert(T, 35.89110098240264) + a1609 = convert(T, -3.442515027624454) + a1610 = convert(T, -4.865481358036369) + a1611 = convert(T, -18.909803813543427) + a1612 = convert(T, -34.26354448030452) + a1613 = convert(T, 1.2647565216956427) + b1 = convert(T, 0.014611976858423152) + b8 = convert(T, -0.3915211862331339) + b9 = convert(T, 0.23109325002895065) + b10 = convert(T, 0.12747667699928525) + b11 = convert(T, 0.2246434176204158) + b12 = convert(T, 0.5684352689748513) + b13 = convert(T, 0.058258715572158275) + b14 = convert(T, 0.13643174034822156) + b15 = convert(T, 0.030570139830827976) + # bhat1 =convert(T,0.01996996514886773) + # bhat8 =convert(T,2.19149930494933) + # bhat9 =convert(T,0.08857071848208438) + # bhat10 =convert(T,0.11405602348659656) + # bhat11 =convert(T,0.2533163805345107) + # bhat12 =convert(T,-2.056564386240941) + # bhat13 =convert(T,0.340809679901312) + # bhat16 =convert(T,0.04834231373823958) + btilde1 = convert(T, -0.005357988290444578) + btilde8 = convert(T, -2.583020491182464) + btilde9 = convert(T, 0.14252253154686625) + btilde10 = convert(T, 0.013420653512688676) + btilde11 = convert(T, -0.02867296291409493) + btilde12 = convert(T, 2.624999655215792) + btilde13 = convert(T, -0.2825509643291537) + btilde14 = convert(T, 0.13643174034822156) + btilde15 = convert(T, 0.030570139830827976) + btilde16 = convert(T, -0.04834231373823958) + + Vern9Tableau(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, a0201, a0301, + a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, + a0704, a0705, a0706, a0801, a0806, a0807, a0901, a0906, a0907, a0908, + a1001, a1006, a1007, a1008, a1009, a1101, a1106, a1107, a1108, a1109, + a1110, a1201, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1306, + a1307, a1308, a1309, a1310, a1311, a1312, a1401, a1406, a1407, a1408, + a1409, a1410, a1411, a1412, a1413, a1501, a1506, a1507, a1508, a1509, + a1510, a1511, a1512, a1513, a1514, a1601, a1606, a1607, a1608, a1609, + a1610, a1611, a1612, a1613, b1, b8, b9, b10, b11, b12, b13, b14, b15, + btilde1, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, + btilde14, btilde15, btilde16) +end + +@fold function Vern9Tableau(::Type{T}, ::Type{T2}) where {T, T2} + c1 = convert(T2, 1731 // 50000) + c2 = convert(T2, + BigInt(7630049) // BigInt(53810000) - + BigInt(983539) // BigInt(53810000) * 6^(1 // 2)) + c3 = convert(T2, + BigInt(22890147) // BigInt(107620000) - + BigInt(2950617) // BigInt(107620000) * 6^(1 // 2)) + c4 = convert(T2, 561 // 1000) + c5 = convert(T2, BigInt(387) // BigInt(1000) - BigInt(129) // BigInt(2000) * 6^(1 // 2)) + c6 = convert(T2, BigInt(387) // BigInt(1000) + BigInt(129) // BigInt(2000) * 6^(1 // 2)) + c7 = convert(T2, 129 // 200) + c8 = convert(T2, 387 // 800) + c9 = convert(T2, 6757 // 100000) + c10 = convert(T2, 1 // 4) + c11 = convert(T2, 1427971650951258372 // 2166662646162554701) + c12 = convert(T2, 4103 // 5000) + c13 = convert(T2, 2253 // 2500) + a0201 = convert(T, 1731 // 50000) + a0301 = convert(T, + -BigInt(177968356965557) // BigInt(1002427673820000) + + BigInt(14180534491313) // BigInt(250606918455000) * 6^(1 // 2)) + a0302 = convert(T, + BigInt(64021741529527) // BigInt(200485534764000) - + BigInt(7504450763411) // BigInt(100242767382000) * 6^(1 // 2)) + a0401 = convert(T, + BigInt(22890147) // BigInt(430480000) - + BigInt(2950617) // BigInt(430480000) * 6^(1 // 2)) + a0403 = convert(T, + BigInt(68670441) // BigInt(430480000) - + BigInt(8851851) // BigInt(430480000) * 6^(1 // 2)) + a0501 = convert(T, + BigInt(592203994261020339) // BigInt(513126355505556250) + + BigInt(730386990293623641) // BigInt(2052505422022225000) * 6^(1 // 2)) + a0503 = convert(T, + -BigInt(8712153884182794903) // BigInt(2052505422022225000) - + BigInt(2843421359195851533) // BigInt(2052505422022225000) * 6^(1 // 2)) + a0504 = convert(T, + BigInt(1873698362223295443) // BigInt(513126355505556250) + + BigInt(528258592225556973) // BigInt(513126355505556250) * 6^(1 // 2)) + a0601 = convert(T, + BigInt(11380823631) // BigInt(157617812000) - + BigInt(339148869) // BigInt(39404453000) * 6^(1 // 2)) + a0604 = convert(T, + BigInt(16193232887091831) // BigInt(58864341808507450) - + BigInt(2355345717024309) // BigInt(58864341808507450) * 6^(1 // 2)) + a0605 = convert(T, + BigInt(165912282616977) // BigInt(4179075230308000) - + BigInt(33181894472511) // BigInt(2089537615154000) * 6^(1 // 2)) + a0701 = convert(T, + BigInt(26523528363) // BigInt(231790900000) + + BigInt(863255358) // BigInt(123138915625) * 6^(1 // 2)) + a0704 = convert(T, + -BigInt(38208748178016484817787) // BigInt(842517966262441068418750) - + BigInt(86118788556282369822807) // BigInt(842517966262441068418750) * + 6^(1 // 2)) + a0705 = convert(T, + BigInt(92362336407446913) // BigInt(290322814529044000) - + BigInt(232039320950012997) // BigInt(2467743923496874000) * 6^(1 // 2)) + a0706 = convert(T, + -BigInt(362925891) // BigInt(1690350537500) + + BigInt(857800423623) // BigInt(3380701075000) * 6^(1 // 2)) + a0801 = convert(T, 43 // 600) + a0806 = convert(T, BigInt(43) // BigInt(150) + BigInt(43) // BigInt(2400) * 6^(1 // 2)) + a0807 = convert(T, BigInt(43) // BigInt(150) - BigInt(43) // BigInt(2400) * 6^(1 // 2)) + a0901 = convert(T, 7353 // 102400) + a0906 = convert(T, + BigInt(22833) // BigInt(102400) + + BigInt(8901) // BigInt(204800) * 6^(1 // 2)) + a0907 = convert(T, + BigInt(22833) // BigInt(102400) - + BigInt(8901) // BigInt(204800) * 6^(1 // 2)) + a0908 = convert(T, -3483 // 102400) + a1001 = convert(T, 376708742472214988700853 // 7788456028125000000000000) + a1006 = convert(T, + BigInt(187914666753956840195279) // BigInt(2596152009375000000000000) - + BigInt(210440846556290693268911) // BigInt(15576912056250000000000000) * + 6^(1 // 2)) + a1007 = convert(T, + BigInt(187914666753956840195279) // BigInt(2596152009375000000000000) + + BigInt(210440846556290693268911) // BigInt(15576912056250000000000000) * + 6^(1 // 2)) + a1008 = convert(T, -18552667221896744226647 // 865384003125000000000000) + a1009 = convert(T, -3167799860072183913409 // 30423656359863281250000) + a1101 = convert(T, + -BigInt(426968570497) // BigInt(54394415898750) - + BigInt(92754382349) // BigInt(12087647977500) * 6^(1 // 2)) + a1106 = convert(T, 1 // 30) + a1107 = convert(T, + -BigInt(2865012129681958) // BigInt(114898584332330625) - + BigInt(12962517687655099) // BigInt(229797168664661250) * 6^(1 // 2)) + a1108 = convert(T, + BigInt(4389715333607) // BigInt(309890657317500) + + BigInt(92754382349) // BigInt(11477431752500) * 6^(1 // 2)) + a1109 = convert(T, + BigInt(4990058173976) // BigInt(83757096376875) + + BigInt(371017529396) // BigInt(9306344041875) * 6^(1 // 2)) + a1110 = convert(T, + BigInt(1099523524595993125000) // BigInt(6257667909869756018891) + + BigInt(100957348037989687500) // BigInt(6257667909869756018891) * + 6^(1 // 2)) + a1201 = convert(T, + BigInt(18382031104798403869938539009154656587521498573595595063164077882800315372787284683238439478955141517997198007108623761931447163756) // + BigInt(13974256944499724344918960993890933614161025322970450047932688998095008528620821239604734608111291769444706187497807869179550841329375) + + BigInt(407885778185158609210793892517582595305896470756467612636796259611491408260896413446883450891351622914818800693274034252252905536) // + BigInt(28084926388601226073624096169175002956970191576455110633226765141161372294098693275117181239385312198137508846535933127837167926875) * + 6^(1 // 2)) + a1206 = convert(T, + -BigInt(333881311789849411971573472868128281438202210721723123251742145367734582887577395547778228760174068758086134389952015563403904) // + BigInt(2270872004608103037127689848604039623086639035441372934050180593816493796129405349914148981460714202232988727738778494557727635) + + BigInt(4819272892477768171373308666720689121421091953625792970278044071549950640195056472955523769829034800621890424847009130000000) // + BigInt(23162894447002650978702436455761204155483718161502003927311842056928236720519934569124319610899284862776485022935540644488821877) * + 6^(1 // 2)) + a1207 = convert(T, + -BigInt(136666607496463622270135608863772076443625468798139480390426740993024803946981763209348364716108721312822619845726151693667598437699964416) // + BigInt(3719286465342404274788585327254180828195282427342057650194855634917821113563432870681372043512520401887141437067106105683944802332422369375) + + BigInt(169845085565361336805556009296394374527636952379388961026066628725155521832762086875632366996477567928657535912191396155566765457826139904) // + BigInt(1593979913718173260623679425966077497797978183146596135797795272107637620098614087434873732933937315094489187314474045293119200999609586875) * + 6^(1 // 2)) + a1208 = convert(T, + BigInt(5610987899273278525411960528081442902198567594809764379756195673673265700551076812883925583370253765702553235594764427173637673766208) // + BigInt(92881598198144033018278804740626334135423356791639598109358867770361609232846012626732332450844264293840456574956036349633197336361875) - + BigInt(5587476413495323413846491678323049250765705078855720721052003556321800113162964567765526724539063327600257543743479921263738432) // + BigInt(365303089362201664516413596925286161494473575337115296250511752859728108868696929614024803255122785403232359817965288739565550625) * + 6^(1 // 2)) + a1209 = convert(T, + BigInt(54598539818083615233566148602203244896696958910734339754065270985433507945162707737759469214674480807272210648148477499238783276259328) // + BigInt(301247919092298852634886875129959310794662932014184499827145075851637298698312074030567479239502011693447423026416040794479934024058125) - + BigInt(6526172450962537747372702280281321524894343532103481802188740153783862532174342615150135214261625966637100811092384548036046488576) // + BigInt(86490932843037281836028387921320502668579653176624892284566487468170341285762869374265713247057712228954184044334206372230816544375) * + 6^(1 // 2)) + a1210 = convert(T, + BigInt(9391667348404584010955422210328707125006120661611061908889750805619418785820948002455890360939221912190524731087070645107486913457760000000) // + BigInt(58157266968773020612419028503738708303515285854970725662326801531295387265784849843172223645193277229358434488742203091272981931739152584783) - + BigInt(8108825145085088104344721048166325225173729495689364696426720161112012414227752328969720658987315654179873760357725235734000399440000000) // + BigInt(265558296661064021061274102756797754810572081529546692522040189640618206693081506133206500662983001047298787619827411375675716583283801757) * + 6^(1 // 2)) + a1211 = convert(T, + BigInt(123461712659887915177271339396606860810479028777869348014870450606260914019560285661288212498128400476015695960341952) // + BigInt(281629106670320674754245209358840703704235147307838896741075511220826056829047205614324978253226176275078922716132461)) + a1301 = convert(T, + -BigInt(56042772675322042139227629978042586330633622706053363946766144416933631) // + BigInt(58808540772323190525590122613223430507352118534557342666015625000000000) + + BigInt(281404579734699232141455524604487724159024972527) // + BigInt(1478009944832743180452316204077188415527343750000) * 6^(1 // 2)) + a1306 = convert(T, + -BigInt(1027163900229750356561238237947225332675621517) // + BigInt(179261894431132664078747698292867431640625000) - + BigInt(2745292391641202525373103979336813513372321) // + BigInt(11702216468464340311060649744558385937500000) * 6^(1 // 2)) + a1307 = convert(T, + -BigInt(157229999853748227305165773364426925282378072238332930121) // + BigInt(36699907367985458573273204094330716033963413238525390625) + + BigInt(5757606442802795095318986067317837904184278650664590252101) // + BigInt(3523191107326604023034227593055748739260487670898437500000) * + 6^(1 // 2)) + a1308 = convert(T, + -BigInt(9311448168593934146015965019904013602133802943325818346622781285907057) // + BigInt(4255970849010124217193135449668739985401313363005576159362792968750000) - + BigInt(844213739204097696424366573813463172477074917581) // + BigInt(4210188359946578336976868164966163024902343750000) * 6^(1 // 2)) + a1309 = convert(T, + BigInt(885774233856672590222951867695327816457340130391639153070521335485617578) // + BigInt(301098541380295011015469248465465290112505656143757799934635162353515625) - + BigInt(281404579734699232141455524604487724159024972527) // + BigInt(284481916364737983221402322504830303192138671875) * 6^(1 // 2)) + a1310 = convert(T, + BigInt(315479116729780153956412124052199685097744239386639023787359107959254802182) // + BigInt(134481850506505848012587842215515574380212543200894932329128471154748828125) - + BigInt(2940396453647872276646068776592292229737651937934623) // + BigInt(7345465058781983710795837429530784777245286520703125) * + 6^(1 // 2)) + a1311 = convert(T, + BigInt(2250996163406545378616532039018846586217631599453822541) // + BigInt(382491303797095993563304148204275636433504028320312500)) + a1312 = convert(T, + BigInt(2689340957307691853294902388334454003959378146957529866233529251986359392336044151708949720958809747970514366293458424272174024493) // + BigInt(959516386019578808500569114780871708466894752280482835105408027815194895319055443842782227102120493960805649575561796875000000000)) + a1401 = convert(T, + BigInt(47342003848024391498707976847688893013083074441159779465719863625051668939887702630319) // + BigInt(44802546873926050730401222636656855760802419993852060264615320801485392456054687500000) - + BigInt(866369530987077991125562402829092187100493209601) // + BigInt(3325522375873672156017711459173673934936523437500) * 6^(1 // 2)) + a1406 = convert(T, + BigInt(871779321807802447463310035318238762878527157) // + BigInt(134446420823349498059060773719650573730468750) + + BigInt(107641268480999396081848975271849857994818) // + BigInt(1097082793918531904161935913552348681640625) * 6^(1 // 2)) + a1407 = convert(T, + BigInt(496103786351862292800034805114190705484800743513354117014) // + BigInt(110099722103956375719819612282992148101890239715576171875) - + BigInt(1329938412606197485769312599390307351191540891599374831099) // + BigInt(660598332623738254318917673697952888611341438293457031250) * + 6^(1 // 2)) + a1408 = convert(T, + BigInt(40774077277747636354598451708891165494123131383777235229538611989392175193285994266471) // + BigInt(15264290546248162101058985941588079518256741255377031736357946125713524703979492187500) + + BigInt(123767075855296855875080343261298883871499029943) // + BigInt(451091609994276250390378731960660324096679687500) * 6^(1 // 2)) + a1409 = convert(T, + -BigInt(10522038608500556459828649038302068473735749030796372764961618751973793724796364606986664) // + BigInt(3899417425005422254034574000397382862235892829653375835197340918271556055507659912109375) + + BigInt(3465478123948311964502249611316368748401972838404) // + BigInt(2560337247282641848992620902543472728729248046875) * 6^(1 // 2)) + a1410 = convert(T, + -BigInt(27843764471262693189365201135620670490328475323282820219474851621693895769527094334687108984) // + BigInt(12257041066285164222002594300605593929434139193022166317802121412999357024704596261133984375) + + BigInt(574774300271998598683873114105472016699241495055292) // + BigInt(1049352151254569101542262489932969253892183788671875) * + 6^(1 // 2)) + a1411 = convert(T, + -BigInt(34241134351848245624232809437676889009431930503529853032576417589898516) // + BigInt(5613347824358651981100985009024281007603230062439942682713165283203125)) + a1412 = convert(T, + -BigInt(3432044375893932378102368568052286501033850910516999202088532705211633432793920547702800961532438008401883737341854688972639605334600163938610268855705742764072609) // + BigInt(1143174106341682260971647690410567292143926198650927778920823267461111371275907599801714870165813394147519068210931766844494994616580258435518181434575195312500000)) + a1413 = convert(T, + BigInt(4746930876023919335079451612726717649218264199984) // + BigInt(18592065538407049755200144388134089346432755594877)) + a1501 = convert(T, + -BigInt(25188329249258825443748527038142409879923012133738985313265430932280250855708601) // + BigInt(11370641325574469312056961874077298550827642308774647316995717036347558064286250) + + BigInt(1234273058981860170179592598535508631343082535549881956) // + BigInt(2105633771469628744518390642968552144069898845895808125) * + 6^(1 // 2)) + a1506 = convert(T, + -BigInt(54821142119685055562477216205428613949905430396088) // + BigInt(3959439837009461289085587746748097947393101278095) - + BigInt(1511276753825982856072891469504471256664975925000) // + BigInt(40386286337496505148672995016830599063409633036569) * 6^(1 // 2)) + a1507 = convert(T, + -BigInt(60922424274061599918603524049390657305431262635197540405697952) // + BigInt(6484861747489032169774584624759953148531564032417461909516875) + + BigInt(84558575751635978733109961893984238786929550462615375699341616) // + BigInt(19454585242467096509323753874279859445594692097252385728550625) * + 6^(1 // 2)) + a1508 = convert(T, + -BigInt(116118147575045169733222875835719955334334798191459879782123534889390467935109772) // + BigInt(8810626901954835245672275131295870892503713957512170681453300814988417642493125) - + BigInt(176324722711694310025656085505072661620440362221411708) // + BigInt(285619406719829107485771207042040133465420149964555625) * + 6^(1 // 2)) + a1509 = convert(T, + BigInt(17769448722513898342276837490665097286927607247073335618566987143467294900183033216) // + BigInt(2551217008137889615056342146084561867122485163596619283719957742418751029506356875) - + BigInt(19748368943709762722873481576568138101489320568798111296) // + BigInt(6484554262322259071286545935997129135111813687175650625) * + 6^(1 // 2)) + a1510 = convert(T, + BigInt(97659266139124074818193264801929547781659926543786381510190954184218570746215033823993530000000) // + BigInt(18560076654469706205963482908787056850812308205603127326855360961727608242796551101182080033599) - + BigInt(85297084611782122474911131363078900058888025224607913745000000) // + BigInt(69210659450201393843166746722954036326338355649915383851733911) * + 6^(1 // 2)) + a1511 = convert(T, + BigInt(473389749049752963256114649231353822492912259509649519870869750525) // + BigInt(35412440882360341799798842428365422941216508121322622479260846291)) + a1512 = convert(T, + BigInt(33351439245158438248073494056784144097872912773415904536400728387690334563968394114702414108807505158106385116468732853458202899966748488718531545706559142895903144848764637) // + BigInt(2316611025327287427714802011322252886090793904989900621592365627649097578102163572190502232425490606773312310665593424982745744299371285598588298606088543376742054644818966)) + a1513 = convert(T, + -BigInt(38714992656958413389743252726016897599283911682945255636643554687500000) // + BigInt(48540494926971587499294589382572212036169135429877901702347521300421767)) + a1514 = convert(T, + BigInt(14800250200940323717124616175641261235119295795768814717803955078125) // + BigInt(33565577125141877760287380588632421223433194078156948298488471160489)) + a1601 = convert(T, + BigInt(2305785696086397561080858186939897173645641331085041313944389849986584101287) // + BigInt(617508244345282265819087370078275122671246164669900462139876057008239440000) - + BigInt(85404623305589712632165905233974183137607899140719) // + BigInt(124822287169084833758410283469525117460541643292500) * + 6^(1 // 2)) + a1606 = convert(T, + BigInt(102903996961580448264190625267026062654799259083) // + BigInt(5046398084890004857481629999673320438819484730) + + BigInt(41320925487304219313300272052128374567081128125) // + BigInt(51473260465878049546312625996667868475958744246) * 6^(1 // 2)) + a1607 = convert(T, + BigInt(62798443349876457506718920843975661399949564598018488144466) // + BigInt(4132553498782573324058263582553715220777051359780141380625) - + BigInt(72308807081932961554425711089716771013571419950657300729103) // + BigInt(12397660496347719972174790747661145662331154079340424141875) * + 6^(1 // 2)) + a1608 = convert(T, + BigInt(1794909142126482564390848522924225553221469019751470544959297614654661293377) // + BigInt(52596481193994264435601626109752988674679691644275456716633975785978672500) + + BigInt(12200660472227101804595129319139169019658271305817) // + BigInt(16931561456559959115207709344056578263397760602500) * 6^(1 // 2)) + a1609 = convert(T, + -BigInt(2775244732780109667342845612394739319115662636371477300455747022423270475907256) // + BigInt(228417153675584029725018045422706955827996328208181619436454383447149337555625) + + BigInt(341618493222358850528663620935896732550431596562876) // + BigInt(96101338378773357469245211954911505447551097205625) * 6^(1 // 2)) + a1610 = convert(T, + -BigInt(27680554659769016623530979176727448251292244310769996015342190819068970556083063125000) // + BigInt(3299557777429648960576561382256606844677258438797072955341581354051375036522231471437) + + BigInt(4426552127579895373479670356100179759944766558141730312500) // + BigInt(3077113738667320707748877199804636746494977000658967987677) * + 6^(1 // 2)) + a1611 = convert(T, + -BigInt(292603171929706291053929402159930330736639136252680853622275) // + BigInt(15473622826279161150227076887290262443510550964275858143964)) + a1612 = convert(T, + -BigInt(9815717129569106988569302193220999343824932084582093647596086931754666098662594153095258988516305165794739744873539829069617203523509136682216933020431) // + BigInt(286476991170934153076146641094402171801937250068596542931028678669501762253287693294397689327797388113854588113430063939405071979092547998950955940992)) + a1613 = convert(T, + BigInt(2729491144709837905799148766650782532906050298971406518524169921875) // + BigInt(2158115888622139473142775812109447802920656149243127309253686951469)) + b1 = convert(T, + 8198160366203173411119943711500331 // 561057579384085860167277847128765528) + b8 = convert(T, + -BigInt(455655493073428838813281446213740000000) // + BigInt(1163808011150910561240464225837312497869)) + b9 = convert(T, + BigInt(19965163648706008081135075746915614720000000) // + BigInt(86394404190537086868394686205782432516544599)) + b10 = convert(T, + BigInt(89231107919981418705566970804343750000000000000000000000) // + BigInt(699979870988335674445594679856445060562597693583175985391)) + b11 = convert(T, + 47104273954945906713184913871143492 // + 209684639122339601934631113492763467) + b12 = convert(T, + BigInt(20845004421404500464010584740796750650832176798370383084226351294730731196673647311062330972740734737279503119387627146381678677156136042524139311907482802844083) // + BigInt(36670849891136373020238225328265100250605144718501926305140966586758054847604681466336103169284755987753542321202462371554120593858149755539878561976786592389608)) + b13 = convert(T, + BigInt(6053037282142306509795911286909179687500000000) // + BigInt(103899257350518063455290077573775162739725126989)) + b14 = convert(T, + BigInt(917401104920993498360358406096725463867187500) // + BigInt(6724249815911346653315790737453607382989551463)) + b15 = convert(T, + 2585449557665268951371699596493957 // 84574345160764140163208606048427531) + # bhat1 =convert(T,552562031208180939317806684253//27669654257734667858523344041464) + # bhat8 =convert(T,221223388631423597589898601690000000//100946136798587090054685074667127461) + # bhat9 =convert(T,BigInt(101835408791305297984657812561920000000)//BigInt(1149763833200743759976506650241312100139)) + # bhat10 =convert(T,BigInt(1313720309077630014453239843750000000000000000000)//BigInt(11518201923215510989126466531107437037395719117133)) + # bhat11 =convert(T,4833611232701440504508086151728//19081321241454145230196661524503) + # bhat12 =convert(T,-BigInt(2129662374582324648106919795703373645353118273066742230724172731025813964712473647144010599206669825382719359113196238857709025512340589957)//BigInt(1035543739272367080885190546201097218891268728118207332592595987554851882972292670881794178380097716583123063485287435793657425889233080568)) + # bhat13 =convert(T,BigInt(1084761591753640855844358063964843750000000)//BigInt(3182895486031249071938549691320502488733423)) + # bhat16 =convert(T,1839190071060649887127895100784//38045139523510634351420875415397) + btilde1 = convert(T, + -1503069970302555747713611212548875 // + 280528789692042930083638923564382764) + btilde8 = convert(T, + BigInt(-3006139940605111495427222425097750000000) // + BigInt(1163808011150910561240464225837312497869)) + btilde9 = convert(T, + BigInt(12313149196718536685269903053200384000000000) // + BigInt(86394404190537086868394686205782432516544599)) + btilde10 = convert(T, + BigInt(9394187314390973423210070078430468750000000000000000000) // + BigInt(699979870988335674445594679856445060562597693583175985391)) + btilde11 = convert(T, + -6012279881210222990854444850195500 // + 209684639122339601934631113492763467) + btilde12 = convert(T, + BigInt(48130484160351526969737032053650002390763871764386160830857331738750104951318921056416737791402447075630390197043182920376678624912056972204118525928289962576625) // + BigInt(18335424945568186510119112664132550125302572359250963152570483293379027423802340733168051584642377993876771160601231185777060296929074877769939280988393296194804)) + btilde13 = convert(T, + BigInt(-29356835357471791947531468995095214843750000000) // + BigInt(103899257350518063455290077573775162739725126989)) + btilde14 = convert(T, + BigInt(917401104920993498360358406096725463867187500) // + BigInt(6724249815911346653315790737453607382989551463)) + btilde15 = convert(T, + 2585449557665268951371699596493957 // + 84574345160764140163208606048427531) + btilde16 = convert(T, + -1839190071060649887127895100784 // 38045139523510634351420875415397) + + Vern9Tableau(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, a0201, a0301, + a0302, a0401, a0403, a0501, a0503, a0504, a0601, a0604, a0605, a0701, + a0704, a0705, a0706, a0801, a0806, a0807, a0901, a0906, a0907, a0908, + a1001, a1006, a1007, a1008, a1009, a1101, a1106, a1107, a1108, a1109, + a1110, a1201, a1206, a1207, a1208, a1209, a1210, a1211, a1301, a1306, + a1307, a1308, a1309, a1310, a1311, a1312, a1401, a1406, a1407, a1408, + a1409, a1410, a1411, a1412, a1413, a1501, a1506, a1507, a1508, a1509, + a1510, a1511, a1512, a1513, a1514, a1601, a1606, a1607, a1608, a1609, + a1610, a1611, a1612, a1613, b1, b8, b9, b10, b11, b12, b13, b14, b15, + btilde1, btilde8, btilde9, btilde10, btilde11, btilde12, btilde13, + btilde14, btilde15, btilde16) +end diff --git a/test/algconvergence/ode_extrapolation_tests.jl b/test/algconvergence/ode_extrapolation_tests.jl new file mode 100644 index 0000000000..b265b3a753 --- /dev/null +++ b/test/algconvergence/ode_extrapolation_tests.jl @@ -0,0 +1,242 @@ +# Import packages +using OrdinaryDiffEq, DiffEqDevTools, Test, Random + +# Define test problems +# Note that the time span in ODEProblemLibrary is given by +# Float64 numbers + +linear = (u, p, t) -> (p * u) +linear_analytic = (u0, p, t) -> u0 * exp(p * t) +prob_ode_bigfloatlinear = ODEProblem(ODEFunction(linear, analytic = linear_analytic), + big"0.5", (big"0.0", big"1.0"), big"1.01") + +f_2dlinear = (du, u, p, t) -> (@. du = p * u) +f_2dlinear_analytic = (u0, p, t) -> @. u0 * exp(p * t) +prob_ode_bigfloat2Dlinear = ODEProblem( + ODEFunction(f_2dlinear, + analytic = f_2dlinear_analytic), + rand(BigFloat, (4, 2)), (big"0.0", big"1.0"), + big"1.01") + +# Prepare tests +Random.seed!(100) +problem_array = [prob_ode_bigfloatlinear, prob_ode_bigfloat2Dlinear] +dts = 1 .// 2 .^ (8:-1:1) + +testTol = 0.2 + +@testset "Testing extrapolation methods" begin + + # Test AitkenNeville + println("Testing AitkenNeville") + @testset "Testing AitkenNeville" begin + @testset "Testing sequential AitkenNeville" begin + for prob in problem_array + global dts + + # Convergence test + for j in 1:4 + sim = test_convergence(dts, prob, + AitkenNeville(max_order = j, + min_order = j, init_order = j, + threading = false)) + @test sim.𝒪est[:final]≈j atol=testTol + end + + # Regression test + sol = solve(prob, + AitkenNeville(max_order = 9, min_order = 1, + init_order = 9, threading = false), reltol = 1e-3) + @test length(sol.u) < 15 + sol = solve(prob, + AitkenNeville(max_order = 9, min_order = 1, + init_order = 9, threading = false), reltol = 1e-6) + @test length(sol.u) < 18 + end + end + end # AitkenNeville + + # Define the subdividing sequences + sequence_array = [:harmonic, :romberg, :bulirsch] + + println("Testing ImplicitEulerExtrapolation") + @testset "Testing ImplicitEulerExtrapolation" begin + for prob in problem_array, + seq in sequence_array + + global dts + + newTol = 0.35 + # Convergence test + for j in 1:4 + alg = ImplicitEulerExtrapolation(min_order = j, + init_order = j, max_order = j, + sequence = seq, threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈alg.init_order + 1.1 atol=newTol #Superconvergence + end + # Regression test + sol = solve(prob, + ImplicitEulerExtrapolation(max_order = 9, min_order = 1, + init_order = 9, sequence = seq, + threading = false), reltol = 1e-3) + @test length(sol.u) < 15 + end + end + + println("Testing ImplicitEulerBarycentricExtrapolation") + @testset "Testing ImplicitEulerBarycentricExtrapolation" begin + for prob in problem_array, + seq in sequence_array + + global dts + + newTol = 0.35 + # Convergence test + for j in 1:4 + alg = ImplicitEulerBarycentricExtrapolation(min_order = j, + init_order = j, max_order = j, + sequence = seq, + threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈alg.init_order + 0.5 atol=newTol #Superconvergence + end + # Regression test + sol = solve(prob, + ImplicitEulerBarycentricExtrapolation(max_order = 9, min_order = 1, + init_order = 9, + sequence = seq, + threading = false), + reltol = 1e-3) + @test length(sol.u) < 15 + end + end + + println("Testing ImplicitDeuflhardExtrapolation") + @testset "Testing ImplicitDeuflhardExtrapolation" begin + for prob in problem_array, + seq in sequence_array + + global dts + + # Convergence test + for j in 1:6 + alg = ImplicitDeuflhardExtrapolation(min_order = j, + init_order = j, max_order = j, + sequence = seq, threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈2 * (alg.init_order + 1) atol=testTol + end + + # Regression test + alg = ImplicitDeuflhardExtrapolation(max_order = 9, min_order = 1, + init_order = 9, sequence = seq, + threading = false) + sol = solve(prob, alg, reltol = 1e-3) + @test length(sol.u) < 10 + end + end + + println("Testing ImplicitHairerWannerExtrapolation") + @testset "Testing ImplicitHairerWannerExtrapolation" begin + for prob in problem_array, + seq in sequence_array + + global dts + + # Convergence test + for j in 1:6 + alg = ImplicitHairerWannerExtrapolation(min_order = j, + init_order = j, max_order = j, + sequence = seq, threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈2 * (alg.init_order + 1) - 1 atol=testTol + end + + alg = ImplicitHairerWannerExtrapolation(max_order = 9, min_order = 1, + init_order = 9, sequence = seq, + threading = false) + sol = solve(prob, alg, reltol = 1e-3) + @test length(sol.u) < 10 + end + end + + # Test ExtrapolationMidpointDeuflhard + + println("Testing ExtrapolationMidpointDeuflhard") + @testset "Testing ExtrapolationMidpointDeuflhard" begin + @testset "Testing sequential ExtrapolationMidpointDeuflhard" begin + for prob in problem_array, + seq in sequence_array + + global dts + + # Convergence test + for j in 1:6 + alg = ExtrapolationMidpointDeuflhard(min_order = j, + init_order = j, max_order = j, + sequence = seq, threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈2 * (alg.init_order + 1) atol=testTol + end + + # Regression test + alg = ExtrapolationMidpointDeuflhard(max_order = 9, min_order = 1, + init_order = 9, sequence = seq, + threading = false) + sol = solve(prob, alg, reltol = 1e-3) + @test length(sol.u) < 10 + end + end + end # ExtrapolationMidpointDeuflhard + + # Test ExtrapolationMidpointHairerWanner + println("Testing ExtrapolationMidpointHairerWanner") + @testset "Testing ExtrapolationMidpointHairerWanner" begin + @testset "Testing sequential ExtrapolationMidpointHairerWanner" begin + for prob in problem_array, + seq in sequence_array + + global dts + + # Convergence test + for j in 1:6 + alg = ExtrapolationMidpointHairerWanner(min_order = j, + init_order = j, max_order = j, + sequence = seq, + threading = false) + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈2 * (alg.init_order + 1) atol=testTol + end + + # Regression test + alg = ExtrapolationMidpointHairerWanner(max_order = 9, min_order = 2, + init_order = 9, sequence = seq, + threading = false) + sol = solve(prob, alg, reltol = 1e-3) + @test length(sol.u) < 10 + end + end + end # ExtrapolationMidpointHairerWanner + + println("Regression Test Float32 and Float64 Fallbacks") + @testset "Regression Test Float32 and Float64 Fallbacks" begin + prob_ode_2Dlinear = ODEProblem( + ODEFunction(f_2dlinear, + analytic = f_2dlinear_analytic), + Float64.(prob_ode_bigfloat2Dlinear.u0), (0.0, 1.0), + 1.01) + s1 = solve(prob_ode_bigfloat2Dlinear, ExtrapolationMidpointDeuflhard()) + s2 = solve(prob_ode_2Dlinear, ExtrapolationMidpointDeuflhard()) + @test all(all(s1[i] - s2[i] .< 5e-14) for i in 1:length(s1)) + + prob_ode_2Dlinear = ODEProblem( + ODEFunction(f_2dlinear, + analytic = f_2dlinear_analytic), + Float32.(prob_ode_bigfloat2Dlinear.u0), + (0.0f0, 1.0f0), 1.01f0) + s1 = solve(prob_ode_bigfloat2Dlinear, ExtrapolationMidpointDeuflhard()) + s2 = solve(prob_ode_2Dlinear, ExtrapolationMidpointDeuflhard()) + @test all(all(s1[i] - s2[i] .< 5e-6) for i in 1:length(s1)) + end +end # Extrapolation methods diff --git a/test/algconvergence/ode_feagin_tests.jl b/test/algconvergence/ode_feagin_tests.jl new file mode 100644 index 0000000000..b156fcbfc6 --- /dev/null +++ b/test/algconvergence/ode_feagin_tests.jl @@ -0,0 +1,53 @@ +using OrdinaryDiffEq, DiffEqBase, Test, DiffEqDevTools, + Random + +import ODEProblemLibrary: prob_ode_bigfloatlinear, + prob_ode_bigfloat2Dlinear, + prob_ode_2Dlinear + +## Convergence Testing +println("Convergence Test on Linear") + +testTol = 1 +prob = prob_ode_2Dlinear +println("Feagin RKs") +dts = (1 // 2) .^ (4:-1:2) +sol = solve(prob, Feagin10(), dt = dts[1]) +prob = remake(prob_ode_bigfloat2Dlinear, tspan = (big(0) // 1, big(1) // 1)) +sol = solve(prob, Feagin10(), dt = dts[1]) + +prob = remake(prob_ode_bigfloat2Dlinear, tspan = (big(0.0), big(1.0))) +dts = (1 // 2) .^ (4:-1:2) +sim = test_convergence(dts, prob, Feagin10()) +@test abs(sim.𝒪est[:final] - 8) < testTol #Lowered due to low test dt + +sim = test_convergence(dts, prob, Feagin12()) +@test abs(sim.𝒪est[:final] - 12) < testTol + +sim = test_convergence(dts, prob, Feagin14()) +@test abs(sim.𝒪est[:final] - 15) < testTol #Upped to 15 for test + +prob = prob_ode_bigfloatlinear + +dts = (1 // 2) .^ (6:-1:3) +sim = test_convergence(dts, prob, Feagin10()) +@test abs(sim.𝒪est[:final] - 10) < testTol + +dts = (1 // 2) .^ (4:-1:2) +sim = test_convergence(dts, prob, Feagin12()) +@test abs(sim.𝒪est[:final] - 12) < testTol + +sim = test_convergence(dts, prob, Feagin14()) +@test abs(sim.𝒪est[:final] - 15) < testTol #Upped to 15 for test + +prob = prob_ode_bigfloat2Dlinear + +#compile +sol = solve(prob, Feagin10(), dt = dts[1]) +sol = solve(prob, Feagin12(), dt = dts[1]) +sol = solve(prob, Feagin14(), dt = dts[1]) + +#test +@time sol = solve(prob, Feagin10(), dt = dts[1]) +@time sol = solve(prob, Feagin12(), dt = dts[1]) +@time sol = solve(prob, Feagin14(), dt = dts[1]) diff --git a/test/algconvergence/ode_firk_tests.jl b/test/algconvergence/ode_firk_tests.jl index 3672e30fa9..f901b7c80e 100644 --- a/test/algconvergence/ode_firk_tests.jl +++ b/test/algconvergence/ode_firk_tests.jl @@ -8,11 +8,11 @@ for prob in [prob_ode_linear, prob_ode_2Dlinear] @test sim21.𝒪est[:final]≈5 atol=testTol end -sim21 = test_convergence(1 ./ 2 .^ (2.777:-1:0.777), prob_ode_linear, RadauIIA7()) -@test sim21.𝒪est[:final]≈7 atol=testTol +sim21 = test_convergence(1 ./ 2 .^ (2.75:-0.5:0.25), prob_ode_linear, RadauIIA9()) +@test sim21.𝒪est[:final]≈9 atol=testTol -sim21 = test_convergence(1 ./ 2 .^ (2.777:-1:0.777), prob_ode_2Dlinear, RadauIIA7()) -@test sim21.𝒪est[:final]≈8 atol=testTol +sim21 = test_convergence(1 ./ 2 .^ (2.75:-0.5:0.25), prob_ode_2Dlinear, RadauIIA0()) +@test sim21.𝒪est[:final]≈9 atol=testTol # test adaptivity for iip in (true, false) diff --git a/test/algconvergence/ode_low_storage_rk_tests.jl b/test/algconvergence/ode_low_storage_rk_tests.jl new file mode 100644 index 0000000000..7d28903ac9 --- /dev/null +++ b/test/algconvergence/ode_low_storage_rk_tests.jl @@ -0,0 +1,1567 @@ +using OrdinaryDiffEq, DiffEqDevTools, Test, Random +import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear, prob_ode_bigfloat2Dlinear + +Random.seed!(100) + +testTol = 0.25 + +f = (u, p, t) -> cos(t) +prob_ode_sin = ODEProblem(ODEFunction(f; analytic = (u0, p, t) -> sin(t)), 0.0, (0.0, 1.0)) + +f = (du, u, p, t) -> du[1] = cos(t) +prob_ode_sin_inplace = ODEProblem(ODEFunction(f; analytic = (u0, p, t) -> [sin(t)]), [0.0], + (0.0, 1.0)) + +f = (u, p, t) -> sin(u) +prob_ode_nonlinear = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> 2 * acot(exp(-t) * + cot(0.5))), 1.0, + (0.0, 0.5)) + +f = (du, u, p, t) -> du[1] = sin(u[1]) +prob_ode_nonlinear_inplace = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> [ + 2 * acot(exp(-t) * cot(0.5)) + ]), + [1.0], (0.0, 0.5)) + +test_problems_only_time = [prob_ode_sin, prob_ode_sin_inplace] +test_problems_linear = [prob_ode_linear, prob_ode_2Dlinear, prob_ode_bigfloat2Dlinear] +test_problems_nonlinear = [prob_ode_nonlinear, prob_ode_nonlinear_inplace] + +# Test the memory usage, cf. #640 +# Note: Basically, the size of the integrator should be the size of the cache +# plus the size of the initial condition (stored is integ.sol.prob.u0) if the +# keyword argument `alias_u0` is not set to `true` (default). +# Note: The memory requirements of the 2N methods can be reduced if an assignment +# of the form `tmp = A2end[i]*tmp + dt*f(u, p, t+c2end[i]*dt)` can be carried out +# without saving `f(u, p, t+c2end[i]*dt)` as `k`. +u0_large = rand(10^6) +prob_ode_large = ODEProblem((du, u, p, t) -> du .= u, u0_large, (0.0, 1.0)) + +@testset "ORK256" begin + alg = ORK256() + alg2 = ORK256(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CarpenterKennedy2N54" begin + alg = CarpenterKennedy2N54() + alg2 = CarpenterKennedy2N54(; williamson_condition = false) + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "SHLDDRK64" begin + alg = SHLDDRK64() + alg2 = SHLDDRK64(; williamson_condition = true) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "DGLDDRK73_C" begin + alg = DGLDDRK73_C() + alg2 = DGLDDRK73_C(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "DGLDDRK84_C" begin + alg = DGLDDRK84_C() + alg2 = DGLDDRK84_C(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "DGLDDRK84_F" begin + alg = DGLDDRK84_F() + alg2 = DGLDDRK84_F(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "NDBLSRK124" begin + alg = NDBLSRK124() + alg2 = NDBLSRK124(; williamson_condition = false) + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "NDBLSRK134" begin + alg = NDBLSRK134() + alg2 = NDBLSRK134(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "NDBLSRK144" begin + alg = NDBLSRK144() + alg2 = NDBLSRK144(; williamson_condition = false) + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + sim = test_convergence(dts, prob, alg2) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 2 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg2, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CFRLDDRK64" begin + alg = CFRLDDRK64() + dts = 1 ./ 2 .^ (7:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "TSLDDRK74" begin + alg = TSLDDRK74() + dts = 1 ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +# Methods from Carpenter, Kennedy, Lewis (2000) + +function RemakeNew(p::ODEProblem) + u1 = @. BigFloat(p.u0) + tsp1 = @. BigFloat(p.tspan) + remake(p; u0 = u1, tspan = tsp1) +end + +test_problems_only_time_BigFloat = @. RemakeNew(test_problems_only_time) +test_problems_linear_BigFloat = @. RemakeNew(test_problems_linear) +f = (u, p, t) -> sin(u) +prob_nonlinear_A = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> 2 * acot(exp(-t) * + cot(BigFloat(0.5)))), + BigFloat(1.0), (BigFloat(0.0), BigFloat(0.5))) + +f = (du, u, p, t) -> du[1] = sin(u[1]) +prob_nonlinear_B = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> [ + 2 * acot(exp(-t) * cot(BigFloat(0.5))) + ]), + [BigFloat(1.0)], + (BigFloat(0.0), BigFloat(0.5))) +test_problems_nonlinear_BigFloat = [prob_nonlinear_A, prob_nonlinear_B] + +@testset "CKLLSRK43_2" begin + alg = CKLLSRK43_2() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol # This scheme has linear order of 4 + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 7 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3C" begin + alg = CKLLSRK54_3C() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈1 atol=testTol # The CI plot is linear but the evaluated order is 1 + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 7 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK95_4S" begin + alg = CKLLSRK95_4S() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 7 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK95_4C" begin + alg = CKLLSRK95_4C() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 7 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK95_4M" begin + alg = CKLLSRK95_4M() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 7 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3C_3R" begin + alg = CKLLSRK54_3C_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3M_3R" begin + alg = CKLLSRK54_3M_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 0.5 atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3N_3R" begin + alg = CKLLSRK54_3N_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK85_4C_3R" begin + alg = CKLLSRK85_4C_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK85_4M_3R" begin + alg = CKLLSRK85_4M_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK85_4P_3R" begin + alg = CKLLSRK85_4P_3R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 2 atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 10 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 9 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3N_4R" begin + alg = CKLLSRK54_3N_4R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 12 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK54_3M_4R" begin + alg = CKLLSRK54_3M_4R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 0.5 atol=testTol # This scheme has linear orderof 4.5 + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 12 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK65_4M_4R" begin + alg = CKLLSRK65_4M_4R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 12 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK85_4FM_4R" begin + alg = CKLLSRK85_4FM_4R() + dts = BigFloat(1) ./ 2 .^ (10:-1:6) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 12 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 11 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "CKLLSRK75_4M_5R" begin + alg = CKLLSRK75_4M_5R() + dts = BigFloat(1) ./ 2 .^ (8:-1:4) + for prob in test_problems_only_time_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear_BigFloat + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, adaptive = false, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 13 + integ = init(prob_ode_large, alg, adaptive = true, dt = 1.e-2, save_start = false, + save_end = false, save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 14 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 13 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +# Methods from Parsani, Ketcheson, Deconinck (2013) + +@testset "ParsaniKetchesonDeconinck3S32" begin + alg = ParsaniKetchesonDeconinck3S32() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S82" begin + alg = ParsaniKetchesonDeconinck3S82() + dts = 1 ./ 2 .^ (8:-1:5) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S53" begin + alg = ParsaniKetchesonDeconinck3S53() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S173" begin + alg = ParsaniKetchesonDeconinck3S173() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (6:-1:3) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=1 + end + + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S94" begin + alg = ParsaniKetchesonDeconinck3S94() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S184" begin + alg = ParsaniKetchesonDeconinck3S184() + dts = 1 ./ 2 .^ (6:-1:2) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (7:-1:2) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S105" begin + alg = ParsaniKetchesonDeconinck3S105() + dts = 1 ./ 1.95 .^ (5:-1:1) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (5:-1:2) + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1.5 ./ 2 .^ (5:-1:2) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "ParsaniKetchesonDeconinck3S205" begin + alg = ParsaniKetchesonDeconinck3S205() + dts = 1 ./ 1.95 .^ (5:-1:1) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (5:-1:2) + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1.5 ./ 2 .^ (5:-1:2) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +# Methods from Ranocha, Dalcin, Parsani, Ketcheson (2021) + +@testset "RDPK3Sp35" begin + alg = RDPK3Sp35() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "RDPK3Sp49" begin + alg = RDPK3Sp49() + dts = 1 ./ 2 .^ (5:-1:2) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (8:-1:2) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "RDPK3Sp510" begin + alg = RDPK3Sp510() + dts = 1 ./ 2 .^ (4.5:-1:1.5) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "RDPK3SpFSAL35" begin + alg = RDPK3SpFSAL35() + dts = 1 ./ 2 .^ (7:-1:3) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "RDPK3SpFSAL49" begin + alg = RDPK3SpFSAL49() + dts = 1 ./ 2 .^ (5:-1:2) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) + 1 atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + dts = 1 ./ 2 .^ (8:-1:2) + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end + +@testset "RDPK3SpFSAL510" begin + alg = RDPK3SpFSAL510() + dts = 1 ./ 2 .^ (4.5:-1:1.5) + for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol + end + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 + integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) + @test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + # test whether aliasing u0 is bad + new_prob_ode_nonlinear_inplace = ODEProblem(prob_ode_nonlinear_inplace.f, [1.0], + (0.0, 0.5)) + sol_old = solve(prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false) + sol_new = solve( + new_prob_ode_nonlinear_inplace, alg, dt = 1.e-4, save_everystep = false, + save_start = false, alias_u0 = true) + @test sol_old[end] ≈ sol_new[end] +end diff --git a/test/algconvergence/ode_ssprk_tests.jl b/test/algconvergence/ode_ssprk_tests.jl new file mode 100644 index 0000000000..aa0402c209 --- /dev/null +++ b/test/algconvergence/ode_ssprk_tests.jl @@ -0,0 +1,534 @@ +using OrdinaryDiffEq, DiffEqDevTools, Test, Random +import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear, prob_ode_bigfloat2Dlinear + +Random.seed!(100) + +dts = 1 .// 2 .^ (8:-1:4) +testTol = 0.25 + +f = (u, p, t) -> cos(t) +prob_ode_sin = ODEProblem(ODEFunction(f; analytic = (u0, p, t) -> sin(t)), 0.0, (0.0, 1.0)) + +f = (du, u, p, t) -> du[1] = cos(t) +prob_ode_sin_inplace = ODEProblem(ODEFunction(f; analytic = (u0, p, t) -> [sin(t)]), [0.0], + (0.0, 1.0)) + +f = (u, p, t) -> sin(u) +prob_ode_nonlinear = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> 2 * acot(exp(-t) * + cot(0.5))), 1.0, + (0.0, 0.5)) + +f = (du, u, p, t) -> du[1] = sin(u[1]) +prob_ode_nonlinear_inplace = ODEProblem( + ODEFunction(f; + analytic = (u0, p, t) -> [ + 2 * acot(exp(-t) * cot(0.5)) + ]), + [1.0], (0.0, 0.5)) + +test_problems_only_time = [prob_ode_sin, prob_ode_sin_inplace] +test_problems_linear = [prob_ode_linear, prob_ode_2Dlinear, prob_ode_bigfloat2Dlinear] +test_problems_nonlinear = [prob_ode_nonlinear, prob_ode_nonlinear_inplace] + +f_ssp = (u, p, t) -> begin + sin(10t) * u * (1 - u) +end +test_problem_ssp = ODEProblem(f_ssp, 0.1, (0.0, 8.0)) +test_problem_ssp_long = ODEProblem(f_ssp, 0.1, (0.0, 1.e3)) + +f_ssp_inplace = (du, u, p, t) -> begin + @. du = sin(10t) * u * (1 - u) +end +test_problem_ssp_inplace = ODEProblem(f_ssp_inplace, rand(3, 3), (0.0, 8.0)) + +# Test the memory usage, cf. #640 +# Note: Basically, the size of the integrator should be the size of the cache +# plus the size of the initial condition, stored is integ.sol.prob.u0. +u0_large = rand(10^6) +prob_ode_large = ODEProblem((du, u, p, t) -> du .= u, u0_large, (0.0, 1.0)) + +# test SSP coefficient for explicit Euler +alg = Euler() +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg) + 1.e-3, + dense = false) +@test any(sol.u .< 0) + +println("SSPRK22") +alg = SSPRK22() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test SSP property of dense output +sol = solve(test_problem_ssp, alg, dt = 1.0) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +sol = solve(test_problem_ssp_inplace, alg, dt = 1.0) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + +println("KYKSSPRK42") +alg = KYKSSPRK42() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) + +println("SHLDDRK52") +alg = SHLDDRK52() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test_broken sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end + +println("SHLDDRK_2N") +dts_SHLDDRK_2N = (1 / 2) .^ (0:3) +alg = SHLDDRK_2N() +for prob in test_problems_only_time + sim = test_convergence(dts_SHLDDRK_2N, prob, alg) + @test sim.𝒪est[:final]≈4 atol=0.46 +end +for prob in test_problems_linear + sim = test_convergence(dts_SHLDDRK_2N, prob, alg) + @test sim.𝒪est[:final]≈4 atol=0.46 +end +for prob in test_problems_nonlinear + sim = test_convergence(dts_SHLDDRK_2N, prob, alg) + @test sim.𝒪est[:final]≈4 atol=1 + # due to unusual saturation towards high dts(0.5 and onwards) and + # saturation towards low dts due to less precision in the provided values of weights , tolerance is kept so high +end + +println("SSPRK33") +alg = SSPRK33() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # This corresponds to Simpson's rule; due to symmetric quadrature nodes, + # it is of degree 4 instead of 3, as would be expected. + @test abs(sim.𝒪est[:final] - 1 - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test SSP property of dense output +sol = solve(test_problem_ssp, alg, dt = 1.0) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +sol = solve(test_problem_ssp_inplace, alg, dt = 1.0) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + +println("SSPRK53") +alg = SSPRK53() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + +println("SSPRK53_2N1") +alg = SSPRK53_2N1() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + +# for SSPRK53_2N2 to be in asymptotic range +dts = 1 .// 2 .^ (9:-1:5) +println("SSPRK53_2N2") +alg = SSPRK53_2N2() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 3 + +dts = 1 .// 2 .^ (9:-1:5) +println("SSPRK53_H") +alg = SSPRK53_H() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=0.4 +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=0.4 +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=0.4 +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 4 + +#reverting back to original dts +println("SSPRK63") +dts = 1 .// 2 .^ (8:-1:4) +alg = SSPRK63() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) + +println("SSPRK73") +alg = SSPRK73() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) + +println("SSPRK83") +alg = SSPRK83() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) + +println("SSPRK43") +alg = SSPRK43() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test abs(sim.𝒪est[:final] - 1 - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test SSP property of dense output +sol = solve(test_problem_ssp, alg, dt = 8 / 5, adaptive = false) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +sol = solve(test_problem_ssp_inplace, alg, dt = 8 / 5, adaptive = false) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + +println("SSPRK432") +alg = SSPRK432() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # higher order as pure quadrature + @test abs(sim.𝒪est[:final] - 1 - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test SSP property of dense output +sol = solve(test_problem_ssp, alg, dt = 8 / 5, adaptive = false) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +sol = solve(test_problem_ssp_inplace, alg, dt = 8 / 5, adaptive = false) +@test mapreduce(t -> all(0 .<= sol(t) .<= 1), (u, v) -> u && v, + range(0, stop = 8, length = 50), init = true) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + +alg = SSPRKMSVS32() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end + +println("SSPRKMSVS43") +alg = SSPRKMSVS43() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) #shows superconvergence to 4th order + @test abs(sim.𝒪est[:final] - 1 - OrdinaryDiffEq.alg_order(alg)) < testTol +end + +println("SSPRK932") +alg = SSPRK932() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false, maxiters = 1e7) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + +println("SSPRK54") +alg = SSPRK54() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + # convergence order seems to be worse for this problem + @test abs(sim.𝒪est[:final] + 0.25 - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + # convergence order seems to be better for this problem + @test abs(sim.𝒪est[:final] - 0.5 - OrdinaryDiffEq.alg_order(alg)) < testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) + +println("SSPRK104") +alg = SSPRK104() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test sim.𝒪est[:final]≈OrdinaryDiffEq.alg_order(alg) atol=testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) +# test storage +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 6 +integ = init(prob_ode_large, alg, dt = 1.e-2, save_start = false, save_end = false, + save_everystep = false, alias_u0 = true) +@test Base.summarysize(integ) ÷ Base.summarysize(u0_large) <= 5 + +println("KYK2014DGSSPRK_3S2") +alg = KYK2014DGSSPRK_3S2() +for prob in test_problems_only_time + sim = test_convergence(dts, prob, alg) + @test abs(sim.𝒪est[:final] - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_linear + sim = test_convergence(dts, prob, alg) + @test abs(sim.𝒪est[:final] - OrdinaryDiffEq.alg_order(alg)) < testTol +end +for prob in test_problems_nonlinear + sim = test_convergence(dts, prob, alg) + @test abs(sim.𝒪est[:final] - OrdinaryDiffEq.alg_order(alg)) < testTol +end +# test SSP coefficient +sol = solve(test_problem_ssp_long, alg, dt = OrdinaryDiffEq.ssp_coefficient(alg), + dense = false) +@test all(sol.u .>= 0) diff --git a/test/algconvergence/rkc_tests.jl b/test/algconvergence/rkc_tests.jl new file mode 100644 index 0000000000..4121e2e345 --- /dev/null +++ b/test/algconvergence/rkc_tests.jl @@ -0,0 +1,97 @@ +using OrdinaryDiffEq, DiffEqDevTools, Test, LinearAlgebra, Random +using OrdinaryDiffEq: maxeig! +import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear +probArr = Vector{ODEProblem}(undef, 2) +probArr[1] = prob_ode_linear +probArr[2] = prob_ode_2Dlinear + +@testset "Power Iteration of Runge-Kutta-Chebyshev Tests" begin + Random.seed!(123) + eigen_est = (integrator) -> integrator.eigen_est = 1.5e2 + for iip in [true, false], alg in [ROCK4(), ROCK4(eigen_est = eigen_est)] + println(typeof(alg)) + A = randn(20, 20) + test_f(u, p, t) = A * u + test_f(du, u, p, t) = mul!(du, A, u) + prob = ODEProblem{iip}(test_f, randn(20), (0, 1.0)) + integrator = init(prob, alg) + eigm = maximum(abs.(eigvals(A))) + maxeig!(integrator, integrator.cache) + eigest = integrator.eigen_est + @test eigest≈eigm rtol=0.1eigm + + A = A - 1e2I + test_stiff(u, p, t) = A * u + test_stiff(du, u, p, t) = mul!(du, A, u) + prob = ODEProblem{iip}(test_stiff, ones(20), (0, 1.0)) + @test_nowarn solve(prob, alg) + end + + Random.seed!(123) + for iip in [true, false], Alg in [IRKC] + alg = Alg() + println(typeof(alg)) + A = randn(20, 20) + B = randn(20, 20) + test_f1 = !iip ? (u, p, t) -> A * u : (du, u, p, t) -> mul!(du, A, u) + test_f2 = !iip ? (u, p, t) -> B * u : (du, u, p, t) -> mul!(du, B, u) + ff_split = SplitFunction{iip}(test_f1, test_f2) + prob = SplitODEProblem{iip}(ff_split, randn(20, 1), (0.0, 1.0)) + integrator = init(prob, alg) + eigm = maximum(abs.(eigvals(A))) + maxeig!(integrator, integrator.cache) + eigest = integrator.eigen_est + @test eigest≈eigm rtol=0.1eigm + + A = A - 1e2I + test_f1 = !iip ? (u, p, t) -> A * u : (du, u, p, t) -> mul!(du, A, u) + prob = SplitODEProblem{iip}(SplitFunction{iip}(test_f1, test_f2), ones(20), + (0.0, 1.0)) + @test_nowarn solve(prob, alg) + end +end + +@testset "Runge-Kutta-Chebyshev Convergence Tests" begin + dts = 1 .// 2 .^ (8:-1:4) + testTol = 0.1 + for prob in probArr + println("ROCK2") + #default ROCK2 + sim = test_convergence(dts, prob, ROCK2()) + @test sim.𝒪est[:l∞]≈2 atol=testTol + #testing ROCK2 for different minimum stages to insure that the constants are right + sim = test_convergence(dts, prob, ROCK2(min_stages = 5)) + @test sim.𝒪est[:l∞]≈2 atol=testTol + sim = test_convergence(dts, prob, ROCK2(min_stages = 10)) + @test sim.𝒪est[:l∞]≈2 atol=testTol + sim = test_convergence(dts, prob, ROCK2(min_stages = 21)) + @test sim.𝒪est[:l∞]≈2 atol=testTol + #default ROCK4 + println("ROCK4") + sim = test_convergence(dts, prob, ROCK4()) + @test sim.𝒪est[:l∞]≈4 atol=testTol + #testing ROCK4 for different minimum stages to insure that the constants are right + sim = test_convergence(dts, prob, ROCK4(min_stages = 6)) + @test sim.𝒪est[:l∞]≈4 atol=testTol + sim = test_convergence(dts, prob, ROCK4(min_stages = 10)) + @test sim.𝒪est[:l∞]≈4 atol=testTol + sim = test_convergence(dts, prob, ROCK4(min_stages = 21)) + @test sim.𝒪est[:l∞]≈4 atol=testTol + + println("ROCKC") + sim = test_convergence(dts, prob, RKC()) + @test sim.𝒪est[:l∞]≈2 atol=testTol + println("SERK2") + sim = test_convergence(dts, prob, SERK2()) + @test sim.𝒪est[:l∞]≈2 atol=testTol + println("ESERK4") + sim = test_convergence(dts, prob, ESERK4()) + @test sim.𝒪est[:l∞]≈4 atol=testTol + end + dts = 1 .// 2 .^ (6:-1:2) + for prob in probArr + println("ESERK5") + sim = test_convergence(dts, prob, ESERK5()) + @test sim.𝒪est[:l∞]≈5 atol=testTol + end +end diff --git a/test/algconvergence/symplectic_tests.jl b/test/algconvergence/symplectic_tests.jl new file mode 100644 index 0000000000..489f86a9c5 --- /dev/null +++ b/test/algconvergence/symplectic_tests.jl @@ -0,0 +1,102 @@ + +using Test, LinearAlgebra +using OrdinaryDiffEq, DiffEqBase + +# algorithm, dq(p) != p, convergence order +const ALGOS = ((SymplecticEuler, true, 1), + (VelocityVerlet, false, 2), + (VerletLeapfrog, true, 2), + (PseudoVerletLeapfrog, true, 2), + (McAte2, true, 2), + (Ruth3, true, 3), + (McAte3, true, 3), + (CandyRoz4, true, 4), + (McAte4, true, 4), + (CalvoSanz4, true, 4), + (McAte42, true, 1), # known to be broken + (McAte5, true, 5), + (Yoshida6, true, 6), + (KahanLi6, true, 6), + (McAte8, true, 8), + (KahanLi8, true, 8), + (SofSpa10, true, 10)) + +function dp(p, q, pa, t) + 0q .+ pa[2] +end + +function dq(p, q, pa, t) + p .* pa[1] +end + +dp(res, p, q, pa, t) = (res .= dp(p, q, pa, t)) +dq(res, p, q, pa, t) = (res .= dq(p, q, pa, t)) + +dynode(iip, dp, dq) = DynamicalODEFunction{iip}(dp, dq) + +# [0:1] used in dp, dq; [3:4] start values for p0, q0 +const PARAMS = ((1.0, 0.1, 1.0, 0.0), (0.1, 1.0, 1.0, -1.0)) +const IIPS = (true, false) +const TSPAN = (0.0, 1.0) + +solution(t, w) = (w[2] * t + w[3], (w[2] / 2 * t + w[3]) * w[1] * t + w[4]) +apa(iip::Bool, x) = iip ? vcat.(x) : x +errorbound(dt, d, x) = 100 * abs(dt)^d + 1000 * eps(norm(x)) +function printerrors(text, calc, solution, pa, t1) + print(text, ": ") + print(norm(calc[1] - solution(t1, pa)[1]), " ") + print(norm(calc[2] - solution(t1, pa)[2])) + println() +end + +@testset "symplectic $alg-$iip-$pa" for (alg, x, d) in ALGOS, iip in IIPS, pa in PARAMS + dt = 0.01 + tspan = TSPAN + t0, t1 = tspan + dynfun = dynode(iip, dp, dq) + p0, q0 = apa(iip, solution(t0, pa)) + prob = DynamicalODEProblem(dynfun, p0, q0, tspan, pa) + + if x || pa[1] == 1 + sol = solve(prob, alg(); dt = dt) + calc = sol(t1) + # printerrors("$alg-$iip-$pa", calc, solution, pa, t1) + @test calc[1]≈solution(t1, pa)[1] rtol=errorbound(dt, d, calc[1]) + @test calc[2]≈solution(t1, pa)[2] rtol=errorbound(dt, d, calc[2]) + else + @test_throws ArgumentError solve(prob, alg(); dt = dt) + end +end + +function motionfuncDirect1(dv, v, u, p, t) + # 1:Electron, 2: Be + ω_1, ω_2, γ, m_1, m_2, η, ω_d = p + dv[1] = -ω_1^2 * u[1] * (1 + η * cos(ω_d * t)) - γ * u[2] / m_1 + dv[2] = -ω_2^2 * u[2] - γ * u[1] / m_2 +end + +function motionfuncDirect1(v, u, p, t) + # 1:Electron, 2: Be + ω_1, ω_2, γ, m_1, m_2, η, ω_d = p + [-ω_1^2 * u[1] * (1 + η * cos(ω_d * t)) - γ * u[2] / m_1, + -ω_2^2 * u[2] - γ * u[1] / m_2] +end + +param = [90386.15717208837, 3938.9288690708827, 8560.718748264337, 0.000544617021484666, + 8.947079933513658, 0.7596480420227258, 78778.57738141765] +u0_direct = zeros(2) # mm, mm +v0_direct = [0.0, 135.83668926684385] +tspan = (0.0, 1.321179076090661) +prob_direct = SecondOrderODEProblem(motionfuncDirect1, v0_direct, u0_direct, tspan, param) +dt = 2e-8 +ref = solve( + prob_direct, DPRKN12(), abstol = 1e-12, reltol = 1e-12, maxiters = 1e7, saveat = 0.01) + +@testset "symplectic time-dependent $alg" for (alg, x, d) in ALGOS + sol = solve(prob_direct, alg(), dt = dt, saveat = 0.01) + if alg <: Yoshida6 + @test maximum(ref[4, :] - sol[4, :]) < 9e-3 + else + @test maximum(ref[4, :] - sol[4, :]) < 3e-3 + end +end