diff --git a/.Rbuildignore b/.Rbuildignore index b5f21ca..98f7f37 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -23,8 +23,5 @@ src/scs/linsys/gpu src/scs/linsys/indirect inst/tools/* -tests/testthat/test_sparse_utils.R -tests/testthat/test_problems.R - # Remove the citation file to pass checks. It is also in inst/CITATION src/scs/CITATION.cff diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a54250 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.Rhistory \ No newline at end of file diff --git a/DESCRIPTION b/DESCRIPTION index 417c32a..ce0920e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: scs -Version: 3.0-1 +Version: 3.2.3 Title: Splitting Conic Solver Authors@R: c( person("Florian", "Schwendinger", role = c("aut", "cre"), email = "FlorianSchwendinger@gmx.at"), person("Brendan", "O'Donoghue", role = c("aut", "cph")), @@ -14,8 +14,9 @@ Description: Solves convex cone programs via operator splitting. Can solve: Depends: R (>= 3.5.0) SystemRequirements: GNU Make Suggests: + Matrix, slam, - testthat + tinytest Encoding: UTF-8 License: GPL-3 URL: https://github.com/FlorianSchwendinger/scs diff --git a/inst/CITATION b/inst/CITATION index d451fa1..57bb904 100644 --- a/inst/CITATION +++ b/inst/CITATION @@ -1,11 +1,9 @@ -citHeader("To cite scs in publications use:") - -citEntry(entry = "Article", +bibentry(bibtype = "Article", title = "Operator Splitting for Conic Optimization via Homogeneous Self-Dual Embedding", - author = personList(as.person("O'Donoghue Brendan"), - as.person("Chu Eric"), - as.person("Parikh Neal"), - as.person("Boyd Stephen")), + author = c(person(given = "Brendan", family = "O'Donoghue"), + person(given = "Eric", family = "Chu"), + person(given = "Parikh", family = "Neal"), + person(given = "Stephen", family = "Boyd")), journal = "Journal of Optimization Theory and Applications", year = "2016", month = "Jun", @@ -15,11 +13,6 @@ citEntry(entry = "Article", pages = "1042--1068", doi = "10.1007/s10957-016-0892-3", url = "https://doi.org/10.1007/s10957-016-0892-3", - - textVersion = - paste("O'Donoghue Brendan, Chu Eric, Parikh Neal, Boyd Stephen (2016).", - "Operator Splitting for Conic Optimization via Homogeneous Self-Dual Embedding.", - "Journal of Optimization Theory and Applications 169(3), 1042-1068.", - "URL https://doi.org/10.1007/s10957-016-0892-3.") + header = "To cite scs in publications use:" ) diff --git a/inst/check.R b/inst/check.R deleted file mode 100644 index 1f59024..0000000 --- a/inst/check.R +++ /dev/null @@ -1,50 +0,0 @@ -library(scs) -library(Matrix) -rds_files <- c( - "degenerate1.RDS", - "degenerate2.RDS", - "degenerate3.RDS", - "degenerate4.RDS", - "small_lp.RDS", - "rob_gauss_cov_est1.RDS", - "rob_gauss_cov_est2.RDS", - "hs21_tiny_qp1.RDS", - "hs21_tiny_qp2.RDS", - "qafiro_tiny_qp1.RDS", - "qafiro_tiny_qp2.RDS", - "qafiro_tiny_qp3.RDS", - "infeasible_tiny_qp.RDS", - "unbounded_tiny_qp.RDS", - "random_prob.RDS" -) - -info_vars_to_check <- c( - "iter", - "status", - "statusVal", - "scaleUpdates", - "pobj", - "dobj", - ## "resPri", - ## "resDual", - ## "gap", - "resInfeas", - "resUnbddA", - "resUnbddP", - ## "setupTime", - ## "solveTime", - "scale", - ## "compSlack", - "rejectedAccelSteps", - "acceptedAccelSteps" - ## "linsysTime", - ## "coneTime", - ## "accelTime" -) - -sol_vars_to_check <- c("x", "y", "s") - -fname <- rds_files[10] -d <- readRDS(file.path("../tests/testthat/problem_results", fname)) -sol <- scs(A = d$data$A, P = d$data$P, b = d$data$b, obj = d$data$obj, initial = d$sol, cone = d$cone, control = d$settings) - diff --git a/inst/tinytest/problem_results/README.md b/inst/tinytest/problem_results/README.md new file mode 100644 index 0000000..7cd615c --- /dev/null +++ b/inst/tinytest/problem_results/README.md @@ -0,0 +1,5 @@ +## Saved Results from scs 3.2.3 Tests + +These test problems and expected results were saved from `scs` source +(`C`) test files using +[RInside](https://cran.r-project.org/package=RInside). diff --git a/inst/tinytest/problem_results/degenerate1.RDS b/inst/tinytest/problem_results/degenerate1.RDS new file mode 100644 index 0000000..32075e4 Binary files /dev/null and b/inst/tinytest/problem_results/degenerate1.RDS differ diff --git a/inst/tinytest/problem_results/degenerate2.RDS b/inst/tinytest/problem_results/degenerate2.RDS new file mode 100644 index 0000000..19fb880 Binary files /dev/null and b/inst/tinytest/problem_results/degenerate2.RDS differ diff --git a/inst/tinytest/problem_results/degenerate3.RDS b/inst/tinytest/problem_results/degenerate3.RDS new file mode 100644 index 0000000..79ea9e8 Binary files /dev/null and b/inst/tinytest/problem_results/degenerate3.RDS differ diff --git a/inst/tinytest/problem_results/degenerate4.RDS b/inst/tinytest/problem_results/degenerate4.RDS new file mode 100644 index 0000000..e3e4a57 Binary files /dev/null and b/inst/tinytest/problem_results/degenerate4.RDS differ diff --git a/inst/tinytest/problem_results/hs21_tiny_qp b/inst/tinytest/problem_results/hs21_tiny_qp new file mode 100644 index 0000000..b293c0a Binary files /dev/null and b/inst/tinytest/problem_results/hs21_tiny_qp differ diff --git a/inst/tinytest/problem_results/hs21_tiny_qp.csv b/inst/tinytest/problem_results/hs21_tiny_qp.csv new file mode 100644 index 0000000..f3f745b --- /dev/null +++ b/inst/tinytest/problem_results/hs21_tiny_qp.csv @@ -0,0 +1,177 @@ +iter,res_pri,res_dual,gap,x_nrm_inf,y_nrm_inf,s_nrm_inf,x_nrm_2,y_nrm_2,s_nrm_2,x_nrm_inf_normalized,y_nrm_inf_normalized,s_nrm_inf_normalized,x_nrm_2_normalized,y_nrm_2_normalized,s_nrm_2_normalized,ax_s_btau_nrm_inf,px_aty_ctau_nrm_inf,ax_s_btau_nrm_2,px_aty_ctau_nrm_2,res_infeas,res_unbdd_a,res_unbdd_p,pobj,dobj,tau,kap,res_pri_normalized,res_dual_normalized,gap_normalized,ax_s_btau_nrm_inf_normalized,px_aty_ctau_nrm_inf_normalized,ax_s_btau_nrm_2_normalized,px_aty_ctau_nrm_2_normalized,res_infeas_normalized,res_unbdd_a_normalized,res_unbdd_p_normalized,pobj_normalized,dobj_normalized,tau_normalized,kap_normalized,ax_nrm_inf,px_nrm_inf,aty_nrm_inf,b_nrm_inf,c_nrm_inf,scale,diff_u_ut_nrm_2,diff_v_v_prev_nrm_2,diff_u_ut_nrm_inf,diff_v_v_prev_nrm_inf,aa_norm,accepted_accel_steps,rejected_accel_steps,time, +0,9.8095238095238091e-01,1.9428571428571431e-01,1.9809523809523810e-01,0.0000000000000000e+00,1.9809523809523810e-01,1.9047619047619049e-01,0.0000000000000000e+00,1.9904534061124773e-01,1.9518001458970666e-01,0.0000000000000000e+00,1.9809523809523810e-01,1.9047619047619049e-01,0.0000000000000000e+00,1.9904534061124773e-01,1.9518001458970666e-01,9.8095238095238091e-01,1.9428571428571431e-01,1.0000000000000000e+00,1.9521718819533651e-01,9.8076923076923084e-01,nan,nan,0.0000000000000000e+00,1.9809523809523810e-01,1.0000000000000000e+00,0.0000000000000000e+00,9.8095238095238091e-01,1.9428571428571431e-01,1.9809523809523810e-01,9.8095238095238091e-01,1.9428571428571431e-01,1.0000000000000000e+00,1.9521718819533651e-01,9.8076923076923084e-01,nan,nan,0.0000000000000000e+00,1.9809523809523810e-01,1.0000000000000000e+00,0.0000000000000000e+00,0.0000000000000000e+00,0.0000000000000000e+00,1.9428571428571431e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0000000000000001e-01,1.4999999999999999e-01,9.8095238095238096e-02,1.4714285714285713e-01,0.0000000000000000e+00,0,0,3.1932700000000000e-04, +1,9.3665514264726590e-01,3.3969394542697234e-01,3.5345129288140997e-01,1.5075061251366195e-01,8.7972527970314307e-01,1.5762988392852790e+00,1.5075166192733735e-01,8.8406802000133800e-01,1.6152257578027087e+00,1.5075061251366195e-01,8.7972527970314307e-01,1.5762988392852790e+00,1.5075166192733735e-01,8.8406802000133800e-01,1.6152257578027087e+00,2.3308102281199026e+00,8.4530803962046897e-01,2.3376376380299719e+00,8.4935525507534737e-01,9.6430450669441103e-01,nan,nan,3.6750902860494991e-05,3.5348804378427046e-01,2.4884401120484321e+00,0.0000000000000000e+00,9.3665514264726590e-01,3.3969394542697234e-01,3.5345129288140997e-01,2.3308102281199026e+00,8.4530803962046897e-01,2.3376376380299719e+00,8.4935525507534737e-01,9.6430450669441103e-01,nan,nan,3.6750902860494991e-05,3.5348804378427046e-01,2.4884401120484321e+00,0.0000000000000000e+00,1.5069436301500043e+00,3.0150122502732393e-03,8.4832305187074220e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7290665713944462e-01,4.0935998570916693e-01,2.3948299981760546e-01,3.5922449972640819e-01,0.0000000000000000e+00,0,0,5.4170200000000003e-04, +2,8.6707563310157332e-01,4.8184126084800388e-01,5.1522327480865038e-01,2.8972500202387436e-01,1.2010423535052637e+00,3.0967441502587185e+00,2.8973318957303562e-01,1.2078625224644988e+00,3.1732192318073618e+00,2.8972500202387436e-01,1.2010423535052637e+00,3.0967441502587185e+00,2.8973318957303562e-01,1.2078625224644988e+00,3.1732192318073618e+00,2.0200294778841998e+00,1.1225474611622916e+00,2.0566581311722683e+00,1.1279163576747546e+00,9.3946891873519944e-01,nan,nan,1.5553145356390360e-04,5.1537880626221422e-01,2.3297038929100711e+00,0.0000000000000000e+00,8.6707563310157332e-01,4.8184126084800388e-01,5.1522327480865038e-01,2.0200294778841998e+00,1.1225474611622916e+00,2.0566581311722683e+00,1.1279163576747546e+00,9.3946891873519944e-01,nan,nan,1.5553145356390360e-04,5.1537880626221422e-01,2.3297038929100711e+00,0.0000000000000000e+00,2.8950718690891257e+00,5.7945000404774870e-03,1.1283419612027692e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7552685374873565e-01,4.1329028062310341e-01,2.1189110098290531e-01,3.1783665147435802e-01,0.0000000000000000e+00,0,0,7.4490599999999993e-04, +3,7.6727475070289497e-01,6.2038911545875464e-01,6.8936559742217762e-01,4.9129899653526443e-01,1.4652041247950112e+00,4.9386709269696647e+00,4.9132495127419951e-01,1.4765512814856274e+00,5.0606343036113772e+00,4.9129899653526443e-01,1.4652041247950112e+00,4.9386709269696647e+00,4.9132495127419951e-01,1.4765512814856274e+00,5.0606343036113772e+00,1.6282365217092103e+00,1.3165299842532729e+00,1.7025118111077542e+00,1.3228203909538208e+00,9.0523630239543684e-01,nan,nan,5.4165565774678373e-04,6.8990725307992440e-01,2.1221036144061749e+00,0.0000000000000000e+00,7.6727475070289497e-01,6.2038911545875464e-01,6.8936559742217762e-01,1.6282365217092103e+00,1.3165299842532729e+00,1.7025118111077542e+00,1.3228203909538208e+00,9.0523630239543684e-01,nan,nan,5.4165565774678373e-04,6.8990725307992440e-01,2.1221036144061749e+00,0.0000000000000000e+00,4.9079398417861615e+00,1.0100247132966160e-02,1.3263559641839782e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8668498021440991e-01,4.3002747032161476e-01,1.7570646095113052e-01,2.6355969142669577e-01,0.0000000000000000e+00,0,0,9.6001599999999995e-04, +4,6.2922007902884092e-01,7.5375032639764328e-01,8.8239182714834674e-01,6.9511015539933396e-01,1.6562185521683650e+00,6.9373126665961600e+00,6.9517320376642389e-01,1.6766384900079414e+00,7.1086362996651395e+00,6.9511015539933396e-01,1.6562185521683650e+00,6.9373126665961600e+00,6.9517320376642389e-01,1.6766384900079414e+00,7.1086362996651395e+00,1.1772742204837301e+00,1.4102709966260771e+00,1.3657767017166318e+00,1.4170007331546453e+00,8.5989448546479497e-01,nan,nan,1.4052876379843640e-03,8.8379711478633116e-01,1.8710054871433441e+00,0.0000000000000000e+00,6.2922007902884092e-01,7.5375032639764328e-01,8.8239182714834674e-01,1.1772742204837301e+00,1.4102709966260771e+00,1.3657767017166318e+00,1.4170007331546453e+00,8.5989448546479497e-01,nan,nan,1.4052876379843640e-03,8.8379711478633116e-01,1.8710054871433441e+00,0.0000000000000000e+00,6.9417391239889170e+00,1.8724860008845372e-02,1.4241731997340639e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8842978650876261e-01,4.3264467976314391e-01,1.5201288086028386e-01,2.2801932129042579e-01,0.0000000000000000e+00,0,0,1.1330570000000000e-03, +5,5.5214748734697616e-01,8.7773330158648644e-01,1.1034327789293221e+00,9.0387562572072955e-01,1.7654054448389020e+00,8.9099181886793684e+00,9.0400153438898379e-01,1.8031765692753086e+00,9.1299617667771749e+00,9.0387562572072955e-01,1.7654054448389020e+00,8.9099181886793684e+00,9.0400153438898379e-01,1.8031765692753086e+00,9.1299617667771749e+00,8.7810801201514377e-01,1.3959035623596943e+00,1.1283241666214368e+00,1.4025548075919307e+00,8.0093843542163679e-01,nan,nan,3.3202160433068156e-03,1.1067529949726289e+00,1.5903504627620084e+00,0.0000000000000000e+00,5.5214748734697616e-01,8.7773330158648644e-01,1.1034327789293221e+00,8.7810801201514377e-01,1.3959035623596943e+00,1.1283241666214368e+00,1.4025548075919307e+00,8.0093843542163679e-01,nan,nan,3.3202160433068156e-03,1.1067529949726289e+00,1.5903504627620084e+00,0.0000000000000000e+00,9.0236689312150400e+00,3.0174651984509648e-02,1.4139810748741088e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8754843624508852e-01,4.3132265436763279e-01,1.6719828469405762e-01,2.5079742704108643e-01,0.0000000000000000e+00,0,0,1.3076099999999998e-03, +6,8.0756668411733157e-01,9.8454018452157044e-01,1.3669067185817498e+00,1.0875288054152050e+00,1.7905451819330198e+00,1.0670772672584810e+01,1.0877521985005434e+00,1.8588679134526116e+00,1.0934310442099989e+01,1.0875288054152050e+00,1.7905451819330198e+00,1.0670772672584810e+01,1.0877521985005434e+00,1.8588679134526116e+00,1.0934310442099989e+01,1.0466257291017569e+00,1.2759876165287092e+00,1.0868016130039171e+00,1.2820549548753510e+00,7.2477265903785426e-01,nan,nan,7.3306502790488528e-03,1.3742373688607987e+00,1.2960239069863515e+00,0.0000000000000000e+00,8.0756668411733157e-01,9.8454018452157044e-01,1.3669067185817498e+00,1.0466257291017569e+00,1.2759876165287092e+00,1.0868016130039171e+00,1.2820549548753510e+00,7.2477265903785426e-01,nan,nan,7.3306502790488528e-03,1.3742373688607987e+00,1.2960239069863515e+00,0.0000000000000000e+00,1.0853243945303143e+01,4.4088217697814347e-02,1.2977381926370133e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7823367481867267e-01,4.1735051222800912e-01,1.7375033322361033e-01,2.6062549983541561e-01,0.0000000000000000e+00,0,0,1.5158620000000000e-03, +7,1.1712473410798323e+00,1.0578997655212927e+00,1.6966125164113881e+00,1.2373745789513659e+00,1.7411527249008412e+00,1.2085762983271502e+01,1.2377373032902934e+00,1.8593240611992119e+00,1.2384258072873310e+01,1.2373745789513659e+00,1.7411527249008412e+00,1.2085762983271502e+01,1.2377373032902934e+00,1.8593240611992119e+00,1.2384258072873310e+01,1.1797780177029358e+00,1.0656048850829720e+00,1.2243239770793408e+00,1.0706563822971140e+00,6.2622443227896341e-01,nan,nan,1.5975186631121439e-02,1.7125877030425094e+00,1.0072834117303000e+00,0.0000000000000000e+00,1.1712473410798323e+00,1.0578997655212927e+00,1.6966125164113881e+00,1.1797780177029358e+00,1.0656048850829720e+00,1.2243239770793408e+00,1.0706563822971140e+00,6.2622443227896341e-01,nan,nan,1.5975186631121439e-02,1.7125877030425094e+00,1.0072834117303000e+00,0.0000000000000000e+00,1.2343782756935871e+01,5.9926065155576920e-02,1.0903523766619994e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.6422301643784557e-01,3.9633452465676838e-01,1.7218664693978081e-01,2.5827997040967121e-01,0.0000000000000000e+00,0,0,1.7300359999999999e-03, +8,1.6808607161238394e+00,1.0681491070402229e+00,2.1375932186902387e+00,1.3422941170015859e+00,1.6339790749405649e+00,1.3081336945327442e+01,1.3428478670874804e+00,1.8268441426896633e+00,1.3397016046654986e+01,1.3422941170015859e+00,1.6339790749405649e+00,1.3081336945327442e+01,1.3428478670874804e+00,1.8268441426896633e+00,1.3397016046654986e+01,1.2433857981523631e+00,7.9014365513025098e-01,1.3941924918533639e+00,7.9389834749790633e-01,5.0000000000000011e-01,nan,nan,3.5643879728013285e-02,2.1732370984182516e+00,7.3973160668522353e-01,0.0000000000000000e+00,1.6808607161238394e+00,1.0681491070402229e+00,2.1375932186902387e+00,1.2433857981523631e+00,7.9014365513025098e-01,1.3941924918533639e+00,7.9389834749790633e-01,5.0000000000000011e-01,nan,nan,3.5643879728013285e-02,2.1732370984182516e+00,7.3973160668522353e-01,0.0000000000000000e+00,1.3384380858757671e+01,7.7120622516376358e-02,8.1698953747028269e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.4488020267011912e-01,3.6732030400517862e-01,1.6362244239289658e-01,2.4543366358934482e-01,0.0000000000000000e+00,0,0,1.8894319999999999e-03, +9,1.3356291059753460e+00,1.5161895449890896e+00,2.9713743888273463e+00,1.4024795222704476e+00,1.5851171136384286e+00,1.4125785013993976e+01,1.4032740121792886e+00,1.7722148091968928e+00,1.4149358972033449e+01,1.4024795222704476e+00,1.5851171136384286e+00,1.4125785013993976e+01,1.4032740121792886e+00,1.7722148091968928e+00,1.4149358972033449e+01,6.7346489140665411e-01,7.6450896637380539e-01,7.0359208646084359e-01,7.7031846086226285e-01,5.0000000000000011e-01,nan,nan,8.6130862005798642e-02,3.0575052508331448e+00,5.0423046966684282e-01,0.0000000000000000e+00,1.3356291059753460e+00,1.5161895449890896e+00,2.9713743888273463e+00,6.7346489140665411e-01,7.6450896637380539e-01,7.0359208646084359e-01,7.7031846086226285e-01,5.0000000000000011e-01,nan,nan,8.6130862005798642e-02,3.0575052508331448e+00,5.0423046966684282e-01,0.0000000000000000e+00,1.3977581423134696e+01,9.4427599139559712e-02,7.9255855681921439e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.9608133327129457e-01,2.9412199990694188e-01,1.4966019024795363e-01,2.2449028537193050e-01,0.0000000000000000e+00,0,0,2.1152280000000002e-03, +10,1.8705754644657793e+00,2.5998461396100381e+00,4.8173454353142438e+00,1.4998581960218582e+00,1.5126056813329720e+00,1.4897384559144955e+01,1.5001263593427010e+00,1.6911445633064550e+00,1.5004945634033728e+01,1.4998581960218582e+00,1.5126056813329720e+00,1.4897384559144955e+01,1.5001263593427010e+00,1.6911445633064550e+00,1.5004945634033728e+01,5.2257306996911601e-01,7.2630567674604884e-01,5.3777976419220985e-01,7.2851759028654206e-01,5.0000000000000000e-01,nan,nan,2.9854971449023360e-01,5.1158951498044773e+00,2.7936486920529480e-01,0.0000000000000000e+00,1.8705754644657793e+00,2.5998461396100381e+00,4.8173454353142438e+00,5.2257306996911601e-01,7.2630567674604884e-01,5.3777976419220985e-01,7.2851759028654206e-01,5.0000000000000000e-01,nan,nan,2.9854971449023360e-01,5.1158951498044773e+00,2.7936486920529480e-01,0.0000000000000000e+00,1.4970218500964755e+01,5.6726918507653976e-02,7.5630284066648601e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.8398545871814975e-01,2.7597818807722457e-01,1.4489409449213148e-01,2.1734114173819719e-01,0.0000000000000000e+00,0,0,2.3321239999999997e-03, +11,4.8266795160418834e+00,6.8205861975125863e+00,8.9189000220363042e+00,1.5657043306147493e+00,1.4075736537146664e+00,1.5653636215024227e+01,1.5661913966550376e+00,1.5737151865218717e+00,1.5706303908456260e+01,1.5657043306147493e+00,1.4075736537146664e+00,1.5653636215024227e+01,1.5661913966550376e+00,1.5737151865218717e+00,1.5706303908456260e+01,4.7588437510268555e-01,6.7247274024503811e-01,6.3357276401397089e-01,6.7699434752040555e-01,4.9999999999999994e-01,nan,nan,2.6787407734962927e+00,1.1597640795532598e+01,9.8594566621016178e-02,0.0000000000000000e+00,4.8266795160418834e+00,6.8205861975125863e+00,8.9189000220363042e+00,4.7588437510268555e-01,6.7247274024503811e-01,6.3357276401397089e-01,6.7699434752040555e-01,4.9999999999999994e-01,nan,nan,2.6787407734962927e+00,1.1597640795532598e+01,9.8594566621016178e-02,0.0000000000000000e+00,1.5617986423905341e+01,7.8113764484302670e-02,7.0378682685733307e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.6489095118335517e-01,2.4733642677503281e-01,1.2290294396344023e-01,1.8435441594516033e-01,0.0000000000000000e+00,0,0,2.6198800000000002e-03, +12,7.0018708028368636e+01,6.3026231590206599e+01,4.4754182659609603e+02,1.6305969199080730e+00,1.2885620919691532e+00,1.6261282200624425e+01,1.6308239877509934e+00,1.4406562154361813e+00,1.6334174938145289e+01,1.6305969199080730e+00,1.2885620919691532e+00,1.6261282200624425e+01,1.6308239877509934e+00,1.4406562154361813e+00,1.6334174938145289e+01,6.7953103927477920e-01,6.1166910758641524e-01,7.2500669414381325e-01,6.1408578587766660e-01,5.0000000000000011e-01,nan,nan,2.9015747084978386e+02,-1.5738435574631214e+02,9.7049925428424333e-03,0.0000000000000000e+00,7.0018708028368636e+01,6.3026231590206599e+01,4.4754182659609603e+02,6.7953103927477920e-01,6.1166910758641524e-01,7.2500669414381325e-01,6.1408578587766660e-01,5.0000000000000011e-01,nan,nan,2.9015747084978386e+02,-1.5738435574631214e+02,9.7049925428424333e-03,0.0000000000000000e+00,1.6278755896995950e+01,5.4426604169558662e-02,6.4428104598457669e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.3269148576511247e-01,1.9903722864766862e-01,7.3593850712344894e-02,1.1039077606851734e-01,0.0000000000000000e+00,0,0,2.8265729999999998e-03, +13,1.4212003045512859e+01,1.2604819271158352e+01,3.8084768059543777e+00,1.6808114756485097e+00,1.1674212107998230e+00,1.6787528997973663e+01,1.6810641852762134e+00,1.3052165928617578e+00,1.6853060147138692e+01,1.6808114756485097e+00,1.1674212107998230e+00,1.6787528997973663e+01,1.6810641852762134e+00,1.3052165928617578e+00,1.6853060147138692e+01,6.2023443392903621e-01,5.5009437588694143e-01,7.1373315327842091e-01,5.5317459790655255e-01,5.0000000000000011e-01,nan,nan,1.5279337313707522e+01,1.1470860507753144e+01,4.3641591684351784e-02,0.0000000000000000e+00,1.4212003045512859e+01,1.2604819271158352e+01,3.8084768059543777e+00,6.2023443392903621e-01,5.5009437588694143e-01,7.1373315327842091e-01,5.5317459790655255e-01,5.0000000000000011e-01,nan,nan,1.5279337313707522e+01,1.1470860507753144e+01,4.3641591684351784e-02,0.0000000000000000e+00,1.6778967229203044e+01,5.8295054564108828e-02,5.8371060539991160e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0658626738480940e-01,1.5987940107721405e-01,6.1927020135043032e-02,9.2890530202564436e-02,0.0000000000000000e+00,0,0,3.0099870000000000e-03, +14,1.2003697722637281e+01,8.9890725813197676e+00,1.1250181710531635e+00,1.7248745113060588e+00,1.0496120691510251e+00,1.7221153319574139e+01,1.7250331097133886e+00,1.1735019683129511e+00,1.7294048183118583e+01,1.7248745113060588e+00,1.0496120691510251e+00,1.7221153319574139e+01,1.7250331097133886e+00,1.1735019683129511e+00,1.7294048183118583e+01,6.5474113196361405e-01,4.9030854434939147e-01,7.2285871269624269e-01,4.9253534703464069e-01,5.0000000000000011e-01,nan,nan,1.0184041466068194e+01,9.0590232950150309e+00,5.4544953321247390e-02,0.0000000000000000e+00,1.2003697722637281e+01,8.9890725813197676e+00,1.1250181710531635e+00,6.5474113196361405e-01,4.9030854434939147e-01,7.2285871269624269e-01,4.9253534703464069e-01,5.0000000000000011e-01,nan,nan,1.0184041466068194e+01,9.0590232950150309e+00,5.4544953321247390e-02,0.0000000000000000e+00,1.7225353878502990e+01,4.6782469115201272e-02,5.2480603457551267e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0200465084131129e-01,1.5300697626196699e-01,6.6036571781237230e-02,9.9054857671855956e-02,0.0000000000000000e+00,0,0,3.2581139999999999e-03, +15,1.0414959172701815e+01,6.9158701063875432e+00,1.1975219071190715e+00,1.7608515238425362e+00,9.3401247234752471e-01,1.7588547909044010e+01,1.7609893366318583e+00,1.0442576900008540e+00,1.7660609341267680e+01,1.7608515238425362e+00,9.3401247234752471e-01,1.7588547909044010e+01,1.7609893366318583e+00,1.0442576900008540e+00,1.7660609341267680e+01,6.5025324064330825e-01,4.3178920569691165e-01,7.3169505194150974e-01,4.3403149310446709e-01,5.0000000000000000e-01,nan,nan,8.0786942766675818e+00,6.8811723695485103e+00,6.2434545336256142e-02,0.0000000000000000e+00,1.0414959172701815e+01,6.9158701063875432e+00,1.1975219071190715e+00,6.5025324064330825e-01,4.3178920569691165e-01,7.3169505194150974e-01,4.3403149310446709e-01,5.0000000000000000e-01,nan,nan,8.0786942766675818e+00,6.8811723695485103e+00,6.2434545336256142e-02,0.0000000000000000e+00,1.7586484471018601e+01,4.4061534813521867e-02,4.6700623617376236e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.7012708489209801e-02,1.4551906273381476e-01,6.5605790979212042e-02,9.8408686468818063e-02,0.0000000000000000e+00,0,0,3.4413230000000000e-03, +16,9.2179048894600264e+00,5.2252482897036368e+00,1.1555589581685588e+00,1.7908258283390657e+00,8.2102064160058996e-01,1.7888873841840820e+01,1.7909200356720574e+00,9.1792898277470547e-01,1.7963753951637159e+01,1.7908258283390657e+00,8.2102064160058996e-01,1.7888873841840820e+01,1.7909200356720574e+00,9.1792898277470547e-01,1.7963753951637159e+01,6.6100052257811470e-01,3.7469380423351584e-01,7.3675855904959575e-01,3.7649057602042973e-01,5.0000000000000266e-01,nan,nan,6.3025027796345574e+00,5.1469438214659986e+00,7.1708325319554830e-02,0.0000000000000000e+00,9.2179048894600264e+00,5.2252482897036368e+00,1.1555589581685588e+00,6.6100052257811470e-01,3.7469380423351584e-01,7.3675855904959575e-01,3.7649057602042973e-01,5.0000000000000266e-01,nan,nan,6.3025027796345574e+00,5.1469438214659986e+00,7.1708325319554830e-02,0.0000000000000000e+00,1.7889889104712701e+01,3.6738357355911841e-02,4.1051032080029715e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.2591345531783054e-02,1.3888701829767447e-01,6.6756335565929525e-02,1.0013450334889429e-01,0.0000000000000000e+00,0,0,3.6292399999999997e-03, +17,7.9792081226140397e+00,3.8645186992985305e+00,1.1283648516785352e+00,1.8147832977352305e+00,7.1078700145883000e-01,1.8132287514378397e+01,1.8148542326976433e+00,7.9468402639259306e-01,1.8207928320148834e+01,1.8147832977352305e+00,7.1078700145883000e-01,1.8132287514378397e+01,1.8148542326976433e+00,7.9468402639259306e-01,1.8207928320148834e+01,6.5885255920875851e-01,3.1909783477471260e-01,7.3774544734585357e-01,3.2070750063739328e-01,5.0000000000000311e-01,nan,nan,4.8682693844601150e+00,3.7399045327815799e+00,8.2571171109259670e-02,0.0000000000000000e+00,7.9792081226140397e+00,3.8645186992985305e+00,1.1283648516785352e+00,6.5885255920875851e-01,3.1909783477471260e-01,7.3774544734585357e-01,3.2070750063739328e-01,5.0000000000000311e-01,nan,nan,4.8682693844601150e+00,3.7399045327815799e+00,8.2571171109259670e-02,0.0000000000000000e+00,1.8131787161642485e+01,3.6295665954704612e-02,3.5539350072941722e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.8390902441684127e-02,1.3258635366252616e-01,6.6641526178820243e-02,9.9962289268230364e-02,0.0000000000000000e+00,0,0,3.8185509999999999e-03, +18,6.9046846295541835e+00,2.7829531872175375e+00,1.1124334542898913e+00,1.8335860946505083e+00,6.0353851767534772e-01,1.8322477481425775e+01,1.8336331510159236e+00,6.7477657628076793e-01,1.8399680968803196e+01,1.8335860946505083e+00,6.0353851767534772e-01,1.8322477481425775e+01,1.8336331510159236e+00,6.7477657628076793e-01,1.8399680968803196e+01,6.5772392330630047e-01,2.6509753694466376e-01,7.3480448895270978e-01,2.6639626147838014e-01,5.0000000000000011e-01,nan,nan,3.7241440129494898e+00,2.6117105586595986e+00,9.5257634286588400e-02,0.0000000000000000e+00,6.9046846295541835e+00,2.7829531872175375e+00,1.1124334542898913e+00,6.5772392330630047e-01,2.6509753694466376e-01,7.3480448895270978e-01,2.6639626147838014e-01,5.0000000000000011e-01,nan,nan,3.7241440129494898e+00,2.6117105586595986e+00,9.5257634286588400e-02,0.0000000000000000e+00,1.8322724508293661e+01,3.6671721893010163e-02,3.0176925883767391e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.4545578475025709e-02,1.2681836771253863e-01,6.6645377774931069e-02,9.9968066662396660e-02,0.0000000000000000e+00,0,0,4.0552060000000004e-03, +19,5.8993608048746067e+00,1.9293616192836689e+00,1.1036882748888841e+00,1.8475781627758934e+00,4.9943197172901532e-01,1.8465249907939391e+01,1.8476088799128612e+00,5.5838191946141569e-01,1.8543461573281292e+01,1.8475781627758934e+00,4.9943197172901532e-01,1.8465249907939391e+01,1.8476088799128612e+00,5.5838191946141569e-01,1.8543461573281292e+01,6.5056445762472981e-01,2.1276442260898973e-01,7.2762744453050965e-01,2.1382872069529296e-01,4.9999999999999989e-01,nan,nan,2.8162849351147550e+00,1.7125966602258709e+00,1.1027710952806485e-01,0.0000000000000000e+00,5.8993608048746067e+00,1.9293616192836689e+00,1.1036882748888841e+00,6.5056445762472981e-01,2.1276442260898973e-01,7.2762744453050965e-01,2.1382872069529296e-01,4.9999999999999989e-01,nan,nan,2.8162849351147550e+00,1.7125966602258709e+00,1.1027710952806485e-01,0.0000000000000000e+00,1.8465127728636443e+01,3.6951563255517871e-02,2.4971598586450761e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.0989211738761641e-02,1.2148381760814243e-01,6.6074754788025380e-02,9.9112132182038071e-02,0.0000000000000000e+00,0,0,4.2439440000000004e-03, +20,4.9996403356913754e+00,1.2659477740947203e+00,1.0992930405771024e+00,1.8572513975832718e+00,3.9866433359588238e-01,1.8564374146258793e+01,1.8572689704817509e+00,4.4572027506252310e-01,1.8643769169418363e+01,1.8572513975832718e+00,3.9866433359588238e-01,1.8564374146258793e+01,1.8572689704817509e+00,4.4572027506252310e-01,1.8643769169418363e+01,6.4052986852958971e-01,1.6218713884627575e-01,7.1599842035355299e-01,1.6299008425191316e-01,5.0000000000000000e-01,nan,nan,2.1055289081177611e+00,1.0062358675406586e+00,1.2811518939812178e-01,0.0000000000000000e+00,4.9996403356913754e+00,1.2659477740947203e+00,1.0992930405771024e+00,6.4052986852958971e-01,1.6218713884627575e-01,7.1599842035355299e-01,1.6299008425191316e-01,5.0000000000000000e-01,nan,nan,2.1055289081177611e+00,1.0062358675406586e+00,1.2811518939812178e-01,0.0000000000000000e+00,1.8564434688158293e+01,3.7145027951665438e-02,1.9933216679794119e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.7741238990783501e-02,1.1661185848617520e-01,6.5246624699369982e-02,9.7869937049054945e-02,0.0000000000000000e+00,0,0,4.4158260000000003e-03, +21,4.1883049942045529e+00,7.5966607330687186e-01,1.0955979159731615e+00,1.8629433293877302e+00,3.0146461468134567e-01,1.8623776229609007e+01,1.8629520100742709e+00,3.3704768561913501e-01,1.8704227683346680e+01,1.8629433293877302e+00,3.0146461468134567e-01,1.8623776229609007e+01,1.8629520100742709e+00,3.3704768561913501e-01,1.8704227683346680e+01,6.2561880188512387e-01,1.1347344075291824e-01,6.9953051331656635e-01,1.1404207589485908e-01,5.0000000000000000e-01,nan,nan,1.5569004647198090e+00,4.6130254874664756e-01,1.4937278988774838e-01,0.0000000000000000e+00,4.1883049942045529e+00,7.5966607330687186e-01,1.0955979159731615e+00,6.2561880188512387e-01,1.1347344075291824e-01,6.9953051331656635e-01,1.1404207589485908e-01,5.0000000000000000e-01,nan,nan,1.5569004647198090e+00,4.6130254874664756e-01,1.4937278988774838e-01,0.0000000000000000e+00,1.8623746174261392e+01,3.7258866587754604e-02,1.5073230734067283e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.4780785489032622e-02,1.1217117823354895e-01,6.3966668730039034e-02,9.5950003095058523e-02,0.0000000000000000e+00,0,0,4.6232649999999997e-03, +22,3.4711661603843349e+00,3.8223552324067206e-01,1.0893378392144910e+00,1.8649946182044981e+00,2.0812694331688675e-01,1.8646584841438980e+01,1.8649976204470795e+00,2.3269299660290216e-01,1.8728177654913349e+01,1.8649946182044981e+00,2.0812694331688675e-01,1.8646584841438980e+01,1.8649976204470795e+00,2.3269299660290216e-01,1.8728177654913349e+01,6.0629497548499045e-01,6.6763579294353392e-02,6.7782486375713658e-01,6.7098203301604320e-02,4.9999999999999989e-01,nan,nan,1.1404541659948686e+00,5.1116326780377586e-02,1.7466607689499375e-01,0.0000000000000000e+00,3.4711661603843349e+00,3.8223552324067206e-01,1.0893378392144910e+00,6.0629497548499045e-01,6.6763579294353392e-02,6.7782486375713658e-01,6.7098203301604320e-02,4.9999999999999989e-01,nan,nan,1.1404541659948686e+00,5.1116326780377586e-02,1.7466607689499375e-01,0.0000000000000000e+00,1.8646599789729741e+01,3.7299892364089961e-02,1.0406347165844335e-01,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.2107887191314959e-02,1.0816183078697245e-01,6.2282956619524821e-02,9.3424434929287231e-02,0.0000000000000000e+00,0,0,4.8335369999999997e-03, +23,2.8431251110251647e+00,1.0866739121706474e-01,1.0775186613772294e+00,1.8636879767650341e+00,1.1901880014095947e-01,1.8635750936072046e+01,1.8636883231566106e+00,1.3306706385782346e-01,1.8718526034133713e+01,1.8636879767650341e+00,1.1901880014095947e-01,1.8635750936072046e+01,1.8636883231566106e+00,1.3306706385782346e-01,1.8718526034133713e+01,5.8176337222466534e-01,2.2235640535179041e-02,6.5044793104213350e-01,2.2351470578488554e-02,4.9999999999999989e-01,nan,nan,8.2958662879683043e-01,-2.4793203258039886e-01,2.0462109457254768e-01,0.0000000000000000e+00,2.8431251110251647e+00,1.0866739121706474e-01,1.0775186613772294e+00,5.8176337222466534e-01,2.2235640535179041e-02,6.5044793104213350e-01,2.2351470578488554e-02,4.9999999999999989e-01,nan,nan,8.2958662879683043e-01,-2.4793203258039886e-01,2.0462109457254768e-01,0.0000000000000000e+00,1.8635743487864005e+01,3.7273759535300682e-02,5.9509400070479723e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.9719115005618643e-02,1.0457867250842794e-01,6.0116325349080652e-02,9.0174488023620977e-02,0.0000000000000000e+00,0,0,4.9914510000000000e-03, +24,2.3013795100273557e+00,8.2947468321287271e-02,1.0580879317183509e+00,1.8592918154061306e+00,3.4589351192627432e-02,1.8593882503432432e+01,1.8592920674251785e+00,3.8672070282164177e-02,1.8677962778670967e+01,1.8592918154061306e+00,3.4589351192627432e-02,1.8593882503432432e+01,1.8592920674251785e+00,3.8672070282164177e-02,1.8677962778670967e+01,5.5188073390625880e-01,1.9891160711808908e-02,6.1701307941864147e-01,1.9985166757905293e-02,4.9999999999999961e-01,nan,nan,6.0116391787889412e-01,-4.5692401383945674e-01,2.3980431367432259e-01,0.0000000000000000e+00,2.3013795100273557e+00,8.2947468321287271e-02,1.0580879317183509e+00,5.5188073390625880e-01,1.9891160711808908e-02,6.1701307941864147e-01,1.9985166757905293e-02,4.9999999999999961e-01,nan,nan,6.0116391787889412e-01,-4.5692401383945674e-01,2.3980431367432259e-01,0.0000000000000000e+00,1.8593886221192019e+01,3.7185836308122611e-02,1.7294675596313702e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.7619378847705941e-02,1.0142906827155893e-01,5.7448834882920186e-02,8.6173252324380278e-02,0.0000000000000000e+00,0,0,5.1586530000000000e-03, +25,2.4922924580822459e-01,1.3197039881329556e-01,8.7102806531803156e-01,1.8520529442903089e+00,0.0000000000000000e+00,1.8523466740476810e+01,1.8520552705723343e+00,0.0000000000000000e+00,1.8615678959532374e+01,1.8520529442903089e+00,0.0000000000000000e+00,1.8523466740476810e+01,1.8520552705723343e+00,0.0000000000000000e+00,1.8615678959532374e+01,6.9952923178689730e-02,3.7041058885806180e-02,7.8213915710302215e-02,3.7503429774136510e-02,nan,nan,nan,4.3551403265901578e-01,-4.3551403265901578e-01,2.8067702468801226e-01,0.0000000000000000e+00,2.4922924580822459e-01,1.3197039881329556e-01,8.7102806531803156e-01,6.9952923178689730e-02,3.7041058885806180e-02,7.8213915710302215e-02,3.7503429774136510e-02,nan,nan,nan,4.3551403265901578e-01,-4.3551403265901578e-01,2.8067702468801226e-01,0.0000000000000000e+00,1.8523464881602919e+01,3.7041058885806180e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8504220494106881e-02,4.2756330741160309e-02,2.6088621481088869e-02,3.9132932221633304e-02,0.0000000000000000e+00,0,0,5.4526089999999998e-03, +26,1.1108286051130041e-01,1.1726658163716061e-01,6.8762446401251831e-01,1.8488013663344538e+00,3.4694469519536142e-18,1.8489619074402054e+01,1.8488020641740353e+00,3.4694469519536142e-18,1.8585686039867049e+01,1.8488013663344538e+00,3.4694469519536142e-18,1.8489619074402054e+01,1.8488020641740353e+00,3.4694469519536142e-18,1.8585686039867049e+01,3.5026201228424314e-02,3.6976027326689080e-02,3.9162571427274188e-02,3.7115332855654111e-02,nan,nan,nan,3.4381223200625916e-01,-3.4381223200625916e-01,3.1531598184637238e-01,0.0000000000000000e+00,1.1108286051130041e-01,1.1726658163716061e-01,6.8762446401251831e-01,3.5026201228424314e-02,3.6976027326689080e-02,3.9162571427274188e-02,3.7115332855654111e-02,nan,nan,nan,3.4381223200625916e-01,-3.4381223200625916e-01,3.1531598184637238e-01,0.0000000000000000e+00,1.8489620005160742e+01,3.6976027326689080e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.4329860548785370e-02,3.6494790823178011e-02,2.3651335188618561e-02,3.5477002782927813e-02,0.0000000000000000e+00,0,0,5.6333200000000007e-03, +27,5.0787358180961244e-02,1.0692522376573453e-01,5.7170452664348037e-01,1.8464144191899898e+00,0.0000000000000000e+00,1.8465945082347634e+01,1.8464152969796750e+00,0.0000000000000000e+00,1.8560704718698389e+01,1.8464144191899898e+00,0.0000000000000000e+00,1.8465945082347634e+01,1.8464152969796750e+00,0.0000000000000000e+00,1.8560704718698389e+01,1.7540203734031312e-02,3.6928288383799794e-02,1.9611589538447882e-02,3.7103431031256025e-02,nan,nan,nan,2.8585226332174019e-01,-2.8585226332174019e-01,3.4536554690506904e-01,0.0000000000000000e+00,5.0787358180961244e-02,1.0692522376573453e-01,5.7170452664348037e-01,1.7540203734031312e-02,3.6928288383799794e-02,1.9611589538447882e-02,3.7103431031256025e-02,nan,nan,nan,2.8585226332174019e-01,-2.8585226332174019e-01,3.4536554690506904e-01,0.0000000000000000e+00,1.8465944616248080e+01,3.6928288383799794e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.1687499356295204e-02,3.2531249034442822e-02,2.0702776861682537e-02,3.1054165292523805e-02,0.0000000000000000e+00,0,0,5.8415120000000001e-03, +28,2.3497208760452425e-02,9.8638978537775368e-02,4.8653405254002841e-01,1.8434644120099792e+00,2.2204460492503131e-16,1.8436543340571735e+01,1.8434653905816243e+00,2.2204460492503131e-16,1.8532510148628873e+01,1.8434644120099792e+00,2.2204460492503131e-16,1.8436543340571735e+01,1.8434653905816243e+00,2.2204460492503131e-16,1.8532510148628873e+01,8.7827892732845192e-03,3.6869288240201803e-02,9.8199804769742698e-03,3.7064485902099133e-02,nan,nan,nan,2.4326702627001420e-01,-2.4326702627001420e-01,3.7378010991954991e-01,0.0000000000000000e+00,2.3497208760452425e-02,9.8638978537775368e-02,4.8653405254002841e-01,8.7827892732845192e-03,3.6869288240201803e-02,9.8199804769742698e-03,3.7064485902099133e-02,nan,nan,nan,2.4326702627001420e-01,-2.4326702627001420e-01,3.7378010991954991e-01,0.0000000000000000e+00,1.8436543573958659e+01,3.6869288240199583e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.9871598061307141e-02,2.9807397091960681e-02,1.9140648963014095e-02,2.8710973444521115e-02,0.0000000000000000e+00,0,0,6.0173560000000006e-03, +29,1.0997365380042309e-02,9.2061975276386737e-02,4.2380909954133433e-01,1.8408202260185540e+00,2.2204460492503131e-16,1.8409962315976113e+01,1.8408210673240388e+00,2.2204460492503131e-16,1.8505964054001872e+01,1.8408202260185540e+00,2.2204460492503131e-16,1.8409962315976113e+01,1.8408210673240388e+00,2.2204460492503131e-16,1.8505964054001872e+01,4.3979444420392255e-03,3.6816404520368863e-02,4.9173135339827811e-03,3.6984282903132180e-02,nan,nan,nan,2.1190454977066717e-01,-2.1190454977066717e-01,3.9990891364039649e-01,0.0000000000000000e+00,1.0997365380042309e-02,9.2061975276386737e-02,4.2380909954133433e-01,4.3979444420392255e-03,3.6816404520368863e-02,4.9173135339827811e-03,3.6984282903132180e-02,nan,nan,nan,2.1190454977066717e-01,-2.1190454977066717e-01,3.9990891364039649e-01,0.0000000000000000e+00,1.8409962199108591e+01,3.6816404520371084e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.8452031444007994e-02,2.7678047166011965e-02,1.7577952982649359e-02,2.6366929473974010e-02,0.0000000000000000e+00,0,0,6.2410750000000004e-03, +30,5.1859126772855826e-03,8.6566017644998702e-02,3.7472224380664887e-01,1.8379895370928521e+00,0.0000000000000000e+00,1.8381757785869731e+01,1.8379904807343768e+00,0.0000000000000000e+00,1.8478358578558172e+01,1.8379895370928521e+00,0.0000000000000000e+00,1.8381757785869731e+01,1.8379904807343768e+00,0.0000000000000000e+00,1.8478358578558172e+01,2.2021697429161491e-03,3.6759790741857042e-02,2.4622318957598591e-03,3.6948037091856553e-02,nan,nan,nan,1.8736112190332443e-01,-1.8736112190332443e-01,4.2464458620016943e-01,0.0000000000000000e+00,5.1859126772855826e-03,8.6566017644998702e-02,3.7472224380664887e-01,2.2021697429161491e-03,3.6759790741857042e-02,2.4622318957598591e-03,3.6948037091856553e-02,nan,nan,nan,1.8736112190332443e-01,-1.8736112190332443e-01,4.2464458620016943e-01,0.0000000000000000e+00,1.8381757844388471e+01,3.6759790741857042e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.7332380527728529e-02,2.5998570791592814e-02,1.6477961096311722e-02,2.4716941644467583e-02,0.0000000000000000e+00,0,0,6.4610320000000002e-03, +31,2.4615888368094857e-03,8.1937743272260999e-02,3.3572166727932762e-01,1.8352477271824008e+00,0.0000000000000000e+00,1.8354268549335561e+01,1.8352486013339759e+00,0.0000000000000000e+00,1.8451204462233001e+01,1.8352477271824008e+00,0.0000000000000000e+00,1.8354268549335561e+01,1.8352486013339759e+00,0.0000000000000000e+00,1.8451204462233001e+01,1.1026970325509478e-03,3.6704954543648020e-02,1.2329184948800941e-03,3.6879370502235061e-02,nan,nan,nan,1.6786083363966381e-01,-1.6786083363966381e-01,4.4796150196235668e-01,0.0000000000000000e+00,2.4615888368094857e-03,8.1937743272260999e-02,3.3572166727932762e-01,1.1026970325509478e-03,3.6704954543648020e-02,1.2329184948800941e-03,3.6879370502235061e-02,nan,nan,nan,1.6786083363966381e-01,-1.6786083363966381e-01,4.4796150196235668e-01,0.0000000000000000e+00,1.8354268520033347e+01,3.6704954543648020e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.6393896762720211e-02,2.4590845144080293e-02,1.5473106569554862e-02,2.3209659854332265e-02,0.0000000000000000e+00,0,0,6.6480030000000004e-03, +32,1.1743158742571894e-03,7.7945543726839081e-02,3.0380567043504303e-01,1.8324472511843186e+00,0.0000000000000000e+00,1.8326302033134542e+01,1.8324481644987418e+00,0.0000000000000000e+00,1.8423701611486766e+01,1.8324472511843186e+00,0.0000000000000000e+00,1.8326302033134542e+01,1.8324481644987418e+00,0.0000000000000000e+00,1.8423701611486766e+01,5.5214751040699728e-04,3.6648945023686375e-02,6.1735259766522346e-04,3.6831155001152173e-02,nan,nan,nan,1.5190283521752151e-01,-1.5190283521752151e-01,4.7018653371798858e-01,0.0000000000000000e+00,1.1743158742571894e-03,7.7945543726839081e-02,3.0380567043504303e-01,5.5214751040699728e-04,3.6648945023686375e-02,6.1735259766522346e-04,3.6831155001152173e-02,nan,nan,nan,1.5190283521752151e-01,-1.5190283521752151e-01,4.7018653371798858e-01,0.0000000000000000e+00,1.8326302047806873e+01,3.6648945023686375e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.5606365146707407e-02,2.3409547720061083e-02,1.4661813562136805e-02,2.1992720343205208e-02,0.0000000000000000e+00,0,0,6.8185269999999996e-03, +33,5.6262277400256151e-04,7.4467361392156151e-02,2.7729633002986109e-01,1.8296678920027678e+00,0.0000000000000000e+00,1.8298482256123307e+01,1.8296687806869385e+00,0.0000000000000000e+00,1.8396287173842449e+01,1.8296678920027678e+00,0.0000000000000000e+00,1.8298482256123307e+01,1.8296687806869385e+00,0.0000000000000000e+00,1.8396287173842449e+01,2.7647355986765154e-04,3.6593357840055359e-02,3.0912331786873113e-04,3.6770665160096819e-02,nan,nan,nan,1.3864816501493055e-01,-1.3864816501493055e-01,4.9140129522448522e-01,0.0000000000000000e+00,5.6262277400256151e-04,7.4467361392156151e-02,2.7729633002986109e-01,2.7647355986765154e-04,3.6593357840055359e-02,3.0912331786873113e-04,3.6770665160096819e-02,nan,nan,nan,1.3864816501493055e-01,-1.3864816501493055e-01,4.9140129522448522e-01,0.0000000000000000e+00,1.8298482248776519e+01,3.6593357840055359e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.4924852582045295e-02,2.2387278873067917e-02,1.3937684867553535e-02,2.0906527301330302e-02,0.0000000000000000e+00,0,0,7.0440170000000005e-03, +34,2.7051010812116616e-04,7.1395713642274969e-02,2.5489251257891404e-01,1.8268684565181479e+00,6.9388939039072284e-18,1.8270498103314878e+01,1.8268693566741177e+00,6.9388939039072284e-18,1.8368738681227217e+01,1.8268684565181479e+00,6.9388939039072284e-18,1.8270498103314878e+01,1.8268693566741177e+00,6.9388939039072284e-18,1.8368738681227217e+01,1.3843586918171891e-04,3.6537369130362957e-02,1.5478425934811494e-04,3.6716959005138966e-02,0.0000000000000000e+00,nan,nan,1.2744625628945702e-01,-1.2744625628945702e-01,5.1175858138251562e-01,1.1102230246251565e-15,2.7051010812116616e-04,7.1395713642274969e-02,2.5489251257891404e-01,1.3843586918171891e-04,3.6537369130362957e-02,1.5478425934811494e-04,3.6716959005138966e-02,0.0000000000000000e+00,nan,nan,1.2744625628945702e-01,-1.2744625628945702e-01,5.1175858138251562e-01,1.1102230246251565e-15,1.8270498106993561e+01,3.6537369130362957e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.4332448152763442e-02,2.1498672229145133e-02,1.3314223369752243e-02,1.9971335054628392e-02,0.0000000000000000e+00,0,0,7.2571800000000002e-03, +35,1.3045788056620356e-04,6.8659422410321275e-02,2.3572886231923262e-01,1.8240710528643416e+00,2.2204460492503131e-16,1.8242514268839397e+01,1.8240719446802742e+00,2.2215299868541707e-16,1.8341178629388075e+01,1.8240710528643416e+00,2.2204460492503131e-16,1.8242514268839397e+01,1.8240719446802742e+00,2.2215299868541707e-16,1.8341178629388075e+01,6.9317345006703057e-05,3.6481421057289055e-02,7.7503279823496642e-05,3.6659350383740838e-02,3.2000000000000000e+02,nan,nan,1.1786443115961631e-01,-1.1786443115961630e-01,5.3133888658820061e-01,0.0000000000000000e+00,1.3045788056620356e-04,6.8659422410321275e-02,2.3572886231923262e-01,6.9317345006703057e-05,3.6481421057289055e-02,7.7503279823496642e-05,3.6659350383740838e-02,3.2000000000000000e+02,nan,nan,1.1786443115961631e-01,-1.1786443115961630e-01,5.3133888658820061e-01,0.0000000000000000e+00,1.8242514266997407e+01,3.6481421057286835e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.3808751346261831e-02,2.0713127019392697e-02,1.2755996473848286e-02,1.9133994710772373e-02,0.0000000000000000e+00,0,0,7.4920439999999998e-03, +36,6.3079440456896931e-05,6.6200035768774798e-02,2.1914375245193990e-01,1.8212647165321079e+00,0.0000000000000000e+00,1.8214451873507372e+01,1.8212656106838854e+00,0.0000000000000000e+00,1.8313548109931183e+01,1.8212647165321079e+00,0.0000000000000000e+00,1.8214451873507372e+01,1.8212656106838854e+00,0.0000000000000000e+00,1.8313548109931183e+01,3.4708246878900617e-05,3.6425294330642156e-02,3.8807068703812228e-05,3.6603687887159661e-02,nan,nan,nan,1.0957187622596995e-01,-1.0957187622596995e-01,5.5023073488765728e-01,0.0000000000000000e+00,6.3079440456896931e-05,6.6200035768774798e-02,2.1914375245193990e-01,3.4708246878900617e-05,3.6425294330642156e-02,3.8807068703812228e-05,3.6603687887159661e-02,nan,nan,nan,1.0957187622596995e-01,-1.0957187622596995e-01,5.5023073488765728e-01,0.0000000000000000e+00,1.8214451874429681e+01,3.6425294330642156e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.3343014177402891e-02,2.0014521266104337e-02,1.2259481763596369e-02,1.8389222645394554e-02,0.0000000000000000e+00,0,0,7.7575370000000001e-03, +37,3.0569828838553033e-05,6.3974114443976840e-02,2.0465441506050103e-01,1.8184554792055416e+00,2.2204460492503131e-16,1.8186354744838084e+01,1.8184563700240415e+00,2.2204460492503131e-16,1.8285881432754813e+01,1.8184554792055416e+00,2.2204460492503131e-16,1.8186354744838084e+01,1.8184563700240415e+00,2.2204460492503131e-16,1.8285881432754813e+01,1.7378864321293541e-05,3.6369109584108612e-02,1.9431196973645417e-05,3.6546839061269473e-02,nan,nan,nan,1.0232720753025051e-01,-1.0232720753025051e-01,5.6849727268921602e-01,0.0000000000000000e+00,3.0569828838553033e-05,6.3974114443976840e-02,2.0465441506050103e-01,1.7378864321293541e-05,3.6369109584108612e-02,1.9431196973645417e-05,3.6546839061269473e-02,nan,nan,nan,1.0232720753025051e-01,-1.0232720753025051e-01,5.6849727268921602e-01,0.0000000000000000e+00,1.8186354744376271e+01,3.6369109584110833e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.2924567236288664e-02,1.9386850854433015e-02,1.1810290930170608e-02,1.7715436395255968e-02,0.0000000000000000e+00,0,0,7.9176520000000007e-03, +38,1.4844443047201069e-05,6.1946376000584780e-02,1.9188649482371917e-01,1.8156405689865078e+00,0.0000000000000000e+00,1.8158203885416128e+01,1.8156414594455925e+00,0.0000000000000000e+00,1.8258164074634976e+01,1.8156405689865078e+00,0.0000000000000000e+00,1.8158203885416128e+01,1.8156414594455925e+00,0.0000000000000000e+00,1.8258164074634976e+01,8.7017755551199727e-06,3.6312811379730157e-02,9.7293995572982102e-06,3.6490468653959100e-02,nan,nan,nan,9.5943247411859583e-02,-9.5943247411859583e-02,5.8619751023671440e-01,0.0000000000000000e+00,1.4844443047201069e-05,6.1946376000584780e-02,1.9188649482371917e-01,8.7017755551199727e-06,3.6312811379730157e-02,9.7293995572982102e-06,3.6490468653959100e-02,nan,nan,nan,9.5943247411859583e-02,-9.5943247411859583e-02,5.8619751023671440e-01,0.0000000000000000e+00,1.8158203885647364e+01,3.6312811379730157e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.2546412144604438e-02,1.8819618216906628e-02,1.1403108630033687e-02,1.7104662945050531e-02,0.0000000000000000e+00,0,0,8.0773370000000004e-03, +39,7.2210763854841483e-06,6.0088967194511754e-02,1.8055189657260634e-01,1.8128216670462032e+00,6.9388939039072284e-18,1.8130011541043505e+01,1.8128225555944972e+00,6.9388939039072284e-18,1.8230406137013649e+01,1.8128216670462032e+00,6.9388939039072284e-18,1.8130011541043505e+01,1.8128225555944972e+00,6.9388939039072284e-18,1.8230406137013649e+01,4.3570473390319719e-06,3.6256433340924064e-02,4.8715867451495722e-06,3.6433709645866758e-02,nan,nan,nan,9.0275948286303170e-02,-9.0275948286303184e-02,6.0337920642835674e-01,0.0000000000000000e+00,7.2210763854841483e-06,6.0088967194511754e-02,1.8055189657260634e-01,4.3570473390319719e-06,3.6256433340924064e-02,4.8715867451495722e-06,3.6433709645866758e-02,nan,nan,nan,9.0275948286303170e-02,-9.0275948286303184e-02,6.0337920642835674e-01,0.0000000000000000e+00,1.8130011540927722e+01,3.6256433340924064e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.2202294968254378e-02,1.8303442452381621e-02,1.1030720558981799e-02,1.6546080838472754e-02,0.0000000000000000e+00,0,0,8.2701550000000013e-03, +40,3.5182228763167853e-06,5.8379034767477890e-02,1.7042229488871771e-01,1.8099981457135492e+00,0.0000000000000000e+00,1.8101773806779651e+01,1.8099990331500018e+00,0.0000000000000000e+00,1.8202604706057254e+01,1.8099981457135492e+00,0.0000000000000000e+00,1.8101773806779651e+01,1.8099990331500018e+00,0.0000000000000000e+00,1.8202604706057254e+01,2.1815971804617362e-06,3.6199962914270988e-02,2.4392298454709576e-06,3.6377017261086497e-02,nan,nan,nan,8.5211147444358856e-02,-8.5211147444358856e-02,6.2008498527689704e-01,0.0000000000000000e+00,3.5182228763167853e-06,5.8379034767477890e-02,1.7042229488871771e-01,2.1815971804617362e-06,3.6199962914270988e-02,2.4392298454709576e-06,3.6377017261086497e-02,nan,nan,nan,8.5211147444358856e-02,-8.5211147444358856e-02,6.2008498527689704e-01,0.0000000000000000e+00,1.8101773806837613e+01,3.6199962914270988e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.1887560388759235e-02,1.7831340583138833e-02,1.0688829588445414e-02,1.6033244382668066e-02,0.0000000000000000e+00,0,0,8.5261700000000013e-03, +41,1.7165555798071611e-06,5.6797891649063167e-02,1.6131583928250565e-01,1.8071705207607980e+00,0.0000000000000000e+00,1.8073494616404972e+01,1.8071714066713740e+00,0.0000000000000000e+00,1.8174763230789377e+01,1.8071705207607980e+00,0.0000000000000000e+00,1.8073494616404972e+01,1.8071714066713740e+00,0.0000000000000000e+00,1.8174763230789377e+01,1.0923323211509128e-06,3.6143410415215960e-02,1.2213297771527721e-06,3.6320160398851636e-02,nan,nan,nan,8.0657919641252823e-02,-8.0657919641252823e-02,6.3635126878538129e-01,0.0000000000000000e+00,1.7165555798071611e-06,5.6797891649063167e-02,1.6131583928250565e-01,1.0923323211509128e-06,3.6143410415215960e-02,1.2213297771527721e-06,3.6320160398851636e-02,nan,nan,nan,8.0657919641252823e-02,-8.0657919641252823e-02,6.3635126878538129e-01,0.0000000000000000e+00,1.8073494616375953e+01,3.6143410415215960e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.1598218947135881e-02,1.7397328420703767e-02,1.0373167369196801e-02,1.5559751053795146e-02,0.0000000000000000e+00,0,0,8.7158779999999998e-03, +42,8.3858147637316708e-07,5.5329963306870684e-02,1.5308525079878926e-01,1.8043387047528556e+00,0.0000000000000000e+00,1.8045173724245991e+01,1.8043395893464615e+00,0.0000000000000000e+00,1.8146881679538563e+01,1.8043387047528556e+00,0.0000000000000000e+00,1.8045173724245991e+01,1.8043395893464615e+00,0.0000000000000000e+00,1.8146881679538563e+01,5.4693150852713757e-07,3.6086774095057110e-02,6.1152061924594092e-07,3.6263261292468034e-02,nan,nan,nan,7.6542625399394632e-02,-7.6542625399394632e-02,6.5221033845464305e-01,0.0000000000000000e+00,8.3858147637316708e-07,5.5329963306870684e-02,1.5308525079878926e-01,5.4693150852713757e-07,3.6086774095057110e-02,6.1152061924594092e-07,3.6263261292468034e-02,nan,nan,nan,7.6542625399394632e-02,-7.6542625399394632e-02,6.5221033845464305e-01,0.0000000000000000e+00,1.8045173724260515e+01,3.6086774095057110e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.1331087791948991e-02,1.6996631687923473e-02,1.0080598037300992e-02,1.5120897055951432e-02,0.0000000000000000e+00,0,0,8.8913670000000007e-03, +43,4.1014163612277192e-07,5.3962213315248329e-02,1.4561029866852648e-01,1.8015028967200530e+00,2.2204460492503131e-16,1.8016812799262681e+01,1.8015037798871092e+00,2.2204460492503131e-16,1.8118961609514706e+01,1.8015028967200530e+00,2.2204460492503131e-16,1.8016812799262681e+01,1.8015037798871092e+00,2.2204460492503131e-16,1.8118961609514706e+01,2.7384767975480173e-07,3.6030057934403281e-02,3.0618733836878898e-07,3.6206260535388779e-02,nan,nan,nan,7.2805149334263242e-02,-7.2805149334263242e-02,6.6769051380296363e-01,0.0000000000000000e+00,4.1014163612277192e-07,5.3962213315248329e-02,1.4561029866852648e-01,2.7384767975480173e-07,3.6030057934403281e-02,3.0618733836878898e-07,3.6206260535388779e-02,nan,nan,nan,7.2805149334263242e-02,-7.2805149334263242e-02,6.6769051380296363e-01,0.0000000000000000e+00,1.8016812799255405e+01,3.6030057934401061e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.1083464241024051e-02,1.6625196361536029e-02,9.8083146380786301e-03,1.4712471957117890e-02,0.0000000000000000e+00,0,0,9.0743639999999997e-03, +44,2.0080698747065773e-07,5.2683605666177823e-02,1.3879172247708441e-01,1.7986631359680971e+00,2.2204460492503131e-16,1.7988412398424515e+01,1.7986640177614073e+00,2.2204460492503131e-16,1.8091003620841509e+01,1.7986631359680971e+00,2.2204460492503131e-16,1.7988412398424515e+01,1.7986640177614073e+00,2.2204460492503131e-16,1.8091003620841509e+01,1.3711442914399186e-07,3.5973262719359723e-02,1.5330676594523165e-07,3.6149191232335447e-02,nan,nan,nan,6.9395861238542203e-02,-6.9395861238542203e-02,6.8281702181318393e-01,0.0000000000000000e+00,2.0080698747065773e-07,5.2683605666177823e-02,1.3879172247708441e-01,1.3711442914399186e-07,3.5973262719359723e-02,1.5330676594523165e-07,3.6149191232335447e-02,nan,nan,nan,6.9395861238542203e-02,-6.9395861238542203e-02,6.8281702181318393e-01,0.0000000000000000e+00,1.7988412398428153e+01,3.5973262719361944e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0853106910073134e-02,1.6279660365109666e-02,9.5540546106656077e-03,1.4331081915998412e-02,0.0000000000000000e+00,0,0,9.2722239999999991e-03, +45,9.8410420821690232e-08,5.1484741283801372e-02,1.3254692405116883e-01,1.7958195301081599e+00,2.2204460492503131e-16,1.7959973514665364e+01,1.7958204104980640e+00,2.2204460492503131e-16,1.8063008678986684e+01,1.7958195301081599e+00,2.2204460492503131e-16,1.7959973514665364e+01,1.7958204104980640e+00,2.2204460492503131e-16,1.8063008678986684e+01,6.8652323492734979e-08,3.5916390602165421e-02,7.6759723515148638e-08,3.6092039123045212e-02,nan,nan,nan,6.6273462025584415e-02,-6.6273462025584415e-02,6.9761233535548106e-01,0.0000000000000000e+00,9.8410420821690232e-08,5.1484741283801372e-02,1.3254692405116883e-01,6.8652323492734979e-08,3.5916390602165421e-02,7.6759723515148638e-08,3.6092039123045212e-02,nan,nan,nan,6.6273462025584415e-02,-6.6273462025584415e-02,6.9761233535548106e-01,0.0000000000000000e+00,1.7959973514663549e+01,3.5916390602163201e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0638103496740865e-02,1.5957155245111262e-02,9.3158505634822752e-03,1.3973775845223413e-02,0.0000000000000000e+00,0,0,9.4135859999999998e-03, +46,4.8271009993438769e-08,5.0357551575130714e-02,1.2680658211832144e-01,1.7929721422944174e+00,0.0000000000000000e+00,1.7931496821818147e+01,1.7929730212931252e+00,0.0000000000000000e+00,1.8034977464671464e+01,1.7929721422944174e+00,0.0000000000000000e+00,1.7931496821818147e+01,1.7929730212931252e+00,0.0000000000000000e+00,1.8034977464671464e+01,3.4373623614136761e-08,3.5859442845888351e-02,3.8432928606573840e-08,3.6034813803838286e-02,nan,nan,nan,6.3403291059160719e-02,-6.3403291059160719e-02,7.1209663147319668e-01,0.0000000000000000e+00,4.8271009993438769e-08,5.0357551575130714e-02,1.2680658211832144e-01,3.4373623614136761e-08,3.5859442845888351e-02,3.8432928606573840e-08,3.6034813803838286e-02,nan,nan,nan,6.3403291059160719e-02,-6.3403291059160719e-02,7.1209663147319668e-01,0.0000000000000000e+00,1.7931496821819056e+01,3.5859442845888351e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0436830313088083e-02,1.5655245469632199e-02,9.0920467291031315e-03,1.3638070093654697e-02,0.0000000000000000e+00,0,0,9.5829579999999991e-03, +47,2.3696515520217346e-08,4.9295069155637382e-02,1.2151210513761099e-01,1.7901210497216411e+00,0.0000000000000000e+00,1.7902983070536965e+01,1.7901219273202273e+00,0.0000000000000000e+00,1.8006910720718547e+01,1.7901210497216411e+00,0.0000000000000000e+00,1.7902983070536965e+01,1.7901219273202273e+00,0.0000000000000000e+00,1.8006910720718547e+01,1.7210496694453070e-08,3.5802420994432822e-02,1.9242946240090604e-08,3.5977512612228736e-02,nan,nan,nan,6.0756052568805494e-02,-6.0756052568805494e-02,7.2628807723943434e-01,0.0000000000000000e+00,2.3696515520217346e-08,4.9295069155637382e-02,1.2151210513761099e-01,1.7210496694453070e-08,3.5802420994432822e-02,1.9242946240090604e-08,3.5977512612228736e-02,nan,nan,nan,6.0756052568805494e-02,-6.0756052568805494e-02,7.2628807723943434e-01,0.0000000000000000e+00,1.7902983070536507e+01,3.5802420994432822e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0247888934474907e-02,1.5371833401712448e-02,8.8812066412312651e-03,1.3321809961846953e-02,0.0000000000000000e+00,0,0,9.8112829999999988e-03, +48,1.1641490201908563e-08,4.8291240210107542e-02,1.1661362680753948e-01,1.7872663155740434e+00,0.0000000000000000e+00,1.7874432903523328e+01,1.7872671917743110e+00,0.0000000000000000e+00,1.7978809089808991e+01,1.7872663155740434e+00,0.0000000000000000e+00,1.7874432903523328e+01,1.7872671917743110e+00,0.0000000000000000e+00,1.7978809089808991e+01,8.6170672819463334e-09,3.5745326311480870e-02,9.6346877984095183e-09,3.5920138947082937e-02,nan,nan,nan,5.8306813403769739e-02,-5.8306813403769739e-02,7.4020311253052551e-01,0.0000000000000000e+00,1.1641490201908563e-08,4.8291240210107542e-02,1.1661362680753948e-01,8.6170672819463334e-09,3.5745326311480870e-02,9.6346877984095183e-09,3.5920138947082937e-02,nan,nan,nan,5.8306813403769739e-02,-5.8306813403769739e-02,7.4020311253052551e-01,0.0000000000000000e+00,1.7874432903523559e+01,3.5745326311480870e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.0070072757758161e-02,1.5105109136637282e-02,8.6820933643738663e-03,1.3023140046560799e-02,0.0000000000000000e+00,0,0,1.0107263000000000e-02, +49,5.7231460844759611e-09,4.7340776852907586e-02,1.1206844479231574e-01,1.7844080042284267e+00,2.2204460492503131e-16,1.7845846959161587e+01,1.7844088790268131e+00,2.2204460492503131e-16,1.7950673207577314e+01,1.7844080042284267e+00,2.2204460492503131e-16,1.7845846959161587e+01,1.7844088790268131e+00,2.2204460492503131e-16,1.7950673207577314e+01,4.3144318118137903e-09,3.5688160084570757e-02,4.8239383538346117e-09,3.5862693028073281e-02,nan,nan,nan,5.6034222396157872e-02,-5.6034222396157872e-02,7.5385666347338054e-01,0.0000000000000000e+00,5.7231460844759611e-09,4.7340776852907586e-02,1.1206844479231574e-01,4.3144318118137903e-09,3.5688160084570757e-02,4.8239383538346117e-09,3.5862693028073281e-02,nan,nan,nan,5.6034222396157872e-02,-5.6034222396157872e-02,7.5385666347338054e-01,0.0000000000000000e+00,1.7845846959161477e+01,3.5688160084568536e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.9023319049720056e-03,1.4853497857457962e-02,8.4936270543257697e-03,1.2740440581488599e-02,0.0000000000000000e+00,0,0,1.0356921000000000e-02, +50,2.8154117444167207e-09,4.6439036475535912e-02,1.0783977800636095e-01,1.7815461745165511e+00,2.2204460492503131e-16,1.7817225828572877e+01,1.7815470479122424e+00,2.2204460492503131e-16,1.7922503664365262e+01,1.7815461745165511e+00,2.2204460492503131e-16,1.7817225828572877e+01,1.7815470479122424e+00,2.2204460492503131e-16,1.7922503664365262e+01,2.1601593847009326e-09,3.5630923490333241e-02,2.4152599743812894e-09,3.5805176578914355e-02,nan,nan,nan,5.3919889003180475e-02,-5.3919889003180475e-02,7.6726233347032546e-01,0.0000000000000000e+00,2.8154117444167207e-09,4.6439036475535912e-02,1.0783977800636095e-01,2.1601593847009326e-09,3.5630923490333241e-02,2.4152599743812894e-09,3.5805176578914355e-02,nan,nan,nan,5.3919889003180475e-02,-5.3919889003180475e-02,7.6726233347032546e-01,0.0000000000000000e+00,1.7817225828572926e+01,3.5630923490331021e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.7437494196498265e-03,1.4615624129474697e-02,8.3148643075601214e-03,1.2472296461340182e-02,0.0000000000000000e+00,0,0,1.0534742000000000e-02, +51,1.3858324164821171e-09,4.5581924096062439e-02,1.0389577611241027e-01,1.7786808838419605e+00,0.0000000000000000e+00,1.7788570084467295e+01,1.7786817558328016e+00,0.0000000000000000e+00,1.7894301031831468e+01,1.7786808838419605e+00,0.0000000000000000e+00,1.7788570084467295e+01,1.7786817558328016e+00,0.0000000000000000e+00,1.7894301031831468e+01,1.0815487394566503e-09,3.5573617676839211e-02,1.2092724814380481e-09,3.5747590480752371e-02,nan,nan,nan,5.1947888056205135e-02,-5.1947888056205135e-02,7.8043255922828003e-01,0.0000000000000000e+00,1.3858324164821171e-09,4.5581924096062439e-02,1.0389577611241027e-01,1.0815487394566503e-09,3.5573617676839211e-02,1.2092724814380481e-09,3.5747590480752371e-02,nan,nan,nan,5.1947888056205135e-02,-5.1947888056205135e-02,7.8043255922828003e-01,0.0000000000000000e+00,1.7788570084467271e+01,3.5573617676839211e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.5935197484946898e-03,1.4390279622742030e-02,8.1449746636602649e-03,1.2217461995490342e-02,0.0000000000000000e+00,0,0,1.0837256000000000e-02, +52,6.8253355525493483e-10,4.4765811902925702e-02,1.0020872018733973e-01,1.7758121867211867e+00,0.0000000000000000e+00,1.7759880272759464e+01,1.7758130573057380e+00,0.0000000000000000e+00,1.7866065855492028e+01,1.7758121867211867e+00,0.0000000000000000e+00,1.7759880272759464e+01,1.7758130573057380e+00,0.0000000000000000e+00,1.7866065855492028e+01,5.4150761652493884e-10,3.5516243734423733e-02,6.0545572521179399e-10,3.5689935966354579e-02,nan,nan,nan,5.0104360093669864e-02,-5.0104360093669864e-02,7.9337874651844620e-01,0.0000000000000000e+00,6.8253355525493483e-10,4.4765811902925702e-02,1.0020872018733973e-01,5.4150761652493884e-10,3.5516243734423733e-02,6.0545572521179399e-10,3.5689935966354579e-02,nan,nan,nan,5.0104360093669864e-02,-5.0104360093669864e-02,7.9337874651844620e-01,0.0000000000000000e+00,1.7759880272759478e+01,3.5516243734423733e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.4509323362310452e-03,1.4176398504346615e-02,7.9832248238086434e-03,1.1974837235713021e-02,0.0000000000000000e+00,0,0,1.1005859000000000e-02, +53,3.3633043562219408e-10,4.3987472921828447e-02,9.6754374460333470e-02,1.7729401360190717e+00,0.0000000000000000e+00,1.7731156921800626e+01,1.7729410051955736e+00,0.0000000000000000e+00,1.7837798663468295e+01,1.7729401360190717e+00,0.0000000000000000e+00,1.7731156921800626e+01,1.7729410051955736e+00,0.0000000000000000e+00,1.7837798663468295e+01,2.7111979328253710e-10,3.5458802720381433e-02,3.0313688500102785e-10,3.5632214029267056e-02,nan,nan,nan,4.8377187230166735e-02,-4.8377187230166735e-02,8.0611138501628432e-01,0.0000000000000000e+00,3.3633043562219408e-10,4.3987472921828447e-02,9.6754374460333470e-02,2.7111979328253710e-10,3.5458802720381433e-02,3.0313688500102785e-10,3.5632214029267056e-02,nan,nan,nan,4.8377187230166735e-02,-4.8377187230166735e-02,8.0611138501628432e-01,0.0000000000000000e+00,1.7731156921800615e+01,3.5458802720381433e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.3153575525132329e-03,1.3973036328769851e-02,7.8289639589294024e-03,1.1743445938394159e-02,0.0000000000000000e+00,0,0,1.1158707000000000e-02, +54,1.6581424159780473e-10,4.3244025774667856e-02,9.3511456083771427e-02,1.7700647827507943e+00,0.0000000000000000e+00,1.7702400541968657e+01,1.7700656505176855e+00,0.0000000000000000e+00,1.7809499966230682e+01,1.7700647827507943e+00,0.0000000000000000e+00,1.7702400541968657e+01,1.7700656505176855e+00,0.0000000000000000e+00,1.7809499966230682e+01,1.3574219526191200e-10,3.5401295655015888e-02,1.5177240760927374e-10,3.5574425729407770e-02,nan,nan,nan,4.6755728041885714e-02,-4.6755728041885714e-02,8.1864014787804051e-01,0.0000000000000000e+00,1.6581424159780473e-10,4.3244025774667856e-02,9.3511456083771427e-02,1.3574219526191200e-10,3.5401295655015888e-02,1.5177240760927374e-10,3.5574425729407770e-02,nan,nan,nan,4.6755728041885714e-02,-4.6755728041885714e-02,8.1864014787804051e-01,0.0000000000000000e+00,1.7702400541968665e+01,3.5401295655015888e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.1862353494920595e-03,1.3779353024238048e-02,7.6816124057126345e-03,1.1522418608568952e-02,0.0000000000000000e+00,0,0,1.1370876000000000e-02, +55,8.1786184969617369e-11,4.2532888498295729e-02,9.0461198978165902e-02,1.7671861765353376e+00,0.0000000000000000e+00,1.7673611629414378e+01,1.7671870428909944e+00,0.0000000000000000e+00,1.7781170260228539e+01,1.7671861765353376e+00,0.0000000000000000e+00,1.7673611629414378e+01,1.7671870428909944e+00,0.0000000000000000e+00,1.7781170260228539e+01,6.7962191430126495e-11,3.5343723530706750e-02,7.5987987691244137e-11,3.5516572046623451e-02,nan,nan,nan,4.5230599489082951e-02,-4.5230599489082951e-02,8.3097397751678570e-01,0.0000000000000000e+00,8.1786184969617369e-11,4.2532888498295729e-02,9.0461198978165902e-02,6.7962191430126495e-11,3.5343723530706750e-02,7.5987987691244137e-11,3.5516572046623451e-02,nan,nan,nan,4.5230599489082951e-02,-4.5230599489082951e-02,8.3097397751678570e-01,0.0000000000000000e+00,1.7673611629414381e+01,3.5343723530706750e-02,0.0000000000000000e+00,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,9.0630656634642769e-03,1.3594598495196458e-02,7.5406518149898627e-03,1.1310977722484794e-02,0.0000000000000000e+00,0,0,1.1596728000000001e-02, +56,4.0357457365173502e-11,4.1851739671970721e-02,8.7586992670350430e-02,1.7643043656679396e+00,2.2204460492503131e-16,1.7644790667182239e+01,1.7643052306108056e+00,2.2204460492503131e-16,1.7752810029018296e+01,1.7643043656679396e+00,2.2204460492503131e-16,1.7644790667182239e+01,1.7643052306108056e+00,2.2204460492503131e-16,1.7752810029018296e+01,3.4026226281014260e-11,3.5286087313356571e-02,3.8044737031321607e-11,3.5458653960266519e-02,nan,nan,nan,4.3793496335175215e-02,-4.3793496335175215e-02,8.4312116031316731e-01,0.0000000000000000e+00,4.0357457365173502e-11,4.1851739671970721e-02,8.7586992670350430e-02,3.4026226281014260e-11,3.5286087313356571e-02,3.8044737031321607e-11,3.5458653960266519e-02,nan,nan,nan,4.3793496335175215e-02,-4.3793496335175215e-02,8.4312116031316731e-01,0.0000000000000000e+00,1.7644790667182235e+01,3.5286087313358791e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.9454004544662208e-03,1.3418100681699378e-02,7.4056171121003045e-03,1.1108425668150512e-02,0.0000000000000000e+00,0,0,1.1754054999999999e-02, +57,1.9922589756982430e-11,4.1198485547775394e-02,8.4874081590639583e-02,1.7614193973384709e+00,2.2204460492503131e-16,1.7615938127195442e+01,1.7614202608669907e+00,2.2204460492503131e-16,1.7724419745210263e+01,1.7614193973384709e+00,2.2204460492503131e-16,1.7615938127195442e+01,1.7614202608669907e+00,2.2204460492503131e-16,1.7724419745210263e+01,1.7035595156755790e-11,3.5228387946771640e-02,1.9047790983822780e-11,3.5400672414381024e-02,nan,nan,nan,4.2437040795319791e-02,-4.2437040795319791e-02,8.5508939171852338e-01,0.0000000000000000e+00,1.9922589756982430e-11,4.1198485547775394e-02,8.4874081590639583e-02,1.7035595156755790e-11,3.5228387946771640e-02,1.9047790983822780e-11,3.5400672414381024e-02,nan,nan,nan,4.2437040795319791e-02,-4.2437040795319791e-02,8.5508939171852338e-01,0.0000000000000000e+00,1.7615938127195449e+01,3.5228387946769420e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.8328369621096855e-03,1.3249255443164571e-02,7.2760896119650198e-03,1.0914134417947530e-02,0.0000000000000000e+00,0,0,1.1909668000000000e-02, +58,9.8386142578395249e-12,4.0571232107302541e-02,8.2309313305569148e-02,1.7585313177395729e+00,2.2204460492503131e-16,1.7587054471437323e+01,1.7585321798522249e+00,2.2204460492503131e-16,1.7695999871635330e+01,1.7585313177395729e+00,2.2204460492503131e-16,1.7587054471437323e+01,1.7585321798522249e+00,2.2204460492503131e-16,1.7695999871635330e+01,8.5289553197753776e-12,3.5170626354793677e-02,9.5363081440675914e-12,3.5342628339522543e-02,nan,nan,nan,4.1154656652784574e-02,-4.1154656652784574e-02,8.6688583333566560e-01,0.0000000000000000e+00,9.8386142578395249e-12,4.0571232107302541e-02,8.2309313305569148e-02,8.5289553197753776e-12,3.5170626354793677e-02,9.5363081440675914e-12,3.5342628339522543e-02,nan,nan,nan,4.1154656652784574e-02,-4.1154656652784574e-02,8.6688583333566560e-01,0.0000000000000000e+00,1.7587054471437320e+01,3.5170626354791457e-02,2.2204460492503131e-15,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.7250120167011239e-03,1.3087518025051642e-02,7.1516912413120970e-03,1.0727536861968145e-02,0.0000000000000000e+00,0,0,1.2048806000000000e-02, +59,6.3477598164996755e-04,3.9936522401594531e-02,7.9817449064928631e-02,1.7556401721991133e+00,5.5766159886894151e-05,1.7558140153225811e+01,1.7556410328943926e+00,6.2348462175596236e-05,1.7667550851598492e+01,1.7556401721991133e+00,5.5766159886894151e-05,1.7558140153225811e+01,1.7556410328943926e+00,6.2348462175596236e-05,1.7667550851598492e+01,5.5766159459857967e-04,3.5084920364041067e-02,6.2348461698142862e-04,3.5256775371296234e-02,4.9999999995968519e-01,nan,nan,3.9940463331789855e-02,-3.9876985733138769e-02,8.7851716309280459e-01,0.0000000000000000e+00,6.3477598164996755e-04,3.9936522401594531e-02,7.9817449064928631e-02,5.5766159459857967e-04,3.5084920364041067e-02,6.2348461698142862e-04,3.5256775371296234e-02,4.9999999995968519e-01,nan,nan,3.9940463331789855e-02,-3.9876985733138769e-02,8.7851716309280459e-01,0.0000000000000000e+00,1.7558140153225818e+01,3.5112803443982266e-02,2.7883079941198874e-05,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.6161459635417381e-03,1.2924218945312607e-02,7.0320795924850854e-03,1.0548119388727573e-02,0.0000000000000000e+00,0,0,1.2240679000000001e-02, +60,1.2221393695288442e-02,3.8730803249122814e-02,7.6265708981747837e-02,1.7527546623017727e+00,1.1714309317755606e-03,1.7529278249414205e+01,1.7527555176779728e+00,1.3096995971980390e-03,1.7639151122103591e+01,1.7527546623017727e+00,1.1714309317755606e-03,1.7529278249414205e+01,1.7527555176779728e+00,1.3096995971980390e-03,1.7639151122103591e+01,1.0876713131230509e-02,3.4469377780149885e-02,1.2160534966598227e-02,3.4642923151180484e-02,4.9999999999811040e-01,nan,nan,3.8790981556989158e-02,-3.7474727424758679e-02,8.8997322256492473e-01,0.0000000000000000e+00,1.2221393695288442e-02,3.8730803249122814e-02,7.6265708981747837e-02,1.0876713131230509e-02,3.4469377780149885e-02,1.2160534966598227e-02,3.4642923151180484e-02,4.9999999999811040e-01,nan,nan,3.8790981556989158e-02,-3.7474727424758679e-02,8.8997322256492473e-01,0.0000000000000000e+00,1.7529278249414205e+01,3.5055093246035451e-02,5.8571546588556678e-04,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.4884659186232631e-03,1.2732698877934896e-02,6.9087474335453036e-03,1.0363121150318011e-02,0.0000000000000000e+00,0,0,1.2400441999999999e-02, +61,2.3037224228666098e-02,3.6743116018410904e-02,7.1255594261416172e-02,1.7500295652258995e+00,3.7930796152683133e-03,1.7501950260359187e+01,1.7500303474204999e+00,4.2407919319043487e-03,1.7612270105541207e+01,1.7500295652258995e+00,3.7930796152683133e-03,1.7501950260359187e+01,1.7500303474204999e+00,4.2407919319043487e-03,1.7612270105541207e+01,2.0755601044531558e-02,3.3104051496886056e-02,2.3205467424719149e-02,3.3269041726044460e-02,4.9999999999941458e-01,nan,nan,3.7732819900866341e-02,-3.3522774360549838e-02,9.0095928391861424e-01,0.0000000000000000e+00,2.3037224228666098e-02,3.6743116018410904e-02,7.1255594261416172e-02,2.0755601044531558e-02,3.3104051496886056e-02,2.3205467424719149e-02,3.3269041726044460e-02,4.9999999999941458e-01,nan,nan,3.7732819900866341e-02,-3.3522774360549838e-02,9.0095928391861424e-01,0.0000000000000000e+00,1.7501950260359180e+01,3.5000591304517992e-02,1.8965398076319362e-03,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.3345477670790924e-03,1.2501821650618639e-02,6.6380170028619290e-03,9.9570255042928935e-03,0.0000000000000000e+00,0,0,1.2592212000000000e-02, +62,3.2909061926879764e-02,3.4055010576207148e-02,6.4960323852101834e-02,1.7475158072053465e+00,7.8358456062570109e-03,1.7476714284490630e+01,1.7475165001308868e+00,8.7607417183918606e-03,1.7587455642355394e+01,1.7475158072053465e+00,7.8358456062570109e-03,1.7476714284490630e+01,1.7475165001308868e+00,8.7607417183918606e-03,1.7587455642355394e+01,2.9988155543581807e-02,3.1032393340980652e-02,3.3527777157642963e-02,3.1188084664943449e-02,4.9999999999971573e-01,nan,nan,3.6779698253502226e-02,-2.8180625598599608e-02,9.1124309803215042e-01,0.0000000000000000e+00,3.2909061926879764e-02,3.4055010576207148e-02,6.4960323852101834e-02,2.9988155543581807e-02,3.1032393340980652e-02,3.3527777157642963e-02,3.1188084664943449e-02,4.9999999999971573e-01,nan,nan,3.6779698253502226e-02,-2.8180625598599608e-02,9.1124309803215042e-01,0.0000000000000000e+00,1.7476714284490630e+01,3.4950316144106930e-02,3.9179228031262781e-03,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,8.1619906375125176e-03,1.2242985956268734e-02,6.2281400952113319e-03,9.3422101428169979e-03,0.0000000000000000e+00,0,0,1.2785970000000001e-02, +63,4.1692034944152877e-02,3.0754506074185731e-02,5.7561840746582327e-02,1.7452688212035796e+00,1.3184808734432618e-02,1.7454107548547846e+01,1.7452693983398284e+00,1.4741064300262154e-02,1.7565236145142133e+01,1.7452688212035796e+00,1.3184808734432618e-02,1.7454107548547846e+01,1.7452693983398284e+00,1.4741064300262154e-02,1.7565236145142133e+01,3.8382194060272767e-02,2.8312972056855283e-02,4.2912597522179560e-02,2.8454919631409798e-02,5.0000000000000000e-01,nan,nan,3.5941812551897774e-02,-2.1620028194684553e-02,9.2061215317713108e-01,0.0000000000000000e+00,4.1692034944152877e-02,3.0754506074185731e-02,5.7561840746582327e-02,3.8382194060272767e-02,2.8312972056855283e-02,4.2912597522179560e-02,2.8454919631409798e-02,5.0000000000000000e-01,nan,nan,3.5941812551897774e-02,-2.1620028194684553e-02,9.2061215317713108e-01,0.0000000000000000e+00,1.7454107548547842e+01,3.4905376424071592e-02,6.5924043672163091e-03,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.9773632393623489e-03,1.1966044859043484e-02,5.6901849173299768e-03,8.5352773759949097e-03,0.0000000000000000e+00,0,0,1.3117749999999999e-02, +64,4.9271837116996536e-02,2.6933450653584847e-02,4.9246839385203377e-02,1.7433333560280013e+00,1.9697664619229435e-02,1.7434589699424130e+01,1.7433338085763734e+00,2.2022658543294753e-02,1.7546062891187951e+01,1.7433333560280013e+00,1.9697664619229435e-02,1.7434589699424130e+01,1.7433338085763734e+00,2.2022658543294753e-02,1.7546062891187951e+01,4.5767424964567427e-02,2.5017834810945327e-02,5.1169536687946091e-02,2.5143659256865195e-02,4.9999999999999895e-01,nan,nan,3.5226377183167068e-02,-1.4020462202036309e-02,9.2887595921970911e-01,0.0000000000000000e+00,4.9271837116996536e-02,2.6933450653584847e-02,4.9246839385203377e-02,4.5767424964567427e-02,2.5017834810945327e-02,5.1169536687946091e-02,2.5143659256865195e-02,4.9999999999999895e-01,nan,nan,3.5226377183167068e-02,-1.4020462202036309e-02,9.2887595921970911e-01,0.0000000000000000e+00,1.7434589699424134e+01,3.4866667120560024e-02,9.8488323096146968e-03,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.7894658347056368e-03,1.1684198752058415e-02,5.0378474704911858e-03,7.5567712057367231e-03,0.0000000000000000e+00,0,0,1.3330311999999999e-02, +65,5.5560618941556374e-02,2.2685727298032671e-02,4.0203865829774491e-02,1.7417484158426568e+00,2.7208099617602385e-02,1.7418551283615184e+01,1.7417487427429288e+00,3.0419580141772488e-02,1.7530319241062134e+01,1.7417484158426568e+00,2.7208099617602385e-02,1.7418551283615184e+01,1.7417487427429288e+00,3.0419580141772488e-02,1.7530319241062134e+01,5.1997582334831427e-02,2.1230918508049715e-02,5.8135064383163473e-02,2.1337922236433521e-02,5.0000000000008182e-01,nan,nan,3.4638174669774334e-02,-5.5656911600001566e-03,9.3587118583986861e-01,0.0000000000000000e+00,5.5560618941556374e-02,2.2685727298032671e-02,4.0203865829774491e-02,5.1997582334831427e-02,2.1230918508049715e-02,5.8135064383163473e-02,2.1337922236433521e-02,5.0000000000008182e-01,nan,nan,3.4638174669774334e-02,-5.5656911600001566e-03,9.3587118583986861e-01,0.0000000000000000e+00,1.7418551283615173e+01,3.4834968316853135e-02,1.3604049808803420e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.6073282345842349e-03,1.1410992351876316e-02,4.7710416157869528e-03,7.1565624236804293e-03,0.0000000000000000e+00,0,0,1.3546097000000000e-02, +66,6.0495449049962700e-02,1.8105831894638189e-02,3.0621244516934716e-02,1.7405437977245288e+00,3.5529744370836364e-02,1.7406296522236172e+01,1.7405440094685416e+00,3.9723461818190295e-02,1.7518303380491087e+01,1.7405437977245288e+00,3.5529744370836364e-02,1.7406296522236172e+01,1.7405440094685416e+00,3.9723461818190295e-02,1.7518303380491087e+01,5.6954337062132154e-02,1.7046003769074627e-02,6.3676884642181186e-02,1.7132269041221310e-02,4.9999999999993711e-01,nan,nan,3.4180017911333425e-02,3.5587733943987093e-03,9.4146482018992916e-01,0.0000000000000000e+00,6.0495449049962700e-02,1.8105831894638189e-02,3.0621244516934716e-02,5.6954337062132154e-02,1.7046003769074627e-02,6.3676884642181186e-02,1.7132269041221310e-02,4.9999999999993711e-01,nan,nan,3.4180017911333425e-02,3.5587733943987093e-03,9.4146482018992916e-01,0.0000000000000000e+00,1.7406296522236172e+01,3.4810875954490575e-02,1.7764872185415947e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.4399906405555084e-03,1.1159985960833292e-02,5.3498148962765751e-03,8.0247223444148627e-03,0.0000000000000000e+00,0,0,1.3725479000000000e-02, +67,6.4035895900406106e-02,1.3287911757524690e-02,2.0685709794658662e-02,1.7397404969876642e+00,4.4460657120377320e-02,1.7398039753025309e+01,1.7397406127950599e+00,4.9708525822736861e-02,1.7510225022927809e+01,1.7397404969876642e+00,4.4460657120377320e-02,1.7398039753025309e+01,1.7397406127950599e+00,4.9708525822736861e-02,1.7510225022927809e+01,6.0549606013799218e-02,1.2564481379562426e-02,6.7696517528842537e-02,1.2628459562459563e-02,5.0000000000004952e-01,nan,nan,3.3853148344782022e-02,1.3167438550123360e-02,9.4555725601108087e-01,0.0000000000000000e+00,6.4035895900406106e-02,1.3287911757524690e-02,2.0685709794658662e-02,6.0549606013799218e-02,1.2564481379562426e-02,6.7696517528842537e-02,1.2628459562459563e-02,5.0000000000004952e-01,nan,nan,3.3853148344782022e-02,1.3167438550123360e-02,9.4555725601108087e-01,0.0000000000000000e+00,1.7398039753025305e+01,3.4794809939753285e-02,2.2230328560190860e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.2954478980828200e-03,1.0943171847124188e-02,5.7985035437646687e-03,8.6977553156470030e-03,0.0000000000000000e+00,0,0,1.3877547000000000e-02, +68,6.6162419198153730e-02,8.3250960641770913e-03,1.0581492012556162e-02,1.7393497716582318e+00,5.3788204673763829e-02,1.7393899166066209e+01,1.7393498179863736e+00,6.0137041019103908e-02,1.7506199229036422e+01,1.7393497716582318e+00,5.3788204673763829e-02,1.7393899166066209e+01,1.7393498179863736e+00,6.0137041019103908e-02,1.7506199229036422e+01,6.2727552654864183e-02,7.8928930962827229e-03,7.0131535899236888e-02,7.9336251601553835e-03,5.0000000000000000e-01,nan,nan,3.3657528982193305e-02,2.3076036969637143e-02,9.4808432664769615e-01,0.0000000000000000e+00,6.6162419198153730e-02,8.3250960641770913e-03,1.0581492012556162e-02,6.2727552654864183e-02,7.8928930962827229e-03,7.0131535899236888e-02,7.9336251601553835e-03,5.0000000000000000e-01,nan,nan,3.3657528982193305e-02,2.3076036969637143e-02,9.4808432664769615e-01,0.0000000000000000e+00,1.7393899166066220e+01,3.4786995433164637e-02,2.6894102336881914e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.1797982791755284e-03,1.0769697418763277e-02,6.1094416464040832e-03,9.1641624696061214e-03,0.0000000000000000e+00,0,0,1.4043887000000000e-02, +69,6.6874991336560635e-02,3.3090519573968032e-03,4.8969747386094775e-04,1.7393731327398683e+00,6.3294221744422993e-02,1.7393895200732864e+01,1.7393731404594510e+00,7.0765091201737573e-02,1.7506244902390357e+01,1.7393731327398683e+00,6.3294221744422993e-02,1.7393895200732864e+01,1.7393731404594510e+00,7.0765091201737573e-02,1.7506244902390357e+01,6.3465609170850201e-02,3.1403517825858637e-03,7.0956708169727725e-02,3.1574083038146666e-03,5.0000000000000011e-01,nan,nan,3.3592047212705631e-02,3.3102349738844683e-02,9.4901857783349697e-01,0.0000000000000000e+00,6.6874991336560635e-02,3.3090519573968032e-03,4.8969747386094775e-04,6.3465609170850201e-02,3.1403517825858637e-03,7.0956708169727725e-02,3.1574083038146666e-03,5.0000000000000011e-01,nan,nan,3.3592047212705631e-02,3.3102349738844683e-02,9.4901857783349697e-01,0.0000000000000000e+00,1.7393895200732853e+01,3.4787462654797367e-02,3.1647110872211504e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0964339028559585e-03,1.0644650854283932e-02,6.2782221481151868e-03,9.4173332221727801e-03,0.0000000000000000e+00,0,0,1.4249021000000001e-02, +70,6.6192258631922046e-02,1.6703422333223593e-03,9.4122217734455560e-03,1.7398023128372704e+00,7.2760295972719588e-02,1.7397950689630051e+01,1.7398023143453070e+00,8.1348483929002596e-02,1.7510284957208448e+01,1.7398023128372704e+00,7.2760295972719588e-02,1.7397950689630051e+01,1.7398023143453070e+00,8.1348483929002596e-02,1.7510284957208448e+01,6.2774723223845474e-02,1.5841017296143942e-03,7.0184274198626384e-02,1.5907129771015277e-03,5.0000000000000011e-01,nan,nan,3.3654618415003494e-02,4.3066840188449050e-02,9.4836956044844156e-01,0.0000000000000000e+00,6.6192258631922046e-02,1.6703422333223593e-03,9.4122217734455560e-03,6.2774723223845474e-02,1.5841017296143942e-03,7.0184274198626384e-02,1.5907129771015277e-03,5.0000000000000011e-01,nan,nan,3.3654618415003494e-02,4.3066840188449050e-02,9.4836956044844156e-01,0.0000000000000000e+00,1.7397950689630044e+01,3.4796046256745407e-02,3.6380147986359801e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0455413739864510e-03,1.0568312060979679e-02,6.3037724915466498e-03,9.4556587373199746e-03,0.0000000000000000e+00,0,0,1.4453625000000001e-02, +71,6.4151109477814064e-02,6.5252913094755432e-03,1.8951068960655085e-02,1.7406196274990211e+00,8.1973027000938919e-02,1.7405894088187623e+01,1.7406196537301579e+00,9.1648630347762564e-02,1.7518149531351664e+01,1.7406196274990211e+00,8.1973027000938919e-02,1.7405894088187623e+01,1.7406196537301579e+00,9.1648630347762564e-02,1.7518149531351664e+01,6.0698701443271386e-02,6.1741209504912464e-03,6.7863211286559713e-02,6.2036309501715525e-03,5.0000000000002687e-01,nan,nan,3.3842201355254960e-02,5.2793270315910044e-02,9.4618319055359978e-01,0.0000000000000000e+00,6.4151109477814064e-02,6.5252913094755432e-03,1.8951068960655085e-02,6.0698701443271386e-02,6.1741209504912464e-03,6.7863211286559713e-02,6.2036309501715525e-03,5.0000000000002687e-01,nan,nan,3.3842201355254960e-02,5.2793270315910044e-02,9.4618319055359978e-01,0.0000000000000000e+00,1.7405894088187626e+01,3.4812392549980420e-02,4.0986513500471666e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0240308930831731e-03,1.0536046339624756e-02,6.1883409894942787e-03,9.2825114842414180e-03,0.0000000000000000e+00,0,0,1.4621271000000000e-02, +72,6.0806648560578123e-02,1.1170430945222069e-02,2.7958736242848933e-02,1.7417985444439863e+00,9.0729101259307526e-02,1.7417465148610248e+01,1.7417986221532440e+00,1.0143821897663670e-01,1.7529581588225856e+01,1.7417985444439863e+00,9.0729101259307526e-02,1.7417465148610248e+01,1.7417986221532440e+00,1.0143821897663670e-01,1.7529581588225856e+01,5.7312708102197685e-02,1.0528579740774022e-02,6.4077555645558823e-02,1.0579878182620401e-02,4.9999999999999983e-01,nan,nan,3.4150730395768700e-02,6.2109466638617633e-02,9.4254015734974061e-01,0.0000000000000000e+00,6.0806648560578123e-02,1.1170430945222069e-02,2.7958736242848933e-02,5.7312708102197685e-02,1.0528579740774022e-02,6.4077555645558823e-02,1.0579878182620401e-02,4.9999999999999983e-01,nan,nan,3.4150730395768700e-02,6.2109466638617633e-02,9.4254015734974061e-01,0.0000000000000000e+00,1.7417465148610251e+01,3.4835970888879728e-02,4.5364550629653749e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0259284129642148e-03,1.0538892619446327e-02,5.9373981373523621e-03,8.9060972060285432e-03,0.0000000000000000e+00,0,0,1.4822432000000000e-02, +73,5.6232467771387816e-02,1.5523302780680967e-02,3.6273404696037154e-02,1.7433045164857219e+00,9.8840032428384669e-02,1.7432323084805972e+01,1.7433046660291818e+00,1.1050651570407587e-01,1.7544244964306934e+01,1.7433045164857219e+00,9.8840032428384669e-02,1.7432323084805972e+01,1.7433046660291818e+00,1.1050651570407587e-01,1.7544244964306934e+01,5.2720943462138958e-02,1.4553925884475682e-02,5.8943806709632909e-02,1.4625401090311645e-02,4.9999999999997763e-01,nan,nan,3.4574977044095359e-02,7.0848381740132513e-02,9.3755343757053478e-01,0.0000000000000000e+00,5.6232467771387816e-02,1.5523302780680967e-02,3.6273404696037154e-02,5.2720943462138958e-02,1.4553925884475682e-02,5.8943806709632909e-02,1.4625401090311645e-02,4.9999999999997763e-01,nan,nan,3.4574977044095359e-02,7.0848381740132513e-02,9.3755343757053478e-01,0.0000000000000000e+00,1.7432323084805965e+01,3.4866090329714439e-02,4.9420016214190121e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0431479280478057e-03,1.0564721892071690e-02,5.5594537366602248e-03,8.3391806049903372e-03,0.0000000000000000e+00,0,0,1.4965223000000000e-02, +74,5.0521100912130419e-02,1.9505021516560622e-02,4.3741224014856930e-02,1.7450960159466518e+00,1.0613642892653299e-01,1.7450056830295924e+01,1.7450962497456888e+00,1.1866413498440141e-01,1.7561734467125671e+01,1.7450960159466518e+00,1.0613642892653299e-01,1.7450056830295924e+01,1.7450962497456888e+00,1.1866413498440141e-01,1.7561734467125671e+01,4.7053584580056929e-02,1.8166294144333475e-02,5.2607506853021471e-02,1.8255910201911297e-02,5.0000000000000011e-01,nan,nan,3.5108354463525615e-02,7.8849578478382545e-02,9.3136498869839712e-01,0.0000000000000000e+00,5.0521100912130419e-02,1.9505021516560622e-02,4.3741224014856930e-02,4.7053584580056929e-02,1.8166294144333475e-02,5.2607506853021471e-02,1.8255910201911297e-02,5.0000000000000011e-01,nan,nan,3.5108354463525615e-02,7.8849578478382545e-02,9.3136498869839712e-01,0.0000000000000000e+00,1.7450056830295921e+01,3.4901920318933036e-02,5.3068214463266511e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0664692934297776e-03,1.0599703940144671e-02,5.0657965626356577e-03,7.5986948439534857e-03,0.0000000000000000e+00,0,0,1.5186652000000000e-02, +75,4.3784502451013646e-02,2.3041184078131927e-02,5.0218549778597507e-02,1.7471257460385592e+00,1.1247166928767227e-01,1.7470197052366000e+01,1.7471260678428331e+00,1.2574714903505527e-01,1.7581587695840909e+01,1.7471257460385592e+00,1.1247166928767227e-01,1.7470197052366000e+01,1.7471260678428331e+00,1.2574714903505527e-01,1.7581587695840909e+01,4.0463085857189274e-02,2.1293319723064953e-02,4.5239105278042882e-02,2.1398675788485914e-02,5.0000000000000000e-01,nan,nan,3.5742684066282483e-02,8.5961233844879997e-02,9.2414173034076630e-01,0.0000000000000000e+00,4.3784502451013646e-02,2.3041184078131927e-02,5.0218549778597507e-02,4.0463085857189274e-02,2.1293319723064953e-02,4.5239105278042882e-02,2.1398675788485914e-02,5.0000000000000000e-01,nan,nan,3.5742684066282483e-02,8.5961233844879997e-02,9.2414173034076630e-01,0.0000000000000000e+00,1.7470197052365997e+01,3.4942514920771182e-02,5.6235834643836136e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0865383616123415e-03,1.0629807542418511e-02,4.4701648990267268e-03,6.7052473485400884e-03,0.0000000000000000e+00,0,0,1.5331433000000000e-02, +76,3.6154365236392691e-02,2.6063052789720466e-02,5.5574773046014922e-02,1.7493419786094966e+00,1.1772488987154475e-01,1.7492229459259732e+01,1.7493423835840036e+00,1.3162042819822528e-01,1.7603298129590041e+01,1.7493419786094966e+00,1.1772488987154475e-01,1.7492229459259732e+01,1.7493423835840036e+00,1.3162042819822528e-01,1.7603298129590041e+01,3.3119963479309456e-02,2.3875605363580236e-02,3.7029244876022771e-02,2.3994000153707590e-02,4.9999999999998124e-01,nan,nan,3.6467948004895799e-02,9.2042721050910714e-02,9.1607094365388464e-01,0.0000000000000000e+00,3.6154365236392691e-02,2.6063052789720466e-02,5.5574773046014922e-02,3.3119963479309456e-02,2.3875605363580236e-02,3.7029244876022771e-02,2.3994000153707590e-02,4.9999999999998124e-01,nan,nan,3.6467948004895799e-02,9.2042721050910714e-02,9.1607094365388464e-01,0.0000000000000000e+00,1.7492229459259732e+01,3.4986839572189933e-02,5.8862444935770170e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0947475084340433e-03,1.0642121262651103e-02,4.7636278017202383e-03,7.1454417025803574e-03,0.0000000000000000e+00,0,0,1.5504678999999999e-02, +77,2.7782064251159526e-02,2.8509020413851362e-02,5.9695719320736695e-02,1.7516899724149353e+00,1.2180321690851419e-01,1.7515608926359043e+01,1.7516904480010080e+00,1.3618013644279475e-01,1.7626329019342521e+01,1.7516899724149353e+00,1.2180321690851419e-01,1.7515608926359043e+01,1.7516904480010080e+00,1.3618013644279475e-01,1.7626329019342521e+01,2.5208201523861939e-02,2.5867809005958392e-02,2.8183626098934791e-02,2.5996310863478238e-02,5.0000000000000011e-01,nan,nan,3.7272057540925024e-02,9.6967776861661720e-02,9.0735523811229535e-01,0.0000000000000000e+00,2.7782064251159526e-02,2.8509020413851362e-02,5.9695719320736695e-02,2.5208201523861939e-02,2.5867809005958392e-02,2.8183626098934791e-02,2.5996310863478238e-02,5.0000000000000011e-01,nan,nan,3.7272057540925024e-02,9.6967776861661720e-02,9.0735523811229535e-01,0.0000000000000000e+00,1.7515608926359047e+01,3.5033799448298708e-02,6.0901608454257100e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0839233495632150e-03,1.0625885024344901e-02,5.1698900469859810e-03,7.7548350704790270e-03,0.0000000000000000e+00,0,0,1.5682688000000000e-02, +78,1.8837999775715077e-02,3.0326334776211165e-02,6.2487523771423262e-02,1.7541134214379419e+00,1.2464320411342492e-01,1.7539773944949065e+01,1.7541139488646813e+00,1.3935533866549976e-01,1.7650127596293252e+01,1.7541134214379419e+00,1.2464320411342492e-01,1.7539773944949065e+01,1.7541139488646813e+00,1.3935533866549976e-01,1.7650127596293252e+01,1.6920427890828926e-02,2.7239333627953631e-02,1.8917613486138213e-02,2.7374853939111755e-02,5.0000000000000011e-01,nan,nan,3.8140672901713767e-02,1.0062819667313702e-01,8.9820724558250720e-01,0.0000000000000000e+00,1.8837999775715077e-02,3.0326334776211165e-02,6.2487523771423262e-02,1.6920427890828926e-02,2.7239333627953631e-02,1.8917613486138213e-02,2.7374853939111755e-02,5.0000000000000011e-01,nan,nan,3.8140672901713767e-02,1.0062819667313702e-01,8.9820724558250720e-01,0.0000000000000000e+00,1.7539773944949054e+01,3.5082268428758841e-02,6.2321602056712472e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,7.0488048068178943e-03,1.0573207210226842e-02,5.4506797003036622e-03,8.1760195504554378e-03,0.0000000000000000e+00,0,0,1.5891047000000002e-02, +79,9.5101150379975404e-03,3.1473024635291488e-02,6.3880808316533963e-02,1.7565558859605948e+00,1.2621146664182203e-01,1.7564160917627426e+01,1.7565564422313862e+00,1.4110870947553059e-01,1.7674139129852556e+01,1.7565558859605948e+00,1.2621146664182203e-01,1.7564160917627426e+01,1.7565564422313862e+00,1.4110870947553059e-01,1.7674139129852556e+01,8.4530106527346272e-03,2.7974615601696902e-02,9.4507532170224218e-03,2.8113983801017785e-02,4.9999999999998240e-01,nan,nan,3.9057114725127136e-02,1.0293792304166111e-01,8.8884420629621552e-01,0.0000000000000000e+00,9.5101150379975404e-03,3.1473024635291488e-02,6.3880808316533963e-02,8.4530106527346272e-03,2.7974615601696902e-02,9.4507532170224218e-03,2.8113983801017785e-02,4.9999999999998240e-01,nan,nan,3.9057114725127136e-02,1.0293792304166111e-01,8.8884420629621552e-01,0.0000000000000000e+00,1.7564160917627429e+01,3.5131117719211895e-02,6.3105733320908797e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.9863286857928027e-03,1.0479493028689203e-02,5.6024436664257049e-03,8.4036654996385574e-03,0.0000000000000000e+00,0,0,1.6058797000000000e-02, +80,1.9622953192989245e+00,9.8151223342142171e-02,8.7440666643373843e-01,1.8567919626590434e+00,2.1508292266963699e-02,1.8568064256279207e+01,1.8567919627671776e+00,2.4047001794431946e-02,1.8653226906755524e+01,1.8567919626590434e+00,2.1508292266963699e-02,1.8568064256279207e+01,1.8567919627671776e+00,2.4047001794431946e-02,1.8653226906755524e+01,5.2743787760553196e-01,2.6381693119699012e-02,5.8997321296715322e-01,2.6381723562412578e-02,5.0000000000000033e-01,nan,nan,4.7721337329323010e-01,-3.9719329314050833e-01,2.6878618749086725e-01,0.0000000000000000e+00,1.9622953192989245e+00,9.8151223342142171e-02,8.7440666643373843e-01,5.2743787760553196e-01,2.6381693119699012e-02,5.8997321296715322e-01,2.6381723562412578e-02,5.0000000000000033e-01,nan,nan,4.7721337329323010e-01,-3.9719329314050833e-01,2.6878618749086725e-01,0.0000000000000000e+00,1.8567939665687103e+01,3.7135839253180869e-02,1.0754146133481857e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.4038138281400980e-02,1.0479493028689203e-02,5.4753921314211418e-02,8.4036654996385574e-03,3.0885010099906771e+00,0,1,1.6311071999999999e-02, +81,1.3895318163561001e-06,3.1919928383921235e-02,6.3834900501876068e-02,1.7589621623860101e+00,1.2650453026971736e-01,1.7588217861214307e+01,1.7589627225314453e+00,1.4143636457238393e-01,1.7697820403991464e+01,1.7589621623860101e+00,1.2650453026971736e-01,1.7588217861214307e+01,1.7589627225314453e+00,1.4143636457238393e-01,1.7697820403991464e+01,1.2220690668307554e-06,2.8073021887140698e-02,1.3663147531180486e-06,2.8213060027917125e-02,5.0000000000001754e-01,nan,nan,4.0002408656389876e-02,1.0383730915826594e-01,8.7948260877933837e-01,0.0000000000000000e+00,1.3895318163561001e-06,3.1919928383921235e-02,6.3834900501876068e-02,1.2220690668307554e-06,2.8073021887140698e-02,1.3663147531180486e-06,2.8213060027917125e-02,5.0000000000001754e-01,nan,nan,4.0002408656389876e-02,1.0383730915826594e-01,8.7948260877933837e-01,0.0000000000000000e+00,1.7588217861214300e+01,3.5179243247720204e-02,6.3252265134860902e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.8957511278123721e-03,1.0343626691718516e-02,5.6247612655631052e-03,8.4371418983446578e-03,3.0885010099906771e+00,0,1,1.6491412000000000e-02, +82,9.4738354086039162e-03,3.1652686686057349e-02,6.2341754015999881e-02,1.7612795539486628e+00,1.2554794002615349e-01,1.7611417136836554e+01,1.7612800933274260e+00,1.4036686416677296e-01,1.7720652238195775e+01,1.7612795539486628e+00,1.2554794002615349e-01,1.7611417136836554e+01,1.7612800933274260e+00,1.4036686416677296e-01,1.7720652238195775e+01,8.2453919436327183e-03,2.7548378934103487e-02,9.2186284435458368e-03,2.7685974018621811e-02,5.0000000000000000e-01,nan,nan,4.0955501448487620e-02,1.0329725546448751e-01,8.7033303704479026e-01,0.0000000000000000e+00,9.4738354086039162e-03,3.1652686686057349e-02,6.2341754015999881e-02,8.2453919436327183e-03,2.7548378934103487e-02,9.2186284435458368e-03,2.7685974018621811e-02,5.0000000000000000e-01,nan,nan,4.0955501448487620e-02,1.0329725546448751e-01,8.7033303704479026e-01,0.0000000000000000e+00,1.7611417136836561e+01,3.5225591078973259e-02,6.2773970013076746e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.7786303733342601e-03,1.0167945560001300e-02,5.5202739709554471e-03,8.2804109564331707e-03,3.0885010099906771e+00,0,1,1.6624818999999999e-02, +83,1.8694754173455969e-02,3.0673524782253912e-02,5.9429170203051870e-02,1.7634590115141269e+00,1.2339469395133691e-01,1.7633266897790143e+01,1.7634595079543334e+00,1.3795946186898575e-01,1.7742150748682384e+01,1.7634590115141269e+00,1.2339469395133691e-01,1.7633266897790143e+01,1.7634595079543334e+00,1.3795946186898575e-01,1.7742150748682384e+01,1.6107313524199030e-02,2.6428166745383716e-02,1.8008523987505243e-02,2.6560339119731751e-02,4.9999999999998218e-01,nan,nan,4.1893677389403326e-02,1.0132284759245519e-01,8.6159536385181479e-01,0.0000000000000000e+00,1.8694754173455969e-02,3.0673524782253912e-02,5.9429170203051870e-02,1.6107313524199030e-02,2.6428166745383716e-02,1.8008523987505243e-02,2.6560339119731751e-02,4.9999999999998218e-01,nan,nan,4.1893677389403326e-02,1.0132284759245519e-01,8.6159536385181479e-01,0.0000000000000000e+00,1.7633266897790136e+01,3.5269180230282540e-02,6.1697346975666256e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.6386863650671844e-03,9.9580295476007306e-03,5.2945337281824489e-03,7.9418005922736734e-03,3.0885010099906771e+00,0,1,1.6806247000000000e-02, +84,2.7440154675656442e-02,2.9002626857850662e-02,5.5162894735319531e-02,1.7654561216325049e+00,1.2012308442647569e-01,1.7653321024644974e+01,1.7654565572352918e+00,1.3430169122227298e-01,1.7761877122830356e+01,1.7654561216325049e+00,1.2012308442647569e-01,1.7653321024644974e+01,1.7654565572352918e+00,1.3430169122227298e-01,1.7761877122830356e+01,2.3418921006882920e-02,2.4752419780587738e-02,2.6183149665544164e-02,2.4876386124348338e-02,4.9999999999999994e-01,nan,nan,4.2793187223973732e-02,9.7956081959293256e-02,8.5345440955764862e-01,0.0000000000000000e+00,2.7440154675656442e-02,2.9002626857850662e-02,5.5162894735319531e-02,2.3418921006882920e-02,2.4752419780587738e-02,2.6183149665544164e-02,2.4876386124348338e-02,4.9999999999999994e-01,nan,nan,4.2793187223973732e-02,9.7956081959293256e-02,8.5345440955764862e-01,0.0000000000000000e+00,1.7653321024644981e+01,3.5309122432650102e-02,6.0061542213237840e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.4815412257088765e-03,9.7223118385632266e-03,4.9557768215913178e-03,7.4336652323869767e-03,3.0885010099906771e+00,0,1,1.7031414000000002e-02, +85,3.5495433715134750e-02,2.6678900842666754e-02,4.9647188216825372e-02,1.7672319270241919e+00,1.1583404120007218e-01,1.7671187397063346e+01,1.7672322894940922e+00,1.2950639511593637e-01,1.7779445758278303e+01,1.7672319270241919e+00,1.1583404120007218e-01,1.7671187397063346e+01,1.7672322894940922e+00,1.2950639511593637e-01,1.7779445758278303e+01,3.0031840363759388e-02,2.2572382059552254e-02,3.3576618271393556e-02,2.2685611726641238e-02,5.0000000000000000e-01,nan,nan,4.3630078420010765e-02,9.3277266636836137e-02,8.4607616305739741e-01,0.0000000000000000e+00,3.5495433715134750e-02,2.6678900842666754e-02,4.9647188216825372e-02,3.0031840363759388e-02,2.2572382059552254e-02,3.3576618271393556e-02,2.2685611726641238e-02,5.0000000000000000e-01,nan,nan,4.3630078420010765e-02,9.3277266636836137e-02,8.4607616305739741e-01,0.0000000000000000e+00,1.7671187397063342e+01,3.5344638540483836e-02,5.7917020600036090e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.3143350970260711e-03,9.4715026455391496e-03,4.5146328209773046e-03,6.7719492314659568e-03,3.0885010099906771e+00,0,1,1.7226842999999999e-02, +86,4.2660222192615803e-02,2.3759953297810839e-02,4.3023553065431971e-02,1.7687535723101744e+00,1.1064807676100681e-01,1.7686534427911276e+01,1.7687538557278291e+00,1.2370831060861300e-01,1.7794530692880691e+01,1.7687535723101744e+00,1.1064807676100681e-01,1.7686534427911276e+01,1.7687538557278291e+00,1.2370831060861300e-01,1.7794530692880691e+01,3.5817720315502122e-02,1.9948966934299935e-02,4.0045428712269175e-02,2.0049230658048131e-02,5.0000000000000022e-01,nan,nan,4.4381187874725635e-02,8.7404740940157599e-02,8.3960463576070932e-01,0.0000000000000000e+00,4.2660222192615803e-02,2.3759953297810839e-02,4.3023553065431971e-02,3.5817720315502122e-02,1.9948966934299935e-02,4.0045428712269175e-02,2.0049230658048131e-02,5.0000000000000022e-01,nan,nan,4.4381187874725635e-02,8.7404740940157599e-02,8.3960463576070932e-01,0.0000000000000000e+00,1.7686534427911273e+01,3.5375071446203492e-02,5.5324038380503426e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,6.1452079375543169e-03,9.2178119063315109e-03,3.9837803738705935e-03,5.9756705608059457e-03,3.0885010099906771e+00,0,1,1.7434352000000000e-02, +87,4.8756144090186540e-02,2.0321143452744495e-02,3.5467441358397980e-02,1.7699947745651305e+00,1.0470193635143969e-01,1.7699095852891642e+01,1.7699949795717336e+00,1.1706032352883773e-01,1.7806870318191251e+01,1.7699947745651305e+00,1.0470193635143969e-01,1.7699095852891642e+01,1.7699949795717336e+00,1.1706032352883773e-01,1.7806870318191251e+01,4.0670395551636762e-02,1.6951072684417243e-02,4.5470884562632527e-02,1.7036482918967318e-02,5.0000000000000011e-01,nan,nan,4.5025229978054825e-02,8.0492671336452798e-02,8.3415939284301921e-01,0.0000000000000000e+00,4.8756144090186540e-02,2.0321143452744495e-02,3.5467441358397980e-02,4.0670395551636762e-02,1.6951072684417243e-02,4.5470884562632527e-02,1.7036482918967318e-02,5.0000000000000011e-01,nan,nan,4.5025229978054825e-02,8.0492671336452798e-02,8.3415939284301921e-01,0.0000000000000000e+00,1.7699095852891642e+01,3.5399895491302610e-02,5.2350968175719853e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.9826445945855705e-03,8.9739668918783246e-03,3.7292832203698473e-03,5.5939248305547709e-03,3.0885010099906771e+00,0,1,1.7687059999999998e-02, +88,5.3634145718071694e-02,1.6453660931216398e-02,2.7182957181278777e-02,1.7709361238740660e+00,9.8145052233071642e-02,1.7708673825007640e+01,1.7709362572887093e+00,1.0972950422420787e-01,1.7816270424277494e+01,1.7709361238740660e+00,9.8145052233071642e-02,1.7708673825007640e+01,1.7709362572887093e+00,1.0972950422420787e-01,1.7816270424277494e+01,4.4507425857647664e-02,1.3653803639054524e-02,4.9760814860616329e-02,1.3722846074166167e-02,5.0000000000000022e-01,nan,nan,4.5543889626480580e-02,7.2726846807759357e-02,8.2983377961497318e-01,0.0000000000000000e+00,5.3634145718071694e-02,1.6453660931216398e-02,2.7182957181278777e-02,4.4507425857647664e-02,1.3653803639054524e-02,4.9760814860616329e-02,1.3722846074166167e-02,5.0000000000000022e-01,nan,nan,4.5543889626480580e-02,7.2726846807759357e-02,8.2983377961497318e-01,0.0000000000000000e+00,1.7708673825007637e+01,3.5418722477481318e-02,4.9072526116535842e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.8347033254520170e-03,8.7520549881780259e-03,4.1795843959068629e-03,6.2693765938602944e-03,3.0885010099906771e+00,0,1,1.7893270000000003e-02, +89,5.7180806508362318e-02,1.2261665556904687e-02,1.8395778250574674e-02,1.7715652233237196e+00,9.1135895610117701e-02,1.7715140405831992e+01,1.7715652972603955e+00,1.0189302888727393e-01,1.7822605665644531e+01,1.7715652233237196e+00,9.1135895610117701e-02,1.7715140405831992e+01,1.7715652972603955e+00,1.0189302888727393e-01,1.7822605665644531e+01,4.7271020294749944e-02,1.0136643338584460e-02,5.2850607372416362e-02,1.0188199416213364e-02,5.0000000000000000e-01,nan,nan,4.5922816757035460e-02,6.4318595007610141e-02,8.2669383629342241e-01,0.0000000000000000e+00,5.7180806508362318e-02,1.2261665556904687e-02,1.8395778250574674e-02,4.7271020294749944e-02,1.0136643338584460e-02,5.2850607372416362e-02,1.0188199416213364e-02,5.0000000000000000e-01,nan,nan,4.5922816757035460e-02,6.4318595007610141e-02,8.2669383629342241e-01,0.0000000000000000e+00,1.7715140405831995e+01,3.5431304466474391e-02,4.5567947805058850e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.7081888868103963e-03,8.5622833302156365e-03,4.5268747013579580e-03,6.7903120520369370e-03,3.0885010099906771e+00,0,1,1.8110662000000003e-02, +90,5.9323092122558568e-02,7.8586271639375996e-03,9.3447227727886939e-03,1.7718766807176025e+00,8.3838310825326973e-02,1.7718437574352368e+01,1.7718767113050164e+00,9.3734081062093813e-02,1.7825819566408750e+01,1.7718766807176025e+00,8.3838310825326973e-02,1.7718437574352368e+01,1.7718767113050164e+00,9.3734081062093813e-02,1.7825819566408750e+01,4.8928373750734555e-02,6.4816217983114516e-03,5.4703584867579584e-02,6.5149825897722691e-03,5.0000000000000011e-01,nan,nan,4.6152420383671164e-02,5.5497143156459858e-02,8.2477787317038298e-01,0.0000000000000000e+00,5.9323092122558568e-02,7.8586271639375996e-03,9.3447227727886939e-03,4.8928373750734555e-02,6.4816217983114516e-03,5.4703584867579584e-02,6.5149825897722691e-03,5.0000000000000011e-01,nan,nan,4.6152420383671164e-02,5.5497143156459858e-02,8.2477787317038298e-01,0.0000000000000000e+00,1.7718437574352368e+01,3.5437533614352049e-02,4.1919155412663500e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.6078815403817449e-03,8.4118223105726295e-03,4.7661877200301378e-03,7.1492815800452067e-03,0.0000000000000000e+00,0,1,1.8316242999999999e-02, +91,6.0031134182593024e-02,3.3630930347967008e-03,2.7254464763312725e-04,1.7718719658446376e+00,7.6417906117363571e-02,1.7718575889835613e+01,1.7718719716772862e+00,8.5437816388310980e-02,1.7825923198358495e+01,1.7718719658446376e+00,7.6417906117363571e-02,1.7718575889835613e+01,1.7718719716772862e+00,8.5437816388310980e-02,1.7825923198358495e+01,4.9471457256993423e-02,2.7715137417890223e-03,5.5310770686306340e-02,2.7863894334241336e-03,4.9999999999999983e-01,nan,nan,4.6228377420109802e-02,4.6500922067742929e-02,8.2409666135107695e-01,0.0000000000000000e+00,6.0031134182593024e-02,3.3630930347967008e-03,2.7254464763312725e-04,4.9471457256993423e-02,2.7715137417890223e-03,5.5310770686306340e-02,2.7863894334241336e-03,4.9999999999999983e-01,nan,nan,4.6228377420109802e-02,4.6500922067742929e-02,8.2409666135107695e-01,0.0000000000000000e+00,1.7718575889835602e+01,3.5437439316892749e-02,3.8208953058681772e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.5359687898761693e-03,8.3039531848142605e-03,4.8950323552923863e-03,7.3425485329385795e-03,0.0000000000000000e+00,0,1,1.8495839000000000e-02, +92,5.9318803347114833e-02,1.1058245893217468e-03,8.5833743851240207e-03,1.7715591475365817e+00,6.9038564388769250e-02,1.7715631949479199e+01,1.7715591479989299e+00,7.7187461521142128e-02,1.7822992669928876e+01,1.7715591475365817e+00,6.9038564388769250e-02,1.7715631949479199e+01,1.7715591479989299e+00,7.7187461521142128e-02,1.7822992669928876e+01,4.8916312912592463e-02,9.1190075634478562e-04,5.4690100440603441e-02,9.1548653995641494e-04,5.0000000000003231e-01,nan,nan,4.6151802770593289e-02,3.7568428385469269e-02,8.2463418262755073e-01,0.0000000000000000e+00,5.9318803347114833e-02,1.1058245893217468e-03,8.5833743851240207e-03,4.8916312912592463e-02,9.1190075634478562e-04,5.4690100440603441e-02,9.1548653995641494e-04,5.0000000000003231e-01,nan,nan,4.6151802770593289e-02,3.7568428385469269e-02,8.2463418262755073e-01,0.0000000000000000e+00,1.7715631949479206e+01,3.5431182950731638e-02,3.4519282194386852e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4918162632954489e-03,8.2377243949431651e-03,4.9133595431475469e-03,7.3700393147213203e-03,0.0000000000000000e+00,0,1,1.8679516000000000e-02, +93,5.7242056480715772e-02,5.4329195672986408e-03,1.6999767570330546e-02,1.7709525242729560e+00,6.1859127016809012e-02,1.7709744777117521e+01,1.7709525378801383e+00,6.9160606519189358e-02,1.7817165559887659e+01,1.7709525242729560e+00,6.1859127016809012e-02,1.7709744777117521e+01,1.7709525378801383e+00,6.9160606519189358e-02,1.7817165559887659e+01,4.7301909024515587e-02,4.4894869770523912e-03,5.2885142022164135e-02,4.5109061957767198e-03,5.0000000000003586e-01,nan,nan,4.5929067041899752e-02,2.8929299471569206e-02,8.2634887585583316e-01,0.0000000000000000e+00,5.7242056480715772e-02,5.4329195672986408e-03,1.6999767570330546e-02,4.7301909024515587e-02,4.4894869770523912e-03,5.2885142022164135e-02,4.5109061957767198e-03,5.0000000000003586e-01,nan,nan,4.5929067041899752e-02,2.8929299471569206e-02,8.2634887585583316e-01,0.0000000000000000e+00,1.7709744777117514e+01,3.5419050485459118e-02,3.0929563508406727e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4721433541562829e-03,8.2082150312344296e-03,4.8234815832516320e-03,7.2352223748774480e-03,0.0000000000000000e+00,0,1,1.8934259999999998e-02, +94,5.3895250834009187e-02,9.5110115078004143e-03,2.4775077034753692e-02,1.7700721610326913e+00,5.5030294497013743e-02,1.7701111268888980e+01,1.7700722039218448e+00,6.1525739658577674e-02,1.7808636419593764e+01,1.7700721610326913e+00,5.5030294497013743e-02,1.7701111268888980e+01,1.7700722039218448e+00,6.1525739658577674e-02,1.7808636419593764e+01,4.4688611639414511e-02,7.8862959721469270e-03,4.9963386722908891e-02,7.9247081548962407e-03,5.0000000000000056e-01,nan,nan,4.5571289551276817e-02,2.0796212516523124e-02,8.2917531596707839e-01,0.0000000000000000e+00,5.3895250834009187e-02,9.5110115078004143e-03,2.4775077034753692e-02,4.4688611639414511e-02,7.8862959721469270e-03,4.9963386722908891e-02,7.9247081548962407e-03,5.0000000000000056e-01,nan,nan,4.5571289551276817e-02,2.0796212516523124e-02,8.2917531596707839e-01,0.0000000000000000e+00,1.7701111268888983e+01,3.5401443220653826e-02,2.7515147248506899e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4715611323347098e-03,8.2073416985020357e-03,4.6299492642059015e-03,6.9449238963088522e-03,0.0000000000000000e+00,0,1,1.9178495000000000e-02, +95,4.9405796314040080e-02,1.3244452514090130e-02,3.1735464775913338e-02,1.7689433437594015e+00,4.8691780145439553e-02,1.7689980808639923e+01,1.7689434284469796e+00,5.4439065175338724e-02,1.7797651455076810e+01,1.7689433437594015e+00,4.8691780145439553e-02,1.7689980808639923e+01,1.7689434284469796e+00,5.4439065175338724e-02,1.7797651455076810e+01,4.1156325945551742e-02,1.1032976802468251e-02,4.6014171259196324e-02,1.1087156415031597e-02,5.0000000000000011e-01,nan,nan,4.5093569689568569e-02,1.3358104913655230e-02,8.3302626444776051e-01,0.0000000000000000e+00,4.9405796314040080e-02,1.3244452514090130e-02,3.1735464775913338e-02,4.1156325945551742e-02,1.1032976802468251e-02,4.6014171259196324e-02,1.1087156415031597e-02,5.0000000000000011e-01,nan,nan,4.5093569689568569e-02,1.3358104913655230e-02,8.3302626444776051e-01,0.0000000000000000e+00,1.7689980808639920e+01,3.5378866875188035e-02,2.4345890072719784e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4833368922552117e-03,8.2250053383827928e-03,4.3393919601776298e-03,6.5090879402664448e-03,0.0000000000000000e+00,0,1,1.9395074000000002e-02, +96,4.3927637152591438e-02,1.6551835396498450e-02,3.7738993957571243e-02,1.7675959614959011e+00,4.2969747417709842e-02,1.7676649152870240e+01,1.7675960959900172e+00,4.8041638100997625e-02,1.7784502487747318e+01,1.7675959614959011e+00,4.2969747417709842e-02,1.7676649152870240e+01,1.7675960959900172e+00,4.8041638100997625e-02,1.7784502487747318e+01,3.6802356320954854e-02,1.3867045521063118e-02,4.1146285232912236e-02,1.3935451252375530e-02,4.9999999999999967e-01,nan,nan,4.4514043439916773e-02,6.7750494823455298e-03,8.3779503534675681e-01,0.0000000000000000e+00,4.3927637152591438e-02,1.6551835396498450e-02,3.7738993957571243e-02,3.6802356320954854e-02,1.3867045521063118e-02,4.1146285232912236e-02,1.3935451252375530e-02,4.9999999999999967e-01,nan,nan,4.4514043439916773e-02,6.7750494823455298e-03,8.3779503534675681e-01,0.0000000000000000e+00,1.7676649152870244e+01,3.5351919229918025e-02,2.1484873708854907e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.5002153198332642e-03,8.2503229797498932e-03,3.9603256196394654e-03,5.9404884294591981e-03,0.0000000000000000e+00,0,1,1.9624750000000000e-02, +97,3.7634105189542758e-02,1.9367807343695972e-02,4.2677926478290613e-02,1.7660638252028649e+00,3.7974557556367930e-02,1.7661451674716776e+01,1.7660640125280411e+00,4.2456846055758495e-02,1.7769520282711753e+01,1.7660638252028649e+00,3.7974557556367930e-02,1.7661451674716776e+01,1.7660640125280411e+00,4.2456846055758495e-02,1.7769520282711753e+01,3.1739028464745300e-02,1.6333997725873343e-02,3.5485312593485314e-02,1.6414813662878752e-02,4.9999999999999983e-01,nan,nan,4.3852861154926467e-02,1.1749346766358540e-03,8.4335812702050117e-01,0.0000000000000000e+00,3.7634105189542758e-02,1.9367807343695972e-02,4.2677926478290613e-02,3.1739028464745300e-02,1.6333997725873343e-02,3.5485312593485314e-02,1.6414813662878752e-02,4.9999999999999983e-01,nan,nan,4.3852861154926467e-02,1.1749346766358540e-03,8.4335812702050117e-01,0.0000000000000000e+00,1.7661451674716769e+01,3.5321276504057302e-02,1.8987278778183958e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.5151552531299587e-03,8.2727328796948513e-03,3.5029331704410083e-03,5.2543997556615124e-03,0.0000000000000000e+00,0,1,1.9899255000000001e-02, +98,3.0710670503568897e-02,2.1643982121185783e-02,4.6479253133304935e-02,1.7643839316954735e+00,3.3798851917887771e-02,1.7644756050717476e+01,1.7643841698524640e+00,3.7788265224923089e-02,1.7753067328259480e+01,1.7643839316954735e+00,3.3798851917887771e-02,1.7644756050717476e+01,1.7643841698524640e+00,3.7788265224923089e-02,1.7753067328259480e+01,2.6091112341313449e-02,1.8388252674965605e-02,2.9170750401880333e-02,1.8479432881054608e-02,4.9999999999999939e-01,nan,nan,4.3131177970645154e-02,-3.3480751626597804e-03,8.4957807542109487e-01,0.0000000000000000e+00,3.0710670503568897e-02,2.1643982121185783e-02,4.6479253133304935e-02,2.6091112341313449e-02,1.8388252674965605e-02,2.9170750401880333e-02,1.8479432881054608e-02,4.9999999999999939e-01,nan,nan,4.3131177970645154e-02,-3.3480751626597804e-03,8.4957807542109487e-01,0.0000000000000000e+00,1.7644756050717479e+01,3.5287678633909469e-02,1.6899425958943864e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.5219037058930253e-03,8.2828555588394959e-03,3.6971021646444724e-03,5.5456532469666531e-03,0.0000000000000000e+00,0,1,2.0113762000000000e-02, +99,2.3348044000859377e-02,2.3349020388901187e-02,4.9103701380578096e-02,1.7625956811237939e+00,3.0515991922269517e-02,1.7626954474053544e+01,1.7625959634718742e+00,3.4117916169514553e-02,1.7735530150211865e+01,1.7625956811237939e+00,3.0515991922269517e-02,1.7626954474053544e+01,1.7625959634718742e+00,3.4117916169514553e-02,1.7735530150211865e+01,1.9993081573925542e-02,1.9993917661341128e-02,2.2352944739498049e-02,2.0093234379339010e-02,4.9999999999999978e-01,nan,nan,4.2370232501430842e-02,-6.7334688791472544e-03,8.5630648859448999e-01,0.0000000000000000e+00,2.3348044000859377e-02,2.3349020388901187e-02,4.9103701380578096e-02,1.9993081573925542e-02,1.9993917661341128e-02,2.2352944739498049e-02,2.0093234379339010e-02,4.9999999999999978e-01,nan,nan,4.2370232501430842e-02,-6.7334688791472544e-03,8.5630648859448999e-01,0.0000000000000000e+00,1.7626954474053544e+01,3.5251913622475879e-02,1.5257995961134752e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.5153895942259409e-03,8.2730843913389526e-03,4.0145029150072675e-03,6.0217543725109568e-03,0.0000000000000000e+00,0,1,2.0286708000000001e-02, +100,1.5735979939020251e-02,2.4468003853661831e-02,5.0543544079070760e-02,1.7607400570229346e+00,2.8178878458482104e-02,1.7608455483995073e+01,1.7607403730386204e+00,3.1504943881435238e-02,1.7717311250813786e+01,1.7607400570229346e+00,2.8178878458482104e-02,1.7608455483995073e+01,1.7607403730386204e+00,3.1504943881435238e-02,1.7717311250813786e+01,1.3586244028227612e-02,2.1125361911217638e-02,1.5189882603008433e-02,2.1230456615259376e-02,5.0000000000000000e-01,nan,nan,4.1590567182824542e-02,-8.9529768962462175e-03,8.6338722347618313e-01,0.0000000000000000e+00,1.5735979939020251e-02,2.4468003853661831e-02,5.0543544079070760e-02,1.3586244028227612e-02,2.1125361911217638e-02,1.5189882603008433e-02,2.1230456615259376e-02,5.0000000000000000e-01,nan,nan,4.1590567182824542e-02,-8.9529768962462175e-03,8.6338722347618313e-01,0.0000000000000000e+00,1.7608455483995073e+01,3.5214801140458690e-02,1.4089439229241052e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4919584422391688e-03,8.2379376633588391e-03,4.2377007935264777e-03,6.3565511902897720e-03,0.0000000000000000e+00,0,1,2.0533892000000002e-02, +101,8.0580048130498624e-03,2.5001261593236086e-02,5.0819561636851349e-02,1.7588587791241608e+00,2.6819171085792154e-02,1.7589675512963879e+01,1.7588591154611215e+00,2.9984744824014056e-02,1.7698820773287149e+01,1.7588587791241608e+00,2.6819171085792154e-02,1.7589675512963879e+01,1.7588591154611215e+00,2.9984744824014056e-02,1.7698820773287149e+01,7.0157797698874313e-03,2.1767590039587129e-02,7.8438802403182385e-03,2.1876026383050747e-02,5.0000000000000056e-01,nan,nan,4.0811419465842082e-02,-1.0008142171009270e-02,8.7065966484972090e-01,0.0000000000000000e+00,8.0580048130498624e-03,2.5001261593236086e-02,5.0819561636851349e-02,7.0157797698874313e-03,2.1767590039587129e-02,7.8438802403182385e-03,2.1876026383050747e-02,5.0000000000000056e-01,nan,nan,4.0811419465842082e-02,-1.0008142171009270e-02,8.7065966484972090e-01,0.0000000000000000e+00,1.7589675512963879e+01,3.5177175582483219e-02,1.3409585542896091e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.4494841922367414e-03,8.1742262883552005e-03,4.3639300966051842e-03,6.5458951449077762e-03,0.0000000000000000e+00,0,1,2.0740691000000002e-02, +102,4.8718061843168171e-04,2.4962817085964401e-02,4.9977497847293356e-02,1.7569934407352441e+00,2.6446924868132438e-02,1.7571030268858809e+01,1.7569937824873236e+00,2.9568560900486898e-02,1.7680468008957750e+01,1.7569934407352441e+00,2.6446924868132438e-02,1.7571030268858809e+01,1.7569937824873236e+00,2.9568560900486898e-02,1.7680468008957750e+01,4.2772610068608774e-04,2.1916406380638666e-02,4.7821231844248098e-04,2.2025724015474174e-02,5.0000000000000000e-01,nan,nan,4.0050290868603865e-02,-9.9272069786894915e-03,8.7796206274176447e-01,0.0000000000000000e+00,4.8718061843168171e-04,2.4962817085964401e-02,4.9977497847293356e-02,4.2772610068608774e-04,2.1916406380638666e-02,4.7821231844248098e-04,2.2025724015474174e-02,5.0000000000000000e-01,nan,nan,4.0050290868603865e-02,-9.9272069786894915e-03,8.7796206274176447e-01,0.0000000000000000e+00,1.7571030268858806e+01,3.5139868814704885e-02,1.3223462434066219e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.3873924357320264e-03,8.0810886535980387e-03,4.3924824800875006e-03,6.5887237201313065e-03,0.0000000000000000e+00,0,1,2.0917730999999998e-02, +103,6.8170916718715497e-03,2.4378616254060122e-02,4.8084308025192861e-02,1.7551846443949077e+00,2.7050658668891697e-02,1.7552926089354543e+01,1.7551849764494567e+00,3.0243555809892912e-02,1.7662652882343753e+01,1.7551846443949077e+00,2.7050658668891697e-02,1.7552926089354543e+01,1.7551849764494567e+00,3.0243555809892912e-02,1.7662652882343753e+01,6.0340456135756781e-03,2.1578363553452294e-02,6.7462680856451200e-03,2.1686131753982527e-02,5.0000000000000056e-01,nan,nan,3.9322683174942703e-02,-8.7616248502501576e-03,8.8513487921442380e-01,0.0000000000000000e+00,6.8170916718715497e-03,2.4378616254060122e-02,4.8084308025192861e-02,6.0340456135756781e-03,2.1578363553452294e-02,6.7462680856451200e-03,2.1686131753982527e-02,5.0000000000000056e-01,nan,nan,3.9322683174942703e-02,-8.7616248502501576e-03,8.8513487921442380e-01,0.0000000000000000e+00,1.7552926089354539e+01,3.5103692887898157e-02,1.3525329334445862e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.3066193383988101e-03,7.9599290075982147e-03,4.3246926402055186e-03,6.4870389603082224e-03,0.0000000000000000e+00,0,1,2.1169548000000000e-02, +104,1.3711301139149146e-02,2.3284675633258901e-02,4.5224439242999896e-02,1.7534711514673993e+00,2.8597862902414811e-02,1.7535751424641926e+01,1.7534714598307977e+00,3.1973382730509481e-02,1.7645757568672924e+01,1.7534711514673993e+00,2.8597862902414811e-02,1.7535751424641926e+01,1.7534714598307977e+00,3.1973382730509481e-02,1.7645757568672924e+01,1.2230810912791656e-02,2.0770491578142786e-02,1.3674462310474223e-02,2.0874361579779288e-02,4.9999999999992284e-01,nan,nan,3.8641978931286063e-02,-6.5824603117138336e-03,8.9202408937468924e-01,0.0000000000000000e+00,1.3711301139149146e-02,2.3284675633258901e-02,4.5224439242999896e-02,1.2230810912791656e-02,2.0770491578142786e-02,1.3674462310474223e-02,2.0874361579779288e-02,4.9999999999992284e-01,nan,nan,3.8641978931286063e-02,-6.5824603117138336e-03,8.9202408937468924e-01,0.0000000000000000e+00,1.7535751424641930e+01,3.5069423029347985e-02,1.4298931451205199e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.2095180678543096e-03,7.8142771017815534e-03,4.1638898283874459e-03,6.2458347425812244e-03,0.0000000000000000e+00,0,1,2.1357748999999999e-02, +105,2.0069213893919892e-02,2.1725261231718536e-02,4.1496317366114581e-02,1.7518890631291719e+00,3.1035946986466792e-02,1.7519868623131355e+01,1.7518893361110588e+00,3.4699243603909746e-02,1.7630138415651952e+01,1.7518890631291719e+00,3.1035946986466792e-02,1.7519868623131355e+01,1.7518893361110588e+00,3.4699243603909746e-02,1.7630138415651952e+01,1.8031875111326201e-02,1.9519807769350049e-02,2.0160249255355787e-02,1.9617562731029537e-02,4.9999999999999978e-01,nan,nan,3.8019436756642787e-02,-3.4768806094717941e-03,8.9848437545374327e-01,0.0000000000000000e+00,2.0069213893919892e-02,2.1725261231718536e-02,4.1496317366114581e-02,1.8031875111326201e-02,1.9519807769350049e-02,2.0160249255355787e-02,1.9617562731029537e-02,4.9999999999999978e-01,nan,nan,3.8019436756642787e-02,-3.4768806094717941e-03,8.9848437545374327e-01,0.0000000000000000e+00,1.7519868623131345e+01,3.5037781262583438e-02,1.5517973493233389e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,5.0997126848941572e-03,7.6495690273411894e-03,3.9153137590015596e-03,5.8729706385023395e-03,0.0000000000000000e+00,0,1,2.1514276999999998e-02, +106,2.5782571920539676e-02,1.9751177613298285e-02,3.7009152414193294e-02,1.7504710515669166e+00,3.4293617191725537e-02,1.7505606208551985e+01,1.7504712807240019e+00,3.8341429617526866e-02,1.7616118354583335e+01,1.7504710515669166e+00,3.4293617191725537e-02,1.7505606208551985e+01,1.7504712807240019e+00,3.8341429617526866e-02,1.7616118354583335e+01,2.3317297774503087e-02,1.7862612435475572e-02,2.6069531437697080e-02,1.7952213957654475e-02,4.9999999999999978e-01,nan,nan,3.7464269997771374e-02,4.5511758357807963e-04,9.0438214800158745e-01,0.0000000000000000e+00,2.5782571920539676e-02,1.9751177613298285e-02,3.7009152414193294e-02,2.3317297774503087e-02,1.7862612435475572e-02,2.6069531437697080e-02,1.7952213957654475e-02,4.9999999999999978e-01,nan,nan,3.7464269997771374e-02,4.5511758357807963e-04,9.0438214800158745e-01,0.0000000000000000e+00,1.7505606208551995e+01,3.5009421031338334e-02,1.7146808595862761e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.9818897909136408e-03,7.4728346863704199e-03,3.5859939414043529e-03,5.3789909121064738e-03,0.0000000000000000e+00,0,1,2.1732609999999999e-02, +107,3.0761265951889914e-02,1.7418216905440556e-02,3.1880117849303995e-02,1.7492456609283549e+00,3.8282664577658526e-02,1.7493251844377479e+01,1.7492458416916508e+00,4.2801320177733866e-02,1.7603979992915697e+01,1.7492456609283549e+00,3.8282664577658526e-02,1.7493251844377479e+01,1.7492458416916508e+00,4.2801320177733866e-02,1.7603979992915697e+01,2.7980395998957186e-02,1.5843580929737852e-02,3.1283033745515776e-02,1.5923211111316702e-02,4.9999999999999961e-01,nan,nan,3.6983778721616963e-02,5.1036608723129678e-03,9.0959832546287400e-01,0.0000000000000000e+00,3.0761265951889914e-02,1.7418216905440556e-02,3.1880117849303995e-02,2.7980395998957186e-02,1.5843580929737852e-02,3.1283033745515776e-02,1.5923211111316702e-02,4.9999999999999961e-01,nan,nan,3.6983778721616963e-02,5.1036608723129678e-03,9.0959832546287400e-01,0.0000000000000000e+00,1.7493251844377472e+01,3.4984913218567101e-02,1.9141332288829249e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.8615123249733626e-03,7.2922684874600421e-03,3.1845923231204054e-03,4.7768884846806081e-03,0.0000000000000000e+00,0,1,2.1900493000000000e-02, +108,3.4933137438963605e-02,1.4785791157651008e-02,2.6231913445021036e-02,1.7482366974570738e+00,4.2900130759076963e-02,1.7483046180705028e+01,1.7482368293960029e+00,4.7963804310462869e-02,1.7593959579199900e+01,1.7482366974570738e+00,4.2900130759076963e-02,1.7483046180705028e+01,1.7482368293960029e+00,4.7963804310462869e-02,1.7593959579199900e+01,3.1929963675945028e-02,1.3514668569600784e-02,3.5698784649256098e-02,1.3582766670953941e-02,5.0000000000005163e-01,nan,nan,3.6583508692908911e-02,1.0351595247887875e-02,9.1403080332346820e-01,0.0000000000000000e+00,3.4933137438963605e-02,1.4785791157651008e-02,2.6231913445021036e-02,3.1929963675945028e-02,1.3514668569600784e-02,3.5698784649256098e-02,1.3582766670953941e-02,5.0000000000005163e-01,nan,nan,3.6583508692908911e-02,1.0351595247887875e-02,9.1403080332346820e-01,0.0000000000000000e+00,1.7483046180705028e+01,3.4964733949141479e-02,2.1450065379540695e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.7444404781550381e-03,7.1166607172325532e-03,2.9208753392969550e-03,4.3813130089454325e-03,0.0000000000000000e+00,0,1,2.2117708000000000e-02, +109,3.8243547130718182e-02,1.1915749974699777e-02,2.0190686188059415e-02,1.7474627271693424e+00,4.8030807021499589e-02,1.7475177768288130e+01,1.7474628138797736e+00,5.3700074757123628e-02,1.7586242020935476e+01,1.7474627271693424e+00,4.8030807021499589e-02,1.7475177768288130e+01,1.7474628138797736e+00,5.3700074757123628e-02,1.7586242020935476e+01,3.5092146795186796e-02,1.0933851032637082e-02,3.9234212855219532e-02,1.0989143934222062e-02,4.9999999999999944e-01,nan,nan,3.6267415762794054e-02,1.6076729574734640e-02,9.1759654707865468e-01,0.0000000000000000e+00,3.8243547130718182e-02,1.1915749974699777e-02,2.0190686188059415e-02,3.5092146795186796e-02,1.0933851032637082e-02,3.9234212855219532e-02,1.0989143934222062e-02,4.9999999999999944e-01,nan,nan,3.6267415762794054e-02,1.6076729574734640e-02,9.1759654707865468e-01,0.0000000000000000e+00,1.7475177768288134e+01,3.4949254543386848e-02,2.4015403510749767e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.6364556474727987e-03,6.9546834712092588e-03,3.2884984442049653e-03,4.9327476663074479e-03,0.0000000000000000e+00,0,1,2.2349403000000000e-02, +110,4.0654823975478017e-02,8.8713689521682272e-03,1.3884258687468072e-02,1.7469366973371190e+00,5.3550010534188286e-02,1.7469779203777851e+01,1.7469367459748018e+00,5.9870731875137417e-02,1.7580957115361112e+01,1.7469366973371190e+00,5.3550010534188286e-02,1.7469779203777851e+01,1.7469367459748018e+00,5.9870731875137417e-02,1.7580957115361112e+01,3.7411920780675345e-02,8.1637286796482356e-03,4.1827799017213438e-02,8.2052545108363354e-03,5.0000000000000000e-01,nan,nan,3.6038019192791912e-02,2.2153760505323840e-02,9.2023324964440356e-01,0.0000000000000000e+00,4.0654823975478017e-02,8.8713689521682272e-03,1.3884258687468072e-02,3.7411920780675345e-02,8.1637286796482356e-03,4.1827799017213438e-02,8.2052545108363354e-03,5.0000000000000000e-01,nan,nan,3.6038019192791912e-02,2.2153760505323840e-02,9.2023324964440356e-01,0.0000000000000000e+00,1.7469779203777847e+01,3.4938733946742379e-02,2.6775005267094143e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.5427079312896435e-03,6.8140618969344405e-03,3.5757200319475324e-03,5.3635800479212986e-03,0.0000000000000000e+00,0,1,2.2543382000000001e-02, +111,4.2145681244284507e-02,5.7164829095013763e-03,7.4405986272540053e-03,1.7466656949496635e+00,5.9326570853864988e-02,1.7466924639573179e+01,1.7466657154624545e+00,6.6329122650599925e-02,1.7578177123084842e+01,1.7466656949496635e+00,5.9326570853864988e-02,1.7466924639573179e+01,1.7466657154624545e+00,6.6329122650599925e-02,1.7578177123084842e+01,3.8854124756081965e-02,5.2700284720607685e-03,4.3440232080428277e-02,5.2971531981494549e-03,5.0000000000000011e-01,nan,nan,3.5896532341911397e-02,2.8455933714657392e-02,9.2190050341993413e-01,0.0000000000000000e+00,4.2145681244284507e-02,5.7164829095013763e-03,7.4405986272540053e-03,3.8854124756081965e-02,5.2700284720607685e-03,4.3440232080428277e-02,5.2971531981494549e-03,5.0000000000000011e-01,nan,nan,3.5896532341911397e-02,2.8455933714657392e-02,9.2190050341993413e-01,0.0000000000000000e+00,1.7466924639573186e+01,3.4933313898993269e-02,2.9663285426932501e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.4671441126028907e-03,6.7007161689043712e-03,3.7777290901502072e-03,5.6665936352253109e-03,0.0000000000000000e+00,0,1,2.2753157000000003e-02, +112,4.2710659235105287e-02,2.5147307063848835e-03,9.8645451188765498e-04,1.7466508513438312e+00,6.5225951281937727e-02,1.7466628752071081e+01,1.7466508554824169e+00,7.2924830481751149e-02,1.7577915775593130e+01,1.7466508513438312e+00,6.5225951281937727e-02,1.7466628752071081e+01,1.7466508554824169e+00,7.2924830481751149e-02,1.7577915775593130e+01,3.9404019203071350e-02,2.3200413859099933e-03,4.4055032762387113e-02,2.3324710818303732e-03,4.9999999999996575e-01,nan,nan,3.5842963587806115e-02,3.4856509075918460e-02,9.2258044967575448e-01,0.0000000000000000e+00,4.2710659235105287e-02,2.5147307063848835e-03,9.8645451188765498e-04,3.9404019203071350e-02,2.3200413859099933e-03,4.4055032762387113e-02,2.3324710818303732e-03,4.9999999999996575e-01,nan,nan,3.5842963587806115e-02,3.4856509075918460e-02,9.2258044967575448e-01,0.0000000000000000e+00,1.7466628752071081e+01,3.4933017026876623e-02,3.2612975640966629e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.4120097597695161e-03,6.6180146396542681e-03,3.8917188105233244e-03,5.8375782157849866e-03,0.0000000000000000e+00,0,1,2.2991109999999999e-02, +113,4.2359627094264211e-02,6.7112508409932924e-04,5.3539189429616385e-03,1.7468873975042714e+00,7.1113423543399834e-02,1.7468847215367937e+01,1.7468873977092303e+00,7.9507224577888003e-02,1.7580128761903705e+01,1.7468873975042714e+00,7.1113423543399834e-02,1.7468847215367937e+01,1.7468873977092303e+00,7.9507224577888003e-02,1.7580128761903705e+01,3.9067347190146262e-02,6.1896382161671232e-04,4.3678622008876393e-02,6.2127331606085120e-04,5.0000000000003120e-01,nan,nan,3.5876184257902871e-02,4.1230103200864510e-02,9.2227788273981892e-01,0.0000000000000000e+00,4.2359627094264211e-02,6.7112508409932924e-04,5.3539189429616385e-03,3.9067347190146262e-02,6.1896382161671232e-04,4.3678622008876393e-02,6.2127331606085120e-04,5.0000000000003120e-01,nan,nan,3.5876184257902871e-02,4.1230103200864510e-02,9.2227788273981892e-01,0.0000000000000000e+00,1.7468847215367926e+01,3.4937747950085425e-02,3.5556711771702137e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3775349535393740e-03,6.5663024303090683e-03,3.9169235655580753e-03,5.8753853483371130e-03,0.0000000000000000e+00,0,1,2.3254145000000000e-02, +114,4.1117351036160960e-02,3.7798407579807936e-03,1.1460018897686330e-02,1.7473648693884547e+00,7.6857211155176935e-02,1.7473478676076574e+01,1.7473648776597823e+00,8.5928974352015380e-02,1.7584715689346016e+01,1.7473648693884547e+00,7.6857211155176935e-02,1.7473478676076574e+01,1.7473648776597823e+00,8.5928974352015380e-02,1.7584715689346016e+01,3.7869894546145644e-02,3.4813081898215775e-03,4.2339829252964832e-02,3.4978752025505628e-03,5.0000000000002875e-01,nan,nan,3.5993963757327198e-02,4.7453982655013528e-02,9.2101980287690921e-01,0.0000000000000000e+00,4.1117351036160960e-02,3.7798407579807936e-03,1.1460018897686330e-02,3.7869894546145644e-02,3.4813081898215775e-03,4.2339829252964832e-02,3.4978752025505628e-03,5.0000000000002875e-01,nan,nan,3.5993963757327198e-02,4.7453982655013528e-02,9.2101980287690921e-01,0.0000000000000000e+00,1.7473478676076585e+01,3.4947297387769097e-02,3.8428605577590674e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3618890862116705e-03,6.5428336293175066e-03,3.8546060231253315e-03,5.7819090346879973e-03,0.0000000000000000e+00,0,1,2.3428591999999998e-02, +115,3.9023113054058159e-02,6.7523311274858095e-03,1.7216400749884037e-02,1.7480674573216270e+00,8.2331517017843886e-02,1.7480368171817446e+01,1.7480674841746573e+00,9.2049434371289846e-02,1.7591523461515429e+01,1.7480674573216270e+00,8.2331517017843886e-02,1.7480368171817446e+01,1.7480674841746573e+00,9.2049434371289846e-02,1.7591523461515429e+01,3.5856560262665482e-02,6.2044093624916072e-03,4.0088853093319263e-02,6.2345988488580056e-03,5.0000000000002676e-01,nan,nan,3.6192975099838473e-02,5.3409375849722510e-02,9.1885442898914560e-01,0.0000000000000000e+00,3.9023113054058159e-02,6.7523311274858095e-03,1.7216400749884037e-02,3.5856560262665482e-02,6.2044093624916072e-03,4.0088853093319263e-02,6.2345988488580056e-03,5.0000000000002676e-01,nan,nan,3.6192975099838473e-02,5.3409375849722510e-02,9.1885442898914560e-01,0.0000000000000000e+00,1.7480368171817446e+01,3.4961349146432542e-02,4.1165758508924150e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3614265368934904e-03,6.5421398053402630e-03,3.7079946796519381e-03,5.5619920194779071e-03,0.0000000000000000e+00,0,1,2.3607583000000001e-02, +116,3.6130343483083305e-02,9.5323363321219087e-03,2.2514084747833438e-02,1.7489744883472711e+00,8.7419354263524124e-02,1.7489311884256828e+01,1.7489745419467717e+00,9.7737809341187989e-02,1.7600350965904060e+01,1.7489744883472711e+00,8.7419354263524124e-02,1.7489311884256828e+01,1.7489745419467717e+00,9.7737809341187989e-02,1.7600350965904060e+01,3.3089964219955803e-02,8.7301873648166287e-03,3.6995704684428095e-02,8.7730339511833053e-03,4.9999999999999983e-01,nan,nan,3.6468776784051055e-02,5.8982861531884492e-02,9.1584969944857986e-01,0.0000000000000000e+00,3.6130343483083305e-02,9.5323363321219087e-03,2.2514084747833438e-02,3.3089964219955803e-02,8.7301873648166287e-03,3.6995704684428095e-02,8.7730339511833053e-03,4.9999999999999983e-01,nan,nan,3.6468776784051055e-02,5.8982861531884492e-02,9.1584969944857986e-01,0.0000000000000000e+00,1.7489311884256828e+01,3.4979489766945419e-02,4.3709677131762048e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3711683847362306e-03,6.5567525771043165e-03,3.4821736711524998e-03,5.2232605067287496e-03,0.0000000000000000e+00,0,1,2.3784092000000000e-02, +117,3.2506212981893240e-02,1.2067138956757406e-02,2.7252097655296362e-02,1.7500610257171390e+00,9.2015106081966752e-02,1.7500063070381053e+01,1.7500611112608349e+00,1.0287601607806598e-01,1.7610954917562857e+01,1.7500610257171390e+00,9.2015106081966752e-02,1.7500063070381053e+01,1.7500611112608349e+00,1.0287601607806598e-01,1.7610954917562857e+01,2.9648634240698968e-02,1.1006332526642799e-02,3.3148180801115874e-02,1.1060606186875665e-02,5.0000000000002398e-01,nan,nan,3.6815779480012120e-02,6.4067877135308482e-02,9.1209130565944374e-01,0.0000000000000000e+00,3.2506212981893240e-02,1.2067138956757406e-02,2.7252097655296362e-02,2.9648634240698968e-02,1.1006332526642799e-02,3.3148180801115874e-02,1.1060606186875665e-02,5.0000000000002398e-01,nan,nan,3.6815779480012120e-02,6.4067877135308482e-02,9.1209130565944374e-01,0.0000000000000000e+00,1.7500063070381042e+01,3.5001220514342783e-02,4.6007553040985583e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3854123645936374e-03,6.5781185468904557e-03,3.1839282449540318e-03,4.7758923674310477e-03,0.0000000000000000e+00,0,1,2.3957522999999998e-02, +118,2.8231115356471301e-02,1.4308345491881404e-02,3.1339162850203231e-02,1.7512985657367692e+00,9.6026749789079408e-02,1.7512338975772444e+01,1.7512986851330503e+00,1.0736117009337257e-01,1.7623056666085006e+01,1.7512985657367692e+00,9.6026749789079408e-02,1.7512338975772444e+01,1.7512986851330503e+00,1.0736117009337257e-01,1.7623056666085006e+01,2.5624827751781543e-02,1.2987403579802083e-02,2.8649428382353195e-02,1.3051645110373836e-02,4.9999999999997674e-01,nan,nan,3.7227208298958696e-02,6.8566371149161920e-02,9.0768031755811129e-01,0.0000000000000000e+00,2.8231115356471301e-02,1.4308345491881404e-02,3.1339162850203231e-02,2.5624827751781543e-02,1.2987403579802083e-02,2.8649428382353195e-02,1.3051645110373836e-02,4.9999999999997674e-01,nan,nan,3.7227208298958696e-02,6.8566371149161920e-02,9.0768031755811129e-01,0.0000000000000000e+00,1.7512338975772455e+01,3.5025971314735387e-02,4.8013374894537469e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3983544565163899e-03,6.5975316847744986e-03,2.8215506680037278e-03,4.2323260020055917e-03,0.0000000000000000e+00,0,1,2.4145620000000000e-02, +119,2.3397963175424245e-02,1.6212735040210008e-02,3.4695526932296133e-02,1.7526558091672904e+00,9.9377692294250683e-02,1.7525828503204018e+01,1.7526559610223518e+00,1.1110763770850078e-01,1.7636349743384443e+01,1.7526558091672904e+00,9.9377692294250683e-02,1.7525828503204018e+01,1.7526559610223518e+00,1.1110763770850078e-01,1.7636349743384443e+01,2.1122054353485020e-02,1.4635729963779542e-02,2.3615174679419013e-02,1.4708289802299657e-02,5.0000000000000011e-01,nan,nan,3.7695073415290700e-02,7.2390600347586834e-02,9.0273047252550187e-01,0.0000000000000000e+00,2.3397963175424245e-02,1.6212735040210008e-02,3.4695526932296133e-02,2.1122054353485020e-02,1.4635729963779542e-02,2.3615174679419013e-02,1.4708289802299657e-02,5.0000000000000011e-01,nan,nan,3.7695073415290700e-02,7.2390600347586834e-02,9.0273047252550187e-01,0.0000000000000000e+00,1.7525828503204011e+01,3.5053116183345806e-02,4.9688846147125348e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.4046338719298996e-03,6.6069508078948156e-03,2.9240710904414602e-03,4.3861066356621903e-03,0.0000000000000000e+00,0,1,2.4356656999999997e-02, +120,1.8111214617004854e-02,1.7743165286465901e-02,3.7254882522836874e-02,1.7540994824702829e+00,1.0200817773542585e-01,1.7540200390387280e+01,1.7540996623705267e+00,1.1404860983864638e-01,1.7650507910637707e+01,1.7540994824702829e+00,1.0200817773542585e-01,1.7540200390387280e+01,1.7540996623705267e+00,1.1404860983864638e-01,1.7650507910637707e+01,1.6252373882577165e-02,1.5922099218307270e-02,1.8170706398592237e-02,1.6001179551661013e-02,5.0000000000000011e-01,nan,nan,3.8210163294197221e-02,7.5465045817034088e-02,8.9736520858836277e-01,0.0000000000000000e+00,1.8111214617004854e-02,1.7743165286465901e-02,3.7254882522836874e-02,1.6252373882577165e-02,1.5922099218307270e-02,1.8170706398592237e-02,1.6001179551661013e-02,5.0000000000000011e-01,nan,nan,3.8210163294197221e-02,7.5465045817034088e-02,8.9736520858836277e-01,0.0000000000000000e+00,1.7540200390387280e+01,3.5081989649405662e-02,5.1004088867712932e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3997558279061672e-03,6.5996337418593254e-03,3.1847307459945684e-03,4.7770961189919081e-03,0.0000000000000000e+00,0,1,2.4530536999999998e-02, +121,1.2485553885275183e-02,1.8869511624211369e-02,3.8966316946993831e-02,1.7555951834344716e+00,1.0387624267711131e-01,1.7555111642863121e+01,1.7555953844835779e+00,1.1613716993664282e-01,1.7665193455030984e+01,1.7555951834344716e+00,1.0387624267711131e-01,1.7555111642863121e+01,1.7555953844835779e+00,1.1613716993664282e-01,1.7665193455030984e+01,1.1133549801730203e-02,1.6826217669866229e-02,1.2447687093773970e-02,1.6909916853038796e-02,5.0000000000000011e-01,nan,nan,3.8762075456450683e-02,7.7728392403444507e-02,8.9171452896939851e-01,0.0000000000000000e+00,1.2485553885275183e-02,1.8869511624211369e-02,3.8966316946993831e-02,1.1133549801730203e-02,1.6826217669866229e-02,1.2447687093773970e-02,1.6909916853038796e-02,5.0000000000000011e-01,nan,nan,3.8762075456450683e-02,7.7728392403444507e-02,8.9171452896939851e-01,0.0000000000000000e+00,1.7555111642863125e+01,3.5111903668689430e-02,5.1938121338555659e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3803829135673263e-03,6.5705743703508629e-03,3.3683757805703651e-03,5.0525636708554922e-03,0.0000000000000000e+00,0,1,2.4778326999999999e-02, +122,6.6441601743934256e-03,1.9569600836184094e-02,3.9796187197258096e-02,1.7571082261232289e+00,1.0495820917293398e-01,1.7570215971654100e+01,1.7571084396722798e+00,1.1734684525366118e-01,1.7680065490457299e+01,1.7571082261232289e+00,1.0495820917293398e-01,1.7570215971654100e+01,1.7571084396722798e+00,1.1734684525366118e-01,1.7680065490457299e+01,5.8861398187594061e-03,1.7336940064002403e-02,6.5809043799068892e-03,1.7423298232997056e-02,4.9999999999999994e-01,nan,nan,3.9339299228835403e-02,7.9135486426093499e-02,8.8591178783506341e-01,0.0000000000000000e+00,6.6441601743934256e-03,1.9569600836184094e-02,3.9796187197258096e-02,5.8861398187594061e-03,1.7336940064002403e-02,6.5809043799068892e-03,1.7423298232997056e-02,4.9999999999999994e-01,nan,nan,3.9339299228835403e-02,7.9135486426093499e-02,8.8591178783506341e-01,0.0000000000000000e+00,1.7570215971654093e+01,3.5142164522464582e-02,5.2479104586466985e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3445072062422169e-03,6.5167608093632794e-03,3.4725994807766059e-03,5.2088992211648533e-03,0.0000000000000000e+00,0,1,2.4970258000000002e-02, +123,7.1652242915932844e-04,1.9830087102799199e-02,3.9729796100684403e-02,1.7586044615331651e+00,1.0524872047193828e-01,1.7585171999449457e+01,1.7586046780282460e+00,1.1767164676006386e-01,1.7694788030126965e+01,1.7586044615331651e+00,1.0524872047193828e-01,1.7585171999449457e+01,1.7586046780282460e+00,1.1767164676006386e-01,1.7694788030126965e+01,6.3060457325492258e-04,1.7452271005305810e-02,7.0503734636007673e-04,1.7539315755012479e-02,4.9999999999999972e-01,nan,nan,3.9929362930999072e-02,7.9659159031683469e-02,8.8009048648315114e-01,0.0000000000000000e+00,7.1652242915932844e-04,1.9830087102799199e-02,3.9729796100684403e-02,6.3060457325492258e-04,1.7452271005305810e-02,7.0503734636007673e-04,1.7539315755012479e-02,4.9999999999999972e-01,nan,nan,3.9929362930999072e-02,7.9659159031683469e-02,8.8009048648315114e-01,0.0000000000000000e+00,1.7585171999449464e+01,3.5172089230663305e-02,5.2624360235969114e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.2915225520404367e-03,6.4372838280606099e-03,3.4968845635424683e-03,5.2453268453136470e-03,0.0000000000000000e+00,0,1,2.5185237999999999e-02, +124,5.1642109397263833e-03,1.9647206967574774e-02,3.8772726682385572e-02,1.7600510526956734e+00,1.0476033755710430e-01,1.7599651022175536e+01,1.7600512625612974e+00,1.1712561806175474e-01,1.7709037621635986e+01,1.7600510526956734e+00,1.0476033755710430e-01,1.7599651022175536e+01,1.7600512625612974e+00,1.1712561806175474e-01,1.7709037621635986e+01,4.5154887797109744e-03,1.7179147724636454e-02,5.0484699315354572e-03,1.7264938760983600e-02,4.9999999999997874e-01,nan,nan,4.0519054173370844e-02,7.9291780855756416e-02,8.7438116537319832e-01,0.0000000000000000e+00,5.1642109397263833e-03,1.9647206967574774e-02,3.8772726682385572e-02,4.5154887797109744e-03,1.7179147724636454e-02,5.0484699315354572e-03,1.7264938760983600e-02,4.9999999999997874e-01,nan,nan,4.0519054173370844e-02,7.9291780855756416e-02,8.7438116537319832e-01,0.0000000000000000e+00,1.7599651022175532e+01,3.5201021053913470e-02,5.2380168778549924e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.2222145510165121e-03,6.3333218265247682e-03,3.4425684021732739e-03,5.1638526032599108e-03,0.0000000000000000e+00,0,1,2.5360588999999999e-02, +125,1.0864317929217319e-02,1.9027343035298964e-02,3.6951685231391640e-02,1.7614171859760743e+00,1.0352272651342570e-01,1.7613344142738047e+01,1.7614173804545423e+00,1.1574192685006983e-01,1.7722510364356861e+01,1.7614171859760743e+00,1.0352272651342570e-01,1.7613344142738047e+01,1.7614173804545423e+00,1.1574192685006983e-01,1.7722510364356861e+01,9.4400978764498378e-03,1.6533019537191364e-02,1.0554350282996698e-02,1.6615691285523169e-02,5.0000000000000000e-01,nan,nan,4.1094716316064019e-02,7.8046401547455652e-02,8.6890847064247467e-01,0.0000000000000000e+00,1.0864317929217319e-02,1.9027343035298964e-02,3.6951685231391640e-02,9.4400978764498378e-03,1.6533019537191364e-02,1.0554350282996698e-02,1.6615691285523169e-02,5.0000000000000000e-01,nan,nan,4.1094716316064019e-02,7.8046401547455652e-02,8.6890847064247467e-01,0.0000000000000000e+00,1.7613344142738047e+01,3.5228343719521486e-02,5.1761363256712850e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.1386795458208565e-03,6.2080193187312380e-03,3.3127617483439398e-03,4.9691426225159097e-03,0.0000000000000000e+00,0,1,2.5510761999999999e-02, +126,1.6252949059813282e-02,1.7987325403376896e-02,3.4314711935625603e-02,1.7626747037938357e+00,1.0158147653328808e-01,1.7625968628167733e+01,1.7626748756694917e+00,1.1357154339161592e-01,1.7734928162784470e+01,1.7626747037938357e+00,1.0158147653328808e-01,1.7625968628167733e+01,1.7626748756694917e+00,1.1357154339161592e-01,1.7734928162784470e+01,1.4039109912083569e-02,1.5537244190767324e-02,1.5696202053505127e-02,1.5615045441098320e-02,5.0000000000000000e-01,nan,nan,4.1642616888554772e-02,7.5957328824180381e-02,8.6378846450681324e-01,0.0000000000000000e+00,1.6252949059813282e-02,1.7987325403376896e-02,3.4314711935625603e-02,1.4039109912083569e-02,1.5537244190767324e-02,1.5696202053505127e-02,1.5615045441098320e-02,5.0000000000000000e-01,nan,nan,4.1642616888554772e-02,7.5957328824180381e-02,8.6378846450681324e-01,0.0000000000000000e+00,1.7625968628167730e+01,3.5253494075876718e-02,5.0790738266644042e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.0441764987210888e-03,6.0662647480816349e-03,3.1122247105614953e-03,4.6683370658422429e-03,0.0000000000000000e+00,0,1,2.5663715000000000e-02, +127,2.1205811271386297e-02,1.6554406543407466e-02,3.0930643263424804e-02,1.7637986476617982e+00,9.8996595930470305e-02,1.7637273377957069e+01,1.7637987918136491e+00,1.1068155902080531e-01,1.7746044105333610e+01,1.7637986476617982e+00,9.8996595930470305e-02,1.7637273377957069e+01,1.7637987918136491e+00,1.1068155902080531e-01,1.7746044105333610e+01,1.8218468856247227e-02,1.4222325011996953e-02,2.0368867404265724e-02,1.4293654800212798e-02,4.9999999999997741e-01,nan,nan,4.2149375475266974e-02,7.3080018738691771e-02,8.5912623776059016e-01,0.0000000000000000e+00,2.1205811271386297e-02,1.6554406543407466e-02,3.0930643263424804e-02,1.8218468856247227e-02,1.4222325011996953e-02,2.0368867404265724e-02,1.4293654800212798e-02,4.9999999999997741e-01,nan,nan,4.2149375475266974e-02,7.3080018738691771e-02,8.5912623776059016e-01,0.0000000000000000e+00,1.7637273377957072e+01,3.5275972953235965e-02,4.9498297965232918e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.9429091153791616e-03,5.9143636730688235e-03,2.8472050446129993e-03,4.2708075669195544e-03,0.0000000000000000e+00,0,1,2.5823837000000002e-02, +128,2.5608924414750336e-02,1.4765860224965505e-02,2.6887752554188654e-02,1.7647677040959635e+00,9.5840738755919849e-02,1.7647043427783295e+01,1.7647678178405779e+00,1.0715320343601770e-01,1.7755646893826718e+01,1.7647677040959635e+00,9.5840738755919849e-02,1.7647043427783295e+01,1.7647678178405779e+00,1.0715320343601770e-01,1.7755646893826718e+01,2.1895985572502163e-02,1.2625015296042853e-02,2.4480456087234918e-02,1.2688454352452050e-02,5.0000000000002298e-01,nan,nan,4.2602430168606133e-02,6.9490182722794780e-02,8.5501387008235386e-01,0.0000000000000000e+00,2.5608924414750336e-02,1.4765860224965505e-02,2.6887752554188654e-02,2.1895985572502163e-02,1.2625015296042853e-02,2.4480456087234918e-02,1.2688454352452050e-02,5.0000000000002298e-01,nan,nan,4.2602430168606133e-02,6.9490182722794780e-02,8.5501387008235386e-01,0.0000000000000000e+00,1.7647043427783291e+01,3.5295354081919271e-02,4.7920369377962124e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.8397319230311028e-03,5.7595978845466156e-03,2.5252448796058147e-03,3.7878673194087220e-03,0.0000000000000000e+00,0,1,2.5990877000000003e-02, +129,2.9362253002520280e-02,1.2668177698285134e-02,2.2291551948616900e-02,1.7655645493850085e+00,9.2197217539948043e-02,1.7655103447116680e+01,1.7655646325920071e+00,1.0307962287782989e-01,1.7763564282608090e+01,1.7655645493850085e+00,9.2197217539948043e-02,1.7655103447116680e+01,1.7655646325920071e+00,1.0307962287782989e-01,1.7763564282608090e+01,2.5002803203856838e-02,1.0787317782273868e-02,2.7953983795936537e-02,1.0841655020360171e-02,5.0000000000000022e-01,nan,nan,4.2990514374102666e-02,6.5282066322719573e-02,8.5152877068768351e-01,0.0000000000000000e+00,2.9362253002520280e-02,1.2668177698285134e-02,2.2291551948616900e-02,2.5002803203856838e-02,1.0787317782273868e-02,2.7953983795936537e-02,1.0841655020360171e-02,5.0000000000000022e-01,nan,nan,4.2990514374102666e-02,6.5282066322719573e-02,8.5152877068768351e-01,0.0000000000000000e+00,1.7655103447116687e+01,3.5311290987700174e-02,4.6098608769974042e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.7397760125067597e-03,5.6096640187601118e-03,2.2847840416145987e-03,3.4271760624218980e-03,0.0000000000000000e+00,0,1,2.6165586000000001e-02, +130,3.2383000019471982e-02,1.0315863062453936e-02,1.7261804549011939e-02,1.7661760922777412e+00,8.8157858507545206e-02,1.7661320219884573e+01,1.7661761472606610e+00,9.8563482186839621e-02,1.7769665516372019e+01,1.7661760922777412e+00,8.8157858507545206e-02,1.7661320219884573e+01,1.7661761472606610e+00,9.8563482186839621e-02,1.7769665516372019e+01,2.7484501932059202e-02,8.7554074082199992e-03,3.0728607323904464e-02,8.7996610754614898e-03,5.0000000000002520e-01,nan,nan,4.3304110788918958e-02,6.0565915337930896e-02,8.4873241872379646e-01,0.0000000000000000e+00,3.2383000019471982e-02,1.0315863062453936e-02,1.7261804549011939e-02,2.7484501932059202e-02,8.7554074082199992e-03,3.0728607323904464e-02,8.7996610754614898e-03,5.0000000000002520e-01,nan,nan,4.3304110788918958e-02,6.0565915337930896e-02,8.4873241872379646e-01,0.0000000000000000e+00,1.7661320219884558e+01,3.5323521845554824e-02,4.4078929253774823e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.6480012462456733e-03,5.4720018693685136e-03,2.5738683370958304e-03,3.8608025056437456e-03,0.0000000000000000e+00,0,1,2.6380880000000002e-02, +131,3.4608354133115714e-02,7.7698616766285972e-03,1.1928863072054000e-02,1.7665936162447851e+00,8.3820754611705225e-02,1.7665604123368041e+01,1.7665936474488912e+00,9.3714452618550950e-02,1.7773862781379414e+01,1.7665936162447851e+00,8.3820754611705225e-02,1.7665604123368041e+01,1.7665936474488912e+00,9.3714452618550950e-02,1.7773862781379414e+01,2.9301838246660883e-02,6.5785049809591670e-03,3.2760451092618464e-02,6.6119382624590158e-03,5.0000000000002687e-01,nan,nan,4.3535847847254713e-02,5.5464710919308713e-02,8.4666951031406656e-01,0.0000000000000000e+00,3.4608354133115714e-02,7.7698616766285972e-03,1.1928863072054000e-02,2.9301838246660883e-02,6.5785049809591670e-03,3.2760451092618464e-02,6.6119382624590158e-03,5.0000000000002687e-01,nan,nan,4.3535847847254713e-02,5.5464710919308713e-02,8.4666951031406656e-01,0.0000000000000000e+00,1.7665604123368048e+01,3.5331872324895701e-02,4.1910377305854868e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.5687039907050032e-03,5.3530559860575592e-03,2.7993970088356773e-03,4.1990955132535160e-03,0.0000000000000000e+00,0,1,2.6548870000000002e-02, +132,3.5997508087048692e-02,5.0956868940561350e-03,6.4295116614785652e-03,1.7668128250473423e+00,7.9287969263188277e-02,1.7667909641337836e+01,1.7668128385716821e+00,8.8646644535201449e-02,1.7776111705258113e+01,1.7668128250473423e+00,7.9287969263188277e-02,1.7667909641337836e+01,1.7668128385716821e+00,8.8646644535201449e-02,1.7776111705258113e+01,3.0431123702019724e-02,4.3077281306472884e-03,3.4023030614710702e-02,4.3298592891944836e-03,4.9999999999999989e-01,nan,nan,4.3680806467669302e-02,5.0110318129147867e-02,8.4536750789614623e-01,0.0000000000000000e+00,3.5997508087048692e-02,5.0956868940561350e-03,6.4295116614785652e-03,3.0431123702019724e-02,4.3077281306472884e-03,3.4023030614710702e-02,4.3298592891944836e-03,4.9999999999999989e-01,nan,nan,4.3680806467669302e-02,5.0110318129147867e-02,8.4536750789614623e-01,0.0000000000000000e+00,1.7667909641337832e+01,3.5336256500946843e-02,3.9643984631594131e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.5050394881789826e-03,5.2575592322684364e-03,2.9579607677969327e-03,4.4369411516953991e-03,0.0000000000000000e+00,0,1,2.6715706999999998e-02, +133,3.6532812684646636e-02,2.3613372872284561e-03,9.0253277469123927e-04,1.7668337969004706e+00,7.4663240101985384e-02,1.7668234963070120e+01,1.7668337999030796e+00,8.3476040144213837e-02,1.7776410956015965e+01,1.7668337969004706e+00,7.4663240101985384e-02,1.7668234963070120e+01,1.7668337999030796e+00,8.3476040144213837e-02,1.7776410956015965e+01,3.0864256449149363e-02,1.9949441129833087e-03,3.4507287747641904e-02,2.0055530170425594e-03,5.0000000000000033e-01,nan,nan,4.3736711534115125e-02,4.4639244308806364e-02,8.4483657788879885e-01,0.0000000000000000e+00,3.6532812684646636e-02,2.3613372872284561e-03,9.0253277469123927e-04,3.0864256449149363e-02,1.9949441129833087e-03,3.4507287747641904e-02,2.0055530170425594e-03,5.0000000000000033e-01,nan,nan,4.3736711534115125e-02,4.4639244308806364e-02,8.4483657788879885e-01,0.0000000000000000e+00,1.7668234963070120e+01,3.5336675938009411e-02,3.7331620050992720e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4586434934707074e-03,5.1879652402060591e-03,3.0476985046384297e-03,4.5715477569576437e-03,0.0000000000000000e+00,0,1,2.6891829999999999e-02, +134,3.6219992675545952e-02,3.6488472200197128e-04,4.5157551117161882e-03,1.7666608535922359e+00,7.0049727956244881e-02,1.7666620730730173e+01,1.7666608536343247e+00,7.8317976757765487e-02,1.7774801001645333e+01,1.7666608535922359e+00,7.0049727956244881e-02,1.7666620730730173e+01,1.7666608536343247e+00,7.8317976757765487e-02,1.7774801001645333e+01,3.0608425408509499e-02,3.0835309372225644e-04,3.4221259948829651e-02,3.0931615502390497e-04,5.0000000000000033e-01,nan,nan,4.3703992467633415e-02,3.9188237355917227e-02,8.4506989503548069e-01,0.0000000000000000e+00,3.6219992675545952e-02,3.6488472200197128e-04,4.5157551117161882e-03,3.0608425408509499e-02,3.0835309372225644e-04,3.4221259948829651e-02,3.0931615502390497e-04,5.0000000000000033e-01,nan,nan,4.3703992467633415e-02,3.9188237355917227e-02,8.4506989503548069e-01,0.0000000000000000e+00,1.7666620730730173e+01,3.5333217071844718e-02,3.5024863978122461e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4294401252451504e-03,5.1441601878677284e-03,3.0682910988223538e-03,4.6024366482335308e-03,0.0000000000000000e+00,0,1,2.7042909000000000e-02, +135,3.5087420668922509e-02,3.0165338333842362e-03,9.6957439212600055e-03,1.7663023515898006e+00,6.5547851636576282e-02,1.7663148004421494e+01,1.7663023559767599e+00,7.3284726019227711e-02,1.7771362098495118e+01,1.7663023515898006e+00,6.5547851636576282e-02,1.7663148004421494e+01,1.7663023559767599e+00,7.3284726019227711e-02,1.7771362098495118e+01,2.9685511770298323e-02,2.5521212135078478e-03,3.3189411132628584e-02,2.5642371688977378e-03,5.0000000000000044e-01,nan,nan,4.3585709160691856e-02,3.3889965239431850e-02,8.4604428608202753e-01,0.0000000000000000e+00,3.5087420668922509e-02,3.0165338333842362e-03,9.6957439212600055e-03,2.9685511770298323e-02,2.5521212135078478e-03,3.3189411132628584e-02,2.5642371688977378e-03,5.0000000000000044e-01,nan,nan,4.3585709160691856e-02,3.3889965239431850e-02,8.4604428608202753e-01,0.0000000000000000e+00,1.7663148004421494e+01,3.5326047031796017e-02,3.2773925818288169e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4156894363956852e-03,5.1235341545935306e-03,3.0209235078369479e-03,4.5313852617554218e-03,0.0000000000000000e+00,0,1,2.7233868000000001e-02, +136,3.3184514333128246e-02,5.5310469887941433e-03,1.4518346051324515e-02,1.7657704025256458e+00,6.1253244722985503e-02,1.7657935517933602e+01,1.7657704177000022e+00,6.8483209521512933e-02,1.7766211580376289e+01,1.7657704025256458e+00,6.1253244722985503e-02,1.7657935517933602e+01,1.7657704177000022e+00,6.8483209521512933e-02,1.7766211580376289e+01,2.8131215702454915e-02,4.6887856890179200e-03,3.1451655300199395e-02,4.7115885512029089e-03,5.0000000000003664e-01,nan,nan,4.3387351753521881e-02,2.8869005702197366e-02,8.4772118163475418e-01,0.0000000000000000e+00,3.3184514333128246e-02,5.5310469887941433e-03,1.4518346051324515e-02,2.8131215702454915e-02,4.6887856890179200e-03,3.1451655300199395e-02,4.7115885512029089e-03,5.0000000000003664e-01,nan,nan,4.3387351753521881e-02,2.8869005702197366e-02,8.4772118163475418e-01,0.0000000000000000e+00,1.7657935517933602e+01,3.5315408050512913e-02,3.0626622361494993e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4142668177441580e-03,5.1214002266162422e-03,2.9082175568779095e-03,4.3623263353168643e-03,0.0000000000000000e+00,0,1,2.7437287999999997e-02, +137,3.0579382328783326e-02,7.8515315924040981e-03,1.8878191983102352e-02,1.7650805306198289e+00,5.7254866238723029e-02,1.7651136299956388e+01,1.7650805616543526e+00,6.4012886476221192e-02,1.7759500522195260e+01,1.7650805306198289e+00,5.7254866238723029e-02,1.7651136299956388e+01,1.7650805616543526e+00,6.4012886476221192e-02,1.7759500522195260e+01,2.5993937983666227e-02,6.6741774930373018e-03,2.9062106167195900e-02,6.7069272159584409e-03,4.9999999999996098e-01,nan,nan,4.3116533515588883e-02,2.4238341532486531e-02,8.5004784283033152e-01,0.0000000000000000e+00,3.0579382328783326e-02,7.8515315924040981e-03,1.8878191983102352e-02,2.5993937983666227e-02,6.6741774930373018e-03,2.9062106167195900e-02,6.7069272159584409e-03,4.9999999999996098e-01,nan,nan,4.3116533515588883e-02,2.4238341532486531e-02,8.5004784283033152e-01,0.0000000000000000e+00,1.7651136299956388e+01,3.5301610612396582e-02,2.8627433119359280e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4211053248504263e-03,5.1316579872756393e-03,2.7341381370360462e-03,4.1012072055540694e-03,0.0000000000000000e+00,0,1,2.7627308999999999e-02, +138,2.7355889105648019e-02,9.9282387549483112e-03,2.2686096714707699e-02,1.7642512746626808e+00,5.3633293192942078e-02,1.7642933736312358e+01,1.7642513248914422e+00,5.9963844718297625e-02,1.7751409852800172e+01,1.7642512746626808e+00,5.3633293192942078e-02,1.7642933736312358e+01,1.7642513248914422e+00,5.9963844718297625e-02,1.7751409852800172e+01,2.3333447122176776e-02,8.4683788967803292e-03,2.6087586957291832e-02,8.5101333950060136e-03,5.0000000000004197e-01,nan,nan,4.2782604057685289e-02,2.0096507342977590e-02,8.5295882842861970e-01,0.0000000000000000e+00,2.7355889105648019e-02,9.9282387549483112e-03,2.2686096714707699e-02,2.3333447122176776e-02,8.4683788967803292e-03,2.6087586957291832e-02,8.5101333950060136e-03,5.0000000000004197e-01,nan,nan,4.2782604057685289e-02,2.0096507342977590e-02,8.5295882842861970e-01,0.0000000000000000e+00,1.7642933736312358e+01,3.5285025493253616e-02,2.6816646596473287e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4317007984751477e-03,5.1475511977127518e-03,2.5038756952747362e-03,3.7558135429121078e-03,0.0000000000000000e+00,0,1,2.7820925999999999e-02, +139,2.3610334011579609e-02,1.1719671712551500e-02,2.5870738838323526e-02,1.7633037422498923e+00,5.0459219436172861e-02,1.7633537149522894e+01,1.7633038130621657e+00,5.6415122375430567e-02,1.7742145992583264e+01,1.7633037422498923e+00,5.0459219436172861e-02,1.7633537149522894e+01,1.7633038130621657e+00,5.6415122375430567e-02,1.7742145992583264e+01,2.0219362773465588e-02,1.0036465126913627e-02,2.2605934811598942e-02,1.0086106316994106e-02,4.9999999999995615e-01,nan,nan,4.2396214407191837e-02,1.6525475568868311e-02,8.5637766765811396e-01,0.0000000000000000e+00,2.3610334011579609e-02,1.1719671712551500e-02,2.5870738838323526e-02,2.0219362773465588e-02,1.0036465126913627e-02,2.2605934811598942e-02,1.0086106316994106e-02,4.9999999999995615e-01,nan,nan,4.2396214407191837e-02,1.6525475568868311e-02,8.5637766765811396e-01,0.0000000000000000e+00,1.7633537149522894e+01,3.5266074844997844e-02,2.5229609718084217e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4415875485733411e-03,5.1623813228600058e-03,2.2237079963636844e-03,3.3355619945455231e-03,0.0000000000000000e+00,0,1,2.7998216999999999e-02, +140,1.9447945310701445e-02,1.3193309335496384e-02,2.8379556060735084e-02,1.7622611241009756e+00,4.7792182043757250e-02,1.7623176973495660e+01,1.7622612149085275e+00,5.3433283921443017e-02,1.7731936092910498e+01,1.7622611241009756e+00,4.7792182043757250e-02,1.7623176973495660e+01,1.7622612149085275e+00,5.3433283921443017e-02,1.7731936092910498e+01,1.6729486313713959e-02,1.1349131460140896e-02,1.8704134313058691e-02,1.1405393368137525e-02,4.9999999999999983e-01,nan,nan,4.1968865960406256e-02,1.3589309899671172e-02,8.6021870415834500e-01,0.0000000000000000e+00,1.9447945310701445e-02,1.3193309335496384e-02,2.8379556060735084e-02,1.6729486313713959e-02,1.1349131460140896e-02,1.8704134313058691e-02,1.1405393368137525e-02,4.9999999999999983e-01,nan,nan,4.1968865960406256e-02,1.3589309899671172e-02,8.6021870415834500e-01,0.0000000000000000e+00,1.7623176973495653e+01,3.5245222482019514e-02,2.3896091021878618e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4467259295222282e-03,5.1700888942833425e-03,2.2789555988891319e-03,3.4184333983336979e-03,0.0000000000000000e+00,0,1,2.8153443000000000e-02, +141,1.4979376681564313e-02,1.4325952487013956e-02,3.0178912146554160e-02,1.7611481765480195e+00,4.5679533386983065e-02,1.7612099603756171e+01,1.7611482849216726e+00,5.1071270916882683e-02,1.7721022957088572e+01,1.7611481765480195e+00,4.5679533386983065e-02,1.7612099603756171e+01,1.7611482849216726e+00,5.1071270916882683e-02,1.7721022957088572e+01,1.2948009573435226e-02,1.2383196837471057e-02,1.4476314789759288e-02,1.2444696077312471e-02,4.9999999999995187e-01,nan,nan,4.1512472420343872e-02,1.1333560273789713e-02,8.6438907630721595e-01,0.0000000000000000e+00,1.4979376681564313e-02,1.4325952487013956e-02,3.0178912146554160e-02,1.2948009573435226e-02,1.2383196837471057e-02,1.4476314789759288e-02,1.2444696077312471e-02,4.9999999999995187e-01,nan,nan,4.1512472420343872e-02,1.1333560273789713e-02,8.6438907630721595e-01,0.0000000000000000e+00,1.7612099603756189e+01,3.5222963530960390e-02,2.2839766693489333e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4437808342664038e-03,5.1656712513996408e-03,2.4845331319695019e-03,3.7267996979541973e-03,0.0000000000000000e+00,0,1,2.8350757000000001e-02, +142,1.0317366624045256e-02,1.5103724205857986e-02,3.1253628573396988e-02,1.7599906806705132e+00,4.4155673990102229e-02,1.7600562007611607e+01,1.7599908026280378e+00,4.9367544317093982e-02,1.7709659726484755e+01,1.7599906806705132e+00,4.4155673990102229e-02,1.7600562007611607e+01,1.7599908026280378e+00,4.9367544317093982e-02,1.7709659726484755e+01,8.9636331912927858e-03,1.3121976618359149e-02,1.0021646570552122e-02,1.3187244719200823e-02,5.0000000000000000e-01,nan,nan,4.1038958412042775e-02,9.7853298386457871e-03,8.6879079884614052e-01,0.0000000000000000e+00,1.0317366624045256e-02,1.5103724205857986e-02,3.1253628573396988e-02,8.9636331912927858e-03,1.3121976618359149e-02,1.0021646570552122e-02,1.3187244719200823e-02,5.0000000000000000e-01,nan,nan,4.1038958412042775e-02,9.7853298386457871e-03,8.6879079884614052e-01,0.0000000000000000e+00,1.7600562007611597e+01,3.5199813613410263e-02,2.2077836995051114e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4302972532050469e-03,5.1454458798076115e-03,2.6312372082593072e-03,3.9468558123889608e-03,0.0000000000000000e+00,0,1,2.8526444999999997e-02, +143,5.5736850981647507e-03,1.5521771594834911e-02,3.1605997927828734e-02,1.7588148870594524e+00,4.3241558009791847e-02,1.7588826183789703e+01,1.7588150174748676e+00,4.8345531581447547e-02,1.7698104420446011e+01,1.7588148870594524e+00,4.3241558009791847e-02,1.7588826183789703e+01,1.7588150174748676e+00,4.8345531581447547e-02,1.7698104420446011e+01,4.8676268888991903e-03,1.3555518736293126e-02,5.4421723063422522e-03,1.3623035670050299e-02,5.0000000000000000e-01,nan,nan,4.0559911623987699e-02,8.9539136961589647e-03,8.7332290991860217e-01,0.0000000000000000e+00,5.5736850981647507e-03,1.5521771594834911e-02,3.1605997927828734e-02,4.8676268888991903e-03,1.3555518736293126e-02,5.4421723063422522e-03,1.3623035670050299e-02,5.0000000000000000e-01,nan,nan,4.0559911623987699e-02,8.9539136961589647e-03,8.7332290991860217e-01,0.0000000000000000e+00,1.7588826183789706e+01,3.5176297741189050e-02,2.1620779004895924e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.4047918137796824e-03,5.1071877206695657e-03,2.7171715295906118e-03,4.0757572943859177e-03,0.0000000000000000e+00,0,1,2.8702978000000001e-02, +144,8.5645193098543495e-04,1.5583727301505829e-02,3.1254405656323814e-02,1.7576469557779548e+00,4.2944479533389091e-02,1.7577153567028027e+01,1.7576470888731230e+00,4.8013387747503231e-02,1.7686614424417225e+01,1.7576469557779548e+00,4.2944479533389091e-02,1.7577153567028027e+01,1.7576470888731230e+00,4.8013387747503231e-02,1.7686614424417225e+01,7.5186514419012251e-04,1.3680699348864553e-02,8.4061078616092238e-04,1.3748927568433282e-02,5.0000000000000000e-01,nan,nan,4.0086298123205355e-02,8.8318924668815413e-03,8.7788364645873973e-01,0.0000000000000000e+00,8.5645193098543495e-04,1.5583727301505829e-02,3.1254405656323814e-02,7.5186514419012251e-04,1.3680699348864553e-02,8.4061078616092238e-04,1.3748927568433282e-02,5.0000000000000000e-01,nan,nan,4.0086298123205355e-02,8.8318924668815413e-03,8.7788364645873973e-01,0.0000000000000000e+00,1.7577153567028024e+01,3.5152939115559098e-02,2.1472239766694545e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.3667808455503626e-03,5.0501712683255007e-03,2.7417684845969514e-03,4.1126527268954272e-03,0.0000000000000000e+00,0,1,2.8879773000000001e-02, +145,3.7321273014574575e-03,1.5300991916891608e-02,3.0231684202090638e-02,1.7565124016820435e+00,4.3258143736800370e-02,1.7565799479154613e+01,1.7565125315556918e+00,4.8364074987971184e-02,1.7675441026505492e+01,1.7565124016820435e+00,4.3258143736800370e-02,1.7565799479154613e+01,1.7565125315556918e+00,4.8364074987971184e-02,1.7675441026505492e+01,3.2931269058738000e-03,1.3501176165238493e-02,3.6818278100334357e-03,1.3568594448371494e-02,5.0000000000005074e-01,nan,nan,3.9628243819078368e-02,9.3965596169877305e-03,8.8237260947336371e-01,0.0000000000000000e+00,3.7321273014574575e-03,1.5300991916891608e-02,3.0231684202090638e-02,3.2931269058738000e-03,1.3501176165238493e-02,3.6818278100334357e-03,1.3568594448371494e-02,5.0000000000005074e-01,nan,nan,3.9628243819078368e-02,9.3965596169877305e-03,8.8237260947336371e-01,0.0000000000000000e+00,1.7565799479154613e+01,3.5130248033640871e-02,2.1629071868402377e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.3167609519587919e-03,4.9751414279381422e-03,2.7057769626513961e-03,4.0586654439771497e-03,0.0000000000000000e+00,0,1,2.9057635999999998e-02, +146,8.0975965648093697e-03,1.4691896505546830e-02,2.8583311702202775e-02,1.7554355557921215e+00,4.4163022198567603e-02,1.7555007733589946e+01,1.7554356769395731e+00,4.9375759863914688e-02,1.7664824107890826e+01,1.7554355557921215e+00,4.4163022198567603e-02,1.7555007733589946e+01,1.7554356769395731e+00,4.9375759863914688e-02,1.7664824107890826e+01,7.1800812143840709e-03,1.3027200016556412e-02,8.0275748396665073e-03,1.3092336410393760e-02,5.0000000000005029e-01,nan,nan,3.9194879517311564e-02,1.0611567815108788e-02,8.8669287941404140e-01,0.0000000000000000e+00,8.0975965648093697e-03,1.4691896505546830e-02,2.8583311702202775e-02,7.1800812143840709e-03,1.3027200016556412e-02,8.0275748396665073e-03,1.3092336410393760e-02,5.0000000000005029e-01,nan,nan,3.9194879517311564e-02,1.0611567815108788e-02,8.8669287941404140e-01,0.0000000000000000e+00,1.7555007733589949e+01,3.5108711115842434e-02,2.2081511099286022e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.2561511391965411e-03,4.8842267087948104e-03,2.6112256217470931e-03,3.9168384326206951e-03,0.0000000000000000e+00,0,1,2.9230608000000002e-02, +147,1.2154672140634298e-02,1.3780798206453058e-02,2.6365549480185893e-02,1.7544390537747685e+00,4.5626986335519829e-02,1.7545005504022903e+01,1.7544391615538069e+00,5.1012521527338178e-02,1.7654987096080539e+01,1.7544390537747685e+00,4.5626986335519829e-02,1.7545005504022903e+01,1.7544391615538069e+00,5.1012521527338178e-02,1.7654987096080539e+01,1.0826811169800332e-02,1.2275287907733246e-02,1.2104742877613409e-02,1.2336751083505392e-02,5.0000000000004852e-01,nan,nan,3.8794242926605715e-02,1.2428693446419822e-02,8.9075304084963414e-01,0.0000000000000000e+00,1.2154672140634298e-02,1.3780798206453058e-02,2.6365549480185893e-02,1.0826811169800332e-02,1.2275287907733246e-02,1.2104742877613409e-02,1.2336751083505392e-02,5.0000000000004852e-01,nan,nan,3.8794242926605715e-02,1.2428693446419822e-02,8.9075304084963414e-01,0.0000000000000000e+00,1.7545005504022903e+01,3.5088781075495373e-02,2.2813493167762128e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.1871984393240932e-03,4.7807976589861433e-03,2.4613618637930879e-03,3.6920427956895763e-03,0.0000000000000000e+00,0,1,2.9402364000000000e-02, +148,1.5828289185929569e-02,1.2597152902444585e-02,2.3643591553157130e-02,1.7535433627161008e+00,4.7606207091293373e-02,1.7535998569375671e+01,1.7535434537203225e+00,5.3225357603532260e-02,1.7646132291178791e+01,1.7535433627161008e+00,4.7606207091293373e-02,1.7535998569375671e+01,1.7535434537203225e+00,5.3225357603532260e-02,1.7646132291178791e+01,1.4157915192489656e-02,1.1267763708675327e-02,1.5829030395041972e-02,1.1324272065706974e-02,5.0000000000000000e-01,nan,nan,3.8433228414837498e-02,1.4789636861680368e-02,8.9446907534866249e-01,0.0000000000000000e+00,1.5828289185929569e-02,1.2597152902444585e-02,2.3643591553157130e-02,1.4157915192489656e-02,1.1267763708675327e-02,1.5829030395041972e-02,1.1324272065706974e-02,5.0000000000000000e-01,nan,nan,3.8433228414837498e-02,1.4789636861680368e-02,8.9446907534866249e-01,0.0000000000000000e+00,1.7535998569375668e+01,3.5070867254322013e-02,2.3803103545646687e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.1128428550392922e-03,4.6692642825589331e-03,2.2605671040779596e-03,3.3908506561169949e-03,0.0000000000000000e+00,0,1,2.9531894000000000e-02, +149,1.9054320723242694e-02,1.1174598735648503e-02,2.0489777800597603e-02,1.7527663571631398e+00,5.0046302833260836e-02,1.7528167045278479e+01,1.7527664294733216e+00,5.5953467578855776e-02,1.7638436673325174e+01,1.7527663571631398e+00,5.0046302833260836e-02,1.7528167045278479e+01,1.7527664294733216e+00,5.5953467578855776e-02,1.7638436673325174e+01,1.7106322863954526e-02,1.0032175726630156e-02,1.9125450384430753e-02,1.0082583630359524e-02,5.0000000000004441e-01,nan,nan,3.8117574128485682e-02,1.7627796327888079e-02,8.9776608216151321e-01,0.0000000000000000e+00,1.9054320723242694e-02,1.1174598735648503e-02,2.0489777800597603e-02,1.7106322863954526e-02,1.0032175726630156e-02,1.9125450384430753e-02,1.0082583630359524e-02,5.0000000000004441e-01,nan,nan,3.8117574128485682e-02,1.7627796327888079e-02,8.9776608216151321e-01,0.0000000000000000e+00,1.7528167045278476e+01,3.5055327143262795e-02,2.5023151416632639e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,3.0365334419165673e-03,4.5548001628748520e-03,2.0142493714632170e-03,3.0213740571948255e-03,0.0000000000000000e+00,0,1,2.9672476999999999e-02, +150,2.1780023138658240e-02,9.5500739044672173e-03,1.6981902215338233e-02,1.7521229548163586e+00,5.2883711124497995e-02,1.7521661706499081e+01,1.7521230081119403e+00,5.9125786488419686e-02,1.7632048293644047e+01,1.7521229548163586e+00,5.2883711124497995e-02,1.7521661706499081e+01,1.7521230081119403e+00,5.9125786488419686e-02,1.7632048293644047e+01,1.9614648624972975e-02,8.6006035340781620e-03,2.1929843840106298e-02,8.6439241353776976e-03,5.0000000000000022e-01,nan,nan,3.7851876046268967e-02,2.0869973830930734e-02,9.0057978818939566e-01,0.0000000000000000e+00,2.1780023138658240e-02,9.5500739044672173e-03,1.6981902215338233e-02,1.9614648624972975e-02,8.6006035340781620e-03,2.1929843840106298e-02,8.6439241353776976e-03,5.0000000000000022e-01,nan,nan,3.7851876046268967e-02,2.0869973830930734e-02,9.0057978818939566e-01,0.0000000000000000e+00,1.7521661706499085e+01,3.5042459096327173e-02,2.6441855562249011e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.9619871530891097e-03,4.4429807296336643e-03,1.7885933805892179e-03,2.6828900708838269e-03,0.0000000000000000e+00,0,1,2.9847641000000001e-02, +151,2.3964261935191463e-02,7.7629825814496322e-03,1.3201630055608413e-02,1.7516248212376786e+00,5.6047253913506734e-02,1.7516600994735370e+01,1.7516248567633772e+00,6.2662734851396090e-02,1.7627083341077110e+01,1.7516248212376786e+00,5.6047253913506734e-02,1.7516600994735370e+01,1.7516248567633772e+00,6.2662734851396090e-02,1.7627083341077110e+01,2.1636321096757061e-02,7.0088694680024294e-03,2.4190142377680524e-02,7.0442936331178048e-03,4.9999999999996037e-01,nan,nan,3.7639619349597482e-02,2.4437989293989069e-02,9.0285781198978521e-01,0.0000000000000000e+00,2.3964261935191463e-02,7.7629825814496322e-03,1.3201630055608413e-02,2.1636321096757061e-02,7.0088694680024294e-03,2.4190142377680524e-02,7.0442936331178048e-03,4.9999999999996037e-01,nan,nan,3.7639619349597482e-02,2.4437989293989069e-02,9.0285781198978521e-01,0.0000000000000000e+00,1.7516600994735363e+01,3.5032496424753576e-02,2.8023626956751146e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8928881751690894e-03,4.3393322627536300e-03,2.0225300769231153e-03,3.0337951153846729e-03,0.0000000000000000e+00,0,1,3.0036874999999998e-02, +152,2.5577566711731361e-02,5.8544145234535822e-03,9.2330234790027749e-03,1.7512801514863920e+00,5.9459860031460171e-02,1.7513068791801988e+01,1.7512801718820328e+00,6.6478144481483856e-02,1.7623623963272937e+01,1.7512801514863920e+00,5.9459860031460171e-02,1.7513068791801988e+01,1.7512801718820328e+00,6.6478144481483856e-02,1.7623623963272937e+01,2.3136460402045422e-02,5.2956730139977690e-03,2.5867349108853337e-02,5.3225840075730229e-03,4.9999999999999978e-01,nan,nan,3.7483218880461230e-02,2.8250195401458456e-02,9.0456065124575336e-01,0.0000000000000000e+00,2.5577566711731361e-02,5.8544145234535822e-03,9.2330234790027749e-03,2.3136460402045422e-02,5.2956730139977690e-03,2.5867349108853337e-02,5.3225840075730229e-03,4.9999999999999978e-01,nan,nan,3.7483218880461230e-02,2.8250195401458456e-02,9.0456065124575336e-01,0.0000000000000000e+00,1.7513068791801985e+01,3.5025603029727841e-02,2.9729930015730072e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.8325400391175921e-03,4.2488100586763897e-03,2.2067650400027505e-03,3.3101475600041258e-03,0.0000000000000000e+00,0,1,3.0260276000000003e-02, +153,2.6602056414508374e-02,3.8664173392540238e-03,5.1611646855549004e-03,1.7510935347355145e+00,6.3040404014124946e-02,1.7511113019763428e+01,1.7510935437491635e+00,7.0481314352316998e-02,1.7621716901517591e+01,1.7510935347355145e+00,6.3040404014124946e-02,1.7511113019763428e+01,1.7510935437491635e+00,7.0481314352316998e-02,1.7621716901517591e+01,2.4092481436998159e-02,3.5016686876455858e-03,2.6936213119889477e-02,3.5196524738527872e-03,5.0000000000003542e-01,nan,nan,3.7384062182795559e-02,3.2222897497240659e-02,9.0566236916400455e-01,0.0000000000000000e+00,2.6602056414508374e-02,3.8664173392540238e-03,5.1611646855549004e-03,2.4092481436998159e-02,3.5016686876455858e-03,2.6936213119889477e-02,3.5196524738527872e-03,5.0000000000003542e-01,nan,nan,3.7384062182795559e-02,3.2222897497240659e-02,9.0566236916400455e-01,0.0000000000000000e+00,1.7511113019763428e+01,3.5021870694710293e-02,3.1520202007064707e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7835049925216565e-03,4.1752574887824927e-03,2.3382342478652784e-03,3.5073513717979177e-03,0.0000000000000000e+00,0,1,3.0442623000000002e-02, +154,2.7031266019361157e-02,1.8413155783187120e-03,1.0708587583120877e-03,1.7510659057106803e+00,6.6705616461286893e-02,1.7510745107555266e+01,1.7510659078250153e+00,7.4579146444233219e-02,1.7621372978067228e+01,1.7510659057106803e+00,6.6705616461286893e-02,1.7510745107555266e+01,1.7510659078250153e+00,7.4579146444233219e-02,1.7621372978067228e+01,2.4494407721223355e-02,1.6685098835723944e-03,2.7385580366625941e-02,1.6773622000935892e-03,4.9999999999996653e-01,nan,nan,3.7342550499871723e-02,3.6271691741559635e-02,9.0615096250686977e-01,0.0000000000000000e+00,2.7031266019361157e-02,1.8413155783187120e-03,1.0708587583120877e-03,2.4494407721223355e-02,1.6685098835723944e-03,2.7385580366625941e-02,1.6773622000935892e-03,4.9999999999996653e-01,nan,nan,3.7342550499871723e-02,3.6271691741559635e-02,9.0615096250686977e-01,0.0000000000000000e+00,1.7510745107555270e+01,3.5021318114213607e-02,3.3352808230641212e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7472880887133020e-03,4.1209321330699586e-03,2.4151119404061533e-03,3.6226679106092299e-03,0.0000000000000000e+00,0,1,3.0611175000000001e-02, +155,2.6869894965775031e-02,1.7893218380144799e-04,2.9546048834319938e-03,1.7511945843188310e+00,7.0372018653923216e-02,1.7511940338948506e+01,1.7511945843274812e+00,7.8678308712027786e-02,1.7622567450023546e+01,1.7511945843188310e+00,7.0372018653923216e-02,1.7511940338948506e+01,1.7511945843274812e+00,7.8678308712027786e-02,1.7622567450023546e+01,2.4344888002103104e-02,1.6211764058499112e-04,2.7218412238660693e-02,1.6249097209440779e-04,5.0000000000000011e-01,nan,nan,3.7358134993796706e-02,4.0312739877228700e-02,9.0602840216204417e-01,0.0000000000000000e+00,2.6869894965775031e-02,1.7893218380144799e-04,2.9546048834319938e-03,2.4344888002103104e-02,1.6211764058499112e-04,2.7218412238660693e-02,1.6249097209440779e-04,5.0000000000000011e-01,nan,nan,3.7358134993796706e-02,4.0312739877228700e-02,9.0602840216204417e-01,0.0000000000000000e+00,1.7511940338948506e+01,3.5023891686376624e-02,3.5186009326961615e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7241341924206658e-03,4.0862012886309926e-03,2.4368312256632385e-03,3.6552468384948578e-03,0.0000000000000000e+00,0,1,3.0769536000000000e-02, +156,2.6133486729617281e-02,2.1533483390902691e-03,6.8346534592069741e-03,1.7514734022053056e+00,7.3957833148032254e-02,1.7514639070448613e+01,1.7514734047790834e+00,8.2687371193793699e-02,1.7625241218148474e+01,1.7514734022053056e+00,7.3957833148032254e-02,1.7514639070448613e+01,1.7514734047790834e+00,8.2687371193793699e-02,1.7625241218148474e+01,2.3658915913224221e-02,1.9494485299078115e-03,2.6451472127960712e-02,1.9586762875751281e-03,4.9999999999997019e-01,nan,nan,3.7429347273008340e-02,4.4264000732215314e-02,9.0531034599418336e-01,0.0000000000000000e+00,2.6133486729617281e-02,2.1533483390902691e-03,6.8346534592069741e-03,2.3658915913224221e-02,1.9494485299078115e-03,2.6451472127960712e-02,1.9586762875751281e-03,4.9999999999997019e-01,nan,nan,3.7429347273008340e-02,4.4264000732215314e-02,9.0531034599418336e-01,0.0000000000000000e+00,1.7514639070448606e+01,3.5029468044106109e-02,3.6978916574013920e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7129922590284632e-03,4.0694883885426750e-03,2.4040749745502937e-03,3.6061124618254406e-03,0.0000000000000000e+00,0,1,3.0942522000000000e-02, +157,2.4848038609119879e-02,4.0425330352239931e-03,1.0492612212751537e-02,1.7518929123208891e+00,7.7384822655223284e-02,1.7518748781134455e+01,1.7518929216032098e+00,8.6518861941922515e-02,1.7629302852967619e+01,1.7518929123208891e+00,7.7384822655223284e-02,1.7518748781134455e+01,1.7518929216032098e+00,8.6518861941922515e-02,1.7629302852967619e+01,2.2463261343638297e-02,3.6545530811916416e-03,2.5114689680359074e-02,3.6723087123086053e-03,4.9999999999997130e-01,nan,nan,3.7553824998394693e-02,4.8046437211146230e-02,9.0402553283999221e-01,0.0000000000000000e+00,2.4848038609119879e-02,4.0425330352239931e-03,1.0492612212751537e-02,2.2463261343638297e-02,3.6545530811916416e-03,2.5114689680359074e-02,3.6723087123086053e-03,4.9999999999997130e-01,nan,nan,3.7553824998394693e-02,4.8046437211146230e-02,9.0402553283999221e-01,0.0000000000000000e+00,1.7518748781134455e+01,3.5037858246417780e-02,3.8692411327609422e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7116622004976572e-03,4.0674933007464964e-03,2.3187373947781836e-03,3.4781060921672755e-03,0.0000000000000000e+00,0,1,3.1164131000000001e-02, +158,2.3049531730457293e-02,5.8092506576001178e-03,1.3856878458625321e-02,1.7524406750270634e+00,8.0580011718842340e-02,1.7524146890852851e+01,1.7524406942935977e+00,9.0091191915530555e-02,1.7634631375449814e+01,1.7524406750270634e+00,8.0580011718842340e-02,1.7524146890852851e+01,1.7524406942935977e+00,9.0091191915530555e-02,1.7634631375449814e+01,2.0795630400864629e-02,5.2411923588798690e-03,2.3250221605647031e-02,5.2668970951413388e-03,4.9999999999999956e-01,nan,nan,3.7728334841764646e-02,5.1585213300389968e-02,9.0221487551461210e-01,0.0000000000000000e+00,2.3049531730457293e-02,5.8092506576001178e-03,1.3856878458625321e-02,2.0795630400864629e-02,5.2411923588798690e-03,2.3250221605647031e-02,5.2668970951413388e-03,4.9999999999999956e-01,nan,nan,3.7728334841764646e-02,5.1585213300389968e-02,9.0221487551461210e-01,0.0000000000000000e+00,1.7524146890852855e+01,3.5048813500541266e-02,4.0290005859421135e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7170914354620506e-03,4.0756371531931040e-03,2.1838575014719724e-03,3.2757862522079587e-03,0.0000000000000000e+00,0,1,3.1422496000000001e-02, +159,2.0783364019776689e-02,7.4190108158930304e-03,1.6862092536259810e-02,1.7531016119462970e+00,8.3477249427783978e-02,1.7530684259875805e+01,1.7531016433565654e+00,9.3330402147615191e-02,1.7641079706724618e+01,1.7531016119462970e+00,8.3477249427783978e-02,1.7530684259875805e+01,1.7531016433565654e+00,9.3330402147615191e-02,1.7641079706724618e+01,1.8703578585127612e-02,6.6765924749682543e-03,2.0911236569427661e-02,6.7095014881277748e-03,5.0000000000002642e-01,nan,nan,3.7948796346771820e-02,5.4810888883031629e-02,8.9993027920455848e-01,0.0000000000000000e+00,2.0783364019776689e-02,7.4190108158930304e-03,1.6862092536259810e-02,1.8703578585127612e-02,6.6765924749682543e-03,2.0911236569427661e-02,6.7095014881277748e-03,5.0000000000002642e-01,nan,nan,3.7948796346771820e-02,5.4810888883031629e-02,8.9993027920455848e-01,0.0000000000000000e+00,1.7530684259875798e+01,3.5062032238925941e-02,4.1738624713894196e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,2.7257540285911511e-03,4.0886310428867537e-03,2.0035264966563465e-03,3.0052897449845198e-03,0.0000000000000000e+00,0,1,3.1701582999999998e-02, +160,2.7802297682734553e-06,7.6663722847146364e-06,1.5054720329699123e-05,1.7581790646397304e+00,7.0340641393999190e-02,1.7581790307827866e+01,1.7581790646397630e+00,7.8643227868958887e-02,1.7691335084900448e+01,1.7581790646397304e+00,7.0340641393999190e-02,1.7581790307827866e+01,1.7581790646397630e+00,7.8643227868958887e-02,1.7691335084900448e+01,2.4440623929145033e-06,6.7394042049945257e-06,2.7325448259038150e-06,6.7733364069463350e-06,5.0000000000000011e-01,nan,nan,4.0000278023608275e-02,4.0015332743937974e-02,8.7908647724187394e-01,0.0000000000000000e+00,2.7802297682734553e-06,7.6663722847146364e-06,1.5054720329699123e-05,2.4440623929145033e-06,6.7394042049945257e-06,2.7325448259038150e-06,6.7733364069463350e-06,5.0000000000000011e-01,nan,nan,4.0000278023608275e-02,4.0015332743937974e-02,8.7908647724187394e-01,0.0000000000000000e+00,1.7581790307827873e+01,3.5163581292794607e-02,3.5170320696999602e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.6630002781863525e-06,2.4945004173245218e-06,1.3506237748206473e-06,2.0259356622309710e-06,3.1384113394723467e-01,1,1,3.1932546999999999e-02, +161,4.9606276077344270e-06,7.3265746132963671e-06,1.4157083126631331e-05,1.7581795930283843e+00,7.0340065075237240e-02,1.7581795608323183e+01,1.7581795930284139e+00,7.8642583524994661e-02,1.7691340299159815e+01,1.7581795930283843e+00,7.0340065075237240e-02,1.7581795608323183e+01,1.7581795930284139e+00,7.8642583524994661e-02,1.7691340299159815e+01,4.3608100738223854e-06,6.4406770486982734e-06,4.8755338812397930e-06,6.4727857615770975e-06,4.9999999999996825e-01,nan,nan,4.0000496064432914e-02,4.0014653147559545e-02,8.7908434550159975e-01,0.0000000000000000e+00,4.9606276077344270e-06,7.3265746132963671e-06,1.4157083126631331e-05,4.3608100738223854e-06,6.4406770486982734e-06,4.8755338812397930e-06,6.4727857615770975e-06,4.9999999999996825e-01,nan,nan,4.0000496064432914e-02,4.0014653147559545e-02,8.7908434550159975e-01,0.0000000000000000e+00,1.7581795608323180e+01,3.5163591860567688e-02,3.5170032537616386e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.6295109927121710e-06,2.4442664890233086e-06,1.2908313207216082e-06,1.9362469810824123e-06,3.1384113394723467e-01,1,1,3.2095508000000002e-02, +162,6.9831407896565714e-06,6.8324790590351550e-06,1.2966637713815454e-05,1.7581800763124262e+00,7.0339215676197608e-02,1.7581800461892204e+01,1.7581800763124520e+00,7.8641633867998342e-02,1.7691345072278544e+01,1.7581800763124262e+00,7.0339215676197608e-02,1.7581800461892204e+01,1.7581800763124520e+00,7.8641633867998342e-02,1.7691345072278544e+01,6.1387559184833407e-06,6.0063118480571664e-06,6.8633377652557003e-06,6.0364513590852632e-06,4.9999999999996841e-01,nan,nan,4.0000698317244128e-02,4.0013664954957943e-02,8.7908236471131529e-01,0.0000000000000000e+00,6.9831407896565714e-06,6.8324790590351550e-06,1.2966637713815454e-05,6.1387559184833407e-06,6.0063118480571664e-06,6.8633377652557003e-06,6.0364513590852632e-06,4.9999999999996841e-01,nan,nan,4.0000698317244128e-02,4.0013664954957943e-02,8.7908236471131529e-01,0.0000000000000000e+00,1.7581800461892211e+01,3.5163601526248527e-02,3.5169607838096584e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.5923873958082663e-06,2.3885810937559792e-06,1.2038548407034000e-06,1.8057822610551000e-06,3.1384113394723467e-01,1,1,3.2307023999999997e-02, +163,8.8064282726766033e-06,6.1984347951657456e-06,1.1516216875784302e-05,1.7581805042653447e+00,7.0338118017863743e-02,1.7581804769466267e+01,1.7581805042653660e+00,7.8640406648673042e-02,1.7691349306788165e+01,1.7581805042653447e+00,7.0338118017863743e-02,1.7581804769466267e+01,1.7581805042653660e+00,7.8640406648673042e-02,1.7691349306788165e+01,7.7415600312491506e-06,5.4489236249663509e-06,8.6553272409835506e-06,5.4762481348843715e-06,4.9999999999999978e-01,nan,nan,4.0000880647770923e-02,4.0012396864646707e-02,8.7908057518263316e-01,0.0000000000000000e+00,8.8064282726766033e-06,6.1984347951657456e-06,1.1516216875784302e-05,7.7415600312491506e-06,5.4489236249663509e-06,8.6553272409835506e-06,5.4762481348843715e-06,4.9999999999999978e-01,nan,nan,4.0000880647770923e-02,4.0012396864646707e-02,8.7908057518263316e-01,0.0000000000000000e+00,1.7581804769466256e+01,3.5163610085306891e-02,3.5169059008931858e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.5531590193531972e-06,2.3297385290299187e-06,1.0922177702266112e-06,1.6383266553399167e-06,3.1384113394723467e-01,1,1,3.2529497999999997e-02, +164,1.0394711532777638e-05,5.4415524431013577e-06,9.8436200773599491e-06,1.7581808689000260e+00,7.0336801865094459e-02,1.7581808448788809e+01,1.7581808689000424e+00,7.8638935145142599e-02,1.7691352921902659e+01,1.7581808689000260e+00,7.0336801865094459e-02,1.7581808448788809e+01,1.7581808689000424e+00,7.8638935145142599e-02,1.7691352921902659e+01,9.1377727466923631e-06,4.7835545467014851e-06,1.0216340512224894e-05,4.8076189803336956e-06,4.9999999999999989e-01,nan,nan,4.0001039477981060e-02,4.0010883098058420e-02,8.7907901223407980e-01,0.0000000000000000e+00,1.0394711532777638e-05,5.4415524431013577e-06,9.8436200773599491e-06,9.1377727466923631e-06,4.7835545467014851e-06,1.0216340512224894e-05,4.8076189803336956e-06,4.9999999999999989e-01,nan,nan,4.0001039477981060e-02,4.0010883098058420e-02,8.7907901223407980e-01,0.0000000000000000e+00,1.7581808448788813e+01,3.5163617378000521e-02,3.5168400932547222e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.5137622135559904e-06,2.2706433202571282e-06,9.5893466778296244e-07,1.4384020016189325e-06,3.1384113394723467e-01,1,1,3.2867708999999995e-02, +165,1.1718093617121320e-05,4.5812811609796808e-06,7.9907356899527882e-06,1.7581811634672910e+00,7.0335301142952722e-02,1.7581811432216433e+01,1.7581811634673026e+00,7.8637257286780463e-02,1.7691355851191311e+01,1.7581811634672910e+00,7.0335301142952722e-02,1.7581811432216433e+01,1.7581811634673026e+00,7.8637257286780463e-02,1.7691355851191311e+01,1.0301114847899306e-05,4.0273021305117784e-06,1.1516996522340008e-05,4.0476063227130474e-06,4.9999999999999961e-01,nan,nan,4.0001171817996922e-02,4.0009162553686875e-02,8.7907770534008500e-01,0.0000000000000000e+00,1.1718093617121320e-05,4.5812811609796808e-06,7.9907356899527882e-06,1.0301114847899306e-05,4.0273021305117784e-06,1.1516996522340008e-05,4.0476063227130474e-06,4.9999999999999961e-01,nan,nan,4.0001171817996922e-02,4.0009162553686875e-02,8.7907770534008500e-01,0.0000000000000000e+00,1.7581811432216437e+01,3.5163623269345821e-02,3.5167650571476333e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.4761279109539410e-06,2.2141918664690456e-06,9.4936846305182510e-07,1.4240526945777376e-06,3.1384113394723467e-01,1,1,3.3115043999999996e-02, +166,1.2753238006631815e-05,3.6389200457447433e-06,6.0024958930121608e-06,1.7581813830603721e+00,7.0333653101903232e-02,1.7581813669447552e+01,1.7581813830603794e+00,7.8635414720872293e-02,1.7691358045328517e+01,1.7581813830603721e+00,7.0333653101903232e-02,1.7581813669447552e+01,1.7581813830603794e+00,7.8635414720872293e-02,1.7691358045328517e+01,1.1211074096628693e-05,3.1988897441839748e-06,1.2534361889729291e-05,3.2150864438908267e-06,5.0000000000000022e-01,nan,nan,4.0001275333999525e-02,4.0007277829892537e-02,8.7907667768756603e-01,0.0000000000000000e+00,1.2753238006631815e-05,3.6389200457447433e-06,6.0024958930121608e-06,1.1211074096628693e-05,3.1988897441839748e-06,1.2534361889729291e-05,3.2150864438908267e-06,5.0000000000000022e-01,nan,nan,4.0001275333999525e-02,4.0007277829892537e-02,8.7907667768756603e-01,0.0000000000000000e+00,1.7581813669447548e+01,3.5163627661207446e-02,3.5166826550951630e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.4421083271692481e-06,2.1631624907498495e-06,1.0569618130729097e-06,1.5854427196093646e-06,3.1384113394723467e-01,1,1,3.3310842000000000e-02, +167,1.3483674767694556e-05,2.6371095164676909e-06,3.9258287943683134e-06,1.7581815244756598e+00,7.0331897418110953e-02,1.7581815127580750e+01,1.7581815244756638e+00,7.8633451806719018e-02,1.7691359472117764e+01,1.7581815244756598e+00,7.0331897418110953e-02,1.7581815127580750e+01,1.7581815244756638e+00,7.8633451806719018e-02,1.7691359472117764e+01,1.1853174148868106e-05,2.3182195422882801e-06,1.3252251573601956e-05,2.3300348847451811e-06,5.0000000000000011e-01,nan,nan,4.0001348378857687e-02,4.0005274207652056e-02,8.7907594577014314e-01,0.0000000000000000e+00,1.3483674767694556e-05,2.6371095164676909e-06,3.9258287943683134e-06,1.1853174148868106e-05,2.3182195422882801e-06,1.3252251573601956e-05,2.3300348847451811e-06,5.0000000000000011e-01,nan,nan,4.0001348378857687e-02,4.0005274207652056e-02,8.7907594577014314e-01,0.0000000000000000e+00,1.7581815127580750e+01,3.5163630489513195e-02,3.5165948709055483e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.4132561889309864e-06,2.1198842833953633e-06,1.1388174604304302e-06,1.7082261906456453e-06,3.1384113394723467e-01,1,1,3.3504441000000003e-02, +168,1.3900039245374722e-05,1.5993000618516740e-06,1.8085720345506484e-06,1.7581815863340973e+00,7.0330075264428304e-02,1.7581815791740624e+01,1.7581815863340988e+00,7.8631414576969094e-02,1.7691360117115675e+01,1.7581815863340973e+00,7.0330075264428304e-02,1.7581815791740624e+01,1.7581815863340988e+00,7.8631414576969094e-02,1.7691360117115675e+01,1.2219184216344381e-05,1.4059055322077074e-06,1.3661463268296886e-05,1.4131796786737036e-06,5.0000000000000000e-01,nan,nan,4.0001390016006833e-02,4.0003198588041383e-02,8.7907551918677851e-01,0.0000000000000000e+00,1.3900039245374722e-05,1.5993000618516740e-06,1.8085720345506484e-06,1.2219184216344381e-05,1.4059055322077074e-06,1.3661463268296886e-05,1.4131796786737036e-06,5.0000000000000000e-01,nan,nan,4.0001390016006833e-02,4.0003198588041383e-02,8.7907551918677851e-01,0.0000000000000000e+00,1.7581815791740624e+01,3.5163631726681945e-02,3.5165037632214152e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.3906573809085975e-06,2.0859860713847715e-06,1.1936992599520524e-06,1.7905488899280786e-06,3.1384113394723467e-01,1,1,3.3684897999999998e-02, +169,1.4000109475004897e-05,5.4921671508396059e-07,3.0160202445228546e-07,1.7581815690332434e+00,7.0328228367132928e-02,1.7581815664883646e+01,1.7581815690332436e+00,7.8629349683019129e-02,1.7691359983431067e+01,1.7581815690332434e+00,7.0328228367132928e-02,1.7581815664883646e+01,1.7581815690332436e+00,7.8629349683019129e-02,1.7691359983431067e+01,1.2307151844859199e-05,4.8280290381591540e-07,1.3759814067531636e-05,4.8547832835092850e-07,5.0000000000003153e-01,nan,nan,4.0001400023198547e-02,4.0001098421174094e-02,8.7907540057681544e-01,0.0000000000000000e+00,1.4000109475004897e-05,5.4921671508396059e-07,3.0160202445228546e-07,1.2307151844859199e-05,4.8280290381591540e-07,1.3759814067531636e-05,4.8547832835092850e-07,5.0000000000003153e-01,nan,nan,4.0001400023198547e-02,4.0001098421174094e-02,8.7907540057681544e-01,0.0000000000000000e+00,1.7581815664883646e+01,3.5163631380664868e-02,3.5164114183568684e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,1.3747923342619164e-06,2.0621885013926278e-06,1.2209940501162198e-06,1.8314910751743296e-06,3.1384113394723467e-01,1,1,3.3855950000000003e-02, +170,7.7085889528859815e-10,2.1123879515181309e-09,4.1476950624064202e-09,1.7581780652610162e+00,7.0327126324399220e-02,1.7581780652515771e+01,1.7581780652610162e+00,7.8628117561785796e-02,1.7691325516991224e+01,1.7581780652610162e+00,7.0327126324399220e-02,1.7581780652515771e+01,1.7581780652610162e+00,7.8628117561785796e-02,1.7691325516991224e+01,6.7765359990090701e-10,1.8569770790510809e-09,7.5763943456710107e-10,1.8665494359875560e-09,4.9999999999996864e-01,nan,nan,4.0000000077085859e-02,4.0000004224780922e-02,8.7908903178344144e-01,0.0000000000000000e+00,7.7085889528859815e-10,2.1123879515181309e-09,4.1476950624064202e-09,6.7765359990090701e-10,1.8569770790510809e-09,7.5763943456710107e-10,1.8665494359875560e-09,4.9999999999996864e-01,nan,nan,4.0000000077085859e-02,4.0000004224780922e-02,8.7908903178344144e-01,0.0000000000000000e+00,1.7581780652515768e+01,3.5163561305220324e-02,3.5163563162197403e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.5832301599048836e-10,6.8748457026407005e-10,3.7215286408098791e-10,5.5822924061033063e-10,1.5596712345277726e-04,2,1,3.4048889000000006e-02, +171,1.3714436247707271e-09,2.0184129163693017e-09,3.8996814666347746e-09,1.7581780654063308e+00,7.0327126164982531e-02,1.7581780653975080e+01,1.7581780654063308e+00,7.8628117383552520e-02,1.7691325518426755e+01,1.7581780654063308e+00,7.0327126164982531e-02,1.7581780653975080e+01,1.7581780654063308e+00,7.8628117383552520e-02,1.7691325518426755e+01,1.2056210474398199e-09,1.7743646552048631e-09,1.3479252837693094e-09,1.7831164405063605e-09,5.0000000000000011e-01,nan,nan,4.0000000137144359e-02,4.0000004036825826e-02,8.7908903119613913e-01,0.0000000000000000e+00,1.3714436247707271e-09,2.0184129163693017e-09,3.8996814666347746e-09,1.2056210474398199e-09,1.7743646552048631e-09,1.3479252837693094e-09,1.7831164405063605e-09,5.0000000000000011e-01,nan,nan,4.0000000137144359e-02,4.0000004036825826e-02,8.7908903119613913e-01,0.0000000000000000e+00,1.7581780653975084e+01,3.5163561308126617e-02,3.5163563082491273e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.4901929885620779e-10,6.7352903855264022e-10,3.5561498190617158e-10,5.3342252837040860e-10,1.5596712345277726e-04,2,1,3.4238885000000004e-02, +172,1.9285259121734675e-09,1.8819317435220451e-09,3.5710108758912895e-09,1.7581780655395252e+00,7.0327125930352091e-02,1.7581780655312073e+01,1.7581780655395252e+00,7.8628117121227720e-02,1.7691325519741596e+01,1.7581780655395252e+00,7.0327125930352091e-02,1.7581780655312073e+01,1.7581780655395252e+00,7.8628117121227720e-02,1.7691325519741596e+01,1.6953459747170996e-09,1.6543855521633510e-09,1.8954541493486885e-09,1.6627277712750120e-09,5.0000000000000022e-01,nan,nan,4.0000000192852589e-02,4.0000003763863465e-02,8.7908903065058019e-01,0.0000000000000000e+00,1.9285259121734675e-09,1.8819317435220451e-09,3.5710108758912895e-09,1.6953459747170996e-09,1.6543855521633510e-09,1.8954541493486885e-09,1.6627277712750120e-09,5.0000000000000022e-01,nan,nan,4.0000000192852589e-02,4.0000003763863465e-02,8.7908903065058019e-01,0.0000000000000000e+00,1.7581780655312077e+01,3.5163561310790507e-02,3.5163562965176060e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.3880494287888369e-10,6.5820741218209045e-10,3.3159075485400535e-10,4.9738613228100803e-10,1.5596712345277726e-04,2,1,3.4472486000000004e-02, +173,2.4305771515189323e-09,1.7069122810201479e-09,3.1707718395335149e-09,1.7581780656573096e+00,7.0327125627352521e-02,1.7581780656497948e+01,1.7581780656573096e+00,7.8628116782463897e-02,1.7691325520907348e+01,1.7581780656573096e+00,7.0327125627352521e-02,1.7581780656497948e+01,1.7581780656573096e+00,7.8628116782463897e-02,1.7691325520907348e+01,2.1366937108524553e-09,1.5005278616864182e-09,2.3888964405372937e-09,1.5080353107141401e-09,4.9999999999996864e-01,nan,nan,4.0000000243057748e-02,4.0000003413829588e-02,8.7908903015778728e-01,0.0000000000000000e+00,2.4305771515189323e-09,1.7069122810201479e-09,3.1707718395335149e-09,2.1366937108524553e-09,1.5005278616864182e-09,2.3888964405372937e-09,1.5080353107141401e-09,4.9999999999996864e-01,nan,nan,4.0000000243057748e-02,4.0000003413829588e-02,8.7908903015778728e-01,0.0000000000000000e+00,1.7581780656497951e+01,3.5163561313146192e-02,3.5163562813674054e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.2798257796197945e-10,6.4197374532355164e-10,3.0077595969402182e-10,4.5116388402988150e-10,1.5596712345277726e-04,2,1,3.4732473000000000e-02, +174,2.8678105621936667e-09,1.4980778030903310e-09,2.7093795262889131e-09,1.7581780657576880e+00,7.0327125264199403e-02,1.7581780657510709e+01,1.7581780657576880e+00,7.8628116376446386e-02,1.7691325521902435e+01,1.7581780657576880e+00,7.0327125264199403e-02,1.7581780657510709e+01,1.7581780657576880e+00,7.8628116376446386e-02,1.7691325521902435e+01,2.5210608045611593e-09,1.3169437623750113e-09,2.8186313444751662e-09,1.3235763337681616e-09,4.9999999999996902e-01,nan,nan,4.0000000286781030e-02,4.0000002996160557e-02,8.7908902972751835e-01,0.0000000000000000e+00,2.8678105621936667e-09,1.4980778030903310e-09,2.7093795262889131e-09,2.5210608045611593e-09,1.3169437623750113e-09,2.8186313444751662e-09,1.3235763337681616e-09,4.9999999999996902e-01,nan,nan,4.0000000286781030e-02,4.0000002996160557e-02,8.7908902972751835e-01,0.0000000000000000e+00,1.7581780657510709e+01,3.5163561315153760e-02,3.5163562632097523e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.1712892234790133e-10,6.2569334541901976e-10,2.6400126529324552e-10,3.9600189793986829e-10,1.5596712345277726e-04,2,1,3.4980985999999999e-02, +175,3.2319738167776224e-09,1.2607940099798660e-09,2.1983905806877146e-09,1.7581780658387185e+00,7.0327124850249084e-02,1.7581780658331486e+01,1.7581780658387185e+00,7.8628115913635846e-02,1.7691325522708308e+01,1.7581780658387185e+00,7.0327124850249084e-02,1.7581780658331486e+01,1.7581780658387185e+00,7.8628115913635846e-02,1.7691325522708308e+01,2.8411927255334035e-09,1.1083501824660225e-09,3.1765503088160867e-09,1.1139350791509942e-09,5.0000000000000022e-01,nan,nan,4.0000000323197421e-02,4.0000002521588002e-02,8.7908902936786792e-01,0.0000000000000000e+00,3.2319738167776224e-09,1.2607940099798660e-09,2.1983905806877146e-09,2.8411927255334035e-09,1.1083501824660225e-09,3.1765503088160867e-09,1.1139350791509942e-09,5.0000000000000022e-01,nan,nan,4.0000000323197421e-02,4.0000002521588002e-02,8.7908902936786792e-01,0.0000000000000000e+00,1.7581780658331482e+01,3.5163561316774374e-02,3.5163562425124556e-02,1.0000000000000000e+00,0.0000000000000000e+00,1.0000000000000001e-01,4.0676197759300573e-10,0.0000000000000000e+00,2.6189797552866878e-10,0.0000000000000000e+00,1.5596712345277726e-04,2,1,3.5189608999999997e-02, diff --git a/inst/tinytest/problem_results/hs21_tiny_qp1.RDS b/inst/tinytest/problem_results/hs21_tiny_qp1.RDS new file mode 100644 index 0000000..440e70b Binary files /dev/null and b/inst/tinytest/problem_results/hs21_tiny_qp1.RDS differ diff --git a/inst/tinytest/problem_results/hs21_tiny_qp2.RDS b/inst/tinytest/problem_results/hs21_tiny_qp2.RDS new file mode 100644 index 0000000..0dce79e Binary files /dev/null and b/inst/tinytest/problem_results/hs21_tiny_qp2.RDS differ diff --git a/inst/tinytest/problem_results/infeasible_tiny_qp.RDS b/inst/tinytest/problem_results/infeasible_tiny_qp.RDS new file mode 100644 index 0000000..d8c6277 Binary files /dev/null and b/inst/tinytest/problem_results/infeasible_tiny_qp.RDS differ diff --git a/inst/tinytest/problem_results/max_ent.RDS b/inst/tinytest/problem_results/max_ent.RDS new file mode 100644 index 0000000..d77df19 Binary files /dev/null and b/inst/tinytest/problem_results/max_ent.RDS differ diff --git a/inst/tinytest/problem_results/qafiro_tiny_qp1.RDS b/inst/tinytest/problem_results/qafiro_tiny_qp1.RDS new file mode 100644 index 0000000..9088ac5 Binary files /dev/null and b/inst/tinytest/problem_results/qafiro_tiny_qp1.RDS differ diff --git a/inst/tinytest/problem_results/qafiro_tiny_qp2.RDS b/inst/tinytest/problem_results/qafiro_tiny_qp2.RDS new file mode 100644 index 0000000..a0f89ae Binary files /dev/null and b/inst/tinytest/problem_results/qafiro_tiny_qp2.RDS differ diff --git a/inst/tinytest/problem_results/qafiro_tiny_qp3.RDS b/inst/tinytest/problem_results/qafiro_tiny_qp3.RDS new file mode 100644 index 0000000..f69db53 Binary files /dev/null and b/inst/tinytest/problem_results/qafiro_tiny_qp3.RDS differ diff --git a/inst/tinytest/problem_results/random_prob.RDS b/inst/tinytest/problem_results/random_prob.RDS new file mode 100644 index 0000000..dfda8d2 Binary files /dev/null and b/inst/tinytest/problem_results/random_prob.RDS differ diff --git a/inst/tinytest/problem_results/rob_gauss_cov_est.RDS b/inst/tinytest/problem_results/rob_gauss_cov_est.RDS new file mode 100644 index 0000000..d29ef92 Binary files /dev/null and b/inst/tinytest/problem_results/rob_gauss_cov_est.RDS differ diff --git a/inst/tinytest/problem_results/small_lp.RDS b/inst/tinytest/problem_results/small_lp.RDS new file mode 100644 index 0000000..869d4f1 Binary files /dev/null and b/inst/tinytest/problem_results/small_lp.RDS differ diff --git a/inst/tinytest/problem_results/small_qp1.RDS b/inst/tinytest/problem_results/small_qp1.RDS new file mode 100644 index 0000000..932b879 Binary files /dev/null and b/inst/tinytest/problem_results/small_qp1.RDS differ diff --git a/inst/tinytest/problem_results/unbounded_tiny_qp.RDS b/inst/tinytest/problem_results/unbounded_tiny_qp.RDS new file mode 100644 index 0000000..ef42ef2 Binary files /dev/null and b/inst/tinytest/problem_results/unbounded_tiny_qp.RDS differ diff --git a/inst/tinytest/test_example.R b/inst/tinytest/test_example.R new file mode 100644 index 0000000..a77c5f2 --- /dev/null +++ b/inst/tinytest/test_example.R @@ -0,0 +1,13 @@ +## A simple example" + +A <- matrix(c(1), 2, 1) +b <- c(1,1) +c <- c(1) +cone <- list(z = 2) +params <- list(eps_abs = 1e-3, eps_rel = 1e-3, max_iters = 50) +sol <- scs(A = A, b = b, obj = c, cone = cone, control = params) + +expect_equal(sol$info$status, "solved") +expect_equal(sol$x, 1, tolerance = 1e-7) +expect_equal(sol$y, c(-0.5, -0.5), tolerance = 1e-7) +expect_equal(sol$info$pobj, 1, tolerance = 1e-7) diff --git a/inst/tinytest/test_problems.R b/inst/tinytest/test_problems.R new file mode 100644 index 0000000..70f86b8 --- /dev/null +++ b/inst/tinytest/test_problems.R @@ -0,0 +1,53 @@ +## "Saved Problems" + +rds_files <- c( + "degenerate1.RDS", + "degenerate2.RDS", + "degenerate3.RDS", + "degenerate4.RDS", + "hs21_tiny_qp1.RDS", + "hs21_tiny_qp2.RDS", + "infeasible_tiny_qp.RDS", + "max_ent.RDS", + "qafiro_tiny_qp1.RDS", + "qafiro_tiny_qp2.RDS", + "qafiro_tiny_qp3.RDS", + "random_prob.RDS", + "rob_gauss_cov_est.RDS", + "small_lp.RDS", + "small_qp1.RDS", + "unbounded_tiny_qp.RDS" +) + +info_vars_to_check <- c( + "iter", + "status", + "status_val", + "scale_updates", + "pobj", + "dobj", + ## "res_pri", + ## "res_dual", + ## "gap", + ## "res_infeas", + "res_unbdd_a", + "res_unbdd_p", + ## "setup_time", + ## "solve_time", + "scale", + ## "comp_slack", + "rejected_accel_steps", + "accepted_accel_steps" + ## "lin_sys_time", + ## "cone_time", + ## "accel_time" +) + +sol_vars_to_check <- c("x", "y", "s") + +for (fname in rds_files) { + d <- readRDS(file.path("problem_results", fname)) + sol <- scs(A = d$data$A, P = d$data$P, b = d$data$b, obj = d$data$obj, cone = d$cone, control = d$settings) + expect_equal(sol$info[info_vars_to_check], d$sol$info[info_vars_to_check], tolerance = d$settings$eps_abs) + expect_equal(sol[sol_vars_to_check], d$sol[sol_vars_to_check], tolerance = d$settings$eps_abs) +} diff --git a/inst/tinytest/test_psd.R b/inst/tinytest/test_psd.R new file mode 100644 index 0000000..946bac2 --- /dev/null +++ b/inst/tinytest/test_psd.R @@ -0,0 +1,29 @@ +## Simple PSD Test + +A <- simple_triplet_matrix( + i = c(1L, 2L, 3L, 4L, 5L, 7L, 8L, 9L, 1L, 2L, 3L, 5L, 6L, 7L, 8L, 9L, 1L, + 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L), + j = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, + 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), + v = c(-7, -15.556349186104, 3, -21, -15.556349186104, 10, 11.3137084989848, + 5, 7, -25.4558441227157, 8, 14.142135623731, 22.6274169979695, + -10, -14.142135623731, 3, -2, -11.3137084989848, 1, -5, 2.82842712474619, + -24.0416305603426, -6, 11.3137084989848, 6), nrow = 9L, ncol = 3L) + +rhs <- c(33, -12.7279220613579, 26, 14, 12.7279220613579, 56.5685424949238, 91, 14.142135623731, 15) +obj <- c(1, -1, 1) +cone <- list(z = 0L, l = 0L, s = c(2, 3)) + +sol <- scs(A = A, b = rhs, obj = obj, cone = cone, control = list(verbose = 1)) +expect_equal(sol$info$status, "solved") +expect_equal(sol$x, + c(-0.36778629730617, 1.89834935806707, -0.88746074956525), + tolerance = 1e-4) +expect_equal(sol$y, + c(0.00396134156379081, -0.00613634113889057, 0.00475276897567086, 0.0558030988006113, + -0.00340904764830297, 0.0342440719001259, 0.000104130479854425, -0.00147926212203912, + 0.0105070907711366), + tolerance = 1e-4) +expect_equal(sol$info$pobj, -3.1535964049385, tolerance = 1e-4) +expect_equal(sol$info$dobj, -3.1535519733301, tolerance = 1e-4) + diff --git a/inst/tinytest/test_random_lp.R b/inst/tinytest/test_random_lp.R new file mode 100644 index 0000000..3231498 --- /dev/null +++ b/inst/tinytest/test_random_lp.R @@ -0,0 +1,14 @@ +## A Random LP Problem + +set.seed(1) +m <- 100 +n <- 100 +A <- matrix(rnorm(m * n), m, n) +b <- rnorm(m) +c <- rnorm(n) +cone <- list(z = m) +params <- list(eps_rel = 1e-4, eps_abs = 1e-4, max_iters = 5000) +sol <- scs(A = A, b = b, obj = c, cone = cone, control = params) +expect_equal(sol$info$status, "solved") +expect_equal(sol$info$pobj, 13.5089, tolerance = 1e-4) +expect_equal(sol$info$dobj, 13.5089, tolerance = 1e-4) diff --git a/inst/tinytest/test_socp.R b/inst/tinytest/test_socp.R new file mode 100644 index 0000000..068f9d2 --- /dev/null +++ b/inst/tinytest/test_socp.R @@ -0,0 +1,12 @@ +## SOCP Test + +A <- simple_triplet_matrix(i = 1:4, j = c(1L, 1L, 2L, 3L), v = c(1, -1, -1, -1), nrow = 4L, ncol = 3L) +rhs <- c(1.4142135623731, 0, 0, 0) +obj <- c(1, 1, 1) +cone <- list(z = 1L, l = 0L, q = 3L) + +sol <- scs(A = A, b = rhs, obj = obj, cone = cone) +expect_equal(sol$info$status, "solved") +expect_equal(sol$x, c(sqrt(2), -1, -1), tolerance = 1e-7) +expect_equal(sol$info$pobj, -0.5857864, tolerance = 1e-5) +expect_equal(sol$info$dobj, -0.5857864, tolerance = 1e-5) diff --git a/inst/tinytest/test_sparse_utils.R b/inst/tinytest/test_sparse_utils.R new file mode 100644 index 0000000..3fd1173 --- /dev/null +++ b/inst/tinytest/test_sparse_utils.R @@ -0,0 +1,23 @@ +## Some tests for utils + +s <- Matrix::sparseMatrix(i = c(2,4,3:5), j= c(4,7:5,5), x = 1:5, dims = c(7,7), symmetric = TRUE) + +## Test that make_csc_sym_matrix works on plain matrices + +ms <- as.matrix(s) +cm <- scs:::make_csc_symm_matrix.matrix(ms) +s2 <- Matrix::sparseMatrix(i = cm[["matind"]], p = cm[["matbeg"]], x = cm[["values"]], + symmetric = TRUE, index1 = FALSE) + +expect_equal(s, s2) + + +## Test that make_csc_sym_matrix works on simple triplet matrices + +ts <- as(s, "dgTMatrix") +sl <- slam::simple_triplet_matrix(i = ts@i, j = ts@j, v = ts@x, nrow = 7, ncol = 7) + +tm <- scs:::make_csc_symm_matrix.simple_triplet_matrix(sl) +s3 <- Matrix::sparseMatrix(i = tm[["matind"]], p = tm[["matbeg"]], x = tm[["values"]], dims = c(7, 7), + symmetric = TRUE, index1 = FALSE) +expect_equal(s, s3) diff --git a/inst/tinytest/test_tiny.R b/inst/tinytest/test_tiny.R new file mode 100644 index 0000000..bd16bf0 --- /dev/null +++ b/inst/tinytest/test_tiny.R @@ -0,0 +1,7 @@ +## A tiny test + +sol <- scs(A = matrix(c(0.5, 2), 2, 1), b = c(3, 1), obj = 1, + cone = list(l = 2), control = list(max_iters = 5000)) +expect_equal(sol$info$status, "unbounded") +expect_equal(sol$info$pobj, -Inf) +expect_equal(sol$info$dobj, -Inf) diff --git a/src/Makevars b/src/Makevars index ca70820..3afc1b5 100644 --- a/src/Makevars +++ b/src/Makevars @@ -1,15 +1,7 @@ SCS_DIR=scs SCS_MODS_DIR=scs_mods -SOLARIS=$(shell $(R_HOME)/bin/Rscript -e 'cat(grepl("SunOS", Sys.info()["sysname"]))') - -ifeq ($(SOLARIS),TRUE) - SOLARIS_FLAG=-DSOLARIS -else - SOLARIS_FLAG=-USOLARIS -endif - -PKG_CFLAGS=$(SOLARIS_FLAG) -I./$(SCS_DIR)/include -DUSE_LAPACK -DCOPYAMATRIX +PKG_CFLAGS=-I./$(SCS_DIR)/include -DUSE_LAPACK -DCOPYAMATRIX PKG_LIBS=-L$(SCS_DIR)/out -lscsdir $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB): init.o scsr.o @@ -17,8 +9,8 @@ $(SHLIB): init.o scsr.o scsr.o: scs.ts scs.ts: - (cp -f $(SCS_MODS_DIR)/scs.mk $(SCS_DIR) && \ - cp -f $(SCS_MODS_DIR)/rw.c $(SCS_DIR)/src && \ + (cp -f $(SCS_MODS_DIR)/rw.c $(SCS_MODS_DIR)/scs.c $(SCS_DIR)/src && \ + cp -f $(SCS_MODS_DIR)/private.c $(SCS_DIR)/linsys/cpu/direct && \ (cd $(SCS_DIR) && \ ($(MAKE) purge && \ $(MAKE) out/libscsdir.a CC="$(CC)" CFLAGS="$(CFLAGS) $(PKG_CFLAGS) $(CPICFLAGS) $(SOLARIS_FLAG)" AR="$(AR)" RANLIB="$(RANLIB)")) && \ diff --git a/src/Makevars.win b/src/Makevars.win index b5a3355..548cbb0 100644 --- a/src/Makevars.win +++ b/src/Makevars.win @@ -9,7 +9,7 @@ $(SHLIB): init.o scsr.o scsr.o: scsr.ts scsr.ts: - cp -f $(SCS_MODS_DIR)/scs.mk $(SCS_DIR) - cp -f $(SCS_MODS_DIR)/rw.c $(SCS_DIR)/src + cp -f $(SCS_MODS_DIR)/rw.c $(SCS_MODS_DIR)/scs.c $(SCS_DIR)/src + cp -f $(SCS_MODS_DIR)/private.c $(SCS_DIR)/linsys/cpu/direct cd $(SCS_DIR) && CC="$(CC)" CFLAGS="$(CFLAGS) $(PKG_CFLAGS) $(CPICFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)" $(MAKE) out/libscsdir.a touch $@ diff --git a/src/scs b/src/scs index d48ce1b..fa32d87 160000 --- a/src/scs +++ b/src/scs @@ -1 +1 @@ -Subproject commit d48ce1b457d5b49ff91f9778849d1f8d9db3cdd4 +Subproject commit fa32d873d1812d6b80597a417d8e61a3a224ad50 diff --git a/src/scs_mods/README.md b/src/scs_mods/README.md index ca289c1..513b4cf 100644 --- a/src/scs_mods/README.md +++ b/src/scs_mods/README.md @@ -1,13 +1,12 @@ ## Summary of modifications -These modifications are against scs 3.0 (3aaa93c7aa04c7001df5e51b81f21b126dfa99b3). +These modifications are against [scs@fa32d87](https://github.com/cvxgrp/scs). 1. In `rw.c`, all the `fread` calls were checked for returned `bytes` to avoid compilation warnings. Routines affected are `read_scs_cone`, `read_scs_stgs`, `read_amatrix`, `read_scs_data`, - `SCS`. + `SCS`. This was done by adding two macros `FREAD` and `FWRITE` and + globally replacing `fread` with `FREAD` and `fwrite` with + `FWRITE`, except for line 144. -2. In `scs.mk` added a solaris check to ensure it compiles using - Oracle developer studio or GNU tools. This is for CRAN. - - +2. Remove all SOLARIS patches as the platform is no longer supported. diff --git a/src/scs_mods/private.c b/src/scs_mods/private.c new file mode 100644 index 0000000..2b33f2f --- /dev/null +++ b/src/scs_mods/private.c @@ -0,0 +1,254 @@ +#include "private.h" + +const char *scs_get_lin_sys_method(void) { + return "sparse-direct-amd-qdldl"; +} + +void scs_free_lin_sys_work(ScsLinSysWork *p) { + if (p) { + SCS(cs_spfree)(p->L); + SCS(cs_spfree)(p->kkt); + scs_free(p->diag_p); + scs_free(p->perm); + scs_free(p->Dinv); + scs_free(p->bp); + scs_free(p->diag_r_idxs); + scs_free(p->Lnz); + scs_free(p->iwork); + scs_free(p->etree); + scs_free(p->D); + scs_free(p->bwork); + scs_free(p->fwork); + scs_free(p); + } +} + +static scs_int _ldl_init(ScsMatrix *A, scs_int *P, scs_float **info) { + *info = (scs_float *)scs_calloc(AMD_INFO, sizeof(scs_float)); + return amd_order(A->n, A->p, A->i, P, (scs_float *)SCS_NULL, *info); +} + +/* call only once */ +static scs_int ldl_prepare(ScsLinSysWork *p) { + ScsMatrix *kkt = p->kkt, *L = p->L; + scs_int nzmax, n = kkt->n; + p->etree = (scs_int *)scs_calloc(n, sizeof(scs_int)); + p->Lnz = (scs_int *)scs_calloc(n, sizeof(scs_int)); + p->iwork = (scs_int *)scs_calloc(3 * n, sizeof(scs_int)); + L->p = (scs_int *)scs_calloc((1 + n), sizeof(scs_int)); + nzmax = QDLDL_etree(n, kkt->p, kkt->i, p->iwork, p->Lnz, p->etree); + if (nzmax < 0) { + scs_printf("Error in elimination tree calculation.\n"); + if (nzmax == -1) { + scs_printf("Matrix is not perfectly upper triangular.\n"); + } else if (nzmax == -2) { + scs_printf("Integer overflow in L nonzero count.\n"); + } + return nzmax; + } + + L->x = (scs_float *)scs_calloc(nzmax, sizeof(scs_float)); + L->i = (scs_int *)scs_calloc(nzmax, sizeof(scs_int)); + p->Dinv = (scs_float *)scs_calloc(n, sizeof(scs_float)); + p->D = (scs_float *)scs_calloc(n, sizeof(scs_float)); + p->bwork = (scs_int *)scs_calloc(n, sizeof(scs_int)); + p->fwork = (scs_float *)scs_calloc(n, sizeof(scs_float)); + return nzmax; +} + +/* can call many times */ +static scs_int ldl_factor(ScsLinSysWork *p, scs_int num_vars) { + scs_int factor_status; + ScsMatrix *kkt = p->kkt, *L = p->L; +#if VERBOSITY > 0 + scs_printf("numeric factorization\n"); +#endif + factor_status = + QDLDL_factor(kkt->n, kkt->p, kkt->i, kkt->x, L->p, L->i, L->x, p->D, + p->Dinv, p->Lnz, p->etree, p->bwork, p->iwork, p->fwork); +#if VERBOSITY > 0 + scs_printf("finished numeric factorization.\n"); +#endif + if (factor_status < 0) { + scs_printf("Error in LDL factorization when computing the nonzero " + "elements. There are zeros in the diagonal matrix.\n"); + } else if (factor_status < num_vars) { + scs_printf("Error in LDL factorization when computing the nonzero " + "elements. The problem seems to be non-convex.\n"); + scs_printf("factor_status: %li, num_vars: %li\n", (long)factor_status, + (long)num_vars); + return -1; + } + p->factorizations++; + return factor_status; +} + +static void _ldl_perm(scs_int n, scs_float *x, scs_float *b, scs_int *P) { + scs_int j; + for (j = 0; j < n; j++) + x[j] = b[P[j]]; +} + +static void _ldl_permt(scs_int n, scs_float *x, scs_float *b, scs_int *P) { + scs_int j; + for (j = 0; j < n; j++) + x[P[j]] = b[j]; +} + +static void _ldl_solve(scs_float *b, ScsMatrix *L, scs_float *Dinv, scs_int *P, + scs_float *bp) { + /* solves PLDL'P' x = b for x */ + scs_int n = L->n; + _ldl_perm(n, bp, b, P); + QDLDL_solve(n, L->p, L->i, L->x, Dinv, bp); + _ldl_permt(n, b, bp, P); +} + +static scs_int *cs_pinv(scs_int const *p, scs_int n) { + scs_int k, *pinv; + if (!p) { + return SCS_NULL; + } /* p = SCS_NULL denotes identity */ + pinv = (scs_int *)scs_calloc(n, sizeof(scs_int)); /* allocate result */ + if (!pinv) { + return SCS_NULL; + } /* out of memory */ + for (k = 0; k < n; k++) + pinv[p[k]] = k; /* invert the permutation */ + return pinv; /* return result */ +} + +static ScsMatrix *cs_symperm(const ScsMatrix *A, const scs_int *pinv, + scs_int *idx_mapping, scs_int values) { + scs_int i, j, p, q, i2, j2, n, *Ap, *Ai, *Cp, *Ci, *w; + scs_float *Cx, *Ax; + ScsMatrix *C; + n = A->n; + Ap = A->p; + Ai = A->i; + Ax = A->x; + C = SCS(cs_spalloc)(n, n, Ap[n], values && (Ax != SCS_NULL), + 0); /* alloc result*/ + w = (scs_int *)scs_calloc(n, sizeof(scs_int)); /* get workspace */ + if (!C || !w) { + return SCS(cs_done)(C, w, SCS_NULL, 0); + } /* out of memory */ + Cp = C->p; + Ci = C->i; + Cx = C->x; + for (j = 0; j < n; j++) /* count entries in each column of C */ + { + j2 = pinv ? pinv[j] : j; /* column j of A is column j2 of C */ + for (p = Ap[j]; p < Ap[j + 1]; p++) { + i = Ai[p]; + if (i > j) { + continue; + } /* skip lower triangular part of A */ + i2 = pinv ? pinv[i] : i; /* row i of A is row i2 of C */ + w[MAX(i2, j2)]++; /* column count of C */ + } + } + SCS(cumsum)(Cp, w, n); /* compute column pointers of C */ + for (j = 0; j < n; j++) { + j2 = pinv ? pinv[j] : j; /* column j of A is column j2 of C */ + for (p = Ap[j]; p < Ap[j + 1]; p++) { + i = Ai[p]; + if (i > j) { + continue; + } /* skip lower triangular part of A*/ + i2 = pinv ? pinv[i] : i; /* row i of A is row i2 of C */ + Ci[q = w[MAX(i2, j2)]++] = MIN(i2, j2); + if (Cx) { + Cx[q] = Ax[p]; + } + idx_mapping[p] = q; /* old to new indices */ + } + } + return SCS(cs_done)(C, w, SCS_NULL, + 1); /* success; free workspace, return C */ +} + +static ScsMatrix *permute_kkt(const ScsMatrix *A, const ScsMatrix *P, + ScsLinSysWork *p, const scs_float *diag_r) { + scs_float *info; + scs_int *Pinv, amd_status, *idx_mapping, i, kkt_nnz; + ScsMatrix *kkt_perm; + ScsMatrix *kkt = SCS(form_kkt)(A, P, p->diag_p, diag_r, p->diag_r_idxs, 1); + if (!kkt) { + return SCS_NULL; + } + kkt_nnz = kkt->p[kkt->n]; + amd_status = _ldl_init(kkt, p->perm, &info); + if (amd_status < 0) { + scs_printf("AMD permutatation error.\n"); + return SCS_NULL; + } +#if VERBOSITY > 0 + scs_printf("Matrix factorization info:\n"); + amd_info(info); +#endif + Pinv = cs_pinv(p->perm, A->n + A->m); + idx_mapping = (scs_int *)scs_calloc(kkt_nnz, sizeof(scs_int)); + kkt_perm = cs_symperm(kkt, Pinv, idx_mapping, 1); + for (i = 0; i < A->n + A->m; i++) { + p->diag_r_idxs[i] = idx_mapping[p->diag_r_idxs[i]]; + } + SCS(cs_spfree)(kkt); + scs_free(Pinv); + scs_free(info); + scs_free(idx_mapping); + return kkt_perm; +} + +void scs_update_lin_sys_diag_r(ScsLinSysWork *p, const scs_float *diag_r) { + scs_int i, ldl_status; + for (i = 0; i < p->n; ++i) { + /* top left is R_x + P, bottom right is -R_y */ + p->kkt->x[p->diag_r_idxs[i]] = p->diag_p[i] + diag_r[i]; + } + for (i = p->n; i < p->n + p->m; ++i) { + /* top left is R_x + P, bottom right is -R_y */ + p->kkt->x[p->diag_r_idxs[i]] = -diag_r[i]; + } + ldl_status = ldl_factor(p, p->n); + if (ldl_status < 0) { + scs_printf("Error in LDL factorization when updating.\n"); + /* TODO: this is broken somehow */ + /* SCS(free_lin_sys_work)(p); */ + return; + } +} + +ScsLinSysWork *scs_init_lin_sys_work(const ScsMatrix *A, const ScsMatrix *P, + const scs_float *diag_r) { + ScsLinSysWork *p = (ScsLinSysWork *)scs_calloc(1, sizeof(ScsLinSysWork)); + scs_int n_plus_m = A->n + A->m, ldl_status, ldl_prepare_status; + p->m = A->m; + p->n = A->n; + p->diag_p = (scs_float *)scs_calloc(A->n, sizeof(scs_float)); + p->perm = (scs_int *)scs_calloc(sizeof(scs_int), n_plus_m); + p->L = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix)); + p->bp = (scs_float *)scs_calloc(n_plus_m, sizeof(scs_float)); + p->diag_r_idxs = (scs_int *)scs_calloc(n_plus_m, sizeof(scs_int)); + p->factorizations = 0; + p->L->m = n_plus_m; + p->L->n = n_plus_m; + p->kkt = permute_kkt(A, P, p, diag_r); + ldl_prepare_status = ldl_prepare(p); + ldl_status = ldl_factor(p, A->n); + if (ldl_prepare_status < 0 || ldl_status < 0) { + scs_printf("Error in LDL initial factorization.\n"); + /* TODO: this is broken somehow */ + /* SCS(free_lin_sys_work)(p); */ + return SCS_NULL; + } + return p; +} + +scs_int scs_solve_lin_sys(ScsLinSysWork *p, scs_float *b, const scs_float *s, + scs_float tol) { + /* returns solution to linear system */ + /* Ax = b with solution stored in b */ + _ldl_solve(b, p->L, p->Dinv, p->perm, p->bp); + return 0; +} diff --git a/src/scs_mods/rw.c b/src/scs_mods/rw.c index 02826f9..d278c04 100644 --- a/src/scs_mods/rw.c +++ b/src/scs_mods/rw.c @@ -1,5 +1,6 @@ #include "rw.h" +#include #include #include #include @@ -12,6 +13,25 @@ #define FREAD(a, b, c, d) if ( fread((a), (b), (c), (d)) != (c) ) scs_printf("error reading data\n") #define FWRITE(a, b, c, d) if ( fwrite((a), (b), (c), (d)) != (c) ) scs_printf("error writing data\n") +#if NO_READ_WRITE > 0 /* Disables all read / write functionality */ + +void SCS(write_data)(const ScsData *d, const ScsCone *k, + const ScsSettings *stgs) { + /* Do nothing */ +} +scs_int SCS(read_data)(const char *filename, ScsData **d, ScsCone **k, + ScsSettings **stgs) { + /* Failure */ + return -1; +} +void SCS(log_data_to_csv)(const ScsCone *k, const ScsSettings *stgs, + const ScsWork *w, scs_int iter, + SCS(timer) * solve_timer) { + /* Do nothing */ +} + +#else + /* writes/reads problem data to/from filename */ /* This is a VERY naive implementation, doesn't care about portability etc */ @@ -31,26 +51,65 @@ static void write_scs_cone(const ScsCone *k, FILE *fout) { FWRITE(k->p, sizeof(scs_float), k->psize, fout); } -static ScsCone *read_scs_cone(FILE *fin) { +/* + * Read integer data from file. If the integer width on file is + * different to scs_int then it will cast the ints after reading + * to be compatible with the SCS data types. + */ +static size_t read_int(scs_int *dest, size_t file_int_sz, size_t nitems, + FILE *fin) { + if (file_int_sz == sizeof(scs_int)) { + return fread(dest, sizeof(scs_int), nitems, fin); + } + void *ptr = scs_calloc(nitems, file_int_sz); + size_t val = fread(ptr, file_int_sz, nitems, fin); + size_t i; + switch (file_int_sz) { + case 4: + for (i = 0; i < nitems; ++i) { + dest[i] = (scs_int)(((int *)ptr)[i]); + } + break; + case 8: + for (i = 0; i < nitems; ++i) { + dest[i] = (scs_int)(((long long *)ptr)[i]); + } + break; + } + if (ptr) { + scs_free(ptr); + } + return val; +} + +static ScsCone *read_scs_cone(FILE *fin, size_t file_int_sz) { ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone)); - FREAD(&(k->z), sizeof(scs_int), 1, fin); - FREAD(&(k->l), sizeof(scs_int), 1, fin); - FREAD(&(k->bsize), sizeof(scs_int), 1, fin); - k->bl = scs_calloc(MAX(k->bsize - 1, 0), sizeof(scs_float)); - k->bu = scs_calloc(MAX(k->bsize - 1, 0), sizeof(scs_float)); - FREAD(k->bl, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); - FREAD(k->bu, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); - FREAD(&(k->qsize), sizeof(scs_int), 1, fin); - k->q = scs_calloc(k->qsize, sizeof(scs_int)); - FREAD(k->q, sizeof(scs_int), k->qsize, fin); - FREAD(&(k->ssize), sizeof(scs_int), 1, fin); - k->s = scs_calloc(k->ssize, sizeof(scs_int)); - FREAD(k->s, sizeof(scs_int), k->ssize, fin); - FREAD(&(k->ep), sizeof(scs_int), 1, fin); - FREAD(&(k->ed), sizeof(scs_int), 1, fin); - FREAD(&(k->psize), sizeof(scs_int), 1, fin); - k->p = scs_calloc(k->psize, sizeof(scs_float)); - FREAD(k->p, sizeof(scs_float), k->psize, fin); + read_int(&(k->z), file_int_sz, 1, fin); + read_int(&(k->l), file_int_sz, 1, fin); + read_int(&(k->bsize), file_int_sz, 1, fin); + if (k->bsize > 1) { + k->bl = (scs_float *)scs_calloc(MAX(k->bsize - 1, 0), sizeof(scs_float)); + k->bu = (scs_float *)scs_calloc(MAX(k->bsize - 1, 0), sizeof(scs_float)); + FREAD(k->bl, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); + FREAD(k->bu, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); + } + read_int(&(k->qsize), file_int_sz, 1, fin); + if (k->qsize) { + k->q = (scs_int *)scs_calloc(k->qsize, sizeof(scs_int)); + read_int(k->q, file_int_sz, k->qsize, fin); + } + read_int(&(k->ssize), file_int_sz, 1, fin); + if (k->ssize) { + k->s = (scs_int *)scs_calloc(k->ssize, sizeof(scs_int)); + read_int(k->s, file_int_sz, k->ssize, fin); + } + read_int(&(k->ep), file_int_sz, 1, fin); + read_int(&(k->ed), file_int_sz, 1, fin); + read_int(&(k->psize), file_int_sz, 1, fin); + if (k->psize) { + k->p = (scs_float *)scs_calloc(k->psize, sizeof(scs_float)); + FREAD(k->p, sizeof(scs_float), k->psize, fin); + } return k; } @@ -74,21 +133,21 @@ static void write_scs_stgs(const ScsSettings *s, FILE *fout) { /* Do not write the log_csv_filename */ } -static ScsSettings *read_scs_stgs(FILE *fin) { +static ScsSettings *read_scs_stgs(FILE *fin, size_t file_int_sz) { ScsSettings *s = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings)); - FREAD(&(s->normalize), sizeof(scs_int), 1, fin); + read_int(&(s->normalize), file_int_sz, 1, fin); FREAD(&(s->scale), sizeof(scs_float), 1, fin); FREAD(&(s->rho_x), sizeof(scs_float), 1, fin); - FREAD(&(s->max_iters), sizeof(scs_int), 1, fin); + read_int(&(s->max_iters), file_int_sz, 1, fin); FREAD(&(s->eps_abs), sizeof(scs_float), 1, fin); FREAD(&(s->eps_rel), sizeof(scs_float), 1, fin); FREAD(&(s->eps_infeas), sizeof(scs_float), 1, fin); FREAD(&(s->alpha), sizeof(scs_float), 1, fin); - FREAD(&(s->verbose), sizeof(scs_int), 1, fin); - FREAD(&(s->warm_start), sizeof(scs_int), 1, fin); - FREAD(&(s->acceleration_lookback), sizeof(scs_int), 1, fin); - FREAD(&(s->acceleration_interval), sizeof(scs_int), 1, fin); - FREAD(&(s->adaptive_scale), sizeof(scs_int), 1, fin); + read_int(&(s->verbose), file_int_sz, 1, fin); + read_int(&(s->warm_start), file_int_sz, 1, fin); + read_int(&(s->acceleration_lookback), file_int_sz, 1, fin); + read_int(&(s->acceleration_interval), file_int_sz, 1, fin); + read_int(&(s->adaptive_scale), file_int_sz, 1, fin); return s; } @@ -101,18 +160,18 @@ static void write_amatrix(const ScsMatrix *A, FILE *fout) { FWRITE(A->i, sizeof(scs_int), Anz, fout); } -static ScsMatrix *read_amatrix(FILE *fin) { +static ScsMatrix *read_amatrix(FILE *fin, size_t file_int_sz) { scs_int Anz; ScsMatrix *A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix)); - FREAD(&(A->m), sizeof(scs_int), 1, fin); - FREAD(&(A->n), sizeof(scs_int), 1, fin); - A->p = scs_calloc(A->n + 1, sizeof(scs_int)); - FREAD(A->p, sizeof(scs_int), A->n + 1, fin); + read_int(&(A->m), file_int_sz, 1, fin); + read_int(&(A->n), file_int_sz, 1, fin); + A->p = (scs_int *)scs_calloc(A->n + 1, sizeof(scs_int)); + read_int(A->p, file_int_sz, A->n + 1, fin); Anz = A->p[A->n]; - A->x = scs_calloc(Anz, sizeof(scs_float)); - A->i = scs_calloc(Anz, sizeof(scs_int)); + A->x = (scs_float *)scs_calloc(Anz, sizeof(scs_float)); + A->i = (scs_int *)scs_calloc(Anz, sizeof(scs_int)); FREAD(A->x, sizeof(scs_float), Anz, fin); - FREAD(A->i, sizeof(scs_int), Anz, fin); + read_int(A->i, file_int_sz, Anz, fin); return A; } @@ -130,30 +189,30 @@ static void write_scs_data(const ScsData *d, FILE *fout) { } } -static ScsData *read_scs_data(FILE *fin) { +static ScsData *read_scs_data(FILE *fin, size_t file_int_sz) { scs_int has_p = 0; ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData)); - FREAD(&(d->m), sizeof(scs_int), 1, fin); - FREAD(&(d->n), sizeof(scs_int), 1, fin); - d->b = scs_calloc(d->m, sizeof(scs_float)); - d->c = scs_calloc(d->n, sizeof(scs_float)); + + read_int(&(d->m), file_int_sz, 1, fin); + read_int(&(d->n), file_int_sz, 1, fin); + d->b = (scs_float *)scs_calloc(d->m, sizeof(scs_float)); + d->c = (scs_float *)scs_calloc(d->n, sizeof(scs_float)); FREAD(d->b, sizeof(scs_float), d->m, fin); FREAD(d->c, sizeof(scs_float), d->n, fin); - d->A = read_amatrix(fin); + d->A = read_amatrix(fin, file_int_sz); /* If has_p bit is not set or this hits end of file then has_p = 0 */ - has_p &= fread(&has_p, sizeof(scs_int), 1, fin); - d->P = has_p ? read_amatrix(fin) : SCS_NULL; + has_p &= read_int(&has_p, file_int_sz, 1, fin); + d->P = has_p ? read_amatrix(fin, file_int_sz) : SCS_NULL; return d; } void SCS(write_data)(const ScsData *d, const ScsCone *k, const ScsSettings *stgs) { FILE *fout = fopen(stgs->write_data_filename, "wb"); - uint32_t scs_int_sz = (uint32_t)SCS(sizeof_int)(); - uint32_t scs_float_sz = (uint32_t)SCS(sizeof_float)(); + uint32_t scs_int_sz = (uint32_t)sizeof(scs_int); + uint32_t scs_float_sz = (uint32_t)sizeof(scs_float); const char *scs_version = SCS_VERSION; uint32_t scs_version_sz = (uint32_t)strlen(scs_version); - scs_printf("writing data to %s\n", stgs->write_data_filename); FWRITE(&(scs_int_sz), sizeof(uint32_t), 1, fout); FWRITE(&(scs_float_sz), sizeof(uint32_t), 1, fout); FWRITE(&(scs_version_sz), sizeof(uint32_t), 1, fout); @@ -170,9 +229,11 @@ scs_int SCS(read_data)(const char *filename, ScsData **d, ScsCone **k, uint32_t file_float_sz; uint32_t file_version_sz; char file_version[16]; + errno = 0; FILE *fin = fopen(filename, "rb"); if (!fin) { scs_printf("Error reading file %s\n", filename); + scs_printf("errno:%i:%s\n", errno, strerror(errno)); return -1; } scs_printf("Reading data from %s\n", filename); @@ -180,11 +241,10 @@ scs_int SCS(read_data)(const char *filename, ScsData **d, ScsCone **k, FREAD(&(file_float_sz), sizeof(uint32_t), 1, fin); if (file_int_sz != (uint32_t)sizeof(scs_int)) { scs_printf( - "Error, sizeof(file int) is %lu, but scs expects sizeof(int) %lu, " - "scs should be recompiled with correct flags.\n", + "Warning, sizeof(file int) is %lu, but scs expects sizeof(int) %lu. " + "SCS will attempt to cast the data, which may be slow. " + "This message can be avoided by recompiling with the correct flags.\n", (unsigned long)file_int_sz, (unsigned long)sizeof(scs_int)); - fclose(fin); - return -1; } if (file_float_sz != (uint32_t)sizeof(scs_float)) { scs_printf( @@ -204,18 +264,21 @@ scs_int SCS(read_data)(const char *filename, ScsData **d, ScsCone **k, "************************************************************\n", file_version, SCS_VERSION); } - *k = read_scs_cone(fin); - *d = read_scs_data(fin); - *stgs = read_scs_stgs(fin); + *k = read_scs_cone(fin, file_int_sz); + *d = read_scs_data(fin, file_int_sz); + *stgs = read_scs_stgs(fin, file_int_sz); + scs_printf("Finished reading data.\n"); fclose(fin); return 0; } -void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, - const ScsSettings *stgs, const ScsWork *w, - scs_int iter, SCS(timer) * solve_timer) { +void SCS(log_data_to_csv)(const ScsCone *k, const ScsSettings *stgs, + const ScsWork *w, scs_int iter, + SCS(timer) * solve_timer) { ScsResiduals *r = w->r_orig; ScsResiduals *r_n = w->r_normalized; + ScsSolution *sol = w->xys_orig; + ScsSolution *sol_n = w->xys_normalized; /* if iter 0 open to write, else open to append */ FILE *fout = fopen(stgs->log_csv_filename, iter == 0 ? "w" : "a"); if (!fout) { @@ -223,13 +286,25 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, stgs->log_csv_filename); return; } - scs_int l = w->m + w->n + 1; + scs_int l = w->d->m + w->d->n + 1; if (iter == 0) { /* need to end in comma so that csv parsing is correct */ fprintf(fout, "iter," "res_pri," "res_dual," "gap," + "x_nrm_inf," + "y_nrm_inf," + "s_nrm_inf," + "x_nrm_2," + "y_nrm_2," + "s_nrm_2," + "x_nrm_inf_normalized," + "y_nrm_inf_normalized," + "s_nrm_inf_normalized," + "x_nrm_2_normalized," + "y_nrm_2_normalized," + "s_nrm_2_normalized," "ax_s_btau_nrm_inf," "px_aty_ctau_nrm_inf," "ax_s_btau_nrm_2," @@ -255,6 +330,11 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, "dobj_normalized," "tau_normalized," "kap_normalized," + "ax_nrm_inf," + "px_nrm_inf," + "aty_nrm_inf," + "b_nrm_inf," + "c_nrm_inf," "scale," "diff_u_ut_nrm_2," "diff_v_v_prev_nrm_2," @@ -270,10 +350,22 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, fprintf(fout, "%.16e,", r->res_pri); fprintf(fout, "%.16e,", r->res_dual); fprintf(fout, "%.16e,", r->gap); - fprintf(fout, "%.16e,", SCS(norm_inf)(r->ax_s_btau, w->m)); - fprintf(fout, "%.16e,", SCS(norm_inf)(r->px_aty_ctau, w->n)); - fprintf(fout, "%.16e,", SCS(norm_2)(r->ax_s_btau, w->m)); - fprintf(fout, "%.16e,", SCS(norm_2)(r->px_aty_ctau, w->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol->x, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol->y, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol->s, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol->x, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol->y, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol->s, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol_n->x, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol_n->y, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(sol_n->s, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol_n->x, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol_n->y, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(sol_n->s, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r->ax_s_btau, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r->px_aty_ctau, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_2)(r->ax_s_btau, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(r->px_aty_ctau, w->d->n)); fprintf(fout, "%.16e,", r->res_infeas); fprintf(fout, "%.16e,", r->res_unbdd_a); fprintf(fout, "%.16e,", r->res_unbdd_p); @@ -284,10 +376,10 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, fprintf(fout, "%.16e,", r_n->res_pri); fprintf(fout, "%.16e,", r_n->res_dual); fprintf(fout, "%.16e,", r_n->gap); - fprintf(fout, "%.16e,", SCS(norm_inf)(r_n->ax_s_btau, w->m)); - fprintf(fout, "%.16e,", SCS(norm_inf)(r_n->px_aty_ctau, w->n)); - fprintf(fout, "%.16e,", SCS(norm_2)(r_n->ax_s_btau, w->m)); - fprintf(fout, "%.16e,", SCS(norm_2)(r_n->px_aty_ctau, w->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r_n->ax_s_btau, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r_n->px_aty_ctau, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_2)(r_n->ax_s_btau, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_2)(r_n->px_aty_ctau, w->d->n)); fprintf(fout, "%.16e,", r_n->res_infeas); fprintf(fout, "%.16e,", r_n->res_unbdd_a); fprintf(fout, "%.16e,", r_n->res_unbdd_p); @@ -295,7 +387,12 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, fprintf(fout, "%.16e,", r_n->dobj); fprintf(fout, "%.16e,", r_n->tau); fprintf(fout, "%.16e,", r_n->kap); - fprintf(fout, "%.16e,", w->scale); + fprintf(fout, "%.16e,", SCS(norm_inf)(r->ax, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r->px, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(r->aty, w->d->n)); + fprintf(fout, "%.16e,", SCS(norm_inf)(w->b_orig, w->d->m)); + fprintf(fout, "%.16e,", SCS(norm_inf)(w->c_orig, w->d->n)); + fprintf(fout, "%.16e,", w->stgs->scale); fprintf(fout, "%.16e,", SCS(norm_diff)(w->u, w->u_t, l)); fprintf(fout, "%.16e,", SCS(norm_diff)(w->v, w->v_prev, l)); fprintf(fout, "%.16e,", SCS(norm_inf_diff)(w->u, w->u_t, l)); @@ -307,3 +404,5 @@ void SCS(log_data_to_csv)(const ScsData *d, const ScsCone *k, fprintf(fout, "\n"); fclose(fout); } + +#endif diff --git a/src/scs_mods/scs.c b/src/scs_mods/scs.c new file mode 100644 index 0000000..1220a5c --- /dev/null +++ b/src/scs_mods/scs.c @@ -0,0 +1,1252 @@ +#include "scs.h" +#include "aa.h" +#include "ctrlc.h" +#include "glbopts.h" +#include "linalg.h" +#include "linsys.h" +#include "normalize.h" +#include "rw.h" +#include "scs_matrix.h" +#include "scs_work.h" +#include "util.h" + +/* printing header */ +static const char *HEADER[] = { + " iter ", " pri res ", " dua res ", " gap ", + " obj ", " scale ", " time (s)", +}; +static const scs_int HSPACE = 9; +static const scs_int HEADER_LEN = 7; +static const scs_int LINE_LEN = 66; + +static void free_residuals(ScsResiduals *r) { + if (r) { + scs_free(r->ax); + scs_free(r->ax_s); + scs_free(r->px); + scs_free(r->aty); + scs_free(r->ax_s_btau); + scs_free(r->px_aty_ctau); + scs_free(r); + } +} + +static void free_work(ScsWork *w) { + if (w) { + scs_free(w->u); + scs_free(w->u_t); + scs_free(w->v); + scs_free(w->v_prev); + scs_free(w->rsk); + scs_free(w->h); + scs_free(w->g); + scs_free(w->b_orig); + scs_free(w->c_orig); + scs_free(w->lin_sys_warm_start); + scs_free(w->diag_r); + SCS(free_sol)(w->xys_orig); + if (w->scal) { + scs_free(w->scal->D); + scs_free(w->scal->E); + scs_free(w->scal); + } + free_residuals(w->r_orig); + if (w->stgs && w->stgs->normalize) { + SCS(free_sol)(w->xys_normalized); + free_residuals(w->r_normalized); + } + if (w->stgs) { + if (w->stgs->log_csv_filename) + scs_free((char *)w->stgs->log_csv_filename); + if (w->stgs->write_data_filename) + scs_free((char *)w->stgs->write_data_filename); + scs_free(w->stgs); + } + if (w->k) { /* deep copy */ + SCS(free_cone)(w->k); + } + if (w->d) { /* deep copy */ + SCS(free_data)(w->d); + } + scs_free(w); + } +} + +static void print_init_header(const ScsData *d, const ScsCone *k, + const ScsSettings *stgs) { + scs_int i; + char *cone_str = SCS(get_cone_header)(k); + const char *lin_sys_method = scs_get_lin_sys_method(); +#ifdef USE_LAPACK + scs_int acceleration_lookback = stgs->acceleration_lookback; + scs_int acceleration_interval = stgs->acceleration_interval; +#else + scs_int acceleration_lookback = 0; + scs_int acceleration_interval = 0; +#endif + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n\t SCS v%s - Splitting Conic Solver\n\t(c) Brendan " + "O'Donoghue, Stanford University, 2012\n", + scs_version()); + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); + scs_printf("problem: variables n: %i, constraints m: %i\n", (int)d->n, + (int)d->m); + scs_printf("%s", cone_str); + scs_free(cone_str); + scs_printf("settings: eps_abs: %.1e, eps_rel: %.1e, eps_infeas: %.1e\n" + "\t alpha: %.2f, scale: %.2e, adaptive_scale: %i\n" + "\t max_iters: %i, normalize: %i, rho_x: %.2e\n", + stgs->eps_abs, stgs->eps_rel, stgs->eps_infeas, stgs->alpha, + stgs->scale, (int)stgs->adaptive_scale, (int)stgs->max_iters, + (int)stgs->normalize, stgs->rho_x); + /* (int)stgs->warm_start); */ + if (stgs->acceleration_lookback != 0) { + scs_printf("\t acceleration_lookback: %i, acceleration_interval: %i\n", + (int)acceleration_lookback, (int)acceleration_interval); + } + if (stgs->time_limit_secs > 0.0) { + scs_printf("\t time_limit_secs: %.2e\n", stgs->time_limit_secs); + } +#ifdef _OPENMP + scs_printf("\t compiled with openmp parallelization enabled\n"); +#endif + if (lin_sys_method) { + scs_printf("lin-sys: %s\n\t nnz(A): %li, nnz(P): %li\n", lin_sys_method, + (long)d->A->p[d->A->n], d->P ? (long)d->P->p[d->P->n] : 0l); + } + +#ifdef MATLAB_MEX_FILE + mexEvalString("drawnow;"); +#endif +} + +static void populate_on_failure(scs_int m, scs_int n, ScsSolution *sol, + ScsInfo *info, scs_int status_val, + const char *msg) { + if (info) { + info->gap = NAN; + info->res_pri = NAN; + info->res_dual = NAN; + info->pobj = NAN; + info->dobj = NAN; + info->iter = -1; + info->status_val = status_val; + info->solve_time = NAN; + strcpy(info->status, msg); + } + if (sol) { + if (n > 0) { + if (!sol->x) { + sol->x = (scs_float *)scs_calloc(n, sizeof(scs_float)); + } + SCS(scale_array)(sol->x, NAN, n); + } + if (m > 0) { + if (!sol->y) { + sol->y = (scs_float *)scs_calloc(m, sizeof(scs_float)); + } + SCS(scale_array)(sol->y, NAN, m); + if (!sol->s) { + sol->s = (scs_float *)scs_calloc(m, sizeof(scs_float)); + } + SCS(scale_array)(sol->s, NAN, m); + } + } +} + +static scs_int failure(ScsWork *w, scs_int m, scs_int n, ScsSolution *sol, + ScsInfo *info, scs_int stint, const char *msg, + const char *ststr) { + scs_int status = stint; + populate_on_failure(m, n, sol, info, status, ststr); + scs_printf("Failure:%s\n", msg); + scs_end_interrupt_listener(); + return status; +} + +static inline scs_int _is_nan(scs_float x) { + return x != x; +} + +/* given x,y,s warm start, set v = [x; s / R + y; 1] + * check for nans and set to zero if present + */ +static void warm_start_vars(ScsWork *w, ScsSolution *sol) { + scs_int n = w->d->n, m = w->d->m, i; + scs_float *v = w->v; + /* normalize the warm-start */ + if (w->stgs->normalize) { + SCS(normalize_sol)(w->scal, sol); + } + for (i = 0; i < n; ++i) { + v[i] = _is_nan(sol->x[i]) ? 0. : sol->x[i]; + } + for (i = 0; i < m; ++i) { + v[i + n] = sol->y[i] + sol->s[i] / w->diag_r[i + n]; + v[i + n] = _is_nan(v[i + n]) ? 0. : v[i + n]; + } + v[n + m] = 1.0; /* tau = 1 */ + /* un-normalize so sol unchanged */ + if (w->stgs->normalize) { + SCS(un_normalize_sol)(w->scal, sol); + } +} + +static void compute_residuals(ScsResiduals *r, scs_int m, scs_int n) { + scs_float nm_ax_s, nm_px, nm_aty; + scs_float nm_ax_s_btau = NORM(r->ax_s_btau, m); + scs_float nm_px_aty_ctau = NORM(r->px_aty_ctau, n); + + r->res_pri = SAFEDIV_POS(nm_ax_s_btau, r->tau); + r->res_dual = SAFEDIV_POS(nm_px_aty_ctau, r->tau); + r->res_unbdd_a = NAN; + r->res_unbdd_p = NAN; + r->res_infeas = NAN; + if (r->ctx_tau < 0) { + nm_ax_s = NORM(r->ax_s, m); + nm_px = NORM(r->px, n); + r->res_unbdd_a = SAFEDIV_POS(nm_ax_s, -r->ctx_tau); + r->res_unbdd_p = SAFEDIV_POS(nm_px, -r->ctx_tau); + } + if (r->bty_tau < 0) { + nm_aty = NORM(r->aty, n); + r->res_infeas = SAFEDIV_POS(nm_aty, -r->bty_tau); + } +} + +static void unnormalize_residuals(ScsWork *w) { + ScsResiduals *r_n = w->r_normalized; /* normalized residuals */ + ScsResiduals *r = w->r_orig; /* original problem residuals */ + scs_float pd = w->scal->primal_scale * w->scal->dual_scale; + + /* copy vars */ + r->last_iter = r_n->last_iter; + r->tau = r_n->tau; + + /* mem copy arrays */ + memcpy(r->ax, r_n->ax, w->d->m * sizeof(scs_float)); + memcpy(r->ax_s, r_n->ax_s, w->d->m * sizeof(scs_float)); + memcpy(r->ax_s_btau, r_n->ax_s_btau, w->d->m * sizeof(scs_float)); + memcpy(r->aty, r_n->aty, w->d->n * sizeof(scs_float)); + memcpy(r->px, r_n->px, w->d->n * sizeof(scs_float)); + memcpy(r->px_aty_ctau, r_n->px_aty_ctau, w->d->n * sizeof(scs_float)); + + /* unnormalize */ + r->kap = r_n->kap / pd; + r->bty_tau = r_n->bty_tau / pd; + r->ctx_tau = r_n->ctx_tau / pd; + r->xt_p_x_tau = r_n->xt_p_x_tau / pd; + r->xt_p_x = r_n->xt_p_x / pd; + r->ctx = r_n->ctx / pd; + r->bty = r_n->bty / pd; + r->pobj = r_n->pobj / pd; + r->dobj = r_n->dobj / pd; + r->gap = r_n->gap / pd; + + SCS(un_normalize_primal)(w->scal, r->ax); + SCS(un_normalize_primal)(w->scal, r->ax_s); + SCS(un_normalize_primal)(w->scal, r->ax_s_btau); + SCS(un_normalize_dual)(w->scal, r->aty); + SCS(un_normalize_dual)(w->scal, r->px); + SCS(un_normalize_dual)(w->scal, r->px_aty_ctau); + + compute_residuals(r, w->d->m, w->d->n); +} + +/* calculates un-normalized residual quantities */ +/* this is somewhat slow but not a bottleneck */ +static void populate_residual_struct(ScsWork *w, scs_int iter) { + scs_int n = w->d->n, m = w->d->m; + /* normalized x,y,s terms */ + scs_float *x = w->xys_normalized->x; + scs_float *y = w->xys_normalized->y; + scs_float *s = w->xys_normalized->s; + ScsResiduals *r = w->r_normalized; /* normalized residuals */ + + /* checks if the residuals are unchanged by checking iteration */ + if (r->last_iter == iter) { + return; + } + r->last_iter = iter; + + memcpy(x, w->u, n * sizeof(scs_float)); + memcpy(y, &(w->u[n]), m * sizeof(scs_float)); + memcpy(s, &(w->rsk[n]), m * sizeof(scs_float)); + + r->tau = ABS(w->u[n + m]); + r->kap = ABS(w->rsk[n + m]); + + /**************** PRIMAL *********************/ + memset(r->ax, 0, m * sizeof(scs_float)); + /* ax = Ax */ + SCS(accum_by_a)(w->d->A, x, r->ax); + + memcpy(r->ax_s, r->ax, m * sizeof(scs_float)); + /* ax_s = Ax + s */ + SCS(add_scaled_array)(r->ax_s, s, m, 1.); + + memcpy(r->ax_s_btau, r->ax_s, m * sizeof(scs_float)); + /* ax_s_btau = Ax + s - b * tau */ + SCS(add_scaled_array)(r->ax_s_btau, w->d->b, m, -r->tau); + + /**************** DUAL *********************/ + memset(r->px, 0, n * sizeof(scs_float)); + if (w->d->P) { + /* px = Px */ + SCS(accum_by_p)(w->d->P, x, r->px); + r->xt_p_x_tau = SCS(dot)(r->px, x, n); + } else { + r->xt_p_x_tau = 0.; + } + + memset(r->aty, 0, n * sizeof(scs_float)); + /* aty = A'y */ + SCS(accum_by_atrans)(w->d->A, y, r->aty); + + /* r->px_aty_ctau = Px */ + memcpy(r->px_aty_ctau, r->px, n * sizeof(scs_float)); + /* r->px_aty_ctau = Px + A'y */ + SCS(add_scaled_array)(r->px_aty_ctau, r->aty, n, 1.); + /* r->px_aty_ctau = Px + A'y + c * tau */ + SCS(add_scaled_array)(r->px_aty_ctau, w->d->c, n, r->tau); + + /**************** OTHERS *****************/ + r->bty_tau = SCS(dot)(y, w->d->b, m); + r->ctx_tau = SCS(dot)(x, w->d->c, n); + + r->bty = SAFEDIV_POS(r->bty_tau, r->tau); + r->ctx = SAFEDIV_POS(r->ctx_tau, r->tau); + r->xt_p_x = SAFEDIV_POS(r->xt_p_x_tau, r->tau * r->tau); + + r->gap = ABS(r->xt_p_x + r->ctx + r->bty); + r->pobj = r->xt_p_x / 2. + r->ctx; + r->dobj = -r->xt_p_x / 2. - r->bty; + + compute_residuals(r, m, n); + + if (w->stgs->normalize) { + memcpy(w->xys_orig->x, w->xys_normalized->x, n * sizeof(scs_float)); + memcpy(w->xys_orig->y, w->xys_normalized->y, m * sizeof(scs_float)); + memcpy(w->xys_orig->s, w->xys_normalized->s, m * sizeof(scs_float)); + SCS(un_normalize_sol)(w->scal, w->xys_orig); + unnormalize_residuals(w); + } +} + +static void cold_start_vars(ScsWork *w) { + scs_int l = w->d->n + w->d->m + 1; + memset(w->v, 0, l * sizeof(scs_float)); + w->v[l - 1] = 1.; +} + +/* utility function that computes x'Ry */ +static inline scs_float dot_r(ScsWork *w, const scs_float *x, + const scs_float *y) { + scs_int i; + scs_float ip = 0.0; + for (i = 0; i < w->d->n + w->d->m; ++i) { + ip += x[i] * y[i] * w->diag_r[i]; + } + return ip; +} + +static scs_float root_plus(ScsWork *w, scs_float *p, scs_float *mu, + scs_float eta) { + scs_float a, b, c, rad, tau_scale = w->diag_r[w->d->n + w->d->m]; + a = tau_scale + dot_r(w, w->g, w->g); + b = dot_r(w, mu, w->g) - 2 * dot_r(w, p, w->g) - eta * tau_scale; + c = dot_r(w, p, p) - dot_r(w, p, mu); + rad = b * b - 4 * a * c; + return (-b + SQRTF(MAX(rad, 0.))) / (2 * a); +} + +/* status != 0 indicates failure */ +static scs_int project_lin_sys(ScsWork *w, scs_int iter) { + scs_int n = w->d->n, m = w->d->m, l = n + m + 1, status, i; + scs_float *warm_start = SCS_NULL; + scs_float tol = -1.0; /* only used for indirect methods, overridden later */ + memcpy(w->u_t, w->v, l * sizeof(scs_float)); + for (i = 0; i < l - 1; ++i) { + w->u_t[i] *= (i < n ? 1 : -1) * w->diag_r[i]; + } +#if INDIRECT > 0 + scs_float nm_ax_s_btau, nm_px_aty_ctau, nm_ws; + /* compute warm start using the cone projection output */ + nm_ax_s_btau = CG_NORM(w->r_normalized->ax_s_btau, m); + nm_px_aty_ctau = CG_NORM(w->r_normalized->px_aty_ctau, n); + warm_start = w->lin_sys_warm_start; + /* warm_start = u[:n] + tau * g[:n] */ + memcpy(warm_start, w->u, n * sizeof(scs_float)); + SCS(add_scaled_array)(warm_start, w->g, n, w->u[l - 1]); + /* use normalized residuals to compute tolerance */ + tol = MIN(nm_ax_s_btau, nm_px_aty_ctau); + /* tol ~ O(1/k^(1+eps)) guarantees convergence */ + /* use warm-start to calculate tolerance rather than w->u_t, since warm_start + * should be approximately equal to the true solution */ + nm_ws = CG_NORM(warm_start, n) / POWF((scs_float)iter + 1, CG_RATE); + tol = CG_TOL_FACTOR * MIN(tol, nm_ws); + tol = MAX(CG_BEST_TOL, tol); +#endif + status = scs_solve_lin_sys(w->p, w->u_t, warm_start, tol); + if (iter < FEASIBLE_ITERS) { + w->u_t[l - 1] = 1.; + } else { + w->u_t[l - 1] = root_plus(w, w->u_t, w->v, w->v[l - 1]); + } + SCS(add_scaled_array)(w->u_t, w->g, l - 1, -w->u_t[l - 1]); + return status; +} + +/* Compute the [r;s;kappa] iterate + * + * rsk^{k+1} = R ( u^{k+1} + v^k - 2 * u_t^{k+1} ) + * + * uses Moreau decomposition to get projection onto dual cone + * since it depends on v^k MUST be called before update_dual_vars is done + * (no effect of w->stgs->alpha here). + */ +static void compute_rsk(ScsWork *w) { + scs_int i, l = w->d->m + w->d->n + 1; + for (i = 0; i < l; ++i) { + w->rsk[i] = (w->v[i] + w->u[i] - 2 * w->u_t[i]) * w->diag_r[i]; + } +} + +static void update_dual_vars(ScsWork *w) { + scs_int i, l = w->d->n + w->d->m + 1; + for (i = 0; i < l; ++i) { + w->v[i] += w->stgs->alpha * (w->u[i] - w->u_t[i]); + } +} + +/* status < 0 indicates failure */ +static scs_int project_cones(ScsWork *w, const ScsCone *k, scs_int iter) { + scs_int i, n = w->d->n, l = w->d->n + w->d->m + 1, status; + for (i = 0; i < l; ++i) { + w->u[i] = 2 * w->u_t[i] - w->v[i]; + } + /* u = [x;y;tau] */ + status = + SCS(proj_dual_cone)(&(w->u[n]), w->cone_work, w->scal, &(w->diag_r[n])); + if (iter < FEASIBLE_ITERS) { + w->u[l - 1] = 1.0; + } else { + w->u[l - 1] = MAX(w->u[l - 1], 0.); + } + return status; +} + +static void sety(const ScsWork *w, ScsSolution *sol) { + if (!sol->y) { + sol->y = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + } + memcpy(sol->y, &(w->u[w->d->n]), w->d->m * sizeof(scs_float)); +} + +/* s is contained in rsk */ +static void sets(const ScsWork *w, ScsSolution *sol) { + if (!sol->s) { + sol->s = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + } + memcpy(sol->s, &(w->rsk[w->d->n]), w->d->m * sizeof(scs_float)); +} + +static void setx(const ScsWork *w, ScsSolution *sol) { + if (!sol->x) { + sol->x = (scs_float *)scs_calloc(w->d->n, sizeof(scs_float)); + } + memcpy(sol->x, w->u, w->d->n * sizeof(scs_float)); +} + +static void set_solved(const ScsWork *w, ScsSolution *sol, ScsInfo *info) { + SCS(scale_array)(sol->x, SAFEDIV_POS(1.0, w->r_orig->tau), w->d->n); + SCS(scale_array)(sol->y, SAFEDIV_POS(1.0, w->r_orig->tau), w->d->m); + SCS(scale_array)(sol->s, SAFEDIV_POS(1.0, w->r_orig->tau), w->d->m); + info->gap = w->r_orig->gap; + info->res_pri = w->r_orig->res_pri; + info->res_dual = w->r_orig->res_dual; + info->pobj = w->r_orig->xt_p_x / 2. + w->r_orig->ctx; + info->dobj = -w->r_orig->xt_p_x / 2. - w->r_orig->bty; + strcpy(info->status, "solved"); + info->status_val = SCS_SOLVED; +} + +static void set_infeasible(const ScsWork *w, ScsSolution *sol, ScsInfo *info) { + SCS(scale_array)(sol->y, -1 / w->r_orig->bty_tau, w->d->m); + SCS(scale_array)(sol->x, NAN, w->d->n); + SCS(scale_array)(sol->s, NAN, w->d->m); + info->gap = NAN; + info->res_pri = NAN; + info->res_dual = NAN; + info->pobj = INFINITY; + info->dobj = INFINITY; + strcpy(info->status, "infeasible"); + info->status_val = SCS_INFEASIBLE; +} + +static void set_unbounded(const ScsWork *w, ScsSolution *sol, ScsInfo *info) { + SCS(scale_array)(sol->x, -1 / w->r_orig->ctx_tau, w->d->n); + SCS(scale_array)(sol->s, -1 / w->r_orig->ctx_tau, w->d->m); + SCS(scale_array)(sol->y, NAN, w->d->m); + info->gap = NAN; + info->res_pri = NAN; + info->res_dual = NAN; + info->pobj = -INFINITY; + info->dobj = -INFINITY; + strcpy(info->status, "unbounded"); + info->status_val = SCS_UNBOUNDED; +} + +/* not yet converged, take best guess */ +static void set_unfinished(const ScsWork *w, ScsSolution *sol, ScsInfo *info) { + if (w->r_orig->tau > w->r_orig->kap) { + set_solved(w, sol, info); + info->status_val = SCS_SOLVED_INACCURATE; + } else if (w->r_orig->bty_tau < w->r_orig->ctx_tau) { + set_infeasible(w, sol, info); + info->status_val = SCS_INFEASIBLE_INACCURATE; + } else { + set_unbounded(w, sol, info); + info->status_val = SCS_UNBOUNDED_INACCURATE; + } + /* Append inaccurate to the status string */ + if (w->time_limit_reached) { + strcat(info->status, " (inaccurate - reached time_limit_secs)"); + } else if (info->iter >= w->stgs->max_iters) { + strcat(info->status, " (inaccurate - reached max_iters)"); + } else { + scs_printf("ERROR: should not be in this state (1).\n"); + } +} + +/* sets solutions, re-scales by inner prods if infeasible or unbounded */ +static void finalize(ScsWork *w, ScsSolution *sol, ScsInfo *info, + scs_int iter) { + scs_float nm_s, nm_y, sty; + setx(w, sol); + sety(w, sol); + sets(w, sol); + if (w->stgs->normalize) { + SCS(un_normalize_sol)(w->scal, sol); + } + populate_residual_struct(w, iter); + + nm_s = SCS(norm_inf)(sol->s, w->d->m); + nm_y = SCS(norm_inf)(sol->y, w->d->m); + sty = SCS(dot)(sol->s, sol->y, w->d->m); + + info->setup_time = w->setup_time; + info->iter = iter; + info->res_infeas = w->r_orig->res_infeas; + info->res_unbdd_a = w->r_orig->res_unbdd_a; + info->res_unbdd_p = w->r_orig->res_unbdd_p; + info->scale = w->stgs->scale; + info->scale_updates = w->scale_updates; + info->rejected_accel_steps = w->rejected_accel_steps; + info->accepted_accel_steps = w->accepted_accel_steps; + info->comp_slack = ABS(sty); + if (info->comp_slack > 1e-5 * MAX(nm_s, nm_y)) { + scs_printf("WARNING - large complementary slackness residual: %f\n", + info->comp_slack); + } + switch (info->status_val) { + case SCS_SOLVED: + set_solved(w, sol, info); + break; + case SCS_INFEASIBLE: + set_infeasible(w, sol, info); + break; + case SCS_UNBOUNDED: + set_unbounded(w, sol, info); + break; + case SCS_UNFINISHED: /* When SCS reaches max_iters or time_limit_secs */ + set_unfinished(w, sol, info); + break; + default: + scs_printf("ERROR: should not be in this state (2).\n"); + } +} + +static void print_summary(ScsWork *w, scs_int i, SCS(timer) * solve_timer) { + ScsResiduals *r = w->r_orig; + scs_printf("%*i|", (int)strlen(HEADER[0]), (int)i); + scs_printf("%*.2e ", (int)HSPACE, r->res_pri); + scs_printf("%*.2e ", (int)HSPACE, r->res_dual); + scs_printf("%*.2e ", (int)HSPACE, r->gap); + /* report mid point of primal and dual objective values */ + scs_printf("%*.2e ", (int)HSPACE, 0.5 * (r->pobj + r->dobj)); + scs_printf("%*.2e ", (int)HSPACE, w->stgs->scale); + /* Report TOTAL time, including setup */ + scs_printf("%*.2e ", (int)HSPACE, + (SCS(tocq)(solve_timer) + w->setup_time) / 1e3); + scs_printf("\n"); + +#if VERBOSITY > 0 + scs_printf("Norm u = %4f, ", SCS(norm_2)(w->u, w->d->n + w->d->m + 1)); + scs_printf("Norm u_t = %4f, ", SCS(norm_2)(w->u_t, w->d->n + w->d->m + 1)); + scs_printf("Norm v = %4f, ", SCS(norm_2)(w->v, w->d->n + w->d->m + 1)); + scs_printf("Norm rsk = %4f, ", SCS(norm_2)(w->rsk, w->d->n + w->d->m + 1)); + scs_printf("Norm x = %4f, ", SCS(norm_2)(w->xys_orig->x, w->d->n)); + scs_printf("Norm y = %4f, ", SCS(norm_2)(w->xys_orig->y, w->d->m)); + scs_printf("Norm s = %4f, ", SCS(norm_2)(w->xys_orig->s, w->d->m)); + scs_printf("Norm |Ax + s| = %1.2e, ", SCS(norm_2)(r->ax_s, w->d->m)); + scs_printf("tau = %4f, ", w->u[w->d->n + w->d->m]); + scs_printf("kappa = %4f, ", w->rsk[w->d->n + w->d->m]); + scs_printf("|u - u_t| = %1.2e, ", + SCS(norm_diff)(w->u, w->u_t, w->d->n + w->d->m + 1)); + scs_printf("res_infeas = %1.2e, ", r->res_infeas); + scs_printf("res_unbdd_a = %1.2e, ", r->res_unbdd_a); + scs_printf("res_unbdd_p = %1.2e, ", r->res_unbdd_p); + scs_printf("ctx_tau = %1.2e, ", r->ctx_tau); + scs_printf("bty_tau = %1.2e\n", r->bty_tau); +#endif + +#ifdef MATLAB_MEX_FILE + mexEvalString("drawnow;"); +#endif +} + +static void print_header(ScsWork *w, const ScsCone *k) { + scs_int i; + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); + for (i = 0; i < HEADER_LEN - 1; ++i) { + scs_printf("%s|", HEADER[i]); + } + scs_printf("%s\n", HEADER[HEADER_LEN - 1]); + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); +#ifdef MATLAB_MEX_FILE + mexEvalString("drawnow;"); +#endif +} + +static void print_footer(ScsInfo *info) { + scs_int i; + + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); + scs_printf("status: %s\n", info->status); + scs_printf("timings: total: %1.2es = setup: %1.2es + solve: %1.2es\n", + (info->setup_time + info->solve_time) / 1e3, + info->setup_time / 1e3, info->solve_time / 1e3); + scs_printf("\t lin-sys: %1.2es, cones: %1.2es, accel: %1.2es\n", + info->lin_sys_time / 1e3, info->cone_time / 1e3, + info->accel_time / 1e3); + + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); + /* report mid point of primal and dual objective values */ + scs_printf("objective = %.6f", 0.5 * (info->pobj + info->dobj)); + switch (info->status_val) { + case SCS_SOLVED_INACCURATE: + case SCS_UNBOUNDED_INACCURATE: + case SCS_INFEASIBLE_INACCURATE: + scs_printf(" (inaccurate)"); + default: + scs_printf("\n"); + } + for (i = 0; i < LINE_LEN; ++i) { + scs_printf("-"); + } + scs_printf("\n"); +#ifdef MATLAB_MEX_FILE + mexEvalString("drawnow;"); +#endif +} + +static scs_int has_converged(ScsWork *w, scs_int iter) { + scs_float abs_xt_p_x, abs_ctx, abs_bty; + scs_float nm_s, nm_px, nm_aty, nm_ax; + scs_float grl, prl, drl; + scs_float eps_abs = w->stgs->eps_abs; + scs_float eps_rel = w->stgs->eps_rel; + scs_float eps_infeas = w->stgs->eps_infeas; + + ScsResiduals *r = w->r_orig; + + if (r->tau > 0.) { + abs_xt_p_x = ABS(r->xt_p_x); + abs_ctx = ABS(r->ctx); + abs_bty = ABS(r->bty); + + nm_s = NORM(w->xys_orig->s, w->d->m); + nm_px = NORM(r->px, w->d->n); + nm_aty = NORM(r->aty, w->d->n); + nm_ax = NORM(r->ax, w->d->m); + /* xt_p_x, ctx, bty already have tau divided out */ + grl = MAX(MAX(abs_xt_p_x, abs_ctx), abs_bty); + /* s, ax, px, aty do *not* have tau divided out, so need to divide */ + prl = MAX(MAX(w->nm_b_orig * r->tau, nm_s), nm_ax) / r->tau; + drl = MAX(MAX(w->nm_c_orig * r->tau, nm_px), nm_aty) / r->tau; + if (isless(r->res_pri, eps_abs + eps_rel * prl) && + isless(r->res_dual, eps_abs + eps_rel * drl) && + isless(r->gap, eps_abs + eps_rel * grl)) { + return SCS_SOLVED; + } + } + if (isless(r->res_unbdd_a, eps_infeas) && + isless(r->res_unbdd_p, eps_infeas)) { + return SCS_UNBOUNDED; + } + if (isless(r->res_infeas, eps_infeas)) { + return SCS_INFEASIBLE; + } + return 0; +} + +#if NO_VALIDATE == 0 +static scs_int validate(const ScsData *d, const ScsCone *k, + const ScsSettings *stgs) { + if (d->m <= 0 || d->n <= 0) { + scs_printf("m and n must both be greater than 0; m = %li, n = %li\n", + (long)d->m, (long)d->n); + return -1; + } + if (d->m < d->n) { + /* scs_printf("WARN: m less than n, problem likely degenerate\n"); */ + /* return -1; */ + } + if (SCS(validate_lin_sys)(d->A, d->P) < 0) { + scs_printf("invalid linear system input data\n"); + return -1; + } + if (SCS(validate_cones)(d, k) < 0) { + scs_printf("cone validation error\n"); + return -1; + } + if (stgs->max_iters <= 0) { + scs_printf("max_iters must be positive\n"); + return -1; + } + if (stgs->eps_abs < 0) { + scs_printf("eps_abs tolerance must be positive\n"); + return -1; + } + if (stgs->eps_rel < 0) { + scs_printf("eps_rel tolerance must be positive\n"); + return -1; + } + if (stgs->eps_infeas < 0) { + scs_printf("eps_infeas tolerance must be positive\n"); + return -1; + } + if (stgs->alpha <= 0 || stgs->alpha >= 2) { + scs_printf("alpha must be in (0,2)\n"); + return -1; + } + if (stgs->rho_x <= 0) { + scs_printf("rho_x must be positive (1e-3 works well).\n"); + return -1; + } + if (stgs->scale <= 0) { + scs_printf("scale must be positive (1 works well).\n"); + return -1; + } + if (stgs->acceleration_interval <= 0) { + scs_printf("acceleration_interval must be positive (10 works well).\n"); + return -1; + } + return 0; +} +#endif + +static ScsResiduals *init_residuals(const ScsData *d) { + ScsResiduals *r = (ScsResiduals *)scs_calloc(1, sizeof(ScsResiduals)); + r->ax = (scs_float *)scs_calloc(d->m, sizeof(scs_float)); + r->ax_s = (scs_float *)scs_calloc(d->m, sizeof(scs_float)); + r->ax_s_btau = (scs_float *)scs_calloc(d->m, sizeof(scs_float)); + r->px = (scs_float *)scs_calloc(d->n, sizeof(scs_float)); + r->aty = (scs_float *)scs_calloc(d->n, sizeof(scs_float)); + r->px_aty_ctau = (scs_float *)scs_calloc(d->n, sizeof(scs_float)); + return r; +} + +scs_int scs_update(ScsWork *w, scs_float *b, scs_float *c) { + SCS(timer) update_timer; + SCS(tic)(&update_timer); + + if (b) { + memcpy(w->b_orig, b, w->d->m * sizeof(scs_float)); + memcpy(w->d->b, b, w->d->m * sizeof(scs_float)); + } else { + memcpy(w->d->b, w->b_orig, w->d->m * sizeof(scs_float)); + } + w->nm_b_orig = NORM(w->b_orig, w->d->m); + + if (c) { + memcpy(w->c_orig, c, w->d->n * sizeof(scs_float)); + memcpy(w->d->c, c, w->d->n * sizeof(scs_float)); + } else { + memcpy(w->d->c, w->c_orig, w->d->n * sizeof(scs_float)); + } + w->nm_c_orig = NORM(w->c_orig, w->d->n); + + /* normalize */ + if (w->scal) { + SCS(normalize_b_c)(w->scal, w->d->b, w->d->c); + } + + /* override setup time with update time, since the update is the 'setup' */ + w->setup_time = SCS(tocq)(&update_timer); + return 0; +} + +/* Sets the diag_r vector, given the scale parameters in work */ +static void set_diag_r(ScsWork *w) { + scs_int i; + for (i = 0; i < w->d->n; ++i) { + w->diag_r[i] = w->stgs->rho_x; + } + /* use cone information to set R_y */ + SCS(set_r_y)(w->cone_work, w->stgs->scale, &(w->diag_r[w->d->n])); + /* if modified need to SCS(enforce_cone_boundaries)(...) */ + w->diag_r[w->d->n + w->d->m] = + TAU_FACTOR; /* TODO: is this the best choice? */ +} + +static ScsWork *init_work(const ScsData *d, const ScsCone *k, + const ScsSettings *stgs) { + ScsWork *w = (ScsWork *)scs_calloc(1, sizeof(ScsWork)); + scs_int l = d->n + d->m + 1; + if (stgs->verbose) { + print_init_header(d, k, stgs); + } + if (!w) { + scs_printf("ERROR: allocating work failure\n"); + return SCS_NULL; + } + /* deep copy data */ + w->d = (ScsData *)scs_calloc(1, sizeof(ScsData)); + SCS(deep_copy_data)(w->d, d); + d = SCS_NULL; /* for safety */ + + /* deep copy cone */ + w->k = (ScsCone *)scs_calloc(1, sizeof(ScsCone)); + SCS(deep_copy_cone)(w->k, k); + k = SCS_NULL; /* for safety */ + + /* deep copy settings */ + w->stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings)); + SCS(deep_copy_stgs)(w->stgs, stgs); + stgs = SCS_NULL; /* for safety */ + + /* allocate workspace: */ + w->u = (scs_float *)scs_calloc(l, sizeof(scs_float)); + w->u_t = (scs_float *)scs_calloc(l, sizeof(scs_float)); + w->v = (scs_float *)scs_calloc(l, sizeof(scs_float)); + w->v_prev = (scs_float *)scs_calloc(l, sizeof(scs_float)); + w->rsk = (scs_float *)scs_calloc(l, sizeof(scs_float)); + w->h = (scs_float *)scs_calloc((l - 1), sizeof(scs_float)); + w->g = (scs_float *)scs_calloc((l - 1), sizeof(scs_float)); + w->lin_sys_warm_start = (scs_float *)scs_calloc(w->d->n, sizeof(scs_float)); + w->diag_r = (scs_float *)scs_calloc(l, sizeof(scs_float)); + /* x,y,s struct */ + w->xys_orig = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution)); + w->xys_orig->x = (scs_float *)scs_calloc(w->d->n, sizeof(scs_float)); + w->xys_orig->s = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + w->xys_orig->y = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + w->r_orig = init_residuals(w->d); + w->b_orig = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + w->c_orig = (scs_float *)scs_calloc(w->d->n, sizeof(scs_float)); + + if (!w->c_orig) { + scs_printf("ERROR: work memory allocation failure\n"); + return SCS_NULL; + } + + if (!(w->cone_work = SCS(init_cone)(w->k, w->d->m))) { + scs_printf("ERROR: init_cone failure\n"); + return SCS_NULL; + } + set_diag_r(w); + + if (w->stgs->normalize) { + w->xys_normalized = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution)); + w->xys_normalized->x = (scs_float *)scs_calloc(w->d->n, sizeof(scs_float)); + w->xys_normalized->s = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + w->xys_normalized->y = (scs_float *)scs_calloc(w->d->m, sizeof(scs_float)); + w->r_normalized = init_residuals(w->d); + /* this allocates memory that must be freed */ + w->scal = SCS(normalize_a_p)(w->d->P, w->d->A, w->cone_work); + } else { + w->xys_normalized = w->xys_orig; + w->r_normalized = w->r_orig; + w->scal = SCS_NULL; + } + /* set w->*_orig and performs normalization if appropriate */ + scs_update(w, w->d->b, w->d->c); + + if (!(w->p = scs_init_lin_sys_work(w->d->A, w->d->P, w->diag_r))) { + scs_printf("ERROR: init_lin_sys_work failure\n"); + return SCS_NULL; + } + if (w->stgs->acceleration_lookback) { + /* TODO(HACK!) negative acceleration_lookback interpreted as type-II */ + if (!(w->accel = aa_init(l, ABS(w->stgs->acceleration_lookback), + w->stgs->acceleration_lookback > 0, + w->stgs->acceleration_lookback > 0 + ? AA_REGULARIZATION_TYPE_1 + : AA_REGULARIZATION_TYPE_2, + AA_RELAXATION, AA_SAFEGUARD_FACTOR, + AA_MAX_WEIGHT_NORM, VERBOSITY))) { + if (w->stgs->verbose) { + scs_printf("WARN: aa_init returned NULL, no acceleration applied.\n"); + } + } + } else { + w->accel = SCS_NULL; + } + return w; +} + +static void update_work_cache(ScsWork *w) { + /* g = (I + M)^{-1} h */ + memcpy(w->g, w->h, (w->d->n + w->d->m) * sizeof(scs_float)); + SCS(scale_array)(&(w->g[w->d->n]), -1., w->d->m); + scs_solve_lin_sys(w->p, w->g, SCS_NULL, CG_BEST_TOL); + return; +} + +/* Reset quantities specific to current solve */ +static void reset_tracking(ScsWork *w) { + w->last_scale_update_iter = 0; + w->sum_log_scale_factor = 0.; + w->n_log_scale_factor = 0; + w->scale_updates = 0; + w->time_limit_reached = 0; + /* Acceleration */ + w->rejected_accel_steps = 0; + w->accepted_accel_steps = 0; + w->aa_norm = 0.; + /* Need this to force residual calc if previous solve solved at iter 0 */ + w->r_normalized->last_iter = -1; + w->r_orig->last_iter = -1; +} + +static scs_int update_work(ScsWork *w, ScsSolution *sol) { + reset_tracking(w); + + if (w->stgs->warm_start) { + warm_start_vars(w, sol); + } else { + cold_start_vars(w); + } + + /* h = [c;b] */ + memcpy(w->h, w->d->c, w->d->n * sizeof(scs_float)); + memcpy(&(w->h[w->d->n]), w->d->b, w->d->m * sizeof(scs_float)); + update_work_cache(w); + return 0; +} + +/* will update if the factor is outside of range */ +scs_int should_update_r(scs_float factor, scs_int iter) { + return (factor > SQRTF(10.) || factor < 1. / SQRTF(10.)); +} + +static void update_scale(ScsWork *w, const ScsCone *k, scs_int iter) { + scs_int i; + scs_float factor, new_scale, relative_res_pri, relative_res_dual; + scs_float denom_pri, denom_dual; + + ScsResiduals *r = w->r_orig; + + scs_float nm_ax = SCALE_NORM(r->ax, w->d->m); + scs_float nm_s = SCALE_NORM(w->xys_orig->s, w->d->m); + scs_float nm_px_aty_ctau = SCALE_NORM(r->px_aty_ctau, w->d->n); + scs_float nm_px = SCALE_NORM(r->px, w->d->n); + scs_float nm_aty = SCALE_NORM(r->aty, w->d->n); + scs_float nm_ax_s_btau = SCALE_NORM(r->ax_s_btau, w->d->m); + + scs_int iters_since_last_update = iter - w->last_scale_update_iter; + /* ||Ax + s - b * tau|| */ + denom_pri = MAX(nm_ax, nm_s); + denom_pri = MAX(denom_pri, w->nm_b_orig * r->tau); + relative_res_pri = SAFEDIV_POS(nm_ax_s_btau, denom_pri); + /* ||Px + A'y + c * tau|| */ + denom_dual = MAX(nm_px, nm_aty); + denom_dual = MAX(denom_dual, w->nm_c_orig * r->tau); + relative_res_dual = SAFEDIV_POS(nm_px_aty_ctau, denom_dual); + + /* higher scale makes res_pri go down faster, so increase if res_pri larger */ + w->sum_log_scale_factor += log(relative_res_pri) - log(relative_res_dual); + w->n_log_scale_factor++; + + /* geometric mean */ + factor = + SQRTF(exp(w->sum_log_scale_factor / (scs_float)(w->n_log_scale_factor))); + + /* need at least RESCALING_MIN_ITERS since last update */ + if (iters_since_last_update < RESCALING_MIN_ITERS) { + return; + } + new_scale = + MIN(MAX(w->stgs->scale * factor, MIN_SCALE_VALUE), MAX_SCALE_VALUE); + if (new_scale == w->stgs->scale) { + return; + } + if (should_update_r(factor, iters_since_last_update)) { + w->scale_updates++; + w->sum_log_scale_factor = 0; + w->n_log_scale_factor = 0; + w->last_scale_update_iter = iter; + w->stgs->scale = new_scale; + + /* update diag r vector */ + set_diag_r(w); + + /* update linear systems */ + scs_update_lin_sys_diag_r(w->p, w->diag_r); + + /* update pre-solved quantities */ + update_work_cache(w); + + /* reset acceleration so that old iterates aren't affecting new values */ + if (w->accel) { + aa_reset(w->accel); + } + /* update v, using fact that rsk, u, u_t vectors should be the same */ + /* solve: R^+ (v^+ + u - 2u_t) = rsk = R(v + u - 2u_t) + * => v^+ = R+^-1 rsk + 2u_t - u + */ + for (i = 0; i < w->d->n + w->d->m + 1; i++) { + w->v[i] = w->rsk[i] / w->diag_r[i] + 2 * w->u_t[i] - w->u[i]; + } + } +} + +/* scs is homogeneous so scale the iterate to keep norm reasonable */ +static inline void normalize_v(scs_float *v, scs_int len) { + scs_float v_norm = SCS(norm_2)(v, len); /* always l2 norm */ + SCS(scale_array)(v, SQRTF((scs_float)len) * ITERATE_NORM / v_norm, len); +} + +scs_int scs_solve(ScsWork *w, ScsSolution *sol, ScsInfo *info, + scs_int warm_start) { + scs_int i; + SCS(timer) solve_timer, lin_sys_timer, cone_timer, accel_timer; + scs_float total_accel_time = 0.0, total_cone_time = 0.0, + total_lin_sys_time = 0.0; + if (!sol || !w || !info) { + scs_printf("ERROR: missing ScsWork, ScsSolution or ScsInfo input\n"); + return SCS_FAILED; + } + scs_int l = w->d->m + w->d->n + 1; + const ScsCone *k = w->k; + ScsSettings *stgs = w->stgs; + /* set warm start */ + stgs->warm_start = warm_start; + + /* initialize ctrl-c support */ + scs_start_interrupt_listener(); + SCS(tic)(&solve_timer); + strcpy(info->lin_sys_solver, scs_get_lin_sys_method()); + info->status_val = SCS_UNFINISHED; /* not yet converged */ + update_work(w, sol); + + if (w->stgs->verbose) { + print_header(w, k); + } + + /* SCS */ + for (i = 0; i < w->stgs->max_iters; ++i) { + /* Accelerate here so that last step always projection onto cone */ + /* this ensures the returned iterates always satisfy conic constraints */ + if (w->accel) { + SCS(tic)(&accel_timer); + if (i > 0 && i % w->stgs->acceleration_interval == 0) { + /* v overwritten with AA output here */ + w->aa_norm = aa_apply(w->v, w->v_prev, w->accel); + } + total_accel_time += SCS(tocq)(&accel_timer); + } + + if (i >= FEASIBLE_ITERS) { + /* normalize v *after* applying any acceleration */ + /* the input to the DR step should be normalized */ + normalize_v(w->v, l); + } + + /* store v_prev = v, *after* normalizing */ + memcpy(w->v_prev, w->v, l * sizeof(scs_float)); + + /******************* linear system solve ********************/ + SCS(tic)(&lin_sys_timer); + if (project_lin_sys(w, i) != 0) { + return failure(w, w->d->m, w->d->n, sol, info, SCS_FAILED, + "error in project_lin_sys", "failure"); + } + total_lin_sys_time += SCS(tocq)(&lin_sys_timer); + + /****************** project onto the cones ******************/ + SCS(tic)(&cone_timer); + if (project_cones(w, k, i) < 0) { + return failure(w, w->d->m, w->d->n, sol, info, SCS_FAILED, + "error in project_cones", "failure"); + } + total_cone_time += SCS(tocq)(&cone_timer); + + /* compute [r;s;kappa], must be before dual var update */ + /* since Moreau decomp logic relies on v at start */ + compute_rsk(w); + + if (i % CONVERGED_INTERVAL == 0) { + if (scs_is_interrupted()) { + return failure(w, w->d->m, w->d->n, sol, info, SCS_SIGINT, + "interrupted", "interrupted"); + } + populate_residual_struct(w, i); + if ((info->status_val = has_converged(w, i)) != 0) { + break; + } + if (w->stgs->time_limit_secs > 0.0) { + if (SCS(tocq)(&solve_timer) > 1000. * w->stgs->time_limit_secs) { + w->time_limit_reached = 1; + break; + } + } + } + + /* Compute residuals. */ + if (w->stgs->verbose && i % PRINT_INTERVAL == 0) { + populate_residual_struct(w, i); + print_summary(w, i, &solve_timer); + } + + /* If residuals are fresh then maybe compute new scale. */ + if (w->stgs->adaptive_scale && i == w->r_orig->last_iter) { + update_scale(w, k, i); + } + + /****************** dual variable step **********************/ + /* do this after update_scale due to remapping that happens there */ + update_dual_vars(w); + + /* AA safeguard check. + * Perform safeguarding *after* convergence check to prevent safeguard + * overwriting converged iterate, since safeguard is on `v` and convergence + * is on `u`. + */ + if (w->accel && i % w->stgs->acceleration_interval == 0 && w->aa_norm > 0) { + if (aa_safeguard(w->v, w->v_prev, w->accel) < 0) { + /* TODO should we copy u from u_prev here too? Then move above, possibly + * better residual calculation and scale updating. */ + w->rejected_accel_steps++; + } else { + w->accepted_accel_steps++; + } + } + + /* Log *after* updating scale so residual recalc does not affect alg */ + if (w->stgs->log_csv_filename) { + /* calc residuals every iter if logging to csv */ + populate_residual_struct(w, i); + SCS(log_data_to_csv)(k, stgs, w, i, &solve_timer); + } + } + + /* Final logging after full run */ + if (w->stgs->log_csv_filename) { + populate_residual_struct(w, i); + SCS(log_data_to_csv)(k, stgs, w, i, &solve_timer); + } + + if (w->stgs->verbose) { + populate_residual_struct(w, i); + print_summary(w, i, &solve_timer); + } + + /* populate solution vectors (unnormalized) and info */ + finalize(w, sol, info, i); + + /* populate timings */ + info->solve_time = SCS(tocq)(&solve_timer); + info->lin_sys_time = total_lin_sys_time; + info->cone_time = total_cone_time; + info->accel_time = total_accel_time; + + if (w->stgs->verbose) { + print_footer(info); + } + + scs_end_interrupt_listener(); + return info->status_val; +} + +void scs_finish(ScsWork *w) { + if (w) { + SCS(finish_cone)(w->cone_work); + if (w->p) { + scs_free_lin_sys_work(w->p); + } + if (w->accel) { + aa_finish(w->accel); + } + free_work(w); + } +} + +ScsWork *scs_init(const ScsData *d, const ScsCone *k, const ScsSettings *stgs) { + ScsWork *w; + SCS(timer) init_timer; + scs_start_interrupt_listener(); + if (!d || !k) { + scs_printf("ERROR: Missing ScsData or ScsCone input\n"); + return SCS_NULL; + } +#if NO_VALIDATE == 0 + if (validate(d, k, stgs) < 0) { + scs_printf("ERROR: Validation returned failure\n"); + return SCS_NULL; + } +#endif +#if VERBOSITY > 0 + scs_printf("size of scs_int = %lu, size of scs_float = %lu\n", + sizeof(scs_int), sizeof(scs_float)); +#endif + SCS(tic)(&init_timer); + if (stgs->write_data_filename) { + scs_printf("Writing raw problem data to %s\n", stgs->write_data_filename); + SCS(write_data)(d, k, stgs); + } + if (stgs->log_csv_filename) { + scs_printf("Logging run data to %s\n", stgs->log_csv_filename); + /* logging done every iteration */ + } + w = init_work(d, k, stgs); + if (w) { + w->setup_time = SCS(tocq)(&init_timer); + } + scs_end_interrupt_listener(); + return w; +} + +/* this just calls scs_init, scs_solve, and scs_finish */ +scs_int scs(const ScsData *d, const ScsCone *k, const ScsSettings *stgs, + ScsSolution *sol, ScsInfo *info) { + scs_int status; + ScsWork *w = scs_init(d, k, stgs); + if (w) { + scs_solve(w, sol, info, stgs->warm_start); + status = info->status_val; + } else { + status = failure(SCS_NULL, d ? d->m : -1, d ? d->n : -1, sol, info, + SCS_FAILED, "could not initialize work", "failure"); + } + scs_finish(w); + return status; +} diff --git a/src/scs_mods/scs.mk b/src/scs_mods/scs.mk deleted file mode 100644 index 974437a..0000000 --- a/src/scs_mods/scs.mk +++ /dev/null @@ -1,189 +0,0 @@ -ifeq ($(OS),Windows_NT) -UNAME = CYGWINorMINGWorMSYS -else -UNAME = $(shell uname -s) -endif - -#CC = gcc -# For cross-compiling with mingw use these. -#CC = i686-w64-mingw32-gcc -m32 -#CC = x86_64-w64-mingw32-gcc-4.8 -CUCC = $(CC) #Don't need to use nvcc, since using cuda blas APIs - -# For GPU must add cuda libs to path, e.g. -# export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH - -ifneq (, $(findstring CYGWIN, $(UNAME))) -ISWINDOWS := 1 -else -ifneq (, $(findstring MINGW, $(UNAME))) -ISWINDOWS := 1 -else -ifneq (, $(findstring MSYS, $(UNAME))) -ISWINDOWS := 1 -else -ifneq (, $(findstring mingw, $(CC))) -ISWINDOWS := 1 -else -ISWINDOWS := 0 -endif -endif -endif -endif - -ifeq ($(UNAME), Darwin) -# we're on apple, no need to link rt library -LDFLAGS += -lm -SHARED = dylib -SONAME = -install_name -else -ifeq ($(ISWINDOWS), 1) -# we're on windows (cygwin or msys) -LDFLAGS += -lm -SHARED = dll -SONAME = -soname -else -# we're on a linux system, use accurate timer provided by clock_gettime() -LDFLAGS += -lm -lrt -SHARED = so -SONAME = -soname -endif -endif - -#TODO: check if this works for all platforms: -ifeq ($(CUDA_PATH), ) -CUDA_PATH=/usr/local/cuda -endif -CULDFLAGS = -L$(CUDA_PATH)/lib -L$(CUDA_PATH)/lib64 -lcudart -lcublas -lcusparse -CUDAFLAGS = $(CFLAGS) -I$(CUDA_PATH)/include -Ilinsys/gpu -Wno-c++11-long-long # turn off annoying long-long warnings in cuda header files - -# Add on default CFLAGS -OPT = -O3 -ifeq (DSOLARIS,$(findstring DSOLARIS, $(CFLAGS))) - ifneq (,$(findstring xc99, $(CC))) - override CFLAGS += -g -Wall -I. -Iinclude -Ilinsys $(OPT) - else - override CFLAGS += -g -Wall -pedantic -funroll-loops -I. -Iinclude -Ilinsys $(OPT) - endif -else - override CFLAGS += -g -Wall -pedantic -funroll-loops -I. -Iinclude -Ilinsys $(OPT) -endif - -ifneq ($(ISWINDOWS), 1) -override CFLAGS += -fPIC -endif - -LINSYS = linsys -DIRSRC = $(LINSYS)/cpu/direct -INDIRSRC = $(LINSYS)/cpu/indirect -GPUDIR = $(LINSYS)/gpu/direct -GPUINDIR = $(LINSYS)/gpu/indirect - -EXTSRC = $(LINSYS)/external - -OUT = out -AR = ar -ARFLAGS = rv -ARCHIVE = $(AR) $(ARFLAGS) -RANLIB = ranlib -INSTALL = install - -ifeq ($(PREFIX),) - PREFIX = /usr/local -endif - -OPT_FLAGS = -########### OPTIONAL FLAGS ########## -# these can all be override from the command line -# e.g. make DLONG=1 will override the setting below -DLONG = 0 -ifneq ($(DLONG), 0) -OPT_FLAGS += -DDLONG=$(DLONG) # use longs rather than ints -endif -CTRLC = 1 -ifneq ($(CTRLC), 0) -OPT_FLAGS += -DCTRLC=$(CTRLC) # graceful interrupts with ctrl-c -endif -SFLOAT = 0 -ifneq ($(SFLOAT), 0) -OPT_FLAGS += -DSFLOAT=$(SFLOAT) # use floats rather than doubles -endif -NOTIMER = 0 -ifneq ($(NOTIMER), 0) -OPT_FLAGS += -DNOTIMER=$(NOTIMER) # no timing, times reported as nan -endif -COPYAMATRIX = 1 -ifneq ($(COPYAMATRIX), 0) -OPT_FLAGS += -DCOPYAMATRIX=$(COPYAMATRIX) # if normalize, copy A -endif -GPU_TRANSPOSE_MAT = 1 -ifneq ($(GPU_TRANSPOSE_MAT), 0) -OPT_FLAGS += -DGPU_TRANSPOSE_MAT=$(GPU_TRANSPOSE_MAT) # tranpose A mat in GPU memory -endif -VALIDATE = 1 -ifneq ($(VALIDATE), 0) -OPT_FLAGS += -DVALIDATE=$(VALIDATE) # perform problem validation or skip -endif -### VERBOSITY LEVELS: 0,1,2,... -VERBOSITY = 0 -ifneq ($(VERBOSITY), 0) -OPT_FLAGS += -DVERBOSITY=$(VERBOSITY) # verbosity level -endif - -############ OPENMP: ############ -# set USE_OPENMP = 1 to allow openmp (multi-threaded matrix multiplies): -# set the number of threads to, for example, 4 by entering the command: -# export OMP_NUM_THREADS=4 - -USE_OPENMP = 0 -ifneq ($(USE_OPENMP), 0) - override CFLAGS += -fopenmp - LDFLAGS += -lgomp -endif - -############ SDPS: BLAS + LAPACK ############ -# set USE_LAPACK = 1 below to enable solving SDPs -# NB: point the libraries to the locations where -# you have blas and lapack installed - -USE_LAPACK = 1 -ifneq ($(USE_LAPACK), 0) - # edit these for your setup: - BLASLDFLAGS = -lblas -llapack #-lgfortran - LDFLAGS += $(BLASLDFLAGS) - OPT_FLAGS += -DUSE_LAPACK - - BLAS64 = 0 - ifneq ($(BLAS64), 0) - OPT_FLAGS += -DBLAS64=$(BLAS64) # if blas/lapack lib uses 64 bit ints - endif - - NOBLASSUFFIX = 0 - ifneq ($(NOBLASSUFFIX), 0) - OPT_FLAGS += -DNOBLASSUFFIX=$(NOBLASSUFFIX) # hack to strip blas suffix - endif - - BLASSUFFIX = "_" - ifneq ($(BLASSUFFIX), "_") - OPT_FLAGS += -DBLASSUFFIX=$(BLASSUFFIX) # blas suffix (underscore usually) - endif -endif - -MATLAB_MEX_FILE = 0 -ifneq ($(MATLAB_MEX_FILE), 0) -OPT_FLAGS += -DMATLAB_MEX_FILE=$(MATLAB_MEX_FILE) # matlab mex -endif -PYTHON = 0 -ifneq ($(PYTHON), 0) -OPT_FLAGS += -DPYTHON=$(PYTHON) # python extension -endif -USING_R = 0 -ifneq ($(USING_R), 0) -OPT_FLAGS += -DUSING_R=$(USING_R) # R extension -endif - -# debug to see var values, e.g. 'make print-OBJECTS' shows OBJECTS value -print-%: ; @echo $*=$($*) - -override CFLAGS += $(OPT_FLAGS) -CUDAFLAGS += $(OPT_FLAGS) diff --git a/tests/testthat.R b/tests/testthat.R deleted file mode 100644 index c06af05..0000000 --- a/tests/testthat.R +++ /dev/null @@ -1,4 +0,0 @@ -library(testthat) -library(scs) -library(slam) -test_check("scs") diff --git a/tests/testthat/problem_results/README.md b/tests/testthat/problem_results/README.md deleted file mode 100644 index 3465333..0000000 --- a/tests/testthat/problem_results/README.md +++ /dev/null @@ -1 +0,0 @@ -## Saved results from scs 3.0 tests diff --git a/tests/testthat/problem_results/degenerate1.RDS b/tests/testthat/problem_results/degenerate1.RDS deleted file mode 100644 index 1407ce4..0000000 Binary files a/tests/testthat/problem_results/degenerate1.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/degenerate2.RDS b/tests/testthat/problem_results/degenerate2.RDS deleted file mode 100644 index f021b03..0000000 Binary files a/tests/testthat/problem_results/degenerate2.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/degenerate3.RDS b/tests/testthat/problem_results/degenerate3.RDS deleted file mode 100644 index 3591816..0000000 Binary files a/tests/testthat/problem_results/degenerate3.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/degenerate4.RDS b/tests/testthat/problem_results/degenerate4.RDS deleted file mode 100644 index 3208461..0000000 Binary files a/tests/testthat/problem_results/degenerate4.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/hs21_tiny_qp1.RDS b/tests/testthat/problem_results/hs21_tiny_qp1.RDS deleted file mode 100644 index 54d54db..0000000 Binary files a/tests/testthat/problem_results/hs21_tiny_qp1.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/hs21_tiny_qp2.RDS b/tests/testthat/problem_results/hs21_tiny_qp2.RDS deleted file mode 100644 index 6275c4a..0000000 Binary files a/tests/testthat/problem_results/hs21_tiny_qp2.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/infeasible_tiny_qp.RDS b/tests/testthat/problem_results/infeasible_tiny_qp.RDS deleted file mode 100644 index e876094..0000000 Binary files a/tests/testthat/problem_results/infeasible_tiny_qp.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/qafiro_tiny_qp1.RDS b/tests/testthat/problem_results/qafiro_tiny_qp1.RDS deleted file mode 100644 index a051e90..0000000 Binary files a/tests/testthat/problem_results/qafiro_tiny_qp1.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/qafiro_tiny_qp2.RDS b/tests/testthat/problem_results/qafiro_tiny_qp2.RDS deleted file mode 100644 index e630894..0000000 Binary files a/tests/testthat/problem_results/qafiro_tiny_qp2.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/qafiro_tiny_qp3.RDS b/tests/testthat/problem_results/qafiro_tiny_qp3.RDS deleted file mode 100644 index 8ee9df4..0000000 Binary files a/tests/testthat/problem_results/qafiro_tiny_qp3.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/random_prob.RDS b/tests/testthat/problem_results/random_prob.RDS deleted file mode 100644 index 16d23b8..0000000 Binary files a/tests/testthat/problem_results/random_prob.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/rob_gauss_cov_est1.RDS b/tests/testthat/problem_results/rob_gauss_cov_est1.RDS deleted file mode 100644 index 47cbf84..0000000 Binary files a/tests/testthat/problem_results/rob_gauss_cov_est1.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/rob_gauss_cov_est2.RDS b/tests/testthat/problem_results/rob_gauss_cov_est2.RDS deleted file mode 100644 index fa1cba0..0000000 Binary files a/tests/testthat/problem_results/rob_gauss_cov_est2.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/small_lp.RDS b/tests/testthat/problem_results/small_lp.RDS deleted file mode 100644 index b33677a..0000000 Binary files a/tests/testthat/problem_results/small_lp.RDS and /dev/null differ diff --git a/tests/testthat/problem_results/unbounded_tiny_qp.RDS b/tests/testthat/problem_results/unbounded_tiny_qp.RDS deleted file mode 100644 index 38d4609..0000000 Binary files a/tests/testthat/problem_results/unbounded_tiny_qp.RDS and /dev/null differ diff --git a/tests/testthat/test_example.R b/tests/testthat/test_example.R deleted file mode 100644 index effd2bd..0000000 --- a/tests/testthat/test_example.R +++ /dev/null @@ -1,15 +0,0 @@ -context("Simple Example") - -test_that("A simple example", { - A <- matrix(c(1), 2, 1) - b <- c(1,1) - c <- c(1) - cone <- list(z = 2) - params <- list(eps_abs = 1e-3, eps_rel = 1e-3, max_iters = 50) - sol <- scs(A = A, b = b, obj = c, cone = cone, control = params) - - expect_equal(sol$info$status, "solved") - expect_equal(sol$x, 1) - expect_equal(sol$y, c(-0.5, -0.5)) - expect_equal(sol$info$pobj, 1) -}) diff --git a/tests/testthat/test_problems.R b/tests/testthat/test_problems.R deleted file mode 100644 index c8b60e8..0000000 --- a/tests/testthat/test_problems.R +++ /dev/null @@ -1,59 +0,0 @@ -context("Saved Problems") - -rds_files <- c( - "degenerate1.RDS", - "degenerate2.RDS", - "degenerate3.RDS", - "degenerate4.RDS", - "small_lp.RDS", - "rob_gauss_cov_est1.RDS", - "rob_gauss_cov_est2.RDS", - "hs21_tiny_qp1.RDS", - "hs21_tiny_qp2.RDS", - "qafiro_tiny_qp1.RDS", - "qafiro_tiny_qp2.RDS", - "qafiro_tiny_qp3.RDS", - "infeasible_tiny_qp.RDS", - "unbounded_tiny_qp.RDS", - "random_prob.RDS" -) - -info_vars_to_check <- c( - "iter", - "status", - "status_val", - "scale_updates", - "pobj", - "dobj", - ## "res_pri", - ## "res_dual", - ## "gap", - "res_infeas", - "res_unbdd_a", - "res_unbdd_p", - ## "setup_time", - ## "solve_time", - "scale", - ## "comp_slack", - "rejected_accel_steps", - "accepted_accel_steps" - ## "lin_sys_time", - ## "cone_time", - ## "accel_time" -) - -sol_vars_to_check <- c("x", "y", "s") - -for (fname in rds_files) { - d <- readRDS(file.path("problem_results", fname)) - test_that(sprintf("Checking results for %s", fname), { - sol <- scs(A = d$data$A, P = d$data$P, b = d$data$b, obj = d$data$obj, cone = d$cone, control = d$settings) - if (fname == "random_prob.RDS") { ## Need lenient tolerance - expect_equal(sol$info[info_vars_to_check], d$sol$info[info_vars_to_check], tolerance = 10 * d$settings$eps_abs) - expect_equal(sol[sol_vars_to_check], d$sol[sol_vars_to_check], tolerance = 10 * d$settings$eps_abs) - } else { - expect_equal(sol$info[info_vars_to_check], d$sol$info[info_vars_to_check], tolerance = d$settings$eps_abs) - expect_equal(sol[sol_vars_to_check], d$sol[sol_vars_to_check], tolerance = d$settings$eps_abs) - } - }) -} diff --git a/tests/testthat/test_psd.R b/tests/testthat/test_psd.R deleted file mode 100644 index 7f1fc1a..0000000 --- a/tests/testthat/test_psd.R +++ /dev/null @@ -1,34 +0,0 @@ -context("PSD - Test") -if (grepl("SunOS", Sys.info()["sysname"])) { ## Skip this on Solaris - skip("Skipping on Solaris as this has always failed") -} else { - test_that("Simple PSD test", { - A <- simple_triplet_matrix( - i = c(1L, 2L, 3L, 4L, 5L, 7L, 8L, 9L, 1L, 2L, 3L, 5L, 6L, 7L, 8L, 9L, 1L, - 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L), - j = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, - 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), - v = c(-7, -15.556349186104, 3, -21, -15.556349186104, 10, 11.3137084989848, - 5, 7, -25.4558441227157, 8, 14.142135623731, 22.6274169979695, - -10, -14.142135623731, 3, -2, -11.3137084989848, 1, -5, 2.82842712474619, - -24.0416305603426, -6, 11.3137084989848, 6), nrow = 9L, ncol = 3L) - - rhs <- c(33, -12.7279220613579, 26, 14, 12.7279220613579, 56.5685424949238, 91, 14.142135623731, 15) - obj <- c(1, -1, 1) - cone <- list(z = 0L, l = 0L, s = c(2, 3)) - - sol <- scs(A = A, b = rhs, obj = obj, cone = cone, control = list(verbose = 1)) - expect_equal(sol$info$status, "solved") - expect_equal(sol$x, - c(-0.36778629730617, 1.89834935806707, -0.88746074956525), - tolerance = 1e-4) - expect_equal(sol$y, - c(0.00396134156379081, -0.00613634113889057, 0.00475276897567086, 0.0558030988006113, - -0.00340904764830297, 0.0342440719001259, 0.000104130479854425, -0.00147926212203912, - 0.0105070907711366), - tolerance = 1e-4) - expect_equal(sol$info$pobj, -3.1535964049385, tol = 1e-4) - expect_equal(sol$info$dobj, -3.1535519733301, tol = 1e-4) - }) -} - diff --git a/tests/testthat/test_random_lp.R b/tests/testthat/test_random_lp.R deleted file mode 100644 index 55c1ade..0000000 --- a/tests/testthat/test_random_lp.R +++ /dev/null @@ -1,15 +0,0 @@ -context("Random LP") -test_that("A Random LP Problem", { - set.seed(1) - m <- 100 - n <- 100 - A <- matrix(rnorm(m*n),m,n) - b <- rnorm(m) - c <- rnorm(n) - cone <- list(z = m) - params <- list(eps_rel = 1e-4, eps_abs = 1e-4, max_iters = 5000) - sol <- scs(A = A, b = b, obj = c, cone = cone, control = params) - expect_equal(sol$info$status, "solved") - expect_equal(sol$info$pobj, 13.5089, tol=1e-4) - expect_equal(sol$info$dobj, 13.5089, tol=1e-4) -}) diff --git a/tests/testthat/test_socp.R b/tests/testthat/test_socp.R deleted file mode 100644 index 4b74833..0000000 --- a/tests/testthat/test_socp.R +++ /dev/null @@ -1,14 +0,0 @@ -context("SOCP Test") - -test_that("An SOCP Test", { - A <- simple_triplet_matrix(i = 1:4, j = c(1L, 1L, 2L, 3L), v = c(1, -1, -1, -1), nrow = 4L, ncol = 3L) - rhs <- c(1.4142135623731, 0, 0, 0) - obj <- c(1, 1, 1) - cone <- list(z = 1L, l = 0L, q = 3L) - - sol <- scs(A = A, b = rhs, obj = obj, cone = cone) - expect_equal(sol$info$status, "solved") - expect_equal(sol$x, c(sqrt(2), -1, -1), tolerance = 1e-7) - expect_equal(sol$info$pobj, -0.5857864, tol = 1e-5) - expect_equal(sol$info$dobj, -0.5857864, tol = 1e-5) -}) diff --git a/tests/testthat/test_sparse_utils.R b/tests/testthat/test_sparse_utils.R deleted file mode 100644 index 8408c1d..0000000 --- a/tests/testthat/test_sparse_utils.R +++ /dev/null @@ -1,23 +0,0 @@ -## Some tests for utils -# Removed this test from the build via .Rbuildignore since Matrix pkg will change. - -s <- Matrix::sparseMatrix(i = c(2,4,3:5), j= c(4,7:5,5), x = 1:5, dims = c(7,7), symmetric = TRUE) - -test_that("make_csc_sym_matrix works on plain matrices", { - ms <- as.matrix(s) - cm <- make_csc_symm_matrix.matrix(ms) - s2 <- Matrix::sparseMatrix(i = cm[["matind"]], p = cm[["matbeg"]], x = cm[["values"]], - symmetric = TRUE, index1 = FALSE) - - expect_equal(s, s2) -}) - -test_that("make_csc_sym_matrix works on simple triplet matrices", { - ts <- as(s, "dgTMatrix") - sl <- slam::simple_triplet_matrix(i = ts@i, j = ts@j, v = ts@x, nrow = 7, ncol = 7) - - tm <- make_csc_symm_matrix.simple_triplet_matrix(sl) - s3 <- Matrix::sparseMatrix(i = tm[["matind"]], p = tm[["matbeg"]], x = tm[["values"]], dims = c(7, 7), - symmetric = TRUE, index1 = FALSE) - expect_equal(s, s3) -}) diff --git a/tests/testthat/test_tiny.R b/tests/testthat/test_tiny.R deleted file mode 100644 index a86b254..0000000 --- a/tests/testthat/test_tiny.R +++ /dev/null @@ -1,9 +0,0 @@ -context("Tiny test") - -test_that("A tiny test", { - sol <- scs(A = matrix(c(0.5, 2), 2, 1), b = c(3, 1), obj = 1, - cone = list(l = 2), control = list(max_iters = 5000)) - expect_equal(sol$info$status, "unbounded") - expect_equal(sol$info$pobj, -Inf) - expect_equal(sol$info$dobj, -Inf) -}) diff --git a/tests/tinytest.R b/tests/tinytest.R new file mode 100644 index 0000000..73375f5 --- /dev/null +++ b/tests/tinytest.R @@ -0,0 +1,6 @@ +library(Matrix) +library(slam) + +if ( requireNamespace("tinytest", quietly = TRUE) ){ + tinytest::test_package("scs") +}