From a1c0dea79b63459317cfb8176b6d1702d4d52858 Mon Sep 17 00:00:00 2001 From: RiccardoSena Date: Thu, 12 Dec 2024 22:44:23 +0100 Subject: [PATCH 1/7] Inference methods (both exact and non exact) for linear and non linear parameters have been intrduced. A base class (infernece_base) and derived classes for specific methods have been created: wald.h, speckman.h, esf.h, pesf.h. Also an auxilary class for some inference methods has been added (inference.h). Finally some small updates have been made to regression_base.h --- .DS_Store | Bin 0 -> 8196 bytes .gitignore | 3 + .gitmodules | 4 +- fdaPDE/calibration/calibration_base.h | 29 +- fdaPDE/calibration/gcv.h | 18 +- fdaPDE/calibration/kfold_cv.h | 17 +- fdaPDE/calibration/rmse.h | 2 +- fdaPDE/core | 2 +- .../density_estimation_base.h | 222 + fdaPDE/models/density_estimation/depde.h | 126 + fdaPDE/models/functional/fpca.h | 10 +- fdaPDE/models/functional/fpls.h | 6 +- fdaPDE/models/functional/regularized_svd.h | 10 +- fdaPDE/models/model_base.h | 1 + fdaPDE/models/model_type_erasure.h | 4 +- fdaPDE/models/regression/esf.h | 1124 ++ fdaPDE/models/regression/gcv.h | 18 +- fdaPDE/models/regression/inference.h | 131 + fdaPDE/models/regression/inference_base.h | 297 + fdaPDE/models/regression/pesf.h | 688 + fdaPDE/models/regression/regression_base.h | 44 +- .../regression/regression_type_erasure.h | 4 +- fdaPDE/models/regression/speckman.h | 110 + fdaPDE/models/regression/srpde.h | 63 +- fdaPDE/models/regression/stochastic_edf.h | 4 +- fdaPDE/models/regression/strpde.h | 14 +- fdaPDE/models/regression/wald.h | 245 + fdaPDE/models/sampling_design.h | 4 +- fdaPDE/models/space_only_base.h | 8 +- fdaPDE/models/space_time_parabolic_base.h | 29 +- fdaPDE/models/space_time_separable_base.h | 26 +- test/.DS_Store | Bin 0 -> 6148 bytes test/CMakeLists.txt | 12 +- test/data/.DS_Store | Bin 0 -> 8196 bytes test/data/mesh/.DS_Store | Bin 0 -> 8196 bytes test/data/mesh/c_shaped1.5D/boundary.csv | 202 + test/data/mesh/c_shaped1.5D/edges.csv | 201 + test/data/mesh/c_shaped1.5D/elements.csv | 201 + test/data/mesh/c_shaped1.5D/neigh.csv | 201 + test/data/mesh/c_shaped1.5D/points.csv | 202 + test/data/mesh/horsehoe2.5D/boundary.csv | 3692 ++++++ test/data/mesh/horsehoe2.5D/edges.csv | 11068 ++++++++++++++++ test/data/mesh/horsehoe2.5D/elements.csv | 7379 +++++++++++ test/data/mesh/horsehoe2.5D/neigh.csv | 7379 +++++++++++ test/data/mesh/horsehoe2.5D/points.csv | 3692 ++++++ test/data/mesh/hub2.5D/boundary.csv | 341 + test/data/mesh/hub2.5D/edges.csv | 957 ++ test/data/mesh/hub2.5D/elements.csv | 617 + test/data/mesh/hub2.5D/neigh.csv | 617 + test/data/mesh/hub2.5D/points.csv | 341 + test/data/mesh/unit_sphere3D/boundary.csv | 588 + test/data/mesh/unit_sphere3D/edges.csv | 5796 ++++++++ test/data/mesh/unit_sphere3D/elements.csv | 2776 ++++ test/data/mesh/unit_sphere3D/neigh.csv | 2776 ++++ test/data/mesh/unit_sphere3D/points.csv | 588 + test/data/models/.DS_Store | Bin 0 -> 6148 bytes test/data/models/srpde/.DS_Store | Bin 0 -> 8196 bytes test/data/models/srpde/15D_test1/X.csv | 202 + test/data/models/srpde/15D_test1/y.csv | 202 + test/data/models/srpde/25D_test1/X.csv | 3692 ++++++ test/data/models/srpde/25D_test1/y.csv | 3692 ++++++ test/data/models/srpde/2D_test2/pvalues.csv | 2 + test/data/models/srpde/3D_test1/X.csv | 588 + test/data/models/srpde/3D_test1/y.csv | 588 + test/data/models/strpde/.DS_Store | Bin 0 -> 6148 bytes test/data/models/strpde/25D_test1/X.csv | 341 + test/data/models/strpde/25D_test1/y.csv | 341 + test/main.cpp | 8 + test/run_tests.sh | 7 +- test/src/centering_test.cpp | 9 +- test/src/density_estimation_test.cpp | 168 + test/src/fpca_test.cpp | 43 +- test/src/fpls_test.cpp | 13 +- test/src/gcv_qsrpde_test.cpp | 113 +- test/src/gcv_srpde_newton_test.cpp | 13 +- test/src/gcv_srpde_test.cpp | 66 +- test/src/gsrpde_test.cpp | 31 +- test/src/inference_test.cpp | 329 + test/src/inferencetime_test.cpp | 258 + test/src/kcv_srpde_test.cpp | 9 +- test/src/qsrpde_test.cpp | 28 +- test/src/srpde_test.cpp | 19 +- test/src/strpde_test.cpp | 67 +- test/src/utils/mesh_loader.h | 140 +- 84 files changed, 63467 insertions(+), 391 deletions(-) create mode 100644 .DS_Store create mode 100644 fdaPDE/models/density_estimation/density_estimation_base.h create mode 100644 fdaPDE/models/density_estimation/depde.h create mode 100644 fdaPDE/models/regression/esf.h create mode 100644 fdaPDE/models/regression/inference.h create mode 100644 fdaPDE/models/regression/inference_base.h create mode 100644 fdaPDE/models/regression/pesf.h create mode 100644 fdaPDE/models/regression/speckman.h create mode 100644 fdaPDE/models/regression/wald.h create mode 100644 test/.DS_Store create mode 100644 test/data/.DS_Store create mode 100644 test/data/mesh/.DS_Store create mode 100644 test/data/mesh/c_shaped1.5D/boundary.csv create mode 100644 test/data/mesh/c_shaped1.5D/edges.csv create mode 100644 test/data/mesh/c_shaped1.5D/elements.csv create mode 100644 test/data/mesh/c_shaped1.5D/neigh.csv create mode 100644 test/data/mesh/c_shaped1.5D/points.csv create mode 100644 test/data/mesh/horsehoe2.5D/boundary.csv create mode 100644 test/data/mesh/horsehoe2.5D/edges.csv create mode 100644 test/data/mesh/horsehoe2.5D/elements.csv create mode 100644 test/data/mesh/horsehoe2.5D/neigh.csv create mode 100644 test/data/mesh/horsehoe2.5D/points.csv create mode 100644 test/data/mesh/hub2.5D/boundary.csv create mode 100644 test/data/mesh/hub2.5D/edges.csv create mode 100644 test/data/mesh/hub2.5D/elements.csv create mode 100644 test/data/mesh/hub2.5D/neigh.csv create mode 100644 test/data/mesh/hub2.5D/points.csv create mode 100644 test/data/mesh/unit_sphere3D/boundary.csv create mode 100644 test/data/mesh/unit_sphere3D/edges.csv create mode 100644 test/data/mesh/unit_sphere3D/elements.csv create mode 100644 test/data/mesh/unit_sphere3D/neigh.csv create mode 100644 test/data/mesh/unit_sphere3D/points.csv create mode 100644 test/data/models/.DS_Store create mode 100644 test/data/models/srpde/.DS_Store create mode 100644 test/data/models/srpde/15D_test1/X.csv create mode 100644 test/data/models/srpde/15D_test1/y.csv create mode 100644 test/data/models/srpde/25D_test1/X.csv create mode 100644 test/data/models/srpde/25D_test1/y.csv create mode 100644 test/data/models/srpde/2D_test2/pvalues.csv create mode 100644 test/data/models/srpde/3D_test1/X.csv create mode 100644 test/data/models/srpde/3D_test1/y.csv create mode 100644 test/data/models/strpde/.DS_Store create mode 100644 test/data/models/strpde/25D_test1/X.csv create mode 100644 test/data/models/strpde/25D_test1/y.csv create mode 100644 test/src/density_estimation_test.cpp create mode 100644 test/src/inference_test.cpp create mode 100644 test/src/inferencetime_test.cpp diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2fc97ab2c1fbf15e2933eca291f21d80a330b464 GIT binary patch literal 8196 zcmeHMTWl0n7(U;$lo=<`X#uIj7FVj2%LWQm3MjbkwsNV`+6!&DmD!yECQN7Q&g>Sf zX!Q})_@qW-ygaDU#1{cCQD2Nv6Jr7rBSZtQMqf;nL`{tUnKRq83uwZFfiNdI=b!Um z&gDPfKWG10#u(ZP<|@YO7-KS3PBoR9D- zvNEjIjgPNxZb>Cqx2!#yN{+8z-IPi;uUUKas3Om6Sb0y+@F8c!^^S>cAbJ(BS!LTg zUcRSdZ{Br0_W<#^O(hGM#e5b_`Brfw?{#uNj$h1(Z!Z-KN@sVzbau)usya*W>+jn! zFgUDf1>fqi93!xcR=W{c{;*c<(@}2Cd2V;!D$)@S zv~zjSak@R<4s6dI8Vsz%0hjTCrili3`d&WBgo6#*G``TP<#Tk6a$|pomG_A%%Dc1Y zC+@gw*~;ei8{6*h>^fVm)zr?JtExK*C2nBvx2=5tm~93JhYUYwxu)$N7%1Alopr1} z*BG&CkW!S;s_r&jA1q|;hYNOaL~D@ckXye{S9hDVkq14Kk7jBoWud=lp|0=Zl1$#B z){G1mH|lDiPutRrNO5^eRr?MRj5R-+s%e#~_d7<`ax_yB^W42w)dz}VS6XMp+%Q+w z2Xo%Y2yMlWc$@Ci^}T%B2Mj;x8ns+n(wEWP8Cud1m$jN^xS(3Crdr>kZ?AwIK4;&sbL;~9iT%nhu|L?K>@QSe7OJ74209wC z6w9z2%}ApaZRkWddeDnL>_HYLEbNDe0>*F{NAM($;VC?gXYf2;#cOyS@8BbRj8E_> zzQAdm!MFGUKjH!|;%EGZ-*HKjr5dSLnjXnS|o&+4iCQ! zk7p^A79{G`+e?vF9)bN74Ax$E|n<^v?|d}C0583c$yS; z)m4c#3Wb+eA-btViy~_foek=}3I&>0DZ2G)T2V9>b`qIHhfKku$^VJsf5q@u> class ConfiguredCalibrator { private: - using CalibratorType = std::decay_t; + using CalibratorType = std::remove_const_t; using ArgsPackType = std::tuple...>; CalibratorType c_; ArgsPackType args_; // parameter pack forwarded to calibration strategy at fit time @@ -32,16 +32,15 @@ template class ConfiguredCalibrator { auto call_(ModelType_& model, [[maybe_unused]] std::index_sequence seq) { return c_.fit(model, std::get(args_)...); // forward stored parameters to calibrator } - // templated member detection trait for set_model() template struct callback_require_model : std::false_type { }; template struct callback_require_model< - T, M, std::void_t().template set_model(std::declval()))>> : std::true_type { }; + T, M, std::void_t().template set_model(std::declval()))> + > : std::true_type { }; public: - ConfiguredCalibrator() = default; - ConfiguredCalibrator(const CalibratorType& c, Args_&&... args) : - c_(c), args_(std::make_tuple(std::forward(args)...)) {}; + ConfiguredCalibrator(CalibratorType c, Args_&&... args) : + c_(c), args_(std::make_tuple(std::forward(args)...)) { } template DVector fit(ModelType_&& model) { // forward model instance to callbacks which require it auto set_model = [&model](auto&& arg) { @@ -56,18 +55,24 @@ template class ConfiguredCalibrator { }; template struct CalibratorBase { - template ConfiguredCalibrator operator()(Args&&... args) const { - return ConfiguredCalibrator(static_cast(*this), std::forward(args)...); + template + ConfiguredCalibrator, Args...> operator()(Args&&... args) & { + return ConfiguredCalibrator, Args...>( + static_cast>(*this), std::forward(args)...); + } + // rvalue ref-qualified overload pushes calibrator by copy + template ConfiguredCalibrator operator()(Args&&... args) && { + return {static_cast(*this), std::forward(args)...}; } }; // a type-erasure wrapper for a (configured) calibration algorithm for models of type ModelType template struct Calibrator__ { - template using fn_ptrs = fdapde::mem_fn_ptrs<&T::template fit, &T::optimum>; - decltype(auto) fit(ModelType_& model) { return fdapde::invoke, 0>(*this, model); } - decltype(auto) optimum(ModelType_& model) { return fdapde::invoke, 1>(*this, model); } + template using fn_ptrs = mem_fn_ptrs<&T::template fit, &T::optimum>; + decltype(auto) fit(ModelType_& model) { return invoke, 0>(*this, model); } + decltype(auto) optimum() { return invoke, 1>(*this); } }; -template using Calibrator = fdapde::erase>; +template using Calibrator = erase>; } // namespace calibration } // namespace fdapde diff --git a/fdaPDE/calibration/gcv.h b/fdaPDE/calibration/gcv.h index 0ba4634a..c88e155f 100644 --- a/fdaPDE/calibration/gcv.h +++ b/fdaPDE/calibration/gcv.h @@ -34,31 +34,33 @@ template class GCV : public CalibratorBase GCV(Optimizer_&& opt, EDFStrategy_&& edf) : opt_(opt) { + GCV() { if constexpr (!is_void::value) { - if constexpr (std::is_same_v) { - gcv_.resize(1); - } else { // space-time models - gcv_.resize(2); - } + constexpr int n_lambda = std::is_same_v ? 1 : 2; + gcv_.resize(n_lambda); } + } + template GCV(Optimizer_&& opt, EDFStrategy_&& edf) : GCV() { + opt_ = opt; gcv_.set_edf_strategy(edf); } // selects best smoothing parameter of regression model by minimization of GCV index template DVector fit(ModelType_& model, Args&&... args) { - fdapde_assert(gcv_.inner_size() != 0); + fdapde_assert(gcv_.inner_size() != 0 && bool(opt_) == true); gcv_.set_model(model); return opt_.optimize(gcv_, std::forward(args)...); } DVector optimum() { return opt_.optimum(); } // optimal \lambda found const std::vector& edfs() const { return gcv_.edfs(); } // equivalent degrees of freedom q + Tr[S] const std::vector& gcvs() const { return gcv_.gcvs(); } // computed values of GCV index + // setters void set_step(double step) { gcv_.set_step(step); } + template void set_optimizer(Optimizer_&& opt) { opt_ = opt; } template void set() { // set GCV's domain dimension fdapde_static_assert(is_void::value, THIS_METHOD_IS_FOR_VOID_REGULARIZATION_ONLY); gcv_.resize(models::n_smoothing_parameters::value); } + template void set_edf_strategy(EDFStrategy_&& edf) { gcv_.set_edf_strategy(edf); } }; // template argument deduction rule template GCV(Optimizer_&& opt, EDFStrategy_&& edf) -> GCV; diff --git a/fdaPDE/calibration/kfold_cv.h b/fdaPDE/calibration/kfold_cv.h index ff9ca513..b8bd23f4 100644 --- a/fdaPDE/calibration/kfold_cv.h +++ b/fdaPDE/calibration/kfold_cv.h @@ -71,24 +71,25 @@ class KCV : public CalibratorBase { // selects best smoothing parameter of model according to a K-fold cross validation strategy template - DVector fit(ModelType& model, const std::vector>& lambdas, ScoreType cv_score) { + DVector fit(ModelType& model, const DMatrix& lambdas, ScoreType cv_score) { + fdapde_assert(lambdas.cols() == 1 || lambdas.cols() == 2); // reserve space for CV scores - scores_.resize(K_, lambdas.size()); + scores_.resize(K_, lambdas.rows()); if (shuffle_) { // perform a first shuffling of the data if required model.set_data(model.data().shuffle(seed_)); } // cycle over all tuning parameters - for (std::size_t j = 0; j < lambdas.size(); ++j) { + for (int j = 0; j < lambdas.rows(); ++j) { for (int fold = 0; fold < K_; ++fold) { // fixed a tuning parameter, cycle over all data splits // compute train-test partition and evaluate CV score TrainTestPartition partition_mask = split(model.data(), fold); - scores_.coeffRef(fold, j) = cv_score(lambdas[j], partition_mask.first, partition_mask.second); + scores_.coeffRef(fold, j) = cv_score(lambdas.row(j), partition_mask.first, partition_mask.second); } } // reserve space for storing results - avg_scores_ = DVector::Zero(lambdas.size()); - std_scores_ = DVector::Zero(lambdas.size()); - for (std::size_t j = 0; j < lambdas.size(); ++j) { + avg_scores_ = DVector::Zero(lambdas.rows()); + std_scores_ = DVector::Zero(lambdas.rows()); + for (int j = 0; j < lambdas.rows(); ++j) { // record the average score and its standard deviation computed among the K_ runs double avg_score = 0; for (int i = 0; i < K_; ++i) avg_score += scores_(i, j); @@ -104,7 +105,7 @@ class KCV : public CalibratorBase { // store optimal lambda according to given metric F Eigen::Index opt_score; avg_scores_.minCoeff(&opt_score); - optimum_ = lambdas[opt_score]; + optimum_ = lambdas.row(opt_score); return optimum_; } diff --git a/fdaPDE/calibration/rmse.h b/fdaPDE/calibration/rmse.h index c4c2f25a..dba5bf6b 100644 --- a/fdaPDE/calibration/rmse.h +++ b/fdaPDE/calibration/rmse.h @@ -34,7 +34,7 @@ class RMSE { RegressionView model_; public: RMSE() = default; - template RMSE(const ModelType& model) : model_(model) {}; + template RMSE(const ModelType& model) : model_(model) {} template void set_model(const ModelType& model) { model_ = model; } double operator()( diff --git a/fdaPDE/core b/fdaPDE/core index f8132c8c..97829682 160000 --- a/fdaPDE/core +++ b/fdaPDE/core @@ -1 +1 @@ -Subproject commit f8132c8c0fbdb219de25b0f0a9b93865322be526 +Subproject commit 97829682043b05ed4fb088ee3267805a1782c5a3 diff --git a/fdaPDE/models/density_estimation/density_estimation_base.h b/fdaPDE/models/density_estimation/density_estimation_base.h new file mode 100644 index 00000000..eec44c96 --- /dev/null +++ b/fdaPDE/models/density_estimation/density_estimation_base.h @@ -0,0 +1,222 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __DENSITY_ESTIMATION_BASE_H__ +#define __DENSITY_ESTIMATION_BASE_H__ + +#include +#include "../model_macros.h" +#include "../model_traits.h" +#include "../space_only_base.h" +#include "../space_time_separable_base.h" +#include "../sampling_design.h" + +namespace fdapde { +namespace models { + +#define SPACE_LOCS "SPACE_LOCS" +#define TIME_LOCS "TIME_LOCS" + +namespace internal { +consteval int de_select_quadrature(int local_dim) { return local_dim == 1 ? 4 : local_dim == 2 ? 6 : 14; } +}; // namespace internal + +template +class DensityEstimationBase : + public select_regularization_base::type, + public SamplingBase { + protected: + std::function&)> int_exp_; // \int_{\mathcal{D}} exp(g(x)), x \in \mathcal{D} + std::function(const DVector&)> grad_int_exp_; // gradient of int_exp + DVector g_; // expansion coefficients vector of estimated density function + DMatrix PsiQuad_; // reference element basis evaluation at quadrature nodes + DVector w_; // quadrature weights + SpMatrix Upsilon_; // \Upsilon_(i,:) = \Phi(i,:) \kron S(p_i) \Psi + SpMatrix B_; // \Upsilon matrix corrected for masked observations + BinaryVector mask_; + + template + DMatrix eval_basis_at_quadrature_(BasisType_&& basis, IntegratorType_&& integrator) const { + using IntegratorType = std::decay_t; + DMatrix result(IntegratorType::num_nodes, basis.size()); + for (int i = 0; i < IntegratorType::num_nodes; ++i) { + for (int j = 0; j < basis.size(); ++j) { result(i, j) = basis[j](integrator.nodes[i]); } + } + return result; + } + public: + static constexpr int DomainDimension = fdapde::Dynamic; + using Base = typename select_regularization_base::type; + using Base::model; + using SamplingBase::Psi; // matrix of basis evaluations at data locations + using SamplingBase::n_spatial_locs; + + DensityEstimationBase() = default; + // space-only constructor + template + DensityEstimationBase(PDE_&& pde) + requires(is_space_only::value) + : Base(pde), SamplingBase(Sampling::pointwise) { + pde.init(); // early PDE initialization + constexpr int local_dim = std::decay_t::SpaceDomainType::local_dim; + constexpr int n_quadrature_nodes = internal::de_select_quadrature(local_dim); + // compute reference basis evaluation at quadrature nodes + core::IntegratorTable integrator {}; + PsiQuad_ = eval_basis_at_quadrature_(pde.reference_basis(), integrator); + w_ = Eigen::Map>(integrator.weights.data()); + // store functor for approximation of \int_{\mathcal{D}} \exp(g(p)). Computes + // \sum_{e \in mesh} {e.measure() * \sum_j {w_j * exp[\sum_i {g_i * \psi_i(q_j)}]}} + int_exp_ = [&](const DVector& g) { + double result = 0; + for (auto e = pde.domain().cells_begin(); e != pde.domain().cells_end(); ++e) { + result += w_.dot((PsiQuad_ * g(pde.dofs().row(e->id()))).array().exp().matrix()) * e->measure(); + } + return result; + }; + // store functor for computation of \nabla_g(\int_{\mathcal{D}} \exp(g(p))) + grad_int_exp_ = [&](const DVector& g) { + DVector grad = DVector::Zero(g.rows()); + for (auto e = pde.domain().cells_begin(); e != pde.domain().cells_end(); ++e) { + grad(pde.dofs().row(e->id())) += + PsiQuad_.transpose() * + (PsiQuad_ * g(pde.dofs().row(e->id()))).array().exp().cwiseProduct(w_.array()).matrix() * + e->measure(); + } + return grad; + }; + } + // space-time separable constructor + template + DensityEstimationBase(SpacePDE_&& s_pen, TimePDE_&& t_pen) + requires(is_space_time_separable::value) + : Base(s_pen, t_pen), SamplingBase(Sampling::pointwise) { + // early penalties initialization + s_pen.init(); + t_pen.init(); + constexpr int local_dim = std::decay_t::SpaceDomainType::local_dim; + constexpr int n_quadrature_s = internal::de_select_quadrature(local_dim); + constexpr int n_quadrature_t = 5; + // compute reference basis evaluation at quadrature nodes + core::IntegratorTable s_integrator {}; + core::IntegratorTable<1, n_quadrature_t, core::GaussLegendre> t_integrator {}; + DMatrix Psi = eval_basis_at_quadrature_(s_pen.reference_basis(), s_integrator); + DMatrix Phi = eval_basis_at_quadrature_(t_pen.reference_basis(), t_integrator); + PsiQuad_ = Kronecker(Phi, Psi); + w_ = Kronecker( + Eigen::Map>(t_integrator.weights.data()), + Eigen::Map>(s_integrator.weights.data())); + // store functor for approximation of double integral \int_T \int_{\mathcal{D}} \exp(g(p, t)) + int_exp_ = + [&, n = s_pen.reference_basis().size(), m = t_pen.reference_basis().size()](const DVector& g) { + double result = 0; + DVector active_dofs(n * m); + for (auto e = s_pen.domain().cells_begin(); e != s_pen.domain().cells_end(); ++e) { // space loop + for (auto i = t_pen.domain().cells_begin(); i != t_pen.domain().cells_end(); ++i) { // time loop + for (int j = 0; j < m; ++j) { // compute active dofs + active_dofs.middleRows(j * n, n) = + s_pen.dofs().row(e->id()).transpose().array() + j * Base::n_spatial_basis(); + } + result += w_.dot((PsiQuad_ * g(active_dofs)).array().exp().matrix()) * e->measure() * + (0.5 * i->measure()); + } + } + return result; + }; + // store functor for computation of \nabla_g(\int_T \int_{\mathcal{D}} \exp(g(p, t))) + grad_int_exp_ = + [&, n = s_pen.reference_basis().size(), m = t_pen.reference_basis().size()](const DVector& g) { + DVector grad = DVector::Zero(g.rows()); + DVector active_dofs(n * m); + for (auto e = s_pen.domain().cells_begin(); e != s_pen.domain().cells_end(); ++e) { // space loop + for (auto i = t_pen.domain().cells_begin(); i != t_pen.domain().cells_end(); ++i) { // time loop + for (int j = 0; j < m; ++j) { // compute active dofs + active_dofs.middleRows(j * n, n) = + s_pen.dofs().row(e->id()).transpose().array() + j * Base::n_spatial_basis(); + } + grad(active_dofs) += PsiQuad_.transpose() * + ((PsiQuad_ * g(active_dofs)).array().exp()).cwiseProduct(w_.array()).matrix() * + e->measure() * (0.5 * i->measure()); + } + } + return grad; + }; + } + + // setters + // redefine set_data() as it forwards data as locations in density estimation + void set_data(const BlockFrame& df, bool reindex = false) { + fdapde_assert( + df.cols() > 0 && + ((is_space_only::value && df.has_block(SPACE_LOCS)) || + (is_space_time_separable::value && df.has_block(SPACE_LOCS) && df.has_block(TIME_LOCS)))); + Base::set_data(df, reindex); + if (df.has_block(SPACE_LOCS)) SamplingBase::set_spatial_locations(df.get(SPACE_LOCS)); + if constexpr (is_space_time_separable::value) Base::set_temporal_locations(df.get(TIME_LOCS)); + } + void set_mask(const BinaryVector& mask) { + fdapde_assert(mask.size() == n_locs()); + if (mask.any()) { + model().runtime().set(runtime_status::require_psi_correction); + mask_ = mask; // mask[i] == true, removes the contribution of the i-th observation from fit + } + } + // getters + int n_obs() const { return Base::df_.rows() - mask_.count(); }; + int n_locs() const { return Base::df_.rows(); } + const SpMatrix& Psi() const { return is_space_only::value ? Psi(not_nan()) : Upsilon_; } + const SpMatrix& Upsilon() const { return !is_empty(B_) ? B_ : Psi(); } + const DMatrix& PsiQuad() const { return PsiQuad_; } + const DMatrix& w() const { return w_; } + double int_exp(const DVector& g) const { return int_exp_(g); } + double int_exp() const { return int_exp_(g_); } + DVector grad_int_exp(const DVector& g) const { return grad_int_exp_(g); } + DVector grad_int_exp() const { return grad_int_exp_(g_); } + const DVector& g() const { return g_; } // expansion coefficient vector of log density field + DVector f() const { return g_.array().exp(); } // expansion coefficient vector of density field + const BinaryVector& masked_obs() const { return mask_; } + + // initialization methods + void analyze_data() { + if constexpr (is_space_time_separable::value) { + if (is_empty(Upsilon_)) { + Upsilon_.resize(Base::n_temporal_locs(), Base::n_basis()); + std::vector> triplet_list; + // reserve with some bound + for (int i = 0; i < Base::n_temporal_locs(); ++i) { + // kronecker product between Phi i-th row and Psi i-th row + SpMatrix tmp = + Kronecker(SpMatrix(Base::Phi().row(i)), SpMatrix(Psi().row(i))); + for (int j = 0; j < tmp.outerSize(); ++j) + for (SpMatrix::InnerIterator it(tmp, j); it; ++it) { + triplet_list.emplace_back(i, it.col(), it.value()); + } + } + Upsilon_.setFromTriplets(triplet_list.begin(), triplet_list.end()); + Upsilon_.makeCompressed(); + } + } + return; + } + void tensorize_psi() { return; } // avoid tensorization for space-time problems + void correct_psi() { + if (masked_obs().any()) B_ = (~masked_obs().repeat(1, Base::n_basis())).select(Psi()); + } +}; + +} // namespace models +} // namespace fdapde + +#endif // __DENSITY_ESTIMATION_BASE_H__ diff --git a/fdaPDE/models/density_estimation/depde.h b/fdaPDE/models/density_estimation/depde.h new file mode 100644 index 00000000..6eb7e898 --- /dev/null +++ b/fdaPDE/models/density_estimation/depde.h @@ -0,0 +1,126 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __DEPDE_H__ +#define __DEPDE_H__ + +#include +#include "../model_base.h" +#include "../model_macros.h" +#include "../sampling_design.h" +#include "density_estimation_base.h" + +namespace fdapde { +namespace models { + +template +class DEPDE : public DensityEstimationBase, RegularizationType_> { + private: + using Base = DensityEstimationBase, RegularizationType_>; + double tol_ = 1e-5; // tolerance on custom stopping criterion + DVector g_init_; // density initialization basis expansion coefficients + core::Optimizer> opt_; + public: + using RegularizationType = std::decay_t; + using This = DEPDE; + using Base::grad_int_exp; // \nabla_g (\int_{\Omega} \exp(g)) + using Base::int_exp; // \int_{\Omega} \exp(g) + using Base::n_locs; // overall number of data locations + using Base::n_obs; // number of observations (!= n_locs if masked) + using Base::P; // discretized penalty matrix R_1^\top * (R_0)^{-1} * R_1 + using Base::PsiQuad; // reference basis evaluation at quadrature nodes + using Base::Upsilon; // \Upsilon_(i,:) = is_space_only ? \Psi : \Phi(i,:) \kron S(p_i) \Psi + + // space-only constructor + template + DEPDE(PDE_&& pde) requires(is_space_only::value) : Base(pde) { } + // space-time separable constructor + template + DEPDE(SpacePDE_&& space_penalty, TimePDE_&& time_penalty) requires(is_space_time_separable::value) + : Base(space_penalty, time_penalty) { } + + // K-fold cross validation index + struct CVScore { + CVScore(DEPDE& model) : model_(model) { } + double operator()( + const DVector& lambda, [[maybe_unused]] const BinaryVector& train_mask, + const BinaryVector& test_mask) { + model_.set_lambda(lambda); + // fit model on train set + model_.set_mask(test_mask); // discard test set from training phase + model_.init(); + model_.solve(); + double test_err = 0; + for (int i = 0; i < test_mask.size(); ++i) { + if (test_mask[i]) { test_err += std::exp(model_.Psi().row(i) * model_.g()); } + } + return model_.int_exp(2. * model_.g()) - 2. / test_mask.count() * test_err; + } + private: + DEPDE& model_; + }; + + // evaluates penalized negative log-likelihood at point + // L(g) = - 1^\top*\Upsilon*g + \sum_{e \in mesh} w^\top*exp[\Psi_q*g_e] + \lambda_S*g^\top*P*g + double operator()(const DVector& g) { + return -(Upsilon() * g).sum() + n_obs() * int_exp(g) + g.dot(P() * g); + } + // log-likelihood gradient functor + // \nabla_g(L(g)) = -\Upsilon^\top*1 + n*\sum_{e \in mesh} w*exp[\Psi_q*g_e]*\Psi_q^\top + 2*P*g + std::function(const DVector&)> derive() { + return [this, dllik = DVector(-Upsilon().transpose() * DVector::Ones(n_locs()))]( + const DVector& g) { + return DVector(dllik + n_obs() * grad_int_exp(g) + 2 * P() * g); + }; + } + // optimization algorithm custom stopping criterion + template bool opt_stopping_criterion(OptimizerType& opt) { + // opt.x_old: density function before update step, opt.x_new: density function after update step + bool stop = true; + double llik_old = -(Upsilon() * opt.x_old).sum() + n_obs() * int_exp(opt.x_old); + double llik_new = -(Upsilon() * opt.x_new).sum() + n_obs() * int_exp(opt.x_new); + stop &= std::abs((llik_new - llik_old) / llik_old) < tol_; + if(!stop) return false; + double penD_old = Base::xtPDx(opt.x_old), penD_new = Base::xtPDx(opt.x_new); //opt.x_old.dot(Base::PD() * opt.x_old); + stop &= std::abs((penD_new - penD_old) / penD_old) < tol_; + if (!stop) return false; + double loss_old = llik_old + Base::lambda_D() * penD_old, loss_new = llik_new + Base::lambda_D() * penD_new; + // space-time case + if constexpr (is_space_time_separable::value) { + double penT_old = Base::xtPTx(opt.x_old), penT_new = Base::xtPTx(opt.x_new); + loss_old += Base::lambda_T() * penT_old; + loss_new += Base::lambda_T() * penT_new; + stop &= std::abs((penT_new - penT_old) / penT_old) < tol_; + } + stop &= std::abs((loss_new - loss_old) / loss_old) < tol_; + return stop; + } + // call optimization algorithm for log-likelihood minimization + void solve() { Base::g_ = opt_.optimize(*this, g_init_); } + void init_model() { return; } + // setters + void set_tolerance(double tol) { tol_ = tol; } + void set_g_init(const DVector& g_init) { g_init_ = g_init; } + void set_f_init(const DVector& f_init) { g_init_ = f_init.array().log(); } + template void set_optimizer(OptimizerType&& opt) { opt_ = opt; } + // getters + const DVector& g_init() const { return g_init_; } +}; + +} // namespace models +} // namespace fdapde + +#endif // __DEPDE_H__ diff --git a/fdaPDE/models/functional/fpca.h b/fdaPDE/models/functional/fpca.h index 822e5689..fad67ee1 100644 --- a/fdaPDE/models/functional/fpca.h +++ b/fdaPDE/models/functional/fpca.h @@ -47,7 +47,7 @@ class FPCA : public FunctionalBase, RegularizationType decltype(auto) scores() const { return invoke&, 2>(*this); } }; using SolverType = fdapde::erase; - SolverType solver_; + SolverType solver_; // RegularizedSVD solver public: using RegularizationType = std::decay_t; using This = FPCA; @@ -58,13 +58,13 @@ class FPCA : public FunctionalBase, RegularizationType // constructors FPCA() = default; // space-only constructor - FPCA(const Base::PDE& pde, Sampling s, SolverType solver) - requires(is_space_only::value) : Base(pde, s), solver_(solver) { } + FPCA(const Base::PDE& pde, Sampling s, SolverType solver) requires(is_space_only::value) : + Base(pde, s), solver_(solver) { } // space-time separable constructor FPCA(const Base::PDE& space_penalty, const Base::PDE& time_penalty, Sampling s, SolverType solver) - requires(is_space_time_separable::value) : Base(space_penalty, time_penalty, s), solver_(solver) { } + requires(is_space_time_separable::value) : Base(space_penalty, time_penalty, s), solver_(solver) { } - void init_model() { fdapde_assert(bool(solver_) == true); }; // check solver is assigned + void init_model() { fdapde_assert(bool(solver_) == true); }; void solve() { solver_.compute(X(), *this, n_pc_); } // getters const DMatrix& loadings() const { return solver_.loadings(); } diff --git a/fdaPDE/models/functional/fpls.h b/fdaPDE/models/functional/fpls.h index c4e9ba81..0032a882 100644 --- a/fdaPDE/models/functional/fpls.h +++ b/fdaPDE/models/functional/fpls.h @@ -49,11 +49,11 @@ class FPLS : public FunctionalBase, RegularizationType // constructors FPLS() = default; // space-only constructor - FPLS(const Base::PDE& pde, Sampling s, RegularizedSVD rsvd) - requires(is_space_only::value) : Base(pde, s), rsvd_(rsvd) { } + FPLS(const Base::PDE& pde, Sampling s, RegularizedSVD rsvd) requires(is_space_only::value) : + Base(pde, s), rsvd_(rsvd) { } // space-time separable constructor FPLS(const Base::PDE& space_penalty, const Base::PDE& time_penalty, Sampling s, RegularizedSVD rsvd) - requires(is_space_time_separable::value) : Base(space_penalty, time_penalty, s), rsvd_(rsvd) { } + requires(is_space_time_separable::value) : Base(space_penalty, time_penalty, s), rsvd_(rsvd) { } void init_model() { // initialize smoothing solver for regression step diff --git a/fdaPDE/models/functional/regularized_svd.h b/fdaPDE/models/functional/regularized_svd.h index a973d130..9f0cea2d 100644 --- a/fdaPDE/models/functional/regularized_svd.h +++ b/fdaPDE/models/functional/regularized_svd.h @@ -41,7 +41,7 @@ template <> class RegularizedSVD { private: Calibration calibration_; // PC function's smoothing parameter selection strategy int n_folds_ = 10; // for a kcv calibration strategy, the number of folds - std::vector> lambda_grid_; + DMatrix lambda_grid_; // power iteration parameters double tolerance_ = 1e-6; // relative tolerance between Jnew and Jold, used as stopping criterion int max_iter_ = 20; // maximum number of allowed iterations @@ -89,11 +89,11 @@ template <> class RegularizedSVD { auto cv_score = [&]( const DVector& lambda, const core::BinaryVector& train_set, const core::BinaryVector& test_set) -> double { - solver_.compute(train_set.blk_repeat(1, X_.cols()).select(X_), lambda, f0); // fit on train set + solver_.compute(train_set.repeat(1, X_.cols()).select(X_), lambda, f0); // fit on train set // reconstruction error on test set: \norm{X_test * (I - fn*fn^\top/J)}_F/n_test, with // J = \norm{f_n}_2^2 + f^\top*P(\lambda)*f (PS: the division of f^\top*P(\lambda)*f by // \norm{f}_{L^2} is necessary to obtain J as expected) - return (test_set.blk_repeat(1, X_.cols()).select(X_) * + return (test_set.repeat(1, X_.cols()).select(X_) * (DMatrix::Identity(X_.cols(), X_.cols()) - solver_.fn() * solver_.fn().transpose() / (solver_.fn().squaredNorm() + solver_.ftPf(lambda) / solver_.f_squaredNorm()))) @@ -163,13 +163,13 @@ template <> class RegularizedSVD { const DMatrix& loadings() const { return loadings_; } const DVector& loadings_norm() const { return loadings_norm_; } const std::vector>& selected_lambdas() const { return selected_lambdas_; } - const std::vector>& lambda_grid() const { return lambda_grid_; } + const DMatrix& lambda_grid() const { return lambda_grid_; } Calibration calibration() const { return calibration_; } // setters void set_tolerance(double tolerance) { tolerance_ = tolerance; } void set_max_iter(int max_iter) { max_iter_ = max_iter; } void set_seed(int seed) { seed_ = seed; } - RegularizedSVD& set_lambda(const std::vector>& lambda_grid) { + RegularizedSVD& set_lambda(const DMatrix& lambda_grid) { fdapde_assert(calibration_ != Calibration::off); lambda_grid_ = lambda_grid; return *this; diff --git a/fdaPDE/models/model_base.h b/fdaPDE/models/model_base.h index 88cd5ee3..de855bcc 100644 --- a/fdaPDE/models/model_base.h +++ b/fdaPDE/models/model_base.h @@ -19,6 +19,7 @@ #include using fdapde::core::BlockFrame; +using fdapde::core::is_empty; #include "model_macros.h" #include "model_traits.h" diff --git a/fdaPDE/models/model_type_erasure.h b/fdaPDE/models/model_type_erasure.h index 1b3cb7b1..b7dc5863 100644 --- a/fdaPDE/models/model_type_erasure.h +++ b/fdaPDE/models/model_type_erasure.h @@ -64,7 +64,7 @@ template struct StatisticalModel__ { }; template <> struct StatisticalModel__ { using RegularizationType = void; template using Base = ModelBase; - static constexpr int n_lambda = fdapde::Dynamic; + static constexpr int n_lambda = fdapde::core::Dynamic; // interface implementation template using fn_ptrs = fdapde::mem_fn_ptrs< @@ -74,7 +74,7 @@ template <> struct StatisticalModel__ { // interface implementation BASE_MODEL_ERASED_INTERFACE void set_lambda(const DVector& lambda) { invoke(*this, lambda); } - decltype(auto) lambda() const { return invoke, 13>(*this, fdapde::Dynamic); } + decltype(auto) lambda() const { return invoke, 13>(*this, fdapde::core::Dynamic); } }; // space-only statistical model interface diff --git a/fdaPDE/models/regression/esf.h b/fdaPDE/models/regression/esf.h new file mode 100644 index 00000000..a65d3b13 --- /dev/null +++ b/fdaPDE/models/regression/esf.h @@ -0,0 +1,1124 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __ESF_H__ +#define __ESF_H__ + +// questi sono da controllare +#include +#include + +#include "../model_macros.h" +#include "../model_traits.h" +#include "../model_base.h" +#include "srpde.h" +#include "strpde.h" +#include "exact_edf.h" +#include "stochastic_edf.h" +#include "inference_base.h" +#include "inference.h" + +#include + + +using fdapde::core::is_empty; + +namespace fdapde { +namespace models { + +template class ESF: public InferenceBase{ + + private: + struct ExactInverse{ + DMatrix compute(Model m){ + return inverse(m.E()); + } + }; + + struct NonExactInverse{ + SpMatrix compute(Model m){ + return Base::invE_approx(m); + } + }; + + int n_flip = 1000; //default value + int set_seed = 0; + DMatrix Lambda_ {}; + + bool is_speckman_aux_computed = false; + DVector Speckman_aux_ranges; + + DMatrix Qp_ {}; + int p_l_ = 0; // number of locations for inference on f + SpMatrix Psi_p_ {}; // Psi only in the locations for inference + DMatrix Qp_dec_ {}; // Decomposition of Qp matrix + DVector mesh_nodes_ {}; // if inference is performed on a subset of mesh nodes + + + public: + using Base = InferenceBase; + using Base::m_; + using Base::beta_; + using Base::f0_; + using Base::C_; + using Base::locations_f_; + using Base::alpha_f_; + using Base::beta0_; + using Solver = typename std::conditional::value, ExactInverse, NonExactInverse>::type; + Solver s_; + + using Base::V_; + + // constructors + ESF() = default; // deafult constructor + ESF(const Model& m): Base(m) {}; // constructor + + DVector p_value(CIType type) override{ + // extract matrix C (in the eigen-sign-flip case we cannot have linear combinations, but we can have at most one 1 for each column of C) + fdapde_assert(!is_empty(C_)); + + if(is_empty(beta0_)){ + Base::setBeta0(DVector::Zero(m_.beta().size())); + } + + int p = C_.rows(); + + DVector result; // declare the vector that will store the p-values + + // compute Lambda + if(is_empty(Lambda_)){ + V(); + } + + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + + DMatrix eigenvalues = solver.eigenvalues(); + DMatrix eigenvectors = solver.eigenvectors(); + // Store beta_hat + DVector beta_hat = m_.beta(); + DVector beta_hat_mod = beta_hat; + + if(type == simultaneous){ + // SIMULTANEOUS + for(int i = 0; i < p; ++i){ + for(int j = 0; j < C_.cols(); j++){ + if(C_(i,j) > 0){ + beta_hat_mod[j] = beta0_[j]; + } + } + } + + // partial residuals + DMatrix X = m_.X(); + DMatrix res_H0 = m_.y() - X * beta_hat_mod; + // W^t * V * D + DMatrix Xt = (C_ * X.transpose()) * eigenvectors * eigenvalues.asDiagonal(); + DVector Tilder = eigenvectors.transpose() * res_H0; + + // Initialize observed statistic and sign-flipped statistic + DVector stat = Xt * Tilder; + DVector stat_flip = stat; + + //Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + + int up = 0; + int down = 0; + + DVector Tilder_perm = Tilder; + + for(int i = 0; i < n_flip; i++){ + for(int j = 0; j < Xt.cols(); ++j){ + int flip = 2 * distr(eng) - 1; + Tilder_perm(j) = Tilder(j) * flip; + } + stat_flip = Xt * Tilder_perm; // Flipped statistic + + if(is_Unilaterally_Greater(stat_flip, stat)){ + up = up + 1; + } + else{ + if(is_Unilaterally_Smaller(stat_flip, stat)){ + down = down + 1; + } + } + } + + double pval_up = static_cast(up) / n_flip; + double pval_down = static_cast(down) / n_flip; + + result.resize(p); + result(0) = 2 * std::min(pval_up, pval_down); + for(int k = 1; k < p; k++){ + result(k) = 0.0; + } + } + else{ + // ONE AT THE TIME + DMatrix res_H0(Lambda_.cols(), p); + DMatrix X = m_.X(); + for(int i = 0; i < p; ++i){ + + beta_hat_mod = beta_hat; + + for(int j = 0; j < C_.cols(); ++j){ + if(C_(i,j)>0){ + beta_hat_mod[j] = beta0_[j]; + } + } + // compute the partial residuals + res_H0.col(i) = m_.y() - X * beta_hat_mod; + } + // compute the vectors needed for the statistic + DMatrix Xt = (C_ * X.transpose()) * eigenvectors * eigenvalues.asDiagonal(); // W^t * V * D + DMatrix Tilder = eigenvectors.transpose() * res_H0; // V^t * partial_res_H0 + + // Observed statistic + DMatrix stat = Xt * Tilder; + DMatrix stat_flip = stat; + + // Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + DVector up = DVector::Zero(p); + DVector down = DVector::Zero(p); + + DMatrix Tilder_perm = Tilder; + + for(int i = 0; i < n_flip; ++i){ + for(int j = 0; j < Xt.cols(); ++j){ + int flip = 2 * distr(eng) - 1; + Tilder_perm.row(j) = Tilder.row(j) * flip; + } + stat_flip = Xt * Tilder_perm; // Flipped statistic + + for(int k = 0; k < p; ++k){ + if(stat_flip(k, k) > stat(k, k)){ + ++up(k); + }else{ + ++down(k); + } + } + } + + DVector pval_up = up.array() / static_cast(n_flip); + DVector pval_down = down.array() / static_cast(n_flip); + + result.resize(p); + result = 2 * min(pval_up, pval_down); // Obtain the bilateral p_value starting from the unilateral + } + return result; + } + + + // CI for beta + DMatrix computeCI(CIType type) override{ + if(is_empty(Lambda_)){ + V(); // compute Lambda + } + DVector beta_hat = m_.beta(); // store beta_hat + DVector beta_hat_mod = beta_hat; + + fdapde_assert(!is_empty(C_)); + int p = C_.rows(); + + DVector beta_in_test; + beta_in_test.resize(p); + for(int i=0; i0){ + beta_in_test[i]=j; + } + } + } + + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + DMatrix eigenvalues = solver.eigenvalues(); + DMatrix eigenvectors = solver.eigenvectors(); + + // declare the matrix that will store the intervals + DMatrix result; + result.resize(p, 2); + + // compute the initial ranges from speckman's CI (initial guess for CI) + if(!is_speckman_aux_computed){ + Compute_speckman_aux(); + } + + // this vector will store the tolerance for each interval upper/lower limit + DVector ESF_bisection_tolerances = 0.1*Speckman_aux_ranges; // 0.1 of the speckman CI as maximum tolerance + + + // define storage structures for bisection algorithms + DVector UU; // Upper limit for Upper bound + UU.resize(p); + DVector UL; // Lower limit for Upper bound + UL.resize(p); + DVector LU; // Upper limit for Lower bound + LU.resize(p); + DVector LL; // Lower limit for Lower bound + LL.resize(p); + + + + // ESF initialization with Speckman intervals as initial guess + for(int i = 0; i < p; ++i){ + double half_range = Speckman_aux_ranges(i); + + // compute the limits of the interval + result(i,0) = beta_hat(beta_in_test[i]) - half_range; + LU(i)=result(i,0)+0.5*half_range; + LL(i)=result(i,0)-0.5*half_range; + result(i,1) = beta_hat(beta_in_test[i]) + half_range; + UU(i)=result(i,1) +0.5*half_range; + UL(i)=result(i,1) -0.5*half_range; + } + + + // define booleans used to understand which CI need to be computed forward on + std::vector converged_up(p,false); + std::vector converged_low(p,false); + bool all_betas_converged=false; + + // matrix that stores p_values of the bounds at actual step + DMatrix local_p_values; + local_p_values.resize(4,p); + + // compute the vectors needed for the statistic + DMatrix TildeX = (C_ * m_.X().transpose()) * eigenvectors * eigenvalues.asDiagonal(); // W^t * V * D + DMatrix Tilder_star = eigenvectors.transpose(); // V^t + // Select eigenvalues that will not be flipped basing on the estimated bias carried + DVector Tilder_hat = eigenvectors.transpose()* (m_.y() - (m_.X())* beta_hat); // This vector represents Tilder using only beta_hat, needed for bias estimation + DVector Partial_res_H0_CI; + Partial_res_H0_CI.resize(Lambda_.cols()); + + + // fill the p_values matrix + for (int i=0; i TildeX_loc = TildeX.row(beta_in_test[i]); + beta_hat_mod = beta_hat; + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=UU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*UU[i](in test)) + local_p_values(0,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=UL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*UL[i](in test)) + local_p_values(1,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=LU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*LU[i](in test)) + local_p_values(2,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=LL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*LL[i](in test)) + local_p_values(3,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + } + + // extract the CI significance (1-confidence) + double alpha=0.05; + + if(type == one_at_the_time){ + alpha=0.5*alpha; + }else{ + alpha=0.5/p*alpha; + } + + int Max_Iter=50; + int Count_Iter=0; + while((!all_betas_converged) & (Count_Iter TildeX_loc= TildeX.row(beta_in_test[i]); + beta_hat_mod = beta_hat; + + if(!converged_up[i]){ + if(local_p_values(0,i)>alpha){ // Upper-Upper bound excessively tight + + UU(i)=UU(i)+0.5*(UU(i)-UL(i)); + + // compute the partial residuals + beta_hat_mod(beta_in_test[i])=UU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (z-W*beta_hat(non in test)-W*UU[i](in test)) + local_p_values(0,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + }else{ + + if(local_p_values(1,i)alpha){ // Lower-Lower bound excessively tight + LL(i)=LL(i)-0.5*(LU(i)-LL(i)); + + // compute the partial residuals + beta_hat_mod(beta_in_test[i])=LL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod);// (z-W*beta_hat(non in test)-W*LL[i](in test)) + local_p_values(3,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + }else{//both the Upper bounds are well defined + + if(LU(i)-LL(i) X = m_.X(); + DMatrix X_t = m_.X().transpose(); + // Decomposition of [W^t * Lambda^2 * W] + Eigen::PartialPivLU> XLX_dec; + XLX_dec.compute((X_t)*(Lambda_*Lambda_)*(X)); + + // get the residuals + DVector eps_hat = (m_.y() - m_.fitted()); + // build squared residuals + DVector Res2=eps_hat.array()*eps_hat.array(); + + // resize the variance-covariance matrix + int q = C_.cols(); + DMatrix V; + V.resize(q,q); + DMatrix diag = Res2.asDiagonal(); + + V = (XLX_dec).solve((X_t)*(Lambda_*Lambda_)*Res2.asDiagonal()*(Lambda_*Lambda_)*(X)*(XLX_dec).solve(DMatrix::Identity(q,q))); // V = [(W*Lambda2*W)^-1 * Res2 * (W*Lambda2*W)^-1] + + // Extract the quantile needed for the computation of upper and lower bounds + double quant = normal_standard_quantile(1 - alpha_/2); + + // extract matrix C + int p = C_.rows(); + Speckman_aux_ranges.resize(p); + + // for each row of C matrix + for(int i=0; i col = C_.row(i); + // compute the standard deviation of the linear combination and half range of the interval + double sd_comb = std::sqrt(col.adjoint()*V*col); + double half_range=sd_comb*quant; + // save the half range + Speckman_aux_ranges(i)=half_range; + } + + this->is_speckman_aux_computed = true; + + return; + } + + + double compute_CI_aux_beta_pvalue(const DVector & partial_res_H0_CI, const DMatrix & TildeX, const DMatrix & Tilder_star) const { + // declare the vector that will store the p-values + double result; + + // compute the vectors needed for the statistic + DVector Tilder = Tilder_star * partial_res_H0_CI; + + // Initialize observed statistic and sign_flipped statistic + DMatrix stat_temp = TildeX*Tilder; + double stat=stat_temp(0); + double stat_flip=stat; + + // Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + double count_Up = 0; // Counter for the number of flipped statistics that are larger the observed statistic + double count_Down = 0; // Counter for the number of flipped statistics that are smaller the observed statistic + + DVector Tilder_perm=Tilder; + + // get the number of flips + int nflip=n_flip; + + for(int i=0;i stat_flip_temp = TildeX*Tilder_perm; + stat_flip= stat_flip_temp(0);// Flipped statistic + if(stat_flip > stat){ ++count_Up;}else{ + if(stat_flip < stat){ ++count_Down;} + } + } + + double pval_Up = count_Up/n_flip; + double pval_Down = count_Down/n_flip; + + result = std::min(pval_Up, pval_Down); // select the correct unilateral p_value + + return result; + + }; + + + void Psi_p(){ + // case in which the locations are extracted from the observed ones + if(is_empty(locations_f_) && is_empty(mesh_nodes_)){ + Psi_p_ = m_.Psi(); + if(p_l_ == 0) + p_l_ = Psi_p_.rows(); + } + else if(is_empty(mesh_nodes_)){ + int m = locations_f_.size(); + SpMatrix Psi = m_.Psi().transpose(); + Psi_p_.resize(m, Psi.rows()); + for(int j = 0; j < m; ++j) { + int row = locations_f_[j]; + for(SpMatrix::InnerIterator it(Psi, row); it; ++it) { + Psi_p_.insert(j, it.row()) = it.value(); + } + } + Psi_p_.makeCompressed(); + } + else { + // opposite dimensions of the Psi in the other cases + int m = mesh_nodes_.size(); + SpMatrix Psi = m_.PsiESF().transpose(); + SpMatrix temp_psip; + temp_psip.resize(m, Psi.rows()); + for(int j = 0; j < m; ++j) { + int row = mesh_nodes_[j]; + for(SpMatrix::InnerIterator it(Psi, row); it; ++it) { + temp_psip.insert(j, it.row()) = it.value(); + } + } + Psi_p_ = temp_psip; + } + Psi_p_.makeCompressed(); + if(p_l_ == 0) + p_l_ = Psi_p_.rows(); + } + + DVector yp(){ + if(is_empty(locations_f_) && is_empty(mesh_nodes_)) + return m_.y(); + + else if (!is_empty(locations_f_)){ + int m = locations_f_.size(); + DVector y = m_.y(); + DVector yp; + yp.resize(m); + for(int j = 0; j < m; ++j) { + int row = locations_f_[j]; + yp.row(j) = y.row(row); + } + return yp; + } + else{ + int m = mesh_nodes_.size(); + DVector y = m_.y(); + DVector yp; + yp.resize(m); + for(int j = 0; j < m; ++j) { + int row = mesh_nodes_[j]; + yp.row(j) = y.row(row); + } + return yp; + } + } + + DMatrix Xp(){ + // case in which the locations are extracted from the observed ones + if(is_empty(locations_f_) && is_empty(mesh_nodes_)){ + return m_.X(); + } + if(!m_.has_covariates()) + return m_.X(); + if(!is_empty(locations_f_)){ + int m = locations_f_.size(); + DMatrix X = m_.X(); + DMatrix Xp; + Xp.resize(m, X.cols()); + for(int j = 0; j < m; ++j) { + int row = locations_f_[j]; + Xp.row(j) = X.row(row); + } + return Xp; + } + if(!is_empty(mesh_nodes_)){ + int m = mesh_nodes_.size(); + DMatrix X = m_.X(); + DMatrix Xp; + Xp.resize(m, X.cols()); + for(int j = 0; j < m; ++j) { + int row = mesh_nodes_[j]; + Xp.row(j) = X.row(row); + } + return Xp; + } + return m_.X(); + } + + DMatrix Wp(){ + // set it as a identity matrix + if(is_empty(Psi_p_)){ + Psi_p(); + } + DMatrix id = DMatrix::Identity(p_l_, p_l_); + return id; + } + + // computes matrix Q = W(I - X*(X^\top*W*X)^{-1}*X^\top*W) + void Qp() { + if (!m_.has_covariates()){ + Qp_ = Wp() * DMatrix::Identity(p_l_, p_l_); + } + else{ + DMatrix Xp_ = Xp(); // X^\top*W, q x p_l_ + DMatrix XpTXp = Xp_.transpose() * Xp_; + Qp_ = DMatrix::Identity(p_l_, p_l_) - Xp_ * XpTXp.ldlt().solve(Xp_.transpose()); + } + + } + + void Qp_dec(){ + // compute the Q only on the locations in which you want inference + if(is_empty(Qp_)) + Qp(); + // Q * (y - epislon) = Q * r + // Eigen decomposition + Eigen::SelfAdjointEigenSolver> Q_eigen(Qp_); + // matrix V is the matrix p_l_ x (p_l_-q) of the nonzero eigenvectors of Q + DMatrix Q_eigenvectors = Q_eigen.eigenvectors(); + if(m_.has_covariates()) + Qp_dec_ = Q_eigenvectors.rightCols(p_l_ - m_.X().cols()); + else + Qp_dec_ = Q_eigenvectors; + } + + + + double f_p_value(){ + if(is_empty(Psi_p_)) + Psi_p(); + if(is_empty(f0_)){ + Base::setf0(DVector::Zero(Psi_p_.rows())); + } + if(is_empty(Qp_dec_)) + Qp_dec(); + + // test statistic when Pi = Id + DVector VQr = Qp_dec_.transpose() * Qp_ * (yp() - f0_); + + DVector Ti = Psi_p_.transpose() * Qp_dec_ * VQr; + + // save the rank of Ti + double Ti_rank = Ti.array().square().sum(); + + // random sign-flips + // Bernoulli dist (-1, 1) with p = 0.5 + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + int count = 0; + DVector tp_vqr = VQr; + DVector Tp = Ti; + + for(int i = 0; i < n_flip; ++i){ + for(int j = 0; j < VQr.size(); ++j){ + int flip = 2 * distr(eng) - 1; + tp_vqr(j) = VQr(j) * flip; + } + Tp = Psi_p_.transpose() * Qp_dec_ * tp_vqr; + // flipped statistics + double Tp_rank = Tp.array().square().sum(); + if(Tp_rank >= Ti_rank){ + ++count; + } + } + double p_value = count/static_cast(n_flip); + return p_value; + } + + + double sign_flip_p_value(){ + if(is_empty(Psi_p_)) + Psi_p(); + if(is_empty(f0_)){ + Base::setf0(DVector::Zero(Psi_p_.rows())); + } + if(is_empty(Qp_)){ + Qp(); + } + // test statistic when Pi = Id + DVector VQr = Qp_ * (yp() - f0_); + + DVector Ti = Psi_p_.transpose() * VQr; + + // save the rank of Ti + double Ti_rank = Ti.array().square().sum(); + + // random sign-flips + // Bernoulli dist (-1, 1) with p = 0.5 + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + int count = 0; + DVector tp_vqr = VQr; + DVector Tp = Ti; + + for(int i = 0; i < n_flip; ++i){ + for(int j = 0; j < VQr.size(); ++j){ + int flip = 2 * distr(eng) - 1; + tp_vqr(j) = VQr(j) * flip; + } + Tp = Psi_p_.transpose() * tp_vqr; + // flipped statistics + double Tp_rank = Tp.array().square().sum(); + + if(Tp_rank >= Ti_rank){ + ++count; + } + } + double p_value = static_cast(count)/static_cast(n_flip); + + return p_value; + } + + + double f_CI_p_val(const DVector res, const int curr_index){ + if(is_empty(Qp_dec_)) + Qp_dec(); + + DVector Vres = Qp_dec_.transpose() * res; + + DVector Ti = Psi_p_.transpose() * Qp_dec_ * Vres; + + // random sign-flips + // Bernoulli dist (-1, 1) with p = 0.5 + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + int up = 0; + int down = 0; + DVector Tp = Ti; + DVector perm_res = Vres; + + for(int i = 0; i < n_flip; ++i){ + for(int j = 0; j < Vres.size(); ++j){ + int flip = 2 * distr(eng) - 1; + perm_res(j) = Vres(j) * flip; + } + Tp = Psi_p_.transpose() * Qp_dec_ * perm_res; + + if(Tp(curr_index) > Ti(curr_index)){ + ++up; + } + else if (Tp(curr_index) < Ti(curr_index)){ + ++down; + } + } + + return std::min(up, down); + + } + + + + DVector Wald_range(){ + // create Wald object + Wald Wald_(m_); + + DMatrix id = DMatrix::Identity(m_.Psi().cols(), m_.Psi().cols()); + + DMatrix Wald_CI = Wald_.f_CI(); + int size = Wald_CI.rows(); + DVector ranges {}; + ranges.resize(size); + + for(int i = 0; i < size; ++i){ + ranges(i) = 0.5 * (Wald_CI(i, 1) - Wald_CI(i, 0)); + } + + return ranges; + } + + DMatrix f_CI(){ + // only if the locations are a subset of the mesh + // compute the Q only on the locations in which you want inference + if(is_empty(Qp_)) + Qp(); + + DVector fp = Psi_p_ * m_.f(); + int nloc = fp.size(); + + DMatrix CI; + CI.resize(nloc, 2); + + DVector Wald_ranges_ = Wald_range(); + + // bisection tolerance + DVector bis_tol = 0.2 * Wald_ranges_; + + DVector UU; // Upper limit for Upper bound + UU.resize(nloc); + DVector UL; // Lower limit for Upper bound + UL.resize(nloc); + DVector LU; // Upper limit for Lower bound + LU.resize(nloc); + DVector LL; // Lower limit for Lower bound + LL.resize(nloc); + + // initialize the intervals with a Wald estimate + for(int i = 0; i < nloc; ++i){ + double range = Wald_ranges_(i); + CI(i, 0) = fp(i) - range; + CI(i, 1) = fp(i) + range; + UU(i) = CI(i, 1) + 0.5 * range; + UL(i) = CI(i, 1) - 0.5 * range; + LU(i) = CI(i, 0) + 0.5 * range; + LL(i) = CI(i, 0) - 0.5 * range; + } + + // vector of booleans to check which inetrvals have converged + std::vector converged_up(nloc, false); + std::vector converged_low(nloc, false); + bool converged = false; + + // we need p-values ofr UU, UL, LU, LL + DMatrix p_values(4, nloc); + // need this to compute the p-values + DVector res(nloc); + + // for getting the current index + if(is_empty(locations_f_)){ + locations_f_ = DVector::LinSpaced(nloc, 0, nloc-1); + } + + for(int i = 0; i < nloc; ++i){ + DVector fp_UU = fp; + DVector fp_UL = fp; + DVector fp_LU = fp; + DVector fp_LL = fp; + + res = Qp_ * (yp() - fp_UU); + p_values(0,i) = f_CI_p_val(res, locations_f_[i]); + res = Qp_ * (yp() - fp_UL); + p_values(1,i) = f_CI_p_val(res, locations_f_[i]); + res = Qp_ * (yp() - fp_LU); + p_values(2,i) = f_CI_p_val(res, locations_f_[i]); + res = Qp_ * (yp() - fp_LL); + p_values(3,i) = f_CI_p_val(res, locations_f_[i]); + + } + // one at the time confidence intervals + int max_it = 5; + int count = 0; + double ppval = 0; + + while(!converged && count < max_it){ + + // compute p-values needed + for(int i = 0; i < nloc; ++i){ + DVector fp_UU = fp; + DVector fp_UL = fp; + DVector fp_LU = fp; + DVector fp_LL = fp; + + if(!converged_up[i]){ + // check upper upper + if(p_values(0, i) > 0.5 * alpha_f_){ + UU(i) = UU(i) + 0.5 * (UU(i) - UL(i)); + res = Qp_ * (yp() - fp_UU); + p_values(0,i) = f_CI_p_val(res, locations_f_[i]); + } + else if(p_values(1, i) < 0.5 * alpha_f_){ + UL(i) = fp(i) + 0.5 * (UL(i) - fp(i)); + res = Qp_ * (yp() - fp_UL); + p_values(1,i) = f_CI_p_val(res, locations_f_[i]); + } + else{ + if((UU(i) - UL(i)) < bis_tol(i)){ + converged_up[i] = true; + } + else{ + double proposal = 0.5 * (UU(i) + UL(i)); + DVector fpp = fp; + res = Qp_ * (yp() - fpp); + ppval = f_CI_p_val(res, locations_f_[i]); + if(ppval <= 0.5 * alpha_f_){ + UU(i) = proposal; + p_values(0, i) = ppval; + } + else{ + UL(i) = proposal; + p_values(1, i) = ppval; + } + } + } + } // end if + + if(!converged_low[i]){ + // check lower upper + if(p_values(2, i) < 0.5 * alpha_f_){ + LU(i) = fp(i) - 0.5 * (fp(i) - LU(i)); + res = Qp_ * (yp() - fp_LU); + p_values(2,i) = f_CI_p_val(res, locations_f_[i]); + } + else if(p_values(3, i) > 0.5 * alpha_f_){ + LL(i) = LL(i) + 0.5 * (LU(i) - LL(i)); + res = Qp_ * (yp() - fp_LL); + p_values(3,i) = f_CI_p_val(res, locations_f_[i]); + } + else{ + if((LU(i) - LL(i)) < bis_tol(i)){ + converged_low[i] = true; + } + else{ + double proposal = 0.5 * (LU(i) + LL(i)); + DVector fpp = fp; + res = Qp_ * (yp() - fpp); + ppval = f_CI_p_val(res, locations_f_[i]); + if(ppval <= 0.5 * alpha_f_){ + LL(i) = proposal; + p_values(3, i) = ppval; + } + else{ + LU(i) = proposal; + p_values(2, i) = ppval; + } + } + } + + } // end if + } // for end + + converged = true; + + for(int j = 0; j < nloc; ++j){ + if(!converged_up[j] || !converged_low[j]){ + converged = false; + } + } + + count++; + + } + if(!converged){ + std::cout << "Not all ESF CI converged" << std::endl; + } + + for(int k = 0; k < nloc; ++k){ + if(!converged_up[k] || !converged_low[k]){ + // set a unfeasible number if the interval has not converged + CI(k, 0) = 10e20; + CI(k, 1) = 10e20; + } + else{ + CI(k, 0) = 0.5 * (LU(k) + LL(k)); + CI(k, 1) = 0.5 * (UU(k) + UL(k)); + } + } + + return CI; + } + + void V() override{ + Lambda_ = DMatrix::Identity(m_.n_obs(), m_.n_obs()) - m_.Psi() * s_.compute(m_) * m_.PsiTD(); + } + + inline bool is_Unilaterally_Greater (DVector v, DVector u){ + int q = v.size(); + for (int i = 0; i < q; ++i){ + if(v(i) <= u(i)){ + return false; + } + } + return true; + } + + inline bool is_Unilaterally_Smaller (DVector v, DVector u){ + int q = v.size(); + for (int i = 0; i < q; ++i){ + if(v(i) >= u(i)){ + return false; + } + } + return true; + } + + inline DVector min(const DVector & v, const DVector & u){ + DVector result; + result.resize(v.size()); + for(int i = 0; i < v.size(); ++i){ + result(i) = std::min(v(i), u(i)); + } + return result; + } + + void setNflip(int m){ + n_flip = m; + } + + void setseed(int k){ + set_seed=k; + } + + void setMesh_loc(DVector m_nodes){ + mesh_nodes_ = m_nodes; + } + +}; + +} // namespace models +} // namespace fdapde + +#endif // __ESF_H__ diff --git a/fdaPDE/models/regression/gcv.h b/fdaPDE/models/regression/gcv.h index da66566a..26d6c038 100644 --- a/fdaPDE/models/regression/gcv.h +++ b/fdaPDE/models/regression/gcv.h @@ -39,27 +39,26 @@ class GCV { using This = GCV; using VectorType = DVector; using MatrixType = DMatrix; - // type-erased wrapper for Tr[S] computation strategies + // type-erased wrapper for Tr[S] computation strategy struct EDFStrategy__ { template using fn_ptrs = fdapde::mem_fn_ptrs<&M::compute, &M::set_model>; // forwardings decltype(auto) compute() { return fdapde::invoke(*this); } void set_model(const RegressionView& model) { fdapde::invoke(*this, model); } }; - using EDFStrategy = fdapde::erase; RegressionView model_; - EDFStrategy trS_; // strategy used to evaluate the trace of smoothing matrix S - std::vector edfs_; // equivalent degrees of freedom q + Tr[S] - std::vector gcvs_; // computed values of GCV index + erase trS_; // strategy used to evaluate the trace of smoothing matrix S + std::vector edfs_; // equivalent degrees of freedom q + Tr[S] + std::vector gcvs_; // computed values of GCV index // cache pairs (lambda, Tr[S]) for fast access if GCV is queried at an already computed point - std::map> cache_; + std::map> cache_; // analytical expression of gcv at \lambda // // edf = n - (q + Tr[S]) // GCV(\lambda) = n/(edf^2)*norm(y - \hat y)^2 - ScalarField gcv_; + ScalarField gcv_; double gcv_impl(const VectorType& lambda) { // fit the model given current lambda model_.set_lambda(lambda); @@ -78,7 +77,8 @@ class GCV { return gcv_value; } public: - static constexpr int DomainDimension = fdapde::Dynamic; + static constexpr int DomainDimension = fdapde::core::Dynamic; + using EDFStrategy = erase; // constructors template GCV(const ModelType_& model, EDFStrategy_&& trS) : model_(model), trS_(trS), gcv_(this, &This::gcv_impl) { @@ -95,7 +95,7 @@ class GCV { GCV& operator=(const GCV& other) { model_ = other.model_; trS_ = other.trS_; - gcv_ = ScalarField(this, &This::gcv_impl); + gcv_ = ScalarField(this, &This::gcv_impl); return *this; } diff --git a/fdaPDE/models/regression/inference.h b/fdaPDE/models/regression/inference.h new file mode 100644 index 00000000..5d34160c --- /dev/null +++ b/fdaPDE/models/regression/inference.h @@ -0,0 +1,131 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __INFERENCE_H__ +#define __INFERENCE_H__ + +#include +#include +#include + + + +#include +#include + +namespace fdapde { +namespace models { + + // oggetti comuni a Wald e Speckman + struct exact {}; + struct nonexact {}; + enum CIType {bonferroni,simultaneous,one_at_the_time}; + + + // P-VALUES + + double gamma(double x) { + if (x <= 0) { // value not valid + return 0; + } + if (x == 1) { + return 1; // Caso base: gamma(1) = 1 + } + if (x > 1) { + + double logGamma = 0.5 * log(2 * M_PI * x) + (x - 0.5) * log(x) - x + 1.0 / (12 * x); + return exp(logGamma); + } else { + // Formula di riflessione di Euler + return M_PI / (sin(M_PI * x) * gamma(1 - x)); + } + } + + double integrand(double t, double a) { + return pow(t, a - 1) * exp(-t); + } + + double gamma_incompleta(double a, double x, int numIntervals = 1000) { + double sum = 0.0; + double intervalWidth = x / numIntervals; + + for (int i = 0; i < numIntervals; ++i) { + double left = i * intervalWidth; + double right = (i + 1) * intervalWidth; + sum += (integrand(right, a) + integrand(left, a)) / 2.0 * (right - left); + } + + return sum; + } + + double chi_squared_cdf(double chiSquaredStat, int degreesOfFreedom) { + + double pValue = gamma_incompleta(degreesOfFreedom/2.0,chiSquaredStat/2.0)/gamma(degreesOfFreedom / 2.0); + + return pValue; + } + + double gaussian_cdf(double x, double mean, double stddev) { + return 0.5 * (1 + std::erf((x - mean) / (stddev * std::sqrt(2)))); + } + + + double inverseChiSquaredCDF(double alpha, int degreesOfFreedom, double tolerance = 1e-6) { + double low = 0.0; + double high = 1000.0; + + while (high - low > tolerance) { + double mid = (low + high) / 2.0; + double pValue = chi_squared_cdf(mid, degreesOfFreedom); + + if (pValue < alpha) { + low = mid; + } else { + high = mid; + } + } + + return (low + high) / 2.0; + } + + double inverse_erf(double x) { + const double epsilon = 1e-10; + double y = 0.0; + double delta; + do { + delta = (std::erf(y) - x) / (2.0 / std::sqrt(M_PI) * std::exp(-y * y)); + y -= delta; + } while (std::fabs(delta) > epsilon); + return y; + } + + + double normal_standard_quantile(double percentile) { + return std::sqrt(2.0) * inverse_erf(2.0 * percentile - 1.0); + } + + + // function that returns the exact inverse of a matrix + DMatrix inverse(DMatrix M){ + Eigen::PartialPivLU> Mdec_ (M); + return Mdec_.solve(DMatrix::Identity(M.rows(), M.cols())); + } + + +} // closing models namespace +} // closing fdapde namespace + +#endif // __INFERENCE_H__ \ No newline at end of file diff --git a/fdaPDE/models/regression/inference_base.h b/fdaPDE/models/regression/inference_base.h new file mode 100644 index 00000000..30fdc34e --- /dev/null +++ b/fdaPDE/models/regression/inference_base.h @@ -0,0 +1,297 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __INFERENCE_BASE_H__ +#define __INFERENCE_BASE_H__ + +#include +#include +using fdapde::core::FSPAI; +using fdapde::core::lump; +using fdapde::core::is_empty; +#include "../model_macros.h" +#include "../model_traits.h" +#include "../model_base.h" +#include "srpde.h" +#include "strpde.h" +#include "exact_edf.h" +#include "stochastic_edf.h" +#include "inference.h" + +#include +#include + +//serve per salvare le matrici +#include +#include + + + +namespace fdapde { +namespace models { + +template class InferenceBase{ + + protected: + + Model m_; + DMatrix V_ {}; + DMatrix C_ {}; // inference matrix C (p x q) matrix + DVector beta_ {}; // sol of srpde ( q x 1 ) matrix + DVector beta0_ {}; // inference hypothesis H0 (p x 1) matrix + DVector f0_ {}; // inference hypothesis H0 + double alpha_ = 0; // level of the confidence intervals for beta + double alpha_f_ = 0.05; // level of confidence intervals for f + DVector locations_f_ {}; // indexes of the subset of locations if locations are exctracted from existing ones + + + public: + + InferenceBase() = default; // deafult constructor + InferenceBase(const Model& m): m_(m) {}; // constructor + + virtual void beta() {}; + + virtual void V() = 0; + + virtual DMatrix computeCI(CIType type){ + + fdapde_assert(!is_empty(C_)); + + if(alpha_ == 0.0) { + setAlpha(0.05); // default value 5% + } + if(is_empty(V_)){ + V(); + } + if(is_empty(beta_)){ + beta(); + } + + int p = C_.rows(); + int size = std::min(C_.rows(), V_.rows()); + DVector diagon(size); + for (int i = 0; i < C_.rows(); ++i) { + DVector ci = C_.row(i); + diagon[i] = ci.transpose() * V_ * ci; + } + + DVector lowerBound(size); + DVector upperBound(size); + + if(type == simultaneous){ + // SIMULTANEOUS + double quantile = inverseChiSquaredCDF(1 - alpha_, p); + lowerBound = (C_ * beta_).array() - (quantile * diagon.array()).sqrt(); + upperBound = (C_ * beta_).array() + (quantile * diagon.array()).sqrt(); + } + else if (type == bonferroni){ + // BONFERRONI + double quantile = normal_standard_quantile(1 - alpha_/(2 * p)); + lowerBound = (C_ * beta_).array() - quantile * (diagon.array()).sqrt(); + upperBound = (C_ * beta_).array() + quantile * (diagon.array()).sqrt(); + } + else if (type == one_at_the_time){ + // ONE AT THE TIME + double quantile = normal_standard_quantile(1 - alpha_/2); + lowerBound = (C_ * beta_).array() - quantile * (diagon.array()).sqrt(); + upperBound = (C_ * beta_).array() + quantile * (diagon.array()).sqrt(); + } + else{ + // inserire errore: nome intervallo non valido + return DMatrix::Zero(1, 1); + } + + DMatrix CIMatrix(p, 2); //matrix of confidence intervals + CIMatrix.col(0) = lowerBound; + CIMatrix.col(1) = upperBound; + return CIMatrix; + } + + virtual DVector p_value(CIType type){ + + fdapde_assert(!is_empty(C_)); + if(is_empty(beta0_)){ + if(is_empty(beta_)){ + beta(); + } + setBeta0(DVector::Zero(beta_.size())); + } + if(is_empty(beta_)){ + beta(); + } + if(is_empty(V_)){ + V(); + } + int p = C_.rows(); + DVector statistics(p); + if(type == simultaneous){ + // SIMULTANEOUS + DVector diff = C_ * beta_ - beta0_; + DMatrix Sigma = C_ * V_ * C_.transpose(); + DMatrix Sigmadec_ = inverse(Sigma); + double stat = diff.adjoint() * Sigmadec_ * diff; + statistics.resize(p); + double pvalue = chi_squared_cdf(stat, p); + if(pvalue < 0){ + statistics(0) = 1; + } + if(pvalue > 1){ + statistics(0) = 0; + } + else{ + statistics(0) = 1 - pvalue; + } + for(int i = 1; i < C_.rows(); i++){ + statistics(i) = 10e20; + } + return statistics; + } + + else if (type == one_at_the_time){ + // ONE AT THE TIME + int p = C_.rows(); + statistics.resize(p); + for(int i = 0; i < p; i++){ + DVector col = C_.row(i); + double diff = col.adjoint() * beta_ - beta0_[i]; + double sigma = col.adjoint() * V_ *col; + double stat = diff/std::sqrt(sigma); + double pvalue = 2 * gaussian_cdf(-std::abs(stat), 0, 1); + if(pvalue < 0){ + statistics(i) = 0; + } + if(pvalue > 1){ + statistics(i) = 1; + } + else{ + statistics(i) = pvalue; + } + } + return statistics; + } + else{ + //inserire messaggio di errore + return DVector::Zero(1); + } + } + + // return the sparse approx of E^{-1} + static SpMatrix invE_approx(const Model& m){ + /* SpMatrix decR0_ = lump(m.R0()); + DiagMatrix invR0_(decR0_.rows()); + invR0_.setZero(); + for (int i = 0; i < decR0_.rows(); ++i) { + double diagElement = decR0_.diagonal()[i]; + invR0_.diagonal()[i] = 1.0 / diagElement; + }*/ + //DMatrix Et_ = m.PsiTD()* m.Psi()+ m.lambda_D() * m.R1().transpose() * invR0_ * m.R1(); + + //applico FSPAI su Atilde + int alpha = 10; // Numero di aggiornamenti del pattern di sparsità per ogni colonna di A (perform alpha steps of approximate inverse update along column k) + int beta = 10; // Numero di indici da aggiungere al pattern di sparsità di Lk per ogni passo di aggiornamento + double epsilon = 0.005; // Soglia di tolleranza per l'aggiornamento del pattern di sparsità (the best improvement is higher than accetable treshold) + //questi sono quelli trovati nella libreria vecchia + //std::string tol_Inverse = "0.005"; oppure 0.05 // Controls the quality of approximation, default 0.005 + //std::string max_Step_Col = "20"; oppure 10 // Max number of improvement steps per columns + // std::string max_New_Nz = "20"; oppure 10 // Max number of new nonzero candidates per step + //Et_ should be stored as a sparse matrix + + // questo serve se voglio invertire R0 cojn fspai + FSPAI fspai_R0(m.R0()); + fspai_R0.compute(m.R0(),alpha, beta, epsilon); + SpMatrix invR0_ = fspai_R0.inverse(); + + DMatrix Et_ = m.PsiTD()* m.Psi()+ m.lambda_D() * m.R1().transpose() * invR0_ * m.R1(); + + + + SpMatrix Et_sparse = Et_.sparseView(); + + //Eigen::saveMarket(Et_sparse, "Edainvertire.mtx"); + FSPAI fspai_E(Et_sparse); + fspai_E.compute(Et_sparse,alpha, beta, epsilon); + SpMatrix invE_ = fspai_E.inverse(); + //Eigen::saveMarket(invE_, "inversaE2.mtx"); + //SpMatrix precondE= fspai_E.getL(); + //Eigen::saveMarket(precondE, "precondE.mtx"); + + /* + //CALCOLO DELL'INVERSA PER CONFRONTI CON LIBRERIA ORIGINALE DI FSPAI + //SpMatrix Edainvertire; + //Eigen::loadMarket(Edainvertire, "Edainvertire.mtx"); + //std::cout<<"righe di Edainveritre: "< precond_nostro = fspai_Edainvertire.getL(); + Eigen::saveMarket(precond_nostro, "precond_nostro.mtx"); +*/ + + + + + //SpMatrix risultatoFSPAI; + //Eigen::loadMarket(risultatoFSPAI, "risultatoFSPAI.mtx"); + //std::cout<<"righe di fspai"<& C) { + C_ = C; + } + + // setter for alpha + void setAlpha(double alpha){ + fdapde_assert(0 <= alpha && alpha <= 1); // throw an exception if condition is not met + if( 0 <= alpha && alpha <= 1) { + alpha_ = alpha; + } + } + + // setter for alpha f + void setAlpha_f(double alpha){ + fdapde_assert(0 <= alpha&& alpha <= 1); // throw an exception if condition is not met + if( 0 <= alpha && alpha <= 1) { + alpha_f_ = alpha; + } + } + + // setter for beta0_ + void setBeta0(DVector beta0){ + beta0_ = beta0; + } + + // setter for f0_ + void setf0(DVector f0){ + f0_ = f0; + } + + void setLocationsF(DVector locs){ + locations_f_ = locs; + } + + +}; + +} // namespace models +} // namespace fdapde + +#endif // __INFERENCE_BASE_H__ \ No newline at end of file diff --git a/fdaPDE/models/regression/pesf.h b/fdaPDE/models/regression/pesf.h new file mode 100644 index 00000000..438d988c --- /dev/null +++ b/fdaPDE/models/regression/pesf.h @@ -0,0 +1,688 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __PESF_H__ +#define __PESF_H__ + +// questi sono da controllare +#include +#include + +#include "../model_macros.h" +#include "../model_traits.h" +#include "../model_base.h" +#include "srpde.h" +#include "strpde.h" +#include "exact_edf.h" +#include "stochastic_edf.h" +#include "inference_base.h" +#include "inference.h" + +#include + +// for parallelization +#include + + +namespace fdapde { +namespace models { + +template class PESF: public InferenceBase{ + + private: + struct ExactInverse{ + DMatrix compute(Model m){ + return inverse(m.E()); + } + }; + + struct NonExactInverse{ + SpMatrix compute(Model m){ + return Base::invE_approx(m); + } + }; + + int n_flip = 1000; //default value + int set_seed=0; + + DMatrix Lambda_ {}; + + // variabili aggiunte per confidence intervals + bool is_speckman_aux_computed = false; + DVector Speckman_aux_ranges; //Speckman auxiliary CI ranges needed for CI method initialization (for beta) + // vairabili aggiunte per inferenza su f + DMatrix Qp_ {}; + int p_l_ = 0; // number of locations for inference on f + SpMatrix Psi_p_ {}; // Psi only in the locations for inference + DMatrix Qp_dec_ {}; // Decomposition of Qp matrix + DVector mesh_nodes_ {}; // if inference is performed on a subset of mesh nodes + + + public: + using Base = InferenceBase; + using Base::m_; + using Base::beta_; + using Base::f0_; + using Base::C_; + using Base::locations_f_; + using Base::alpha_f_; + using Base::beta0_; + using Solver = typename std::conditional::value, ExactInverse, NonExactInverse>::type; + Solver s_; + // aggiunta per CI + using Base::V_; + + // constructors + PESF() = default; // deafult constructor + PESF(const Model& m): Base(m) {}; // constructor + + + + DVector p_value_serial(CIType type){ + // extract matrix C (in the eigen-sign-flip case we cannot have linear combinations, but we can have at most one 1 for each column of C) + fdapde_assert(!is_empty(C_)); // throw an exception if condition is not met + + if(is_empty(beta0_)){ + Base::setBeta0(DVector::Zero(m_.beta().size())); + } + + int p = C_.rows(); + + DVector result; // declare the vector that will store the p-values + + // compute Lambda + if(is_empty(Lambda_)){ + V(); + } + + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + + DMatrix eigenvalues = solver.eigenvalues(); + DMatrix eigenvectors = solver.eigenvectors(); + + // Store beta_hat + DVector beta_hat = m_.beta(); + DVector beta_hat_mod = beta_hat; + + if(type == simultaneous){ + // SIMULTANEOUS + // extract the current betas in test + for(int i = 0; i < p; ++i){ + for(int j = 0; j < C_.cols(); j++){ + if(C_(i,j) > 0){ + beta_hat_mod[j] = beta0_[j]; + } + } + } + + // partial residuals + DMatrix res_H0 = m_.y() - m_.X() * beta_hat_mod; + // W^t * V * D + DMatrix Xt = (C_ * m_.X().transpose()) * eigenvectors * eigenvalues.asDiagonal(); + DVector Tilder = eigenvectors.transpose() * res_H0; + int n_obs=m_.n_obs(); + + DVector Tilder_hat= eigenvectors.transpose()*(m_.y() - m_.X()* beta_hat); + + // Estimate the standard error + DVector eps_hat = m_.y() - m_.fitted(); + double SS_res = eps_hat.squaredNorm(); + double Sigma_hat = std::sqrt(SS_res/(n_obs-1)); + + double threshold = 10*Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error + int N_Eig_Out=0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required + + // Initialize observed statistic and sign-flipped statistic + DVector stat = Xt * Tilder; + DVector stat_flip = stat; + + //Random sign-flips + //Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + int up = 0; + int down = 0; + + DVector Tilder_perm = Tilder; + + for(int i = 0; i < n_flip; ++i){ + N_Eig_Out=0; + for(int j = 0; j < Xt.cols(); ++j){ + int flip; + if((N_Eig_Outthreshold)){ + flip=1; + }else{ + flip=2 * distr(eng) - 1; + } + Tilder_perm.row(j) = Tilder.row(j) * flip; + } + stat_flip = Xt * Tilder_perm; // Flipped statistic + //std::cout<<"questo è stat flip: "<(up) / n_flip; + double pval_down = static_cast(down) / n_flip; + //std::cout<<"il valore di pvalup è : "< res_H0(Lambda_.cols(), p); + for(int i = 0; i < p; ++i){ + // Extract the current beta in test + beta_hat_mod = beta_hat; + + for(int j = 0; j < C_.cols(); ++j){ + if(C_(i,j)>0){ + beta_hat_mod[j] = beta0_[j]; + } + } + // compute the partial residuals + res_H0.col(i) = m_.y() - m_.X()* beta_hat_mod; + } + // compute the vectors needed for the statistic + DMatrix Xt = (C_ * m_.X().transpose()) * eigenvectors * eigenvalues.asDiagonal(); // W^t * V * D + DMatrix Tilder = eigenvectors.transpose() * res_H0; // V^t * partial_res_H0 + + int n_obs=m_.n_obs(); + + DVector Tilder_hat= eigenvectors.transpose()*(m_.y() - m_.X()* beta_hat); + + // Estimate the standard error + DVector eps_hat = m_.y() - m_.fitted(); + double SS_res = eps_hat.squaredNorm(); + double Sigma_hat = std::sqrt(SS_res/(n_obs-1)); + + double threshold = 10*Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error + int N_Eig_Out=0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required + + + // Observed statistic + DMatrix stat = Xt * Tilder; + DMatrix stat_flip = stat; + + // Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + DVector up = DVector::Zero(p); + DVector down = DVector::Zero(p); + + DMatrix Tilder_perm = Tilder; + + for(int i = 0; i < n_flip; ++i){ + N_Eig_Out=0; + for(int j = 0; j < Xt.cols(); ++j){ + int flip; + if((N_Eig_Outthreshold)){ + flip=1; + }else{ + flip=2 * distr(eng) - 1; + } + Tilder_perm.row(j) = Tilder.row(j) * flip; + } + stat_flip = Xt * Tilder_perm; // Flipped statistic + + for(int k = 0; k < p; ++k){ + if(stat_flip(k, k) > stat(k, k)){ + ++up(k); + }else{ + ++down(k); + } + } + } + + DVector pval_up = up.array() / static_cast(n_flip); + DVector pval_down = down.array() / static_cast(n_flip); + + //std::cout<<"il valore di pvalup è : "< computeCI(CIType type){ + // compute Lambda + if(is_empty(Lambda_)){ + V(); + } + + // Store beta_hat + DVector beta_hat = m_.beta(); + DVector beta_hat_mod = beta_hat; + + fdapde_assert(!is_empty(C_)); // throw an exception if condition is not met + int p = C_.rows(); + + DVector beta_in_test; // In this vector are stored the respective positions of the beta we are testing in the actual test (ie le posizioni dei beta che vengono testate perchè in C abbiamo un 1 nella corrispondente posizione) + beta_in_test.resize(p); + for(int i=0; i0){ + beta_in_test[i]=j; + } + } + } + + // compute eigenvectors and eigenvalues of Lambda + Eigen::SelfAdjointEigenSolver> solver(Lambda_); + + DMatrix eigenvalues = solver.eigenvalues(); + DMatrix eigenvectors = solver.eigenvectors(); + // declare the matrix that will store the intervals + DMatrix result; + result.resize(p, 2); + + // compute the initial ranges from speckman's CI (initial guess for CI) + if(!is_speckman_aux_computed){ + Compute_speckman_aux(); + } + + // this vector will store the tolerance for each interval upper/lower limit + DVector ESF_bisection_tolerances = 0.1*Speckman_aux_ranges; // 0.1 of the speckman CI as maximum tolerance + + + // define storage structures for bisection algorithms + DVector UU; // Upper limit for Upper bound + UU.resize(p); + DVector UL; // Lower limit for Upper bound + UL.resize(p); + DVector LU; // Upper limit for Lower bound + LU.resize(p); + DVector LL; // Lower limit for Lower bound + LL.resize(p); + + // ESF initialization with Speckman intervals as initial guess + for(int i = 0; i < p; ++i){ + double half_range = Speckman_aux_ranges(i); + + // compute the limits of the interval + result(i,0) = beta_hat(beta_in_test[i]) - half_range; + LU(i)=result(i,0)+0.5*half_range; + LL(i)=result(i,0)-0.5*half_range; + result(i,1) = beta_hat(beta_in_test[i]) + half_range; + UU(i)=result(i,1) +0.5*half_range; + UL(i)=result(i,1) -0.5*half_range; + } + + // define booleans used to understand which CI need to be computed forward on + std::vector converged_up(p,false); + std::vector converged_low(p,false); + bool all_betas_converged=false; + + // matrix that stores p_values of the bounds at actual step + DMatrix local_p_values; + local_p_values.resize(4,p); + + // compute the vectors needed for the statistic + DMatrix TildeX = (C_ * m_.X().transpose()) * eigenvectors * eigenvalues.asDiagonal(); // W^t * V * D + DMatrix Tilder_star = eigenvectors.transpose(); + // Select eigenvalues that will not be flipped basing on the estimated bias carried + DVector Tilder_hat = eigenvectors.transpose()* (m_.y() - (m_.X())* beta_hat); // This vector represents Tilder using only beta_hat, needed for bias estimation + DVector Partial_res_H0_CI; + Partial_res_H0_CI.resize(Lambda_.cols()); + + // fill the p_values matrix + for (int i=0; i TildeX_loc = TildeX.row(beta_in_test[i]); + beta_hat_mod = beta_hat; + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=UU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*UU[i](in test)) + local_p_values(0,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=UL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*UL[i](in test)) + local_p_values(1,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=LU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*LU[i](in test)) + local_p_values(2,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + // compute the partial residuals and p value + beta_hat_mod(beta_in_test[i])=LL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (y-W*beta_hat(non in test)-W*LL[i](in test)) + local_p_values(3,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + } + + // extract the CI significance (1-confidence) + double alpha = 0.05; + + if(type == one_at_the_time){ + alpha = 0.5 * alpha; + }else{ + alpha = 0.5/p * alpha; + } + + int Max_Iter=50; + int Count_Iter=0; + while((!all_betas_converged) & (Count_Iter TildeX_loc= TildeX.row(beta_in_test[i]); + beta_hat_mod = beta_hat; + + if(!converged_up[i]){ + if(local_p_values(0,i)>alpha){ // Upper-Upper bound excessively tight + + UU(i)=UU(i)+0.5*(UU(i)-UL(i)); + + // compute the partial residuals + beta_hat_mod(beta_in_test[i])=UU(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod); // (z-W*beta_hat(non in test)-W*UU[i](in test)) + local_p_values(0,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + }else{ + + if(local_p_values(1,i)alpha){ // Lower-Lower bound excessively tight + LL(i)=LL(i)-0.5*(LU(i)-LL(i)); + + // compute the partial residuals + beta_hat_mod(beta_in_test[i])=LL(i); // beta_hat_mod(i) = beta_hat(i) if i not in test; beta_HP otherwise + Partial_res_H0_CI = m_.y() - (m_.X()) * (beta_hat_mod);// (z-W*beta_hat(non in test)-W*LL[i](in test)) + local_p_values(3,i)=compute_CI_aux_beta_pvalue(Partial_res_H0_CI, TildeX_loc, Tilder_star); + + }else{//both the Upper bounds are well defined + + if(LU(i)-LL(i) X = m_.X(); + DMatrix X_t = m_.X().transpose(); + // Decomposition of [W^t * Lambda^2 * W] + Eigen::PartialPivLU> XLX_dec; + XLX_dec.compute((X_t)*(Lambda_*Lambda_)*(X)); + + // get the residuals + DVector eps_hat = (m_.y() - m_.fitted()); + // build squared residuals + DVector Res2=eps_hat.array()*eps_hat.array(); + + // resize the variance-covariance matrix + int q = C_.cols(); + DMatrix V; + V.resize(q,q); + DMatrix diag = Res2.asDiagonal(); + + V = (XLX_dec).solve((X_t)*(Lambda_*Lambda_)*Res2.asDiagonal()*(Lambda_*Lambda_)*(X)*(XLX_dec).solve(DMatrix::Identity(q,q))); // V = [(W*Lambda2*W)^-1 * Res2 * (W*Lambda2*W)^-1] + + // Extract the quantile needed for the computation of upper and lower bounds + double quant = normal_standard_quantile(1 - alpha_/2); + + // extract matrix C + int p = C_.rows(); + Speckman_aux_ranges.resize(p); + + // for each row of C matrix + for(int i=0; i col = C_.row(i); + // compute the standard deviation of the linear combination and half range of the interval + double sd_comb = std::sqrt(col.adjoint()*V*col); + double half_range=sd_comb*quant; + // save the half range + Speckman_aux_ranges(i)=half_range; + } + + this->is_speckman_aux_computed = true; + + return; + } + + double compute_CI_aux_beta_pvalue(const DVector & partial_res_H0_CI, const DMatrix & TildeX, const DMatrix & Tilder_star) const { + // declare the vector that will store the p-values + double result; + + // compute the vectors needed for the statistic + DVector Tilder = Tilder_star * partial_res_H0_CI; + + // Initialize observed statistic and sign_flipped statistic + DMatrix stat_temp = TildeX*Tilder; + double stat=stat_temp(0); + double stat_flip=stat; + + // Random sign-flips + std::default_random_engine eng; + std::uniform_int_distribution distr(0, 1); + + //if we have a set seed + if(set_seed != 0) { + eng.seed(set_seed); + } else { + std::random_device rd; + eng.seed(rd()); // random seed + } + + double count_Up = 0; // Counter for the number of flipped statistics that are larger the observed statistic + double count_Down = 0; // Counter for the number of flipped statistics that are smaller the observed statistic + + DVector Tilder_perm=Tilder; + + // get the number of flips + int nflip=n_flip; + + for(int i=0;i stat_flip_temp = TildeX*Tilder_perm; + stat_flip= stat_flip_temp(0);// Flipped statistic + if(stat_flip > stat){ ++count_Up;}else{ + if(stat_flip < stat){ ++count_Down;} + } + } + + double pval_Up = count_Up/n_flip; + double pval_Down = count_Down/n_flip; + + result = std::min(pval_Up, pval_Down); // select the correct unilateral p_value + + return result; + + } + + + + void V() override{ + Lambda_ = DMatrix::Identity(m_.n_obs(), m_.n_obs()) - m_.Psi() * s_.compute(m_) * m_.PsiTD(); + } + + inline bool is_Unilaterally_Greater (DVector v, DVector u){ + int q = v.size(); + for (int i = 0; i < q; ++i){ + if(v(i) <= u(i)){ + return false; + } + } + return true; + } + + inline bool is_Unilaterally_Smaller (DVector v, DVector u){ + int q = v.size(); + for (int i = 0; i < q; ++i){ + if(v(i) >= u(i)){ + return false; + } + } + return true; + }; + + inline DVector min(const DVector & v, const DVector & u){ + DVector result; + result.resize(v.size()); + for(int i = 0; i < v.size(); ++i){ + result(i) = std::min(v(i), u(i)); + } + return result; + } + + void setNflip(int m){ + n_flip = m; + }; + void setseed(int k){ + set_seed=k; + } + void setMesh_loc(DVector m_nodes){ + mesh_nodes_ = m_nodes; + } + +}; + +} // namespace models +} // namespace fdapde + +#endif // __PESF_H__ diff --git a/fdaPDE/models/regression/regression_base.h b/fdaPDE/models/regression/regression_base.h index 2aa6ed8d..2f07b006 100644 --- a/fdaPDE/models/regression/regression_base.h +++ b/fdaPDE/models/regression/regression_base.h @@ -44,9 +44,9 @@ class RegressionBase : DMatrix T_ {}; // T = \Psi^\top*Q*\Psi + P (required by GCV) Eigen::PartialPivLU> invXtWX_ {}; // factorization of the dense q x q matrix XtWX_. // missing data and masking logic - BinaryVector nan_mask_; // indicator function over missing observations - BinaryVector y_mask_; // discards i-th observation from the fitting if y_mask_[i] == true - int n_nan_ = 0; // number of missing entries in observation vector + BinaryVector nan_mask_; // indicator function over missing observations + BinaryVector y_mask_; // discards i-th observation from the fitting if y_mask_[i] == true + int n_nan_ = 0; // number of missing entries in observation vector SpMatrix B_; // matrix \Psi corrected for NaN and masked observations // matrices required for Woodbury decomposition @@ -91,20 +91,20 @@ class RegressionBase : const DVector& f() const { return f_; }; // estimate of spatial field const DVector& g() const { return g_; }; // PDE misfit const DVector& beta() const { return beta_; }; // estimate of regression coefficients - const BinaryVector& nan_mask() const { return nan_mask_; } - BinaryVector masked_obs() const { return y_mask_ | nan_mask_; } + const BinaryVector& nan_mask() const { return nan_mask_; } + BinaryVector masked_obs() const { return y_mask_ | nan_mask_; } int n_obs() const { return y().rows() - masked_obs().count(); } // number of (active) observations // getters to Woodbury decomposition matrices const DMatrix& U() const { return U_; } const DMatrix& V() const { return V_; } // access to NaN corrected \Psi and \Psi^\top*D matrices - const SpMatrix& Psi() const { return !is_empty(B_) ? B_ : Psi(not_nan()); } - auto PsiTD() const { return !is_empty(B_) ? B_.transpose() * D() : Psi(not_nan()).transpose() * D(); } + const SpMatrix& Psi() const { return !fdapde::core::is_empty(B_) ? B_ : Psi(not_nan()); } + auto PsiTD() const { return !fdapde::core::is_empty(B_) ? B_.transpose() * D() : Psi(not_nan()).transpose() * D(); } bool has_covariates() const { return q() != 0; } // true if the model has a parametric part bool has_weights() const { return df_.has_block(WEIGHTS_BLK); } // true if heteroskedastic observation are provided bool has_nan() const { return n_nan_ != 0; } // true if there are missing data // setters - void set_mask(const BinaryVector& mask) { + void set_mask(const BinaryVector& mask) { fdapde_assert(mask.size() == Base::n_locs()); if (mask.any()) { model().runtime().set(runtime_status::require_psi_correction); @@ -119,9 +119,29 @@ class RegressionBase : // compute W*x - W*X*z = W*x - (W*X*(X^\top*W*X)^{-1}*X^\top*W)*x = W(I - H)*x = Q*x return W_ * x - W_ * X() * z; } + + //PARTE AGGIUNTA + // + // computes matrix Q = W(I - X*(X^\top*W*X)^{-1}*X^\top*W) + DMatrix Q() const { + if (!has_covariates()) return W_; + DMatrix v = X().transpose() * W_; // X^\top*W + DMatrix z = invXtWX_.solve(v); // (X^\top*W*X)^{-1}*X^\top*W dovrebbe funzionare + // perchè unica richiesta di solve per PartialPivLU è che il numero di righe di XtWX e v sia uguale + // compute W - W*X*z = W - (W*X*(X^\top*W*X)^{-1}*X^\top*W) = W(I - H) = Q + return W_ * DMatrix::Identity(X().rows(), X().rows())- W_ * X() * z; + } + + DMatrix E() const { + return (PsiTD() * Psi() + P()); + } + + // + // FINE PARTE AGGIUNTA + // computes fitted values \hat y = \Psi*f_ + X*beta_ DMatrix fitted() const { - fdapde_assert(!is_empty(f_)); + fdapde_assert(!fdapde::core::is_empty(f_)); DMatrix hat_y = Psi(not_nan()) * f_; if (has_covariates()) hat_y += X() * beta_; return hat_y; @@ -136,7 +156,7 @@ class RegressionBase : } } double ftPf(const SVector& lambda) const { - if (is_empty(g_)) return f().dot(Base::P(lambda) * f()); // fallback to explicit f^\top*P*f + if (fdapde::core::is_empty(g_)) return f().dot(Base::P(lambda) * f()); // fallback to explicit f^\top*P*f return ftPf(lambda, f(), g()); } double ftPf() const { return ftPf(Base::lambda()); } @@ -159,7 +179,7 @@ class RegressionBase : if (has_weights() && df_.is_dirty(WEIGHTS_BLK)) { W_ = df_.template get(WEIGHTS_BLK).col(0).asDiagonal(); model().runtime().set(runtime_status::require_W_update); - } else if (is_empty(W_)) { + } else if (fdapde::core::is_empty(W_)) { // default to homoskedastic observations W_ = DVector::Ones(Base::n_locs()).asDiagonal(); } @@ -184,7 +204,7 @@ class RegressionBase : } // correct \Psi setting to zero rows corresponding to masked observations void correct_psi() { - if (masked_obs().any()) B_ = (~masked_obs().blk_repeat(1, n_basis())).select(Psi(not_nan())); + if (masked_obs().any()) B_ = (~masked_obs().repeat(1, n_basis())).select(Psi(not_nan())); } }; diff --git a/fdaPDE/models/regression/regression_type_erasure.h b/fdaPDE/models/regression/regression_type_erasure.h index 923d850a..975d5f5f 100644 --- a/fdaPDE/models/regression/regression_type_erasure.h +++ b/fdaPDE/models/regression/regression_type_erasure.h @@ -26,7 +26,7 @@ using fdapde::models::is_space_only; using fdapde::models::Sampling; using fdapde::models::SpaceOnly; using fdapde::core::BinaryVector; -using fdapde::Dynamic; +using fdapde::core::Dynamic; namespace fdapde { namespace models { @@ -47,7 +47,7 @@ struct RegressionModel__ { decltype(auto) U() const { return invoke& , 6>(*this); } decltype(auto) V() const { return invoke& , 7>(*this); } decltype(auto) invXtWX() const { return invoke>&, 8>(*this); } - decltype(auto) invA() const { return invoke>& , 9>(*this); } + decltype(auto) invA() const { return invoke>& , 9>(*this); } decltype(auto) q() const { return invoke(*this); } decltype(auto) n_obs() const { return invoke(*this); } decltype(auto) norm(const DMatrix& op1, const DMatrix& op2) const { diff --git a/fdaPDE/models/regression/speckman.h b/fdaPDE/models/regression/speckman.h new file mode 100644 index 00000000..dc3b0044 --- /dev/null +++ b/fdaPDE/models/regression/speckman.h @@ -0,0 +1,110 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __SPECKMAN_H__ +#define __SPECKMAN_H__ + +#include +#include +using fdapde::core::FSPAI; +using fdapde::core::lump; +using fdapde::core::is_empty; + +#include "../model_macros.h" +#include "../model_traits.h" +#include "../model_base.h" +#include "srpde.h" +#include "strpde.h" +#include "exact_edf.h" +#include "stochastic_edf.h" +#include "inference_base.h" +#include "inference.h" + + +namespace fdapde { +namespace models { + +template class Speckman: public InferenceBase { + + private: + struct ExactInverse{ + DMatrix compute(Model m){ + return inverse(m.E()); + } + }; + + struct NonExactInverse{ + SpMatrix compute(Model m){ + SpMatrix invE_ = Base::invE_approx(m); + return Base::invE_approx(m); + } + }; + + DMatrix Lambda_ {}; + + public: + using Base = InferenceBase; + using Base::m_; + using Base::V_; + using Base::beta_; + using Solver = typename std::conditional::value, ExactInverse, NonExactInverse>::type; + Solver s_; + + + // constructors + Speckman() = default; // deafult constructor + Speckman(const Model& m): Base(m) {}; // constructor + + // return Lambda_^2 + DMatrix Lambda() { + int n = m_.n_obs(); + DMatrix pax = s_.compute(m_); + DMatrix Lambda = DMatrix::Identity(n, n) - m_.Psi() * pax * m_.PsiTD(); + DMatrix Lambda_squared = Lambda * Lambda; + return Lambda_squared; + } + + void beta() override{ + if(is_empty(Lambda_)){ + Lambda_ = Lambda(); + } + DMatrix W = m_.X(); + DMatrix invWtW = inverse(W.transpose() * Lambda_ * (W)); + beta_ = invWtW * W.transpose() * Lambda_ * (m_.y()); + } + + void V() override{ + if(is_empty(Lambda_)){ + Lambda_ = Lambda(); + } + DMatrix W = m_.X(); + DMatrix invWtW = inverse(W.transpose() * Lambda_ * (W)); + DVector eps_ = (m_.y() - m_.fitted()); + DVector Res2 = eps_.array() * eps_.array(); + // resize the variance-covariance matrix + V_.resize(m_.q(), m_.q()); + DMatrix W_t = W.transpose(); + DMatrix diag = Res2.asDiagonal(); + V_ = invWtW * (W_t) * Lambda_ * Res2.asDiagonal() * Lambda_ * (W) * invWtW; + } + +}; + + +} // namespace models +} // namespace fdapde + +#endif // __SPECKMAN_H__ \ No newline at end of file diff --git a/fdaPDE/models/regression/srpde.h b/fdaPDE/models/regression/srpde.h index 4f05c55f..7d95cb44 100644 --- a/fdaPDE/models/regression/srpde.h +++ b/fdaPDE/models/regression/srpde.h @@ -36,10 +36,11 @@ namespace models { class SRPDE : public RegressionBase { private: - typedef RegressionBase Base; + using Base = RegressionBase; SparseBlockMatrix A_ {}; // system matrix of non-parametric problem (2N x 2N matrix) - fdapde::SparseLU> invA_ {}; // factorization of matrix A + fdapde::core::SparseLU> invA_ {}; // factorization of matrix A DVector b_ {}; // right hand side of problem's linear system (1 x 2N vector) + SpMatrix PsiESF_ {}; public: IMPORT_REGRESSION_SYMBOLS using Base::lambda_D; // smoothing parameter in space @@ -52,6 +53,62 @@ class SRPDE : public RegressionBase { SRPDE() = default; SRPDE(const Base::PDE& pde, Sampling s) : Base(pde, s) {}; + + + // template + // SRPDE(PDETtype&& pde, Sampling s) : Base(pde, s) {}; + + + template + void init_psi_esf(PDEType&& pde) { + + // perchè psi cols e non psi rows?????? + PsiESF_.resize(Psi().cols(), Psi().cols()); + + std::vector> triplet_list; + + // not sure about Psi().rows(, should be the number of nodes + // take a look at linear_network.h + + // should be Psi().rows() + for(int i = 0; i < Psi().cols(); ++i) { + auto patch = pde.domain().node_patch(i); + std::set s; + s.insert(i); + // should be that the matrix cells stores in the rows the nodes composing each cells + for (auto e : patch) { + // e.nodes() dovrebbe dare i nodi che sono presenti nella cell della patch + for(int j : pde.domain().cells().row(e)) { + s.insert(j); + } + } + for(int j : s) { + triplet_list.emplace_back(i, j, 1.0); + } + } + + /* + for (const auto& triplet : triplet_list) { + std::cout << "Row: " << triplet.row() + << ", Col: " << triplet.col() + << ", Value: " << triplet.value() + << std::endl; + } + */ + + + PsiESF_.setFromTriplets(triplet_list.begin(), triplet_list.end()); + // std::cout << PsiESF_ << std::endl; + PsiESF_.makeCompressed(); + + // save PsiESF in private member + + } + + // getter for PsiESF (needed for inference) + const SpMatrix& PsiESF() const{return PsiESF_;} + + void init_model() { if (runtime().query(runtime_status::is_lambda_changed)) { // assemble system matrix for nonparameteric part @@ -102,7 +159,7 @@ class SRPDE : public RegressionBase { double norm(const DMatrix& op1, const DMatrix& op2) const { return (op1 - op2).squaredNorm(); } // getters const SparseBlockMatrix& A() const { return A_; } - const fdapde::SparseLU>& invA() const { return invA_; } + const fdapde::core::SparseLU>& invA() const { return invA_; } virtual ~SRPDE() = default; }; diff --git a/fdaPDE/models/regression/stochastic_edf.h b/fdaPDE/models/regression/stochastic_edf.h index dc7fc168..24d5c435 100644 --- a/fdaPDE/models/regression/stochastic_edf.h +++ b/fdaPDE/models/regression/stochastic_edf.h @@ -35,12 +35,12 @@ class StochasticEDF { DMatrix Us_; // sample from Rademacher distribution DMatrix Bs_; // \Psi^T*Q*Us_ DMatrix Y_; // Us_^T*\Psi - int seed_ = fdapde::random_seed; + int seed_ = fdapde::core::random_seed; bool init_ = false; public: // constructor StochasticEDF(int r, int seed) : - r_(r), seed_((seed == fdapde::random_seed) ? std::random_device()() : seed) { } + r_(r), seed_((seed == fdapde::core::random_seed) ? std::random_device()() : seed) { } StochasticEDF(int r) : StochasticEDF(r, std::random_device()()) { } StochasticEDF() : StochasticEDF(100) { } diff --git a/fdaPDE/models/regression/strpde.h b/fdaPDE/models/regression/strpde.h index d2ea42ee..ee27fc9a 100644 --- a/fdaPDE/models/regression/strpde.h +++ b/fdaPDE/models/regression/strpde.h @@ -48,7 +48,7 @@ class STRPDE : public RegressionBase, SpaceTimeSeparable> { private: SparseBlockMatrix A_ {}; // system matrix of non-parametric problem (2N x 2N matrix) - fdapde::SparseLU> invA_; // factorization of matrix A + fdapde::core::SparseLU> invA_; // factorization of matrix A DVector b_ {}; // right hand side of problem's linear system (1 x 2N vector) DMatrix T_; // T = \Psi^T*Q*\Psi + \lambda*R SpMatrix K_; // P1 \kron R0 @@ -70,7 +70,7 @@ class STRPDE : void init_model() { if (runtime().query(runtime_status::is_lambda_changed)) { // assemble system matrix for the nonparameteric part - if (is_empty(K_)) K_ = Kronecker(P1(), pde().mass()); + if (fdapde::core::is_empty(K_)) K_ = Kronecker(P1(), pde().mass()); A_ = SparseBlockMatrix( -PsiTD() * W() * Psi() - lambda_T() * K_, lambda_D() * R1().transpose(), lambda_D() * R1(), lambda_D() * R0() ); @@ -118,7 +118,7 @@ class STRPDE : double norm(const DMatrix& op1, const DMatrix& op2) const { return (op1 - op2).squaredNorm(); } // getters const SparseBlockMatrix& A() const { return A_; } - const fdapde::SparseLU>& invA() const { return invA_; } + const fdapde::core::SparseLU>& invA() const { return invA_; } }; // implementation of STRPDE for parabolic space-time regularization, monolithic approach @@ -127,7 +127,7 @@ class STRPDE : public RegressionBase, SpaceTimeParabolic> { private: SparseBlockMatrix A_ {}; // system matrix of non-parametric problem (2N x 2N matrix) - fdapde::SparseLU> invA_; // factorization of matrix A + fdapde::core::SparseLU> invA_; // factorization of matrix A DVector b_ {}; // right hand side of problem's linear system (1 x 2N vector) SpMatrix L_; // L \kron R0 public: @@ -146,7 +146,7 @@ class STRPDE : void init_model() { // update model object in case of **structural** changes in its definition // assemble system matrix for the nonparameteric part of the model - if (is_empty(L_)) L_ = Kronecker(L(), pde().mass()); + if (fdapde::core::is_empty(L_)) L_ = Kronecker(L(), pde().mass()); A_ = SparseBlockMatrix( -PsiTD() * W() * Psi(), lambda_D() * (R1() + lambda_T() * L_).transpose(), lambda_D() * (R1() + lambda_T() * L_), lambda_D() * R0()); @@ -192,7 +192,7 @@ class STRPDE : } // getters const SparseBlockMatrix& A() const { return A_; } - const fdapde::SparseLU>& invA() const { return invA_; } + const fdapde::core::SparseLU>& invA() const { return invA_; } double norm(const DMatrix& op1, const DMatrix& op2) const { // euclidian norm of op1 - op2 return (op1 - op2).squaredNorm(); // NB: to check, defined just for compiler } @@ -204,7 +204,7 @@ class STRPDE : public RegressionBase, SpaceTimeParabolic> { private: SparseBlockMatrix A_ {}; // system matrix of non-parametric problem (2N x 2N matrix) - fdapde::SparseLU> invA_; // factorization of matrix A + fdapde::core::SparseLU> invA_; // factorization of matrix A DVector b_ {}; // right hand side of problem's linear system (1 x 2N vector) // the functional minimized by the iterative scheme diff --git a/fdaPDE/models/regression/wald.h b/fdaPDE/models/regression/wald.h new file mode 100644 index 00000000..180b7de4 --- /dev/null +++ b/fdaPDE/models/regression/wald.h @@ -0,0 +1,245 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifndef __WALD_H__ +#define __WALD_H__ + +#include +#include +#include +using fdapde::core::FSPAI; +using fdapde::core::lump; +using fdapde::core::is_empty; + +#include "../model_macros.h" +#include "../sampling_design.h" +#include "../model_traits.h" +#include "../model_base.h" +#include "srpde.h" +#include "strpde.h" +#include "exact_edf.h" +#include "stochastic_edf.h" +#include "inference_base.h" +#include "inference.h" + +// per salvare la matrice con savemarket +#include + +namespace fdapde { +namespace models { + +template class Wald: public InferenceBase { + + private: + struct ExactInverse { + DMatrix compute(Model m){ + return inverse(m.T()); + } + }; + struct NonExactInverse { + DMatrix compute(Model m){ + SpMatrix invE_ = Base::invE_approx(m); + int nodes = m.Psi().cols(); + DMatrix Ut_ = m.U().topRows(nodes); + DMatrix Vt_ = m.V().leftCols(nodes); + DMatrix Ct_ = - inverse(m.X().transpose() * m.X()); + DMatrix invMt_ = invE_ - invE_ * Ut_ * inverse(Ct_ + Vt_ * invE_ * Ut_) * Vt_ * invE_; + return invMt_; + } + }; + + DMatrix Vf_ {}; // variance matrix of f + SpMatrix Psi_p_ {}; // Psi reductued only in the locations needed for inference + DVector fp_ {}; // f in the locations of inference + int p_l_; + int rank; // need to save this, since it's the degrees of freedom of the chi + DMatrix new_locations {}; // vector of new locations for inference in f (only Wald) + int loc_subset = 1; // =1 if the locations needed for inference are a subset of the locations + + public: + using Base = InferenceBase; + using Base::m_; + using Base::V_; + using Base::f0_; + using Base::locations_f_; + using Base::alpha_f_; + using Base::beta_; + using Base::invE_approx; + using Solver = typename std::conditional::value, ExactInverse, NonExactInverse>::type; + Solver s_; + + // constructors + Wald() = default; // deafult constructor + Wald(const Model& m): Base(m) {}; // constructor + + void beta() override{ + beta_ = m_.beta(); + } + double sigma_sq(double trace) { + double sigma_sq_ = 0; // sigma^2 + DMatrix epsilon = m_.y() - m_.fitted(); + sigma_sq_ = (1/(m_.n_obs() - m_.q() - trace)) * epsilon.squaredNorm(); + return sigma_sq_; + } + + void V() override{ + DMatrix X = m_.X(); + DMatrix invSigma_ = inverse(X.transpose() * X); + DMatrix S = m_.Psi() * s_.compute(m_) * m_.PsiTD() * m_.Q(); + double trace = S.trace(); + DMatrix left = invSigma_ * X.transpose(); + V_ = sigma_sq(trace) * (invSigma_ + left * S * S.transpose() * left.transpose()); + } + + void Psi_p(){ + // case in which the locations are extracted from the observed ones + if(is_empty(locations_f_) && is_empty(new_locations)){ + Psi_p_ = m_.Psi(); + } + else if (loc_subset == 1){ + int m = locations_f_.size(); + SpMatrix Psi = m_.Psi().transpose(); + Psi_p_.resize(m, Psi.rows()); + for(int j = 0; j < m; ++j) { + int row = locations_f_[j]; + for(SpMatrix::InnerIterator it(Psi, row); it; ++it) { + Psi_p_.insert(j, it.row()) = it.value(); + } + } + Psi_p_.makeCompressed(); + + } + else{ + auto basis_evaluation = m_.pde().eval_basis(core::eval::pointwise, new_locations); + Psi_p_ = basis_evaluation->Psi; + } + } + + // setter needed for ESF f CI + void set_Psi_p(SpMatrix Psi){ + Psi_p_ = Psi; + } + + void fp(){ + if(is_empty(Psi_p_)) + Psi_p(); + fp_ = Psi_p_ * m_.f(); + } + + void Vf(){ + // covariance matrice of f^ + // still difference in exact and non exact when computing S + DMatrix S_psiT = s_.compute(m_) * m_.Psi().transpose(); + // needed to compute the variance of the residuals + DMatrix S = m_.Psi() * s_.compute(m_) * m_.Psi().transpose() * m_.Q(); + double trace = S.trace(); + DMatrix Vff = sigma_sq(trace) * S_psiT * m_.Q() * S_psiT.transpose(); + // need to create a new Psi: matrix of basis evaluation in the set of observed locations + // belonging to the chosen portion Omega_p + if(is_empty(Psi_p_)) + Psi_p(); + Vf_ = Psi_p_ * Vff * Psi_p_.transpose(); + } + + DMatrix invVf(){ + if(is_empty(Vf_)) + Vf(); + // to retrieve eigenvalues and eigenvectors of the Vw matrix + Eigen::SelfAdjointEigenSolver> Vw_eigen(Vf_); + DVector eigenvalues = Vw_eigen.eigenvalues(); + // now we need to discard the one really close to 0 + double thresh = 0.0001; + int flag = 0; + int it = 0; + while(flag == 0 && it < eigenvalues.size()){ + //if(eigenvalues(it, it) > thresh) + if(eigenvalues(it) > thresh) + flag = 1; + ++it; + } + + // rank + rank = eigenvalues.size() - it + 1; + // consider only the significant eigenvalues and create the diagonal matrix + DVector imp_eigval = eigenvalues.tail(rank); + // consider only the significant eigenvectors + DMatrix imp_eigvec = Vw_eigen.eigenvectors().rightCols(rank); + // now we can compute the r-rank pseudoinverse + DVector temp = imp_eigval.array().inverse(); + DiagMatrix inv_imp_eigval = temp.asDiagonal(); + DMatrix invVf = imp_eigvec * inv_imp_eigval * imp_eigvec.transpose(); + + return invVf; + } + + double f_p_value(){ + if(is_empty(fp_)) + fp(); + if(is_empty(f0_)) + Base::setf0(DVector::Zero(fp_.size())); + // compute the test statistic + double stat = (fp_ - f0_).transpose() * invVf() * (fp_ - f0_); + // chi squared function needs to be fixed + //double p = chi_squared_cdf(stat, rank); + //if(p < 0){ + // pvalue = 1; + //} + //if(p > 1){ + // pvalue = 0; + //} + //else{ + // pvalue = 1 - p; + //} + return stat; + } + + DMatrix f_CI(){ + + if(is_empty(Vf_)) + Vf(); + + if(alpha_f_ == 0.) + Base::setAlpha_f(0.05); + + if(is_empty(fp_)) + fp(); + + int p = Vf_.rows(); + DVector diagon = Vf_.diagonal(); + DVector lowerBound(p); + DVector upperBound(p); + double quantile = normal_standard_quantile(1 - alpha_f_/2); + lowerBound = fp_.array() - quantile * (diagon.array()).sqrt(); + upperBound = fp_.array() + quantile * (diagon.array()).sqrt(); + + DMatrix CIMatrix(p, 2); + CIMatrix.col(0) = lowerBound; + CIMatrix.col(1) = upperBound; + return CIMatrix; + } + + void setNewLocations_f(DMatrix loc){ + loc_subset = 0; + new_locations = loc; + } + + +}; + +} // namespace models +} // namespace fdapde + +#endif // __WALD_H__ \ No newline at end of file diff --git a/fdaPDE/models/sampling_design.h b/fdaPDE/models/sampling_design.h index ecec2d25..ae900d5e 100644 --- a/fdaPDE/models/sampling_design.h +++ b/fdaPDE/models/sampling_design.h @@ -60,7 +60,7 @@ template class SamplingBase { void init_sampling(bool forced = false) { // compute once if not forced to recompute - if (!is_empty(Psi_) && forced == false) return; + if (!fdapde::core::is_empty(Psi_) && forced == false) return; switch (sampling_) { case Sampling::mesh_nodes: { // data sampled at mesh nodes: \Psi is the identity matrix @@ -68,7 +68,7 @@ template class SamplingBase { int n = model().n_spatial_basis(); int N = model().n_spatial_basis(); Psi_.resize(n, N); - std::vector> triplet_list; + std::vector> triplet_list; triplet_list.reserve(n); // if data locations are equal to mesh nodes then \Psi is the identity matrix. // \psi_i(p_i) = 1 and \psi_i(p_j) = 0 \forall i \neq j diff --git a/fdaPDE/models/space_only_base.h b/fdaPDE/models/space_only_base.h index e2a3d6d4..ec118e54 100644 --- a/fdaPDE/models/space_only_base.h +++ b/fdaPDE/models/space_only_base.h @@ -65,14 +65,16 @@ template class SpaceOnlyBase : public ModelBase { int n_basis() const { return pde_.n_dofs(); }; // number of basis functions int n_spatial_basis() const { return n_basis(); } // number of basis functions in space const PDE& pde() const { return pde_; } // regularizing term Lf - u - const fdapde::SparseLU>& invR0() const { // LU factorization of mass matrix R0 + const fdapde::core::SparseLU>& invR0() const { // LU factorization of mass matrix R0 if (!invR0_) { invR0_.compute(R0()); } return invR0_; } const SpMatrix& PD() const { // space-penalty component (R1^T*R0^{-1}*R1) - if (is_empty(P_)) { P_ = R1().transpose() * invR0().solve(R1()); } + if (fdapde::core::is_empty(P_)) { P_ = R1().transpose() * invR0().solve(R1()); } return P_; } + // evaluation of x^\top*(R1^\top*R0^{-1}*R1)*x + double xtPDx(const DVector& x) const { return x.dot(PD() * x); } // evaluation of penalty term \lambda*(R1^\top*R0^{-1}*R1) at \lambda auto P(const SVector& lambda) const { return lambda[0] * PD(); } auto P() const { return P(lambda()); } @@ -81,7 +83,7 @@ template class SpaceOnlyBase : public ModelBase { protected: PDE pde_ {}; // differential penalty in space Lf - u mutable SpMatrix P_; // discretization of penalty term: R1^T*R0^{-1}*R1 - mutable fdapde::SparseLU> invR0_; + mutable fdapde::core::SparseLU> invR0_; SpMatrix R0_lumped_; // lumped mass matrix, if mass_lumping == true, empty otherwise SVector lambda_ = SVector::Zero(); }; diff --git a/fdaPDE/models/space_time_parabolic_base.h b/fdaPDE/models/space_time_parabolic_base.h index 38c1ec95..1e78b3f9 100644 --- a/fdaPDE/models/space_time_parabolic_base.h +++ b/fdaPDE/models/space_time_parabolic_base.h @@ -54,7 +54,7 @@ class SpaceTimeParabolicBase : public SpaceTimeBase { Im_.setIdentity(); // assemble matrix associated with derivation in time L_ // [L_]_{ii} = 1/DeltaT for i \in {1 ... m} and [L_]_{i,i-1} = -1/DeltaT for i \in {1 ... m-1} - std::vector> triplet_list; + std::vector> triplet_list; triplet_list.reserve(2 * m_); // start assembly loop double invDeltaT = 1.0 / DeltaT_; @@ -82,6 +82,10 @@ class SpaceTimeParabolicBase : public SpaceTimeBase { const PDE& pde() const { return pde_; } // regularizing term df/dt + Lf - u const SpMatrix& R0() const { return R0_; } const SpMatrix& R1() const { return R1_; } + const fdapde::core::SparseLU>& invR0() const { // LU factorization of mass matrix R0 + if (!invR0_) { invR0_.compute(R0()); } + return invR0_; + } int n_basis() const { return pde_.n_dofs(); } // number of basis functions int n_spatial_basis() const { return pde_.n_dofs(); } const SpMatrix& L() const { return L_; } @@ -91,26 +95,25 @@ class SpaceTimeParabolicBase : public SpaceTimeBase { // computes and cache matrices (Im \kron R0)^{-1} and L \kron R0, returns the discretized penalty P = // \lambda_D*((Im \kron R1 + \lambda_T*(L \kron R0))^T*(I_m \kron R0)^{-1}*(Im \kron R1 + \lambda_T*(L \kron R0))) auto P() { - if (is_empty(pen_)) { // compute once and cache result - invR0_.compute(R0()); + if (fdapde::core::is_empty(pen_)) { // compute once and cache result penT_ = Kronecker(L_, pde_.mass()); } - return lambda_D() * (R1() + lambda_T() * penT_).transpose() * invR0_.solve(R1() + lambda_T() * penT_); + return lambda_D() * (R1() + lambda_T() * penT_).transpose() * invR0().solve(R1() + lambda_T() * penT_); } // destructor virtual ~SpaceTimeParabolicBase() = default; protected: PDE pde_ {}; // parabolic differential penalty df/dt + Lf - u // let m the number of time points - DMatrix s_; // N x 1 initial condition vector - DMatrix u_; // discretized forcing [1/DeltaT * (u_1 + R_0*s) \ldots u_n] - SpMatrix Im_; // m x m sparse identity matrix (assembled once and cached for reuse) - SpMatrix L_; // m x m matrix associated with the derivation in time - double DeltaT_; // time step (assumes equidistant points in time) - SpMatrix R0_; // Im \kron R0 (R0: spatial mass matrix) - SpMatrix R1_; // Im \kron R1 (R1: spatial penalty discretization) - SpMatrix penT_; // L_ \kron pde.R0 - fdapde::SparseLU> invR0_; // factorization of Im \kron R0 + DMatrix s_; // N x 1 initial condition vector + DMatrix u_; // discretized forcing [1/DeltaT * (u_1 + R_0*s) \ldots u_n] + SpMatrix Im_; // m x m sparse identity matrix (assembled once and cached for reuse) + SpMatrix L_; // m x m matrix associated with the derivation in time + double DeltaT_; // time step (assumes equidistant points in time) + SpMatrix R0_; // Im \kron R0 (R0: spatial mass matrix) + SpMatrix R1_; // Im \kron R1 (R1: spatial penalty discretization) + SpMatrix penT_; // L_ \kron pde.R0 + mutable fdapde::core::SparseLU> invR0_; // discretized penalty: (Im \kron R1 + L \kron R0)^T*(I_m \kron R0)^{-1}*(Im \kron R1 + L \kron R0) SpMatrix pen_; }; diff --git a/fdaPDE/models/space_time_separable_base.h b/fdaPDE/models/space_time_separable_base.h index 732e4cbd..d4bd0256 100644 --- a/fdaPDE/models/space_time_separable_base.h +++ b/fdaPDE/models/space_time_separable_base.h @@ -46,7 +46,7 @@ class SpaceTimeSeparableBase : public SpaceTimeBase { space_pde_.init(); // initialize penalty in space time_pde_.init(); // initialize penalty in time // compute \Phi matrix [\Phi]_{ij} = \phi_i(t_j) - DVector time_locs = is_empty(time_locs_) ? time_ : time_locs_; + DVector time_locs = fdapde::core::is_empty(time_locs_) ? time_ : time_locs_; Phi_ = time_pde_.eval_basis(core::eval::pointwise, time_locs)->Psi; // compute tensorized matrices R0_ = Kronecker(time_pde_.mass(), space_pde_.mass()); // P0 \kron R0 @@ -65,6 +65,10 @@ class SpaceTimeSeparableBase : public SpaceTimeBase { // getters const SpMatrix& R0() const { return R0_; } const SpMatrix& R1() const { return R1_; } + const fdapde::core::SparseLU>& invR0() const { // LU factorization of mass matrix R0 + if (!invR0_) { invR0_.compute(R0()); } + return invR0_; + } int n_basis() const { return space_pde_.n_dofs() * time_pde_.n_dofs(); } int n_spatial_basis() const { return space_pde_.n_dofs(); } // number of space basis functions int n_temporal_basis() const { return time_pde_.n_dofs(); } // number of time basis functions @@ -72,13 +76,13 @@ class SpaceTimeSeparableBase : public SpaceTimeBase { const SpMatrix& P0() const { return time_pde_.mass(); } const SpMatrix& P1() const { return time_pde_.stiff(); } const SpMatrix& Phi() const { return Phi_; } - inline int n_temporal_locs() const { return is_empty(time_locs_) ? time_.rows() : time_locs_.rows(); } - const DVector& time_locs() const { return is_empty(time_locs_) ? time_ : time_locs_; } + inline int n_temporal_locs() const { return fdapde::core::is_empty(time_locs_) ? time_.rows() : time_locs_.rows(); } + const DVector& time_locs() const { return fdapde::core::is_empty(time_locs_) ? time_ : time_locs_; } const PDE& time_pde() const { return time_pde_; } const PDE& pde() const { return space_pde_; } // return stacked version of discretized forcing field const DVector& u() { - if (is_empty(u_)) { // compute once and cache + if (fdapde::core::is_empty(u_)) { // compute once and cache int N = n_spatial_basis(); u_.resize(n_basis()); // in separable regularization PDE doesn't depend on time. stack forcing term m times @@ -87,17 +91,20 @@ class SpaceTimeSeparableBase : public SpaceTimeBase { return u_; } const SpMatrix& PT() const { // time-penalty component (P1 \kron R0) - if (is_empty(PT_)) { PT_ = Kronecker(P1(), space_pde_.mass()); } + if (fdapde::core::is_empty(PT_)) { PT_ = Kronecker(P1(), space_pde_.mass()); } return PT_; } const SpMatrix& PD() const { // space-penalty component (P0 \kron (R1^T*R0^{-1}*R1)) - if (is_empty(PD_)) { - fdapde::SparseLU> invR0_; - invR0_.compute(space_pde_.mass()); - PD_ = Kronecker(P0(), space_pde_.stiff().transpose() * invR0_.solve(space_pde_.stiff())); + if (fdapde::core::is_empty(PD_)) { + fdapde::core::SparseLU> invR0; // inverse of space-only mass + invR0.compute(space_pde_.mass()); + PD_ = Kronecker(P0(), space_pde_.stiff().transpose() * invR0.solve(space_pde_.stiff())); } return PD_; } + // evaluation of x^\top*PD*x and x^\top*PT*x + double xtPDx(const DVector& x) const { return x.dot(PD() * x); } + double xtPTx(const DVector& x) const { return x.dot(PT() * x); } // discretized penalty P = \lambda_D*(P0 \kron (R1^T*R0^{-1}*R1)) + \lambda_T*(P1 \kron R0) auto P(const SVector& lambda) const { return lambda[0] * PD() + lambda[1] * PT(); } auto P() const { return P(Base::lambda()); } @@ -114,6 +121,7 @@ class SpaceTimeSeparableBase : public SpaceTimeBase { DVector time_locs_; // time instants t_1, ..., t_m mutable SpMatrix PD_; // discretization of space regularization: (R1^T*R0^{-1}*R1) \kron P0 mutable SpMatrix PT_; // discretization of time regularization: (R0 \kron P1) + mutable fdapde::core::SparseLU> invR0_; }; } // namespace models diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5039609350add94a6559a0c50c6ccd73febcf731 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O0O({YS3Oz1(Em&)55icRu7cim+m70*E!I&*gY7V84v%Zi|;`2DO zyAg}^Dq?3~_nY6{><8H&#u)eJ(II0FW6Xwz$Wd7%=w2JDnPfzcV}wOE4HFrH{bpi+ z9q`*N7O{ZkEcp8U;WUY}yxV=}wYs&n-LM;W%f9s=WZ~yQKF_>hc8%7Blu20WL3kNY zim|hMD$_iO)5%N~#L)y&Zm!}ql7%PdX_Tp2UkB`_-5fjZ#iG|Ac0_MDSa!tXxYzB7 z{?TB$Y}$MK2Pfy_$K)xMFPcyed@I>8SivhOpX+({XK5nSd+=5HRURQRKnxHA#K7h< zV9o@)wYe0~%83DD;0Fe9e-O|RU4x}YwRJ#;*Jq4dh$x`rTLMuSbPbjoAp*j6DWERp z=83^|IrxRia}Aanbvff|W*EoJTs>a6njQQ?r8Dkoq@EZc238rUYtzB={|tVawU7MO z60(Q^V&I=Kz^#!#@?cTsZ2h)8JZlBCJ7_4FSE2#}`pP8$4BSWBDyZWEb;xrKmKt#s S^s90}x(Fyjs3Qh`fq@TBa7s1+ literal 0 HcmV?d00001 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7a8413f7..75433146 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,7 +4,15 @@ project(TEST) set(CMAKE_CXX_STANDARD 20) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_WARNINGS_FLAGS "-Wall -Wpedantic -Wextra -Werror") -set(CMAKE_CXX_FLAGS "-g -O2 -march=x86-64 -std=c++20 ${CMAKE_WARNINGS_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/../ -I${CMAKE_CURRENT_SOURCE_DIR}/../fdaPDE/core/") +set(CMAKE_CXX_FLAGS "-g -O2 -march=x86-64 -std=c++20 ${CMAKE_WARNINGS_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/../ -I${CMAKE_CURRENT_SOURCE_DIR}/../fdaPDE/core/ -fPIE") + +find_package(OpenMP REQUIRED) + +if (OpenMP_CXX_FOUND) + # Aggiungi le flag OpenMP ai compilatori C e C++ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") +endif() find_package (Eigen3 3.4 REQUIRED NO_MODULE) @@ -28,6 +36,8 @@ enable_testing() add_executable(fdapde_test main.cpp) target_link_libraries (fdapde_test Eigen3::Eigen) target_link_libraries (fdapde_test gtest_main) +target_link_libraries(fdapde_test OpenMP::OpenMP_CXX) + add_test(NAME fdapde_test COMMAND $) diff --git a/test/data/.DS_Store b/test/data/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..813a75ff67142ad90e9d611b78f4ad5397e9dae2 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIlo>nFX(><_=q^?*>MCu)78Jtvhgt+I(w6>!EW0}+oiIC7c4oIo z#nhi@A`*Qvh`tzO)Wp9S1bi~_!4Q4WK%;>KBTv5Qi$-`c(R1g{HvIt~z$nDI$=q|# zIrp5IbLKm9_ugfUp)IdBGFHPFlj-7AE2r)XjqCX}t4V>Rj3~&SrAOV7wB@9UKQ(K1 zCi#`FVwtYj(C{6klF~V4bLF{mx%^nquru1@ zrM$e`mdfqqT(9F;>Ebw*-eDS}Nv*owvAvXO8#&*=)D4=ltKYPBXSB`9+q&!9_6UWn z$VyVH85?U_-5ifKwKN}!$Hvw+HN<19S2Z6xq{s{FRzA2rxzEbl&Wj=h1fKymZ$?Om zr^aKsg?4csQL>~M&-r3J$}Q#Uyhv|f?~Z;osZ|x|!MjI1)3MzhM$RRg)GAyGa8t&y zx8)43@6R|^K5M&4tum9cGI=ZI8LgJpV;(d}R^euHj%96gT$8&Q9Po?-9@ouM4Gg(X z&TIFb4VdI#%+m6%vE3l2X2Iwn*RBTT!}*JsF2CdMm8;jTZ|mILJyD@mR;ktMqW*&E znrX}E8#Q%rcrfK=3|lwty+f2z+cO_Gjhs@6xYBEpUS&*y5Uww=a#y!iPT1Jm*t&Y-kvk47h<(Oa+ji|3e!e)m8|JXpOs1*mJl_oYh-P+(q9nC6~bzDovaLGoNSgJ+7+@5kycqdE$`+x z-jZ^??h(VLd-D+5Ya@|CE^pO!Lk}W|bVVMPwKMXNJDkcH-J=9L;ixO}h%Eark>uRd zM&0zBN#%B~)J(fz5}xUO30TW@ML^XhR*0dW!n#C*;1pV@ma!(*!M3nHEXT&!5q6Zl z$&RxV>?He=eZ#(I7uZkiSN0pb#4fWxFbDIYp%PVCf~BZM6mi^-X0)IkTd)<~*oHpr zMiMEcu@@uQ4;LN|;#oY0=kWqw#!G5{m1up8c0U6N^+zOO`HEqkRN;=sK8ycgkRzfwV__pQos2U8{ ztW{O5lxj_A)-NNL1x#xjIpLKfUnhpYVrSVoc9H!;82%HbP*8*AsK>p8*bQh!2R5RU zQ2Qu)(CZ_258*Zg9a%Vp-5jC!Nj!ydJdI~?7%$-nUL^z{!|QkhZ{r=ji}&yej^hMQ z;uJo^7x)_A;@k|JZk~=)oS%x*LQl@N9D6UxIIhcR33HfE%b3O7|9%;3`6rgKX)(=+ zcY12Bkt-2)HGKcS@#^RQ*XTVo3o{UA;AY4GN;`Tw+UQA(zYu0VG~a8-=-NXUZ+zak zpuP!p(+&cNpZvp+#xa`8Z4v<;7nCH_{`G?Z`b8S9|9|%zHeCO&dmDQbtp9%j5*WQJ literal 0 HcmV?d00001 diff --git a/test/data/mesh/.DS_Store b/test/data/mesh/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..22053b83f2a5dc218d260a31d1d616eed38dc650 GIT binary patch literal 8196 zcmeHMKX21O6o1zS;;4<30i=wUSfi4pr4{O8Qu75cf&oylYpbzvd{*KRp(v7<3W5vQ`6%0mXn~Krx^gPz?MF4B(l~idJy$i&@nw z1{4FAk^#0q=vWyV5)*-Z>%fMm0EiVF<^}th2XG%mVmqFUd-muN`*feuz&Y>R&I8|@_8ZrZ zXc*gm=#998?|NwR_@N)VblRhn&>eGMOH61rt=4ZeXS43!K}+u*?9W^J>~^=^()V`v z=kuC&{l?A1d;Mp@Fr=?UNJMT6P|t*TRu*4y(y@-|FiQCpaxtW)DY?+ze*f^|%jxGk zWor+q`$zWCVD<0v+!}=e4Nvg;EbeVoj=~5P^mxyMF1~+RC;bZI%hj*IHmzU%=Z`lR z`W4zQ^jpO~SHFU_Gx}9gwFx+DrdlSd9IY}IX@$<-zx*T>TC!T`Qf!r@MrNIi26a>* z1Rr9)6Go_rhrcKfcGqSXEQv5jn-c4^POo>~eUmzsdMq?s%_B#@lJzrMrnYm{En#3& z%r#m5f4BJkf5{4JN->}q_}>{I71J_%7{&QRbT%NCYwK8_Vr7NdB?7q%Has0iS5Z>)?LJ@LM=yAbo!CFg;cnPt-fDt{Y)Pw{L#%xJab0~$J^@V&ApU2ss zN^12cQe*~ZzuDQDg!vM7cL*WWnFoi2ScDJ*RA9}7;TsX_LN}zQJqWyZrZM2P!aqB+t!p*&Wo;hB6EoK*- z$NtLp{L3gTrq=E$PjW9x!c-O>nEKn9QjU_k5-Orx!_R4BI&7-S0oD6WxG zz!trP$YmOBjio|Z0ih}tP^D7cVo;S1ex~DWjio}BPN;4^sD3lm9SW6ihvzdHPN=OA zM`QpQSZAQFrj|JW&wlRz*OPFD3?KvliUHb~xDy9T(r4>NapJ6Hpm(4`L|m!xGX)HJ h6ho{yio2jvz|VvMXlpDLf(HaI0+I$CkbysC-~+}+h_(O# literal 0 HcmV?d00001 diff --git a/test/data/models/srpde/.DS_Store b/test/data/models/srpde/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..68636de5353534c5d46899c5b882999ba36e9a16 GIT binary patch literal 8196 zcmeHM&1%~~5S~rkW<@BN(t?kITn)9I)S>jEy2=Ywp*=LkwIY*<%35Q|alsgL$tCS2 z57Bq%6ZDdMo+q zm9k<+o+2`|2gqRv8Mf_kR$se|^0aD<?-2!9t@tIy0m{ZT=ou_DDpOojXAjJnGLvF3ZI1J<_~C@o?6!KYJ_Ed=RI@i86?zAyW1} z#AzgEJuywAOxXr{f;-&l*BkSBXRF(EJKNnw)1ANSw3_bLW_Pi0`16eyuiy2*B%@TE zXlIx?5a7v@bKmTqB?s+bUyQ~jw#EOE@O|Syk4|^?&W?Y*v9C80(LI^t!~5)f6im`Y zqzAa0^vr?IKO38hXV%zMSmoI4v)!*(v9U0(V{<#x8k@>`OR?dw`Ou!4?ced#RQ$5U zrNSvkYn9_c_kZa`qb@0Mw*sr0(vbQ8&du-t?_P))qyQ=K z*DAnje&F};>tFtqUiL)h+Ah}5SY?sCLZdRlMy2D3Dji3>`oj?WE>fk9XRy$SBUtD~ NfRce4Qs9p&Z~-vaDPI5p literal 0 HcmV?d00001 diff --git a/test/data/models/srpde/15D_test1/X.csv b/test/data/models/srpde/15D_test1/X.csv new file mode 100644 index 00000000..af9f4164 --- /dev/null +++ b/test/data/models/srpde/15D_test1/X.csv @@ -0,0 +1,202 @@ +"","x" +"1"," 2.07486803318707702" +"2"," 2.01960172175904118" +"3"," 0.62585289276801426" +"4","-0.02133280014994599" +"5"," 2.93268050694506899" +"6"," 4.06507757850115592" +"7"," 4.49157617174388335" +"8"," 1.70157538046798473" +"9"," 2.46865803389176053" +"10"," 2.39654626405486137" +"11"," 1.58339448567983609" +"12"," 2.38492928871777599" +"13"," 3.10647800052876555" +"14"," 0.92340667068383286" +"15","-0.14161644225706560" +"16"," 2.12980598040358737" +"17"," 3.78435382475481852" +"18"," 1.75979739994542883" +"19"," 2.79312478851270907" +"20"," 1.96039222783765577" +"21"," 1.27126994184520958" +"22"," 1.64593286566607877" +"23"," 2.42951563973856777" +"24"," 2.75739646415917239" +"25"," 2.55324498223854501" +"26"," 2.79523494101235581" +"27"," 0.95298211688623202" +"28"," 2.61852012615275420" +"29"," 1.33727407947713051" +"30"," 2.94657056303429377" +"31"," 2.78335744573109567" +"32"," 1.27736891817671161" +"33"," 1.88711209706925831" +"34"," 2.10800658679580177" +"35"," 2.44931143678754459" +"36"," 2.30089676698912404" +"37"," 3.45111546455162399" +"38"," 2.46332275458126082" +"39"," 2.62803901020807418" +"40"," 1.88796889384705890" +"41"," 2.61965119583885908" +"42"," 2.13114452652714848" +"43"," 3.72481445861992988" +"44"," 1.25462382626583890" +"45"," 1.07246774761590968" +"46"," 2.14374889205354613" +"47"," 2.62293501033055199" +"48"," 1.43304296406001130" +"49"," 1.56921397697812104" +"50"," 2.67991664454225642" +"51"," 1.57399122071257302" +"52"," 0.81455085439220953" +"53"," 1.33293679956453781" +"54"," 1.42461385679897234" +"55"," 4.18535526830047289" +"56"," 0.77259593046056763" +"57"," 1.79719793797462413" +"58"," 2.24812897946446366" +"59"," 1.51119289604529250" +"60"," 3.44625886378965562" +"61"," 2.19662856906679904" +"62"," 3.69357270459356801" +"63"," 2.27402652951050044" +"64"," 2.89472089759293461" +"65"," 1.90966013387290023" +"66"," 1.05353169121375534" +"67"," 2.46669297503030327" +"68"," 1.86236354888873734" +"69"," 3.90530007443807969" +"70"," 2.50286421740292075" +"71"," 4.30339427725384738" +"72"," 2.18197605020490704" +"73"," 1.39413731293219900" +"74"," 2.65494005583289328" +"75"," 2.26415361562518491" +"76"," 1.08987879734682713" +"77"," 3.20767150093124442" +"78"," 4.30092961914166949" +"79"," 2.30552353981672020" +"80"," 0.73050729448122143" +"81"," 0.15427863100900452" +"82"," 2.24875565510495079" +"83"," 0.94172054663688498" +"84"," 1.52714385985917467" +"85"," 1.69522314630529713" +"86"," 0.73028958913606812" +"87"," 1.71899245835684766" +"88"," 2.37057523227810263" +"89"," 2.13189907285438851" +"90"," 2.67130294366932830" +"91"," 2.00813352645413179" +"92"," 1.31213805146074725" +"93"," 1.78068662117993148" +"94"," 0.73216350458313895" +"95"," 1.93672863708395626" +"96"," 2.34410189453955731" +"97"," 1.97579008350610663" +"98"," 3.30708685559240934" +"99"," 3.15570665001113282" +"100"," 0.87655558947378331" +"101","-0.46246124871834304" +"102"," 1.58505737259994506" +"103"," 2.39267790626490839" +"104"," 1.39149640239230932" +"105"," 3.79184339648936586" +"106"," 2.61021472979569147" +"107"," 1.87907862192352959" +"108"," 1.80694054962641615" +"109"," 0.89136685828312534" +"110"," 0.49455633836246005" +"111"," 1.69243762778271312" +"112"," 1.85141046230032558" +"113"," 1.48480621430700310" +"114"," 3.02076765019478044" +"115"," 1.70259208752457925" +"116"," 2.57480703614521289" +"117"," 2.19178250234282190" +"118"," 1.10139832161648732" +"119"," 2.01781603587137015" +"120"," 2.22147418448338874" +"121"," 1.98938985036483706" +"122"," 1.75132190362486240" +"123"," 3.18195766189324214" +"124"," 1.99016231514523256" +"125"," 1.79017574821337555" +"126"," 1.18862455501704067" +"127"," 1.60280893846354777" +"128"," 2.26938219193511959" +"129"," 1.90206742763929904" +"130"," 2.84182426960474865" +"131"," 2.30543880170507398" +"132"," 2.49359120528187050" +"133"," 2.67422523746086460" +"134"," 2.93783626682899657" +"135"," 3.66463849695484267" +"136"," 1.22704898627696979" +"137"," 1.74306897643744696" +"138"," 0.71925915760119397" +"139"," 0.57442270663849615" +"140"," 1.40083811587949691" +"141"," 0.52282715573984140" +"142"," 0.92876718970788463" +"143"," 1.64157286994633211" +"144"," 1.74637844676512821" +"145"," 1.57119910181174172" +"146"," 2.67698628598618171" +"147"," 2.77137012425471685" +"148"," 2.74009275725060153" +"149"," 3.30297665725940615" +"150"," 1.61020686667964874" +"151"," 3.48787974311919413" +"152"," 1.07201027812453198" +"153"," 3.22148646844304887" +"154"," 2.45442823311749869" +"155"," 1.91333419492000711" +"156"," 2.22968756358027509" +"157"," 4.94868302289717299" +"158"," 1.47437440464938474" +"159"," 1.29272119071994407" +"160"," 2.45431871773667254" +"161"," 0.92988761943330744" +"162"," 2.50978223327529903" +"163"," 2.44764313886776730" +"164"," 2.40080325449849585" +"165","-0.29382039131615123" +"166"," 2.00127482061020023" +"167"," 1.63051130429997748" +"168"," 1.49842398853276926" +"169"," 2.24521342823397108" +"170"," 0.52225575217518028" +"171"," 0.25273950732196826" +"172"," 1.52628474721225871" +"173"," 1.92456030113522503" +"174"," 3.71578416925390176" +"175"," 0.25740125380837942" +"176"," 1.00272057726419028" +"177"," 3.22363482755933717" +"178"," 4.12093858050953088" +"179"," 2.35155333659243482" +"180"," 2.92564162268771666" +"181"," 2.12878814157239082" +"182"," 1.93857625812243994" +"183"," 2.81131893203941274" +"184"," 3.08982948154784420" +"185"," 1.88311457768704771" +"186"," 1.18830462824659699" +"187"," 2.49315794227753784" +"188"," 3.25627679301413764" +"189"," 1.54442831419863280" +"190"," 1.21475486298948709" +"191"," 3.36114189030978228" +"192"," 3.45622586765430073" +"193"," 1.54259431762089028" +"194"," 2.22729424937022591" +"195"," 1.21660141167399338" +"196"," 1.18254625087475751" +"197"," 3.10601070084300046" +"198"," 0.39331557929939964" +"199"," 2.48316358285746741" +"200"," 1.96071986658498743" +"201"," 2.90990031015963613" diff --git a/test/data/models/srpde/15D_test1/y.csv b/test/data/models/srpde/15D_test1/y.csv new file mode 100644 index 00000000..b65a4874 --- /dev/null +++ b/test/data/models/srpde/15D_test1/y.csv @@ -0,0 +1,202 @@ +"","x" +"1"," 0.081197619709670876" +"2","-0.602846889955178544" +"3","-0.818562009552709524" +"4"," 2.275102535982009400" +"5"," 1.114486873994390947" +"6"," 2.216044670528655391" +"7"," 2.577174893081187079" +"8","-0.618334073215769608" +"9"," 0.769168902614808303" +"10"," 0.456122481868861396" +"11","-0.298637830523394210" +"12"," 0.241657078201981595" +"13"," 1.081963145283629357" +"14","-1.242276581064002849" +"15","-2.235781620114730472" +"16","-0.136157476617479761" +"17"," 2.203799082871624293" +"18","-0.478510867965915687" +"19"," 0.627140134614522560" +"20"," 0.120842312413042163" +"21","-1.066991739511183201" +"22","-1.048033825156150511" +"23"," 0.598118796600000557" +"24"," 0.663382997106763739" +"25"," 0.610812232941872701" +"26"," 0.901510018965793636" +"27","-1.105961269720212137" +"28","-0.567897584098504216" +"29","-0.550602904219984257" +"30"," 0.826266122363876421" +"31"," 0.800554201117846809" +"32","-0.817559827350611945" +"33","-0.826442180267674131" +"34"," 0.174058458610690026" +"35"," 0.732983749607520552" +"36"," 0.326332421555185548" +"37"," 0.987378061456798517" +"38","-0.485945283854981813" +"39"," 0.476374154609898681" +"40","-0.694398616186783668" +"41"," 0.191808441685650255" +"42","-0.308146921820151076" +"43"," 0.836373681126892921" +"44","-1.297352370093414642" +"45","-1.818513065204446999" +"46","-1.073762671312833206" +"47","-0.411637152797055761" +"48","-1.382824139586925183" +"49","-1.271139885911472422" +"50","-0.434817518797995795" +"51","-0.851386641629880314" +"52","-1.869645775663594245" +"53","-1.483866457740937728" +"54","-1.227652725987769866" +"55"," 0.887178856645518432" +"56","-2.196553985140447196" +"57","-0.532100344769390388" +"58","-0.508332845955832280" +"59","-0.794619169556984861" +"60"," 0.487115953657359324" +"61","-0.955918611004272334" +"62"," 0.069631711069013891" +"63","-0.592491101149739685" +"64"," 0.238462847032425929" +"65","-0.798405851837671099" +"66","-2.123781522854224502" +"67","-0.660678580843580665" +"68","-0.761473164911995126" +"69"," 1.262240706922680422" +"70","-0.338596545920724301" +"71"," 0.981575745793532795" +"72","-0.530502787621053851" +"73","-1.316378198294271717" +"74","-0.443604926501622421" +"75","-1.002713819789004646" +"76","-1.964277567999654250" +"77"," 0.896632027664640452" +"78"," 0.209910036388083254" +"79","-0.486084069743108138" +"80","-2.395531907039422759" +"81","-2.220186904047479093" +"82","-1.246643916228164173" +"83","-2.561118104801608286" +"84","-1.281139061653285616" +"85","-0.140718204160206944" +"86","-0.720358463397835047" +"87"," 0.224116870246588495" +"88"," 0.568095764986295992" +"89"," 0.638875547768579577" +"90"," 0.519338404809621901" +"91","-0.020173630798385411" +"92","-0.414341924869641054" +"93"," 0.596971078324013749" +"94","-0.413495137671030966" +"95"," 0.493184766852310053" +"96"," 0.772293808193265652" +"97","-0.004591519828333501" +"98"," 1.459597886742837192" +"99"," 1.255914678038436039" +"100","-0.702951667439366212" +"101","-2.263200026321835701" +"102"," 0.256557809738872544" +"103"," 0.805188775640985788" +"104","-0.195203923265836604" +"105"," 2.386164743595400761" +"106"," 0.950244067862753283" +"107"," 0.506540404503474373" +"108"," 0.609992186193584085" +"109","-0.425696278684329854" +"110","-0.727543913716977353" +"111"," 0.107632133434931165" +"112"," 0.109117791702413258" +"113"," 1.004416337529787651" +"114"," 1.321697792419083584" +"115"," 0.499749044516004715" +"116"," 0.513967880039894687" +"117"," 1.746588001326233375" +"118","-0.200885623107743883" +"119"," 0.475206444870594213" +"120"," 1.161209617745791345" +"121"," 0.803035413505593709" +"122"," 1.468895648888076444" +"123"," 2.031223256301254221" +"124"," 1.278640137136173305" +"125"," 1.055917445454992443" +"126"," 0.844268262356076882" +"127"," 1.335968821336090517" +"128"," 1.005575095124026319" +"129"," 1.393023471011727965" +"130"," 2.218167199877717266" +"131"," 1.551792323295093867" +"132"," 2.203784869167943583" +"133"," 1.596635598872182094" +"134"," 1.609223695666825549" +"135"," 2.559978676533847697" +"136"," 0.185597336993943263" +"137"," 1.228667547282595640" +"138"," 0.152694278595426780" +"139","-0.112223870507188350" +"140"," 0.604993200791006713" +"141"," 0.452807382671064462" +"142"," 0.809868107306961238" +"143"," 1.847122275637444133" +"144"," 1.629083470213414042" +"145"," 1.623573436246495749" +"146"," 2.117583048100763143" +"147"," 2.010595137347090500" +"148"," 3.785043901264580235" +"149"," 3.309905792453373685" +"150"," 1.218844208827104758" +"151"," 3.900926856974189505" +"152"," 1.452962136893590106" +"153"," 4.142997655445231686" +"154"," 2.927458121670964530" +"155"," 2.985847210339960700" +"156"," 3.603947542864965214" +"157"," 5.939674706135633642" +"158"," 2.568768516067158281" +"159"," 2.908418998023970303" +"160"," 3.695640194294521841" +"161"," 1.799709813912655498" +"162"," 4.115124934740832074" +"163"," 3.200015483480883827" +"164"," 4.008333568228327870" +"165"," 1.750723346209625886" +"166"," 2.668047415401911149" +"167"," 3.064717476072013724" +"168"," 3.288693930312820868" +"169"," 2.751798356262179279" +"170"," 1.772986058845921198" +"171"," 1.553839786341166818" +"172"," 3.279941140983821946" +"173"," 3.365532926151614479" +"174"," 5.370326265058639414" +"175"," 2.187964817818513374" +"176"," 2.803993839404772981" +"177"," 4.867724942797976517" +"178"," 5.567815874006262433" +"179"," 4.209006215122097494" +"180"," 4.092554530514062705" +"181"," 3.068863936930306568" +"182"," 3.917945830959328024" +"183"," 4.350837623185712211" +"184"," 4.567200185702278148" +"185"," 3.757812854067492658" +"186"," 3.350641613744831382" +"187"," 4.113111583975388008" +"188"," 5.746758684505715031" +"189"," 3.055801883597678792" +"190"," 3.112666622402328276" +"191"," 6.036564415186220778" +"192"," 5.751153580500278473" +"193"," 3.969252707640038125" +"194"," 3.903069675974447872" +"195"," 3.268460147731631515" +"196"," 3.664717357769891937" +"197"," 4.827373049870498534" +"198"," 2.217535553708643192" +"199"," 3.636472010895475115" +"200"," 3.564779579505869211" +"201"," 3.707540555750358457" diff --git a/test/data/models/srpde/25D_test1/X.csv b/test/data/models/srpde/25D_test1/X.csv new file mode 100644 index 00000000..b689db58 --- /dev/null +++ b/test/data/models/srpde/25D_test1/X.csv @@ -0,0 +1,3692 @@ +"","x" +"1","-0.7272796453908085823" +"2","-0.7934641088359057903" +"3","-0.6318662106059491634" +"4"," 0.7632695026695728302" +"5","-0.5460874154232442379" +"6"," 0.5289024985395371914" +"7"," 0.9067939645610749722" +"8","-0.0310274255461990833" +"9","-0.8789103440940380096" +"10"," 0.9081145748496055603" +"11"," 0.2000226504169404507" +"12","-0.5247015687637031078" +"13","-0.3941230690106749535" +"14","-0.0079116066917777061" +"15","-0.1633934779092669487" +"16","-0.4475713646970689297" +"17","-0.3678734484128654003" +"18"," 0.1263416819274425507" +"19","-0.0682100933045148849" +"20","-0.9891206445172429085" +"21","-0.2011199477128684521" +"22"," 0.8376593831926584244" +"23"," 0.7787753501906991005" +"24","-0.6737983413040637970" +"25","-0.2120889648795127869" +"26"," 0.0589158181101083755" +"27"," 0.6554324552416801453" +"28"," 0.2622620100155472755" +"29"," 0.8960821968503296375" +"30"," 0.3367717317305505276" +"31"," 0.5722602438181638718" +"32"," 0.7110729310661554337" +"33","-0.1479793004691600800" +"34","-0.1269996697083115578" +"35","-0.9223611820489168167" +"36"," 0.0994944842532277107" +"37"," 0.3020712523721158504" +"38","-0.6080666389316320419" +"39","-0.0328634129837155342" +"40","-0.0961409471929073334" +"41"," 0.0315292109735310078" +"42"," 0.3569057057611644268" +"43","-0.3007416967302560806" +"44"," 0.2358106649480760098" +"45","-0.4797418452799320221" +"46"," 0.4605697053484618664" +"47","-0.4741917974315583706" +"48"," 0.3391194101423025131" +"49","-0.7704569860361516476" +"50","-0.9001374300569295883" +"51"," 0.3738355468958616257" +"52","-0.1200096784159541130" +"53","-0.3059518486261367798" +"54"," 0.4094009054824709892" +"55"," 0.0557335740886628628" +"56","-0.0036287852562963963" +"57"," 0.9933328772895038128" +"58","-0.4071609238162636757" +"59"," 0.7705178735777735710" +"60"," 0.5637653460726141930" +"61","-0.1731236670166254044" +"62"," 0.7098313984461128712" +"63"," 0.3860384016297757626" +"64"," 0.1755378940142691135" +"65"," 0.4615954295732080936" +"66","-0.2889140285551548004" +"67","-0.3608759185299277306" +"68"," 0.6402297974564135075" +"69"," 0.2732670814730226994" +"70"," 0.5860139299184083939" +"71","-0.5840457645244896412" +"72"," 0.4401979888789355755" +"73"," 0.6417674846015870571" +"74"," 0.8554161698557436466" +"75","-0.7786246552132070065" +"76","-0.5661387839354574680" +"77","-0.4748832574114203453" +"78"," 0.9205109798349440098" +"79","-0.1788462707772850990" +"80","-0.8444689768366515636" +"81","-0.9528012368828058243" +"82","-0.0128773129545152187" +"83"," 0.9897688571363687515" +"84","-0.9396334281191229820" +"85","-0.4646108574233949184" +"86"," 0.4742955048568546772" +"87","-0.2648719870485365391" +"88"," 0.2442961251363158226" +"89","-0.2380232862196862698" +"90"," 0.8599992883391678333" +"91"," 0.0132367331534624100" +"92","-0.3315264200791716576" +"93","-0.4665499385446310043" +"94"," 0.8672812776640057564" +"95","-0.0070333727635443211" +"96"," 0.6091387583874166012" +"97"," 0.5529539817944169044" +"98"," 0.3222591760568320751" +"99","-0.6379218678921461105" +"100"," 0.9711537477560341358" +"101"," 0.1943658515810966492" +"102"," 0.2392534879036247730" +"103"," 0.1642828597687184811" +"104","-0.7322499905712902546" +"105"," 0.4975317982025444508" +"106"," 0.3333280403167009354" +"107"," 0.3358280379325151443" +"108"," 0.6225589262321591377" +"109","-0.8712948397733271122" +"110","-0.8845786214806139469" +"111"," 0.8978257612325251102" +"112","-0.8889277493581175804" +"113"," 0.1297362078912556171" +"114","-0.1774792503565549850" +"115","-0.0460136136971414089" +"116","-0.9830069602467119694" +"117"," 0.4993526544421911240" +"118"," 0.5963311791419982910" +"119","-0.4675875101238489151" +"120","-0.4388567176647484303" +"121","-0.0060447989962995052" +"122","-0.7446899223141372204" +"123"," 0.9624487091787159443" +"124"," 0.3694920553825795650" +"125"," 0.9263276876881718636" +"126","-0.3791455407626926899" +"127","-0.4452003911137580872" +"128"," 0.5892718946561217308" +"129","-0.4003068082965910435" +"130"," 0.5009444104507565498" +"131"," 0.3715641833841800690" +"132","-0.5564471432007849216" +"133","-0.2710199039429426193" +"134"," 0.0251426710747182369" +"135","-0.6674851463176310062" +"136"," 0.8946474795229732990" +"137","-0.5416812770999968052" +"138"," 0.1662789243273437023" +"139"," 0.7522967499680817127" +"140"," 0.6268971734680235386" +"141","-0.2774732047691941261" +"142","-0.2392677636817097664" +"143"," 0.3808539137244224548" +"144","-0.2656025504693388939" +"145"," 0.0500304996967315674" +"146","-0.0427383380010724068" +"147"," 0.3859760309569537640" +"148"," 0.6192237976938486099" +"149","-0.5454558115452528000" +"150"," 0.6036781975999474525" +"151","-0.6815046831034123898" +"152"," 0.3187816934660077095" +"153"," 0.0486278226599097252" +"154","-0.5794063434004783630" +"155","-0.0926257497631013393" +"156","-0.9256239631213247776" +"157"," 0.2388631347566843033" +"158","-0.3707151026464998722" +"159"," 0.3601784817874431610" +"160"," 0.1020231931470334530" +"161","-0.9550928920507431030" +"162","-0.6009650216437876225" +"163"," 0.5441867560148239136" +"164","-0.5038320263847708702" +"165"," 0.0293455431237816811" +"166"," 0.9852246958762407303" +"167"," 0.8431202219799160957" +"168","-0.0224011703394353390" +"169","-0.0426352345384657383" +"170"," 0.0311545878648757935" +"171","-0.1947648180648684502" +"172"," 0.6873666532337665558" +"173"," 0.5769030242227017879" +"174","-0.7385945986025035381" +"175","-0.0304595944471657276" +"176"," 0.3949393359944224358" +"177"," 0.9011939102783799171" +"178","-0.7690250985324382782" +"179"," 0.9425690355710685253" +"180"," 0.2514906744472682476" +"181","-0.1543708513490855694" +"182"," 0.9681694400496780872" +"183","-0.6787136266939342022" +"184","-0.9170842319726943970" +"185","-0.6768439994193613529" +"186"," 0.1779966559261083603" +"187"," 0.4843808738514780998" +"188"," 0.5825327858328819275" +"189"," 0.3633541367016732693" +"190"," 0.0021477253176271915" +"191"," 0.2404621271416544914" +"192"," 0.5381592502817511559" +"193"," 0.3419976923614740372" +"194"," 0.5719799390062689781" +"195","-0.0619947426021099091" +"196"," 0.1381316981278359890" +"197","-0.6872954489663243294" +"198"," 0.3714167266152799129" +"199"," 0.7033891002647578716" +"200","-0.4293092382140457630" +"201","-0.8666464695706963539" +"202","-0.4580482491292059422" +"203","-0.1830831440165638924" +"204","-0.8455783613026142120" +"205"," 0.0146321803331375122" +"206"," 0.0907726674340665340" +"207","-0.7632221747189760208" +"208"," 0.3549074409529566765" +"209","-0.6581776565872132778" +"210","-0.3344413340091705322" +"211"," 0.3895839396864175797" +"212","-0.2900024014525115490" +"213"," 0.9895303826779127121" +"214"," 0.9391104108653962612" +"215","-0.1435797642916440964" +"216","-0.7166317487135529518" +"217"," 0.2591339931823313236" +"218"," 0.2464492130093276501" +"219","-0.5595113616436719894" +"220","-0.9376316629350185394" +"221"," 0.4175708531402051449" +"222"," 0.0635382961481809616" +"223","-0.0254126247018575668" +"224"," 0.9002077914774417877" +"225","-0.4516508607193827629" +"226"," 0.0474579259753227234" +"227"," 0.5310648651793599129" +"228"," 0.7636860110796988010" +"229"," 0.8014240148477256298" +"230"," 0.0012531001120805740" +"231","-0.5427403086796402931" +"232","-0.5356031479313969612" +"233"," 0.3418241054750978947" +"234","-0.6119271861389279366" +"235"," 0.3914300436154007912" +"236","-0.5204784213565289974" +"237"," 0.5503637320362031460" +"238"," 0.3055107472464442253" +"239"," 0.6298202928155660629" +"240"," 0.4666906185448169708" +"241"," 0.8171441676095128059" +"242"," 0.3349200510419905186" +"243","-0.4970111749134957790" +"244","-0.8031348846852779388" +"245","-0.2307685678824782372" +"246","-0.9742555157281458378" +"247","-0.7691097646020352840" +"248"," 0.7739182291552424431" +"249"," 0.1477808887138962746" +"250","-0.3644773531705141068" +"251","-0.1803140570409595966" +"252"," 0.7929410701617598534" +"253","-0.2916742470115423203" +"254"," 0.2584846271201968193" +"255","-0.3011642568744719028" +"256","-0.7482212232425808907" +"257","-0.4815045222640037537" +"258","-0.7783554489724338055" +"259"," 0.7659119507297873497" +"260"," 0.8077897019684314728" +"261"," 0.2146497266367077827" +"262"," 0.0004011490382254124" +"263"," 0.8259227769449353218" +"264"," 0.6804914828389883041" +"265","-0.7488966612145304680" +"266"," 0.7848350023850798607" +"267","-0.2978219715878367424" +"268"," 0.0448379474692046642" +"269","-0.1685724095441401005" +"270","-0.2821797365322709084" +"271","-0.7180597838014364243" +"272","-0.7575594228692352772" +"273"," 0.5902969012968242168" +"274"," 0.6595674762502312660" +"275","-0.1681995973922312260" +"276"," 0.4369988436810672283" +"277","-0.3984825941734015942" +"278","-0.4629402686841785908" +"279"," 0.5944955004379153252" +"280","-0.9448286290280520916" +"281","-0.0340103204362094402" +"282"," 0.1732500097714364529" +"283","-0.4649138040840625763" +"284","-0.6768014295957982540" +"285"," 0.9543692986480891705" +"286"," 0.8337333709932863712" +"287","-0.2822509524412453175" +"288","-0.2971562165766954422" +"289"," 0.0782382059842348099" +"290","-0.1437198426574468613" +"291"," 0.3751944783143699169" +"292","-0.1695846179500222206" +"293","-0.0731503036804497242" +"294"," 0.8210722538642585278" +"295","-0.5913401306606829166" +"296"," 0.6161317946389317513" +"297"," 0.4569625752046704292" +"298"," 0.6554772793315351009" +"299"," 0.7166907503269612789" +"300","-0.7188064069487154484" +"301"," 0.4619928258471190929" +"302","-0.6498959395103156567" +"303","-0.0264797136187553406" +"304"," 0.8600923521444201469" +"305"," 0.0744496691040694714" +"306","-0.1200171001255512238" +"307"," 0.5610286951996386051" +"308","-0.9817911125719547272" +"309"," 0.1110945665277540684" +"310"," 0.2803166783414781094" +"311","-0.4462925191037356853" +"312","-0.5317345326766371727" +"313"," 0.8089093361049890518" +"314"," 0.4971143370494246483" +"315","-0.6347386590205132961" +"316"," 0.4620435074903070927" +"317","-0.8382187285460531712" +"318","-0.6925365799106657505" +"319","-0.3739101211540400982" +"320"," 0.4899982716888189316" +"321","-0.5470302845351397991" +"322","-0.1342161977663636208" +"323","-0.4465089817531406879" +"324","-0.1048740372061729431" +"325"," 0.2628958243876695633" +"326"," 0.8948010825552046299" +"327"," 0.3943859441205859184" +"328","-0.1160419089719653130" +"329","-0.5235559088177978992" +"330","-0.9753951514139771461" +"331"," 0.3426369610242545605" +"332","-0.6201774850487709045" +"333","-0.8453460079617798328" +"334","-0.4676167829893529415" +"335","-0.1472219242714345455" +"336"," 0.3467871942557394505" +"337"," 0.6561653902754187584" +"338"," 0.5201434688642621040" +"339"," 0.8924532867968082428" +"340"," 0.3215462556108832359" +"341"," 0.2520269616506993771" +"342"," 0.6201744647696614265" +"343"," 0.8415605495683848858" +"344"," 0.6181429466232657433" +"345","-0.5917177540250122547" +"346","-0.9083803212270140648" +"347","-0.5691459886729717255" +"348","-0.5772576914168894291" +"349","-0.1735866456292569637" +"350"," 0.1271060365252196789" +"351"," 0.1053603002801537514" +"352"," 0.3929660674184560776" +"353"," 0.2502268105745315552" +"354"," 0.4834696738980710506" +"355"," 0.1171071808785200119" +"356"," 0.1540812784805893898" +"357"," 0.3806480742059648037" +"358"," 0.3375283358618617058" +"359","-0.5646986528299748898" +"360","-0.8332675015553832054" +"361","-0.1290989890694618225" +"362"," 0.7770606405101716518" +"363","-0.6056220475584268570" +"364","-0.6525120856240391731" +"365"," 0.3000001576729118824" +"366","-0.8774110982194542885" +"367","-0.5214704689569771290" +"368"," 0.1935141715221107006" +"369"," 0.7270699050277471542" +"370"," 0.8506394582800567150" +"371"," 0.8230513394810259342" +"372","-0.7190821138210594654" +"373"," 0.6011383887380361557" +"374"," 0.6475631208159029484" +"375"," 0.7682538451626896858" +"376","-0.0956119289621710777" +"377","-0.9489383776672184467" +"378"," 0.3349327952601015568" +"379","-0.6220102063380181789" +"380"," 0.6673671170137822628" +"381"," 0.5629336265847086906" +"382"," 0.9738344275392591953" +"383","-0.9242689427919685841" +"384"," 0.7370189027860760689" +"385","-0.7818770026788115501" +"386"," 0.8070561042986810207" +"387"," 0.6978320772759616375" +"388"," 0.6635078340768814087" +"389"," 0.4331330033019185066" +"390"," 0.1450169370509684086" +"391"," 0.7859135465696454048" +"392"," 0.5076474705711007118" +"393","-0.2791313980706036091" +"394"," 0.7766658836044371128" +"395","-0.2898052115924656391" +"396","-0.5336030055768787861" +"397","-0.1767833507619798183" +"398","-0.7474432257004082203" +"399"," 0.2323757940903306007" +"400"," 0.0739651354961097240" +"401","-0.2031569778919219971" +"402"," 0.6026760591194033623" +"403"," 0.0826658322475850582" +"404","-0.1815407476387917995" +"405"," 0.1571520254947245121" +"406","-0.8644579476676881313" +"407","-0.7304455474950373173" +"408"," 0.0536552714183926582" +"409"," 0.5240666172467172146" +"410","-0.1471604006364941597" +"411","-0.7076698485761880875" +"412","-0.7732207663357257843" +"413"," 0.6589273386634886265" +"414"," 0.4081352469511330128" +"415","-0.9845816930755972862" +"416","-0.4888716796413064003" +"417"," 0.4346037474460899830" +"418"," 0.6105269966647028923" +"419","-0.1699198237620294094" +"420","-0.2656640410423278809" +"421"," 0.0330091873183846474" +"422","-0.0353202936239540577" +"423","-0.3067883597686886787" +"424","-0.3703723889775574207" +"425","-0.2896185265854001045" +"426"," 0.1939825741574168205" +"427"," 0.2309476253576576710" +"428","-0.4435100140981376171" +"429","-0.0189455775544047356" +"430","-0.3005652977153658867" +"431"," 0.2015405995771288872" +"432"," 0.0224732365459203720" +"433"," 0.8121820609085261822" +"434","-0.4256191118620336056" +"435","-0.4068594728596508503" +"436"," 0.1512195486575365067" +"437"," 0.0296073872596025467" +"438"," 0.4477973398752510548" +"439","-0.0444527543149888515" +"440","-0.8678727154619991779" +"441"," 0.1546778054907917976" +"442"," 0.9886371586471796036" +"443","-0.5039857807569205761" +"444","-0.0994629962369799614" +"445"," 0.4829040239565074444" +"446"," 0.3697356893680989742" +"447"," 0.5062703350558876991" +"448","-0.4268582141958177090" +"449"," 0.5366619727574288845" +"450","-0.7021174421533942223" +"451"," 0.3996500675566494465" +"452","-0.8918842403218150139" +"453"," 0.5962301609106361866" +"454","-0.4214467210695147514" +"455","-0.9684181185439229012" +"456","-0.5890592592768371105" +"457","-0.7341788271442055702" +"458","-0.3730503222905099392" +"459","-0.5016765766777098179" +"460","-0.6176054789684712887" +"461","-0.1954531860537827015" +"462"," 0.1622565286234021187" +"463","-0.3005706369876861572" +"464"," 0.6631926312111318111" +"465"," 0.3163757808506488800" +"466"," 0.0538572380319237709" +"467"," 0.6169821023941040039" +"468","-0.4115232140757143497" +"469"," 0.6029518144205212593" +"470","-0.3594929762184619904" +"471"," 0.6221324773505330086" +"472"," 0.2800396331585943699" +"473","-0.9116060333326458931" +"474"," 0.6084518921561539173" +"475"," 0.6819211966358125210" +"476"," 0.0164901628158986568" +"477"," 0.7913512485101819038" +"478","-0.2745421873405575752" +"479"," 0.3263316121883690357" +"480","-0.9242491070181131363" +"481","-0.7641911087557673454" +"482","-0.9655409916304051876" +"483","-0.8460361855104565620" +"484","-0.7819936559535562992" +"485"," 0.4996858546510338783" +"486","-0.3462541056796908379" +"487"," 0.2150283800438046455" +"488"," 0.5152464648708701134" +"489","-0.9121304461732506752" +"490","-0.7107802126556634903" +"491"," 0.8373974957503378391" +"492","-0.5380617720074951649" +"493"," 0.5726623921655118465" +"494","-0.2774421907961368561" +"495","-0.4741549142636358738" +"496"," 0.4419514206238090992" +"497"," 0.3162877899594604969" +"498"," 0.5063385893590748310" +"499","-0.2812044881284236908" +"500","-0.9468623399734497070" +"501"," 0.3539896830916404724" +"502","-0.5576783069409430027" +"503"," 0.7867435091175138950" +"504"," 0.6577611374668776989" +"505"," 0.8702485794201493263" +"506"," 0.8255982114933431149" +"507"," 0.1109137334860861301" +"508","-0.3307932545430958271" +"509"," 0.2610687152482569218" +"510","-0.3519584364257752895" +"511"," 0.6648021251894533634" +"512","-0.9260369054973125458" +"513","-0.8261942784301936626" +"514"," 0.6675363159738481045" +"515","-0.5355190373957157135" +"516","-0.0172496065497398376" +"517","-0.6491143680177628994" +"518"," 0.4641090012155473232" +"519"," 0.4724016506224870682" +"520"," 0.4596086377277970314" +"521"," 0.2298682206310331821" +"522"," 0.3768863938748836517" +"523","-0.8155684047378599644" +"524","-0.4889924442395567894" +"525","-0.4737741113640367985" +"526","-0.5046795755624771118" +"527"," 0.8708254038356244564" +"528","-0.7334721945226192474" +"529","-0.0285766017623245716" +"530","-0.5070055220276117325" +"531","-0.6596663314849138260" +"532","-0.0069427341222763062" +"533","-0.8339811167679727077" +"534"," 0.9366388591006398201" +"535"," 0.6212198273278772831" +"536"," 0.6120589999482035637" +"537","-0.3015788053162395954" +"538","-0.4500798443332314491" +"539","-0.3362769004888832569" +"540","-0.8029412692412734032" +"541","-0.2510082460939884186" +"542","-0.6036087572574615479" +"543"," 0.8673491664230823517" +"544","-0.0375313046388328075" +"545"," 0.7370650228112936020" +"546","-0.1526780347339808941" +"547","-0.2928850417956709862" +"548"," 0.1584115801379084587" +"549"," 0.8206113795749843121" +"550"," 0.9250871809199452400" +"551","-0.6694493796676397324" +"552","-0.4730740478262305260" +"553","-0.7851934568025171757" +"554","-0.7191105270758271217" +"555"," 0.1192857422865927219" +"556"," 0.4673550818115472794" +"557","-0.7180703631602227688" +"558","-0.4805551385506987572" +"559"," 0.7542243441566824913" +"560"," 0.6648092083632946014" +"561"," 0.6920772823505103588" +"562","-0.3157313028350472450" +"563","-0.2799023156985640526" +"564"," 0.1916010132990777493" +"565"," 0.2086912575177848339" +"566"," 0.9174158312380313873" +"567","-0.5135548985563218594" +"568"," 0.2523499331437051296" +"569"," 0.3924905792810022831" +"570"," 0.5695215011946856976" +"571"," 0.7900943425484001637" +"572","-0.9422259372659027576" +"573","-0.8445781636983156204" +"574"," 0.6385814878158271313" +"575","-0.9551865439862012863" +"576","-0.4511907454580068588" +"577","-0.4339075302705168724" +"578"," 0.1080655017867684364" +"579"," 0.7088327212259173393" +"580","-0.0239484566263854504" +"581"," 0.2696860153228044510" +"582"," 0.8455459917895495892" +"583","-0.7027207566425204277" +"584"," 0.9360066456720232964" +"585","-0.6477103726938366890" +"586"," 0.8844433315098285675" +"587","-0.0588486334308981895" +"588","-0.9414537595584988594" +"589"," 0.5850279419682919979" +"590","-0.1227442626841366291" +"591"," 0.3881909339688718319" +"592","-0.0341466371901333332" +"593"," 0.6372786224819719791" +"594","-0.9014252764172852039" +"595","-0.6782335992902517319" +"596"," 0.2130834134295582771" +"597","-0.6567933866754174232" +"598"," 0.3411762434989213943" +"599"," 0.2187259462662041187" +"600","-0.3807020033709704876" +"601","-0.2262108679860830307" +"602","-0.9101260593160986900" +"603","-0.0163341914303600788" +"604"," 0.0686321528628468513" +"605"," 0.9730358924716711044" +"606","-0.4288748223334550858" +"607","-0.5393040836788713932" +"608"," 0.6224513063207268715" +"609"," 0.9404286998324096203" +"610"," 0.5998555715195834637" +"611"," 0.6881348728202283382" +"612"," 0.4394249897450208664" +"613"," 0.7288534208200871944" +"614","-0.3314197771251201630" +"615"," 0.9469353049062192440" +"616","-0.4645892078988254070" +"617"," 0.7170171686448156834" +"618"," 0.8959105648100376129" +"619"," 0.8556634448468685150" +"620","-0.7967552705667912960" +"621","-0.9208907154388725758" +"622","-0.2054615868255496025" +"623"," 0.6443147636018693447" +"624"," 0.5521152312867343426" +"625"," 0.6642992822453379631" +"626"," 0.3887789286673069000" +"627"," 0.9701510309241712093" +"628","-0.3356353747658431530" +"629"," 0.4120886856690049171" +"630"," 0.8355409600771963596" +"631"," 0.0243473839946091175" +"632","-0.2357572931796312332" +"633"," 0.7152453688904643059" +"634","-0.3752216980792582035" +"635"," 0.3681082706898450851" +"636","-0.6383754550479352474" +"637","-0.4067669957876205444" +"638"," 0.6618897686712443829" +"639"," 0.9479959569871425629" +"640","-0.1797846001572906971" +"641"," 0.5972843365743756294" +"642","-0.9822994139976799488" +"643","-0.3542021140456199646" +"644"," 0.7979788878001272678" +"645","-0.9042265960015356541" +"646","-0.6013412773609161377" +"647","-0.6240632329136133194" +"648"," 0.9306711992248892784" +"649"," 0.0607669549062848091" +"650"," 0.0415648259222507477" +"651","-0.0768416286446154118" +"652"," 0.2087493948638439178" +"653","-0.5664908573962748051" +"654","-0.5877552321180701256" +"655"," 0.7620868524536490440" +"656","-0.1374065913259983063" +"657"," 0.5412569656036794186" +"658"," 0.9144439501687884331" +"659"," 0.2705390406772494316" +"660"," 0.5664482447318732738" +"661","-0.9860063605010509491" +"662","-0.4413210274651646614" +"663"," 0.1528507936745882034" +"664"," 0.2267171624116599560" +"665"," 0.9344002082943916321" +"666","-0.1041075387038290501" +"667"," 0.0097682238556444645" +"668"," 0.9899044795893132687" +"669"," 0.2463276810012757778" +"670"," 0.0526304477825760841" +"671","-0.4089445057325065136" +"672","-0.0872921631671488285" +"673"," 0.0997228086926043034" +"674"," 0.6981057608500123024" +"675"," 0.5845686639659106731" +"676"," 0.4511883649975061417" +"677"," 0.5499393702484667301" +"678","-0.0760901938192546368" +"679"," 0.9843821800313889980" +"680"," 0.9375366191379725933" +"681"," 0.5440060771070420742" +"682"," 0.8845780701376497746" +"683","-0.4174780319444835186" +"684"," 0.7491574748419225216" +"685"," 0.8756328080780804157" +"686","-0.6914131706580519676" +"687"," 0.5360720022581517696" +"688","-0.0941744819283485413" +"689"," 0.3031962201930582523" +"690","-0.3689610548317432404" +"691","-0.5960437292233109474" +"692","-0.2858318923972547054" +"693"," 0.3235842110589146614" +"694"," 0.5026758383028209209" +"695"," 0.7226261775940656662" +"696"," 0.8044015150517225266" +"697"," 0.7908487883396446705" +"698","-0.6310642175376415253" +"699"," 0.7985249357298016548" +"700"," 0.2071902216412127018" +"701"," 0.1497715162113308907" +"702","-0.5209061647765338421" +"703"," 0.0286959661170840263" +"704"," 0.6736891604959964752" +"705","-0.3472590432502329350" +"706","-0.5492845438420772552" +"707","-0.4851621766574680805" +"708"," 0.2298565506935119629" +"709","-0.2225596085190773010" +"710","-0.3394099446013569832" +"711"," 0.9932340295054018497" +"712"," 0.1941252104006707668" +"713","-0.2098593311384320259" +"714","-0.6304770503193140030" +"715"," 0.2220665970817208290" +"716"," 0.1232187720015645027" +"717"," 0.0847499254159629345" +"718"," 0.1296430816873908043" +"719"," 0.8813988664187490940" +"720","-0.6147105563431978226" +"721","-0.2581622567959129810" +"722"," 0.0238224053755402565" +"723","-0.6619638460688292980" +"724"," 0.0046881870366632938" +"725","-0.6337691862136125565" +"726","-0.6528129926882684231" +"727","-0.1990763894282281399" +"728","-0.7503702943213284016" +"729"," 0.6930544371716678143" +"730","-0.7849616613239049911" +"731"," 0.7160900393500924110" +"732","-0.5954447323456406593" +"733","-0.6752462964504957199" +"734","-0.1673375000245869160" +"735","-0.8494746112264692783" +"736"," 0.1361623546108603477" +"737"," 0.6764464741572737694" +"738"," 0.0730719957500696182" +"739"," 0.9088618289679288864" +"740"," 0.4345969650894403458" +"741","-0.1972280349582433701" +"742"," 0.6154226986691355705" +"743","-0.3287019282579421997" +"744","-0.8007045430131256580" +"745"," 0.1827762960456311703" +"746"," 0.1235452829860150814" +"747","-0.8984419628977775574" +"748","-0.4781417273916304111" +"749"," 0.7190093416720628738" +"750"," 0.6214886335656046867" +"751","-0.1417488586157560349" +"752"," 0.0107352351769804955" +"753"," 0.4948441698215901852" +"754"," 0.2207260332070291042" +"755"," 0.2314713867381215096" +"756","-0.8381148362532258034" +"757","-0.4309263001196086407" +"758","-0.7390138874761760235" +"759","-0.1343624871224164963" +"760","-0.1626965259201824665" +"761","-0.6574342478998005390" +"762","-0.2395110558718442917" +"763"," 0.9195206360891461372" +"764"," 0.3707156009040772915" +"765"," 0.6240217164158821106" +"766"," 0.6817658860236406326" +"767"," 0.5422112997621297836" +"768","-0.7751841419376432896" +"769","-0.5108088878914713860" +"770","-0.7934644143097102642" +"771"," 0.0249117217026650906" +"772","-0.3897758936509490013" +"773"," 0.3690293743275105953" +"774","-0.8753798790276050568" +"775","-0.2871668990701436996" +"776","-0.4405328207649290562" +"777"," 0.5043553225696086884" +"778"," 0.4950640378519892693" +"779"," 0.3747756951488554478" +"780","-0.6085005132481455803" +"781","-0.2403630707412958145" +"782"," 0.3957086065784096718" +"783","-0.4071160033345222473" +"784","-0.0730219227261841297" +"785","-0.0107368757016956806" +"786","-0.8595089586451649666" +"787"," 0.9531588847748935223" +"788"," 0.8492686296813189983" +"789"," 0.0465727662667632103" +"790"," 0.7457816731184720993" +"791","-0.5531737897545099258" +"792","-0.2282538725994527340" +"793"," 0.3235828797332942486" +"794","-0.2070207661017775536" +"795"," 0.6049180217087268829" +"796"," 0.5915604410693049431" +"797"," 0.7100321953184902668" +"798"," 0.3129682550206780434" +"799","-0.5228636451065540314" +"800"," 0.6053810571320354939" +"801"," 0.8980631954036653042" +"802"," 0.8839831524528563023" +"803","-0.7929985276423394680" +"804","-0.9095559283159673214" +"805","-0.1579326516948640347" +"806"," 0.8889676411636173725" +"807","-0.9235131875611841679" +"808","-0.0177852623164653778" +"809"," 0.4030189746990799904" +"810"," 0.3004801231436431408" +"811","-0.5651727891527116299" +"812"," 0.5953076123259961605" +"813","-0.9444382688961923122" +"814"," 0.6628813231363892555" +"815"," 0.2494522561319172382" +"816","-0.6160354795865714550" +"817","-0.3930334965698421001" +"818","-0.4953211625106632710" +"819"," 0.3895306289196014404" +"820","-0.4080297490581870079" +"821","-0.0604701261036098003" +"822","-0.5377596602775156498" +"823"," 0.0690073315054178238" +"824","-0.3467052625492215157" +"825"," 0.2191251115873456001" +"826"," 0.6081289658322930336" +"827"," 0.7087168884463608265" +"828","-0.1990146986208856106" +"829","-0.1136108729988336563" +"830"," 0.1485888077877461910" +"831","-0.9508315604180097580" +"832"," 0.4596155402250587940" +"833","-0.6705164322629570961" +"834"," 0.8770981268025934696" +"835"," 0.2092465772293508053" +"836","-0.3139318870380520821" +"837"," 0.3921780302189290524" +"838"," 0.9627474364824593067" +"839","-0.2006614543497562408" +"840"," 0.5745885968208312988" +"841","-0.6993660330772399902" +"842","-0.5153568303212523460" +"843","-0.8392779845744371414" +"844","-0.3512319363653659821" +"845"," 0.9892122927121818066" +"846","-0.9365309835411608219" +"847","-0.5122724152170121670" +"848","-0.9299117908813059330" +"849","-0.7838701312430202961" +"850","-0.5722903273999691010" +"851"," 0.3549979901872575283" +"852"," 0.2582193487323820591" +"853"," 0.0597050143405795097" +"854","-0.7063142759725451469" +"855","-0.5638074115850031376" +"856","-0.5993631477467715740" +"857","-0.0305147166363894939" +"858"," 0.9821630534715950489" +"859"," 0.0817154939286410809" +"860","-0.0901771509088575840" +"861","-0.9158385861665010452" +"862","-0.7265429580584168434" +"863","-0.0789560652337968349" +"864","-0.0418085549026727676" +"865"," 0.7659889729693531990" +"866","-0.3416113285347819328" +"867"," 0.9754798994399607182" +"868"," 0.8247674279846251011" +"869","-0.4809623560868203640" +"870"," 0.6810443205758929253" +"871","-0.4919203910976648331" +"872"," 0.8565991325303912163" +"873","-0.2514255717396736145" +"874","-0.4148501418530941010" +"875"," 0.0720738545060157776" +"876"," 0.5192093965597450733" +"877"," 0.1329595912247896194" +"878"," 0.4559018369764089584" +"879","-0.6154448371380567551" +"880","-0.0102093131281435490" +"881"," 0.8758588279597461224" +"882","-0.0730017600581049919" +"883","-0.8447959809564054012" +"884"," 0.0851468075998127460" +"885"," 0.6586819351650774479" +"886","-0.8861702415160834789" +"887","-0.9226676994003355503" +"888"," 0.9181782314553856850" +"889","-0.0862947842106223106" +"890","-0.5148065504617989063" +"891","-0.3990003685466945171" +"892","-0.4328461233526468277" +"893"," 0.5953206527046859264" +"894"," 0.0685808155685663223" +"895","-0.9824747615493834019" +"896","-0.8455937374383211136" +"897"," 0.9745753994211554527" +"898"," 0.1686664349399507046" +"899","-0.0974345710128545761" +"900","-0.6297009405680000782" +"901"," 0.4662647838704288006" +"902","-0.1720868586562573910" +"903"," 0.8946921098977327347" +"904","-0.5342226442880928516" +"905"," 0.5736826704815030098" +"906"," 0.8383667520247399807" +"907","-0.0836090031079947948" +"908"," 0.5905450303107500076" +"909","-0.4460381004028022289" +"910"," 0.6153492541052401066" +"911"," 0.2621179786510765553" +"912"," 0.6383121735416352749" +"913","-0.1685508717782795429" +"914"," 0.8224004087969660759" +"915","-0.6921719522215425968" +"916"," 0.8851854400709271431" +"917"," 0.6358582903631031513" +"918"," 0.8369605368934571743" +"919","-0.9124702457338571548" +"920"," 0.6047546714544296265" +"921"," 0.2052826946601271629" +"922"," 0.2148440876044332981" +"923"," 0.8321149307303130627" +"924","-0.0440426622517406940" +"925","-0.0668256599456071854" +"926"," 0.8613082109950482845" +"927"," 0.7925057080574333668" +"928"," 0.8751576514914631844" +"929"," 0.8021551696583628654" +"930","-0.6429265518672764301" +"931"," 0.4693131837993860245" +"932"," 0.7879453538917005062" +"933"," 0.7500511133112013340" +"934"," 0.4942893814295530319" +"935"," 0.2803524010814726353" +"936","-0.2841417328454554081" +"937"," 0.6112546292133629322" +"938"," 0.1355405976064503193" +"939"," 0.7521451590582728386" +"940"," 0.3831440950743854046" +"941","-0.4339999831281602383" +"942","-0.1564553626812994480" +"943"," 0.6558742625638842583" +"944","-0.0331649864092469215" +"945"," 0.2438810132443904877" +"946","-0.4559352672658860683" +"947"," 0.2228293805383145809" +"948","-0.9092718162573873997" +"949"," 0.5557729648426175117" +"950","-0.8454243922606110573" +"951","-0.9276352850720286369" +"952","-0.8696668245829641819" +"953"," 0.3601864259690046310" +"954"," 0.6791692408733069897" +"955","-0.9735114201903343201" +"956"," 0.7649733172729611397" +"957"," 0.1296880361624062061" +"958","-0.4239357723854482174" +"959"," 0.2925591496750712395" +"960","-0.8885162691585719585" +"961"," 0.7855818932875990868" +"962","-0.5732239927165210247" +"963"," 0.4056590367108583450" +"964","-0.1369401160627603531" +"965","-0.7606571936048567295" +"966","-0.1051042252220213413" +"967","-0.6276508150622248650" +"968","-0.0221107914112508297" +"969","-0.6670429194346070290" +"970"," 0.6549735059961676598" +"971"," 0.1998769566416740417" +"972"," 0.6797993499785661697" +"973"," 0.0977762881666421890" +"974"," 0.3460921579971909523" +"975","-0.8697189930826425552" +"976"," 0.6226749988272786140" +"977","-0.4567880998365581036" +"978","-0.8525450658053159714" +"979"," 0.3165530068799853325" +"980"," 0.5318901506252586842" +"981","-0.9179448718205094337" +"982"," 0.3199852961115539074" +"983","-0.9306624406017363071" +"984"," 0.4705418334342539310" +"985"," 0.9767446862533688545" +"986"," 0.8534024883992969990" +"987"," 0.8493012213148176670" +"988"," 0.9880423205904662609" +"989","-0.9394034855067729950" +"990","-0.7779082776978611946" +"991"," 0.3470512363128364086" +"992","-0.9650954091921448708" +"993","-0.3171511986292898655" +"994","-0.9006450078450143337" +"995","-0.9743514037691056728" +"996"," 0.8233238742686808109" +"997","-0.4325822405517101288" +"998"," 0.4838980119675397873" +"999","-0.9433959862217307091" +"1000","-0.1685850694775581360" +"1001","-0.6771758957765996456" +"1002","-0.4204165460541844368" +"1003"," 0.8141049207188189030" +"1004","-0.3190669477917253971" +"1005","-0.9713089261204004288" +"1006","-0.6925522498786449432" +"1007","-0.6266317889094352722" +"1008","-0.0669445185922086239" +"1009"," 0.6021878430619835854" +"1010"," 0.0273639396764338017" +"1011"," 0.6620417814701795578" +"1012","-0.9501001033931970596" +"1013","-0.2699187197722494602" +"1014","-0.7007371289655566216" +"1015","-0.2083509969525039196" +"1016","-0.4646047404967248440" +"1017"," 0.6222008871845901012" +"1018","-0.1509677767753601074" +"1019","-0.3988164355978369713" +"1020","-0.6078812554478645325" +"1021","-0.9182129921391606331" +"1022"," 0.1266454681754112244" +"1023","-0.4387323483824729919" +"1024"," 0.4046086166054010391" +"1025"," 0.1550993956625461578" +"1026","-0.7650212743319571018" +"1027","-0.9633821663446724415" +"1028"," 0.0286589935421943665" +"1029","-0.2983798505738377571" +"1030"," 0.2369807949289679527" +"1031","-0.3800141881220042706" +"1032"," 0.4148507146164774895" +"1033","-0.2939319810830056667" +"1034","-0.4633529083803296089" +"1035","-0.2916024620644748211" +"1036"," 0.0709196976386010647" +"1037","-0.3425429873168468475" +"1038"," 0.7918652999214828014" +"1039"," 0.7008101567625999451" +"1040","-0.7119002481922507286" +"1041","-0.0881180330179631710" +"1042"," 0.5773110543377697468" +"1043"," 0.4381589489057660103" +"1044","-0.8865719093009829521" +"1045","-0.8859730125404894352" +"1046"," 0.5251317275688052177" +"1047","-0.4188784351572394371" +"1048","-0.1163015067577362061" +"1049"," 0.1191070373170077801" +"1050"," 0.0856604878790676594" +"1051"," 0.5385677372105419636" +"1052","-0.2797077996656298637" +"1053"," 0.7496630246751010418" +"1054","-0.7089725555852055550" +"1055"," 0.6395192928612232208" +"1056","-0.0556141734123229980" +"1057","-0.6261169565841555595" +"1058"," 0.0355345788411796093" +"1059","-0.4160384340211749077" +"1060","-0.5308062522672116756" +"1061","-0.6726848543621599674" +"1062","-0.7653079219162464142" +"1063","-0.0886676269583404064" +"1064"," 0.5851615006104111671" +"1065"," 0.5047462778165936470" +"1066","-0.3145368397235870361" +"1067"," 0.6741368975490331650" +"1068","-0.3900839816778898239" +"1069","-0.1451317667961120605" +"1070"," 0.2339015360921621323" +"1071"," 0.2104742298834025860" +"1072"," 0.4745922740548849106" +"1073","-0.1292344126850366592" +"1074"," 0.0419462681747972965" +"1075"," 0.8266774332150816917" +"1076","-0.0738633046858012676" +"1077","-0.8424647781066596508" +"1078"," 0.1703087491914629936" +"1079"," 0.4032287891022861004" +"1080","-0.3516275109723210335" +"1081","-0.0977529450319707394" +"1082"," 0.4465831853449344635" +"1083","-0.2412508889101445675" +"1084"," 0.4333642590790987015" +"1085","-0.8461398831568658352" +"1086","-0.6626282366923987865" +"1087","-0.2161469873972237110" +"1088"," 0.3963201870210468769" +"1089"," 0.8839415134862065315" +"1090"," 0.1246772846207022667" +"1091"," 0.5427623917348682880" +"1092"," 0.1656064302660524845" +"1093","-0.7196889817714691162" +"1094"," 0.0545541332103312016" +"1095","-0.9714323864318430424" +"1096"," 0.7674008347094058990" +"1097"," 0.7341588339768350124" +"1098","-0.5804309961386024952" +"1099","-0.1391751174814999104" +"1100"," 0.1589281279593706131" +"1101"," 0.2593354270793497562" +"1102"," 0.4993689209222793579" +"1103","-0.1522319777868688107" +"1104","-0.9525746405124664307" +"1105"," 0.7988081080839037895" +"1106"," 0.3010152382776141167" +"1107","-0.5844365772791206837" +"1108","-0.2339337109588086605" +"1109","-0.2936705532483756542" +"1110","-0.3296940345317125320" +"1111"," 0.1509448159486055374" +"1112"," 0.5466798623092472553" +"1113","-0.8203047462739050388" +"1114","-0.3616176843643188477" +"1115"," 0.6244003092870116234" +"1116"," 0.9359481805004179478" +"1117"," 0.4008163963444530964" +"1118"," 0.4047527112998068333" +"1119","-0.3483217996545135975" +"1120","-0.5793586913496255875" +"1121","-0.4731213934719562531" +"1122","-0.1556135765276849270" +"1123"," 0.2763361237011849880" +"1124"," 0.9164653988555073738" +"1125","-0.5319415694102644920" +"1126","-0.1023199371993541718" +"1127"," 0.2077219481579959393" +"1128","-0.4457063283771276474" +"1129","-0.6555801173672080040" +"1130"," 0.3364948541857302189" +"1131"," 0.7806414961814880371" +"1132","-0.7912689642980694771" +"1133"," 0.6533882003277540207" +"1134","-0.5031068059615790844" +"1135"," 0.5551013280637562275" +"1136","-0.3160041095688939095" +"1137","-0.3898169063031673431" +"1138"," 0.2904707952402532101" +"1139","-0.4839933007024228573" +"1140","-0.1960225142538547516" +"1141"," 0.3066311967559158802" +"1142","-0.9384356597438454628" +"1143","-0.8360861181281507015" +"1144","-0.3974827863276004791" +"1145"," 0.8696392904967069626" +"1146"," 0.3226606603711843491" +"1147","-0.9969712723977863789" +"1148","-0.8986860993318259716" +"1149","-0.0581352962180972099" +"1150"," 0.8667739611119031906" +"1151","-0.1521453228779137135" +"1152"," 0.5482857986353337765" +"1153","-0.0366083993576467037" +"1154"," 0.2476990986615419388" +"1155"," 0.0886220727115869522" +"1156","-0.4879809003323316574" +"1157"," 0.2540659913793206215" +"1158"," 0.1705753928981721401" +"1159","-0.1661540367640554905" +"1160"," 0.1127918306738138199" +"1161","-0.0347209065221250057" +"1162","-0.0167027083225548267" +"1163"," 0.7941082366742193699" +"1164"," 0.3248437629081308842" +"1165","-0.2860087710432708263" +"1166"," 0.4061505477875471115" +"1167"," 0.8953004293143749237" +"1168","-0.9175576874986290932" +"1169"," 0.1870960216037929058" +"1170"," 0.7608886333182454109" +"1171"," 0.8801571605727076530" +"1172"," 0.7970338813029229641" +"1173","-0.6128765502944588661" +"1174","-0.2157197999767959118" +"1175"," 0.2528475360013544559" +"1176"," 0.1774441264569759369" +"1177","-0.0827831123024225235" +"1178","-0.8132199263200163841" +"1179","-0.1152297365479171276" +"1180","-0.8276281435973942280" +"1181"," 0.6795282531529664993" +"1182"," 0.8648669840767979622" +"1183"," 0.8797741611488163471" +"1184","-0.6230833046138286591" +"1185","-0.7213961309753358364" +"1186","-0.9808789966627955437" +"1187"," 0.1440945118665695190" +"1188","-0.0653912681154906750" +"1189"," 0.2363386228680610657" +"1190","-0.6146704996936023235" +"1191"," 0.6247552009299397469" +"1192"," 0.1986692287027835846" +"1193"," 0.6953699486330151558" +"1194"," 0.7120963637717068195" +"1195"," 0.7365451119840145111" +"1196"," 0.7019341755658388138" +"1197","-0.9982021073810756207" +"1198"," 0.9471407448872923851" +"1199","-0.3259339923970401287" +"1200","-0.5749637917615473270" +"1201"," 0.9685980621725320816" +"1202","-0.2776837619021534920" +"1203","-0.8460195311345160007" +"1204"," 0.4565917509607970715" +"1205"," 0.2526402687653899193" +"1206"," 0.3096418208442628384" +"1207","-0.0471196053549647331" +"1208","-0.1695864666253328323" +"1209"," 0.0186999742873013020" +"1210","-0.3509336295537650585" +"1211","-0.2526117246598005295" +"1212","-0.7420937311835587025" +"1213"," 0.1736324159428477287" +"1214","-0.9138016900978982449" +"1215","-0.9819314633496105671" +"1216"," 0.6498239254578948021" +"1217"," 0.8485362017527222633" +"1218","-0.0386672168970108032" +"1219","-0.9398357407189905643" +"1220","-0.9014823744073510170" +"1221"," 0.9727513859979808331" +"1222"," 0.5258481386117637157" +"1223"," 0.1750953560695052147" +"1224"," 0.3621934526599943638" +"1225"," 0.1677937279455363750" +"1226","-0.8839749055914580822" +"1227"," 0.1379489065147936344" +"1228"," 0.6169670191593468189" +"1229"," 0.0883482708595693111" +"1230"," 0.1983594885095953941" +"1231"," 0.3072288706898689270" +"1232","-0.0813481532968580723" +"1233"," 0.7043301691301167011" +"1234"," 0.8559464635327458382" +"1235"," 0.2580716926604509354" +"1236","-0.7848489191383123398" +"1237"," 0.8618656913749873638" +"1238","-0.9655112149193882942" +"1239","-0.9457759633660316467" +"1240","-0.5037152930162847042" +"1241","-0.7867853073403239250" +"1242"," 0.1101649506017565727" +"1243","-0.0815756544470787048" +"1244","-0.6454245708882808685" +"1245"," 0.0519293029792606831" +"1246","-0.9067816180177032948" +"1247","-0.7353382045403122902" +"1248","-0.2381998519413173199" +"1249"," 0.6909849778749048710" +"1250","-0.7240345608443021774" +"1251","-0.3070895867422223091" +"1252","-0.5465492522343993187" +"1253"," 0.8549752426333725452" +"1254","-0.3488749354146420956" +"1255"," 0.3430258054286241531" +"1256","-0.1194846914149820805" +"1257","-0.3152377475053071976" +"1258"," 0.7546200258657336235" +"1259"," 0.7723903586156666279" +"1260"," 0.1287087788805365562" +"1261"," 0.6826571947894990444" +"1262","-0.2293078801594674587" +"1263"," 0.6747980099171400070" +"1264"," 0.2535659587010741234" +"1265"," 0.0860815546475350857" +"1266","-0.0689872340299189091" +"1267","-0.7707282253541052341" +"1268","-0.2465921766124665737" +"1269","-0.4577222415246069431" +"1270"," 0.3740507969632744789" +"1271"," 0.4321869853883981705" +"1272","-0.7578008542768657207" +"1273"," 0.5754543240182101727" +"1274"," 0.5816917503252625465" +"1275"," 0.6682697045616805553" +"1276","-0.5413449318148195744" +"1277","-0.0041759232990443707" +"1278"," 0.0941330227069556713" +"1279","-0.6378102600574493408" +"1280"," 0.9611417218111455441" +"1281"," 0.2418033778667449951" +"1282"," 0.6903019761666655540" +"1283","-0.5429697497747838497" +"1284"," 0.1547956936992704868" +"1285"," 0.3603999940678477287" +"1286"," 0.9408360561355948448" +"1287","-0.0328053170815110207" +"1288","-0.7162259016185998917" +"1289","-0.7464543250389397144" +"1290"," 0.7791792191565036774" +"1291"," 0.3623228208161890507" +"1292","-0.5425393050536513329" +"1293"," 0.1365886582061648369" +"1294","-0.5139776268042623997" +"1295","-0.9021883336827158928" +"1296","-0.8274118858389556408" +"1297"," 0.6703118835575878620" +"1298"," 0.8195432676002383232" +"1299","-0.4616164257749915123" +"1300","-0.9973109005950391293" +"1301","-0.4343022289685904980" +"1302","-0.6895467750728130341" +"1303","-0.6811412051320075989" +"1304","-0.4747563465498387814" +"1305","-0.6484250035136938095" +"1306","-0.8989188903942704201" +"1307"," 0.5733553227037191391" +"1308"," 0.0029202881269156933" +"1309","-0.8622260740958154202" +"1310"," 0.3161466922610998154" +"1311"," 0.2240545442327857018" +"1312","-0.7989955279044806957" +"1313"," 0.0267360345460474491" +"1314"," 0.8275505416095256805" +"1315"," 0.6121026286855340004" +"1316"," 0.1883310326375067234" +"1317","-0.3391298642382025719" +"1318","-0.2641184353269636631" +"1319","-0.7000634591095149517" +"1320"," 0.5241359989158809185" +"1321"," 0.6032118187285959721" +"1322"," 0.2060625115409493446" +"1323"," 0.6206659134477376938" +"1324"," 0.1935161072760820389" +"1325","-0.5457255169749259949" +"1326","-0.0910278535448014736" +"1327","-0.6311979042366147041" +"1328"," 0.8542653461918234825" +"1329"," 0.5095984963700175285" +"1330"," 0.1215122588910162449" +"1331","-0.5985227893106639385" +"1332"," 0.6521864454261958599" +"1333","-0.0330065949819982052" +"1334"," 0.0993202165700495243" +"1335"," 0.5383962704800069332" +"1336","-0.2131279506720602512" +"1337"," 0.6029635048471391201" +"1338"," 0.2061276081949472427" +"1339","-0.8561001792550086975" +"1340","-0.2150666429661214352" +"1341"," 0.9870998701080679893" +"1342","-0.6788572026416659355" +"1343"," 0.5386501285247504711" +"1344","-0.9844312551431357861" +"1345"," 0.4411191283725202084" +"1346","-0.4531757393851876259" +"1347"," 0.6712961788289248943" +"1348"," 0.3529031332582235336" +"1349","-0.4554663295857608318" +"1350","-0.3157291589304804802" +"1351","-0.3768736193887889385" +"1352"," 0.7251536082476377487" +"1353","-0.5736998100765049458" +"1354","-0.7149984389543533325" +"1355","-0.0077983634546399117" +"1356"," 0.0295227048918604851" +"1357","-0.3391251936554908752" +"1358","-0.9085694500245153904" +"1359","-0.5034313262440264225" +"1360"," 0.7745747719891369343" +"1361","-0.5555090424604713917" +"1362"," 0.4076318428851664066" +"1363","-0.2861239449121057987" +"1364","-0.5054990136995911598" +"1365"," 0.2660447177477180958" +"1366","-0.7249852837994694710" +"1367","-0.6073192581534385681" +"1368"," 0.8306474452838301659" +"1369"," 0.3300826796330511570" +"1370","-0.2392700673080980778" +"1371"," 0.3774852226488292217" +"1372","-0.4826820464804768562" +"1373","-0.3966057994402945042" +"1374"," 0.3971281209960579872" +"1375"," 0.0337986075319349766" +"1376","-0.4805208798497915268" +"1377","-0.3926308816298842430" +"1378"," 0.5241891187615692616" +"1379"," 0.5181401651352643967" +"1380","-0.3620342309586703777" +"1381","-0.5847007641568779945" +"1382"," 0.1323717306368052959" +"1383"," 0.6618460007011890411" +"1384"," 0.4055209513753652573" +"1385","-0.9533453397452831268" +"1386"," 0.7857503006234765053" +"1387","-0.9751228210516273975" +"1388"," 0.6682339455001056194" +"1389","-0.8518653148785233498" +"1390"," 0.5084972651675343513" +"1391"," 0.9965995699167251587" +"1392","-0.3309787665493786335" +"1393","-0.6873977752402424812" +"1394","-0.2164879892952740192" +"1395"," 0.6347040496766567230" +"1396"," 0.9410897828638553619" +"1397","-0.7531193653121590614" +"1398","-0.3416051822714507580" +"1399"," 0.7225310220383107662" +"1400"," 0.0754879429005086422" +"1401"," 0.1050448217429220676" +"1402"," 0.6557407658547163010" +"1403"," 0.2541285054758191109" +"1404"," 0.1797643769532442093" +"1405"," 0.3119770581834018230" +"1406","-0.3848768942989408970" +"1407","-0.2806681799702346325" +"1408","-0.5360004487447440624" +"1409","-0.5712890541180968285" +"1410"," 0.6638761865906417370" +"1411"," 0.0794290546327829361" +"1412"," 0.0445607951842248440" +"1413","-0.2478051194921135902" +"1414"," 0.5346321454271674156" +"1415"," 0.6106449537910521030" +"1416","-0.8532902142032980919" +"1417"," 0.0074564819224178791" +"1418","-0.9519854229874908924" +"1419","-0.6747442041523754597" +"1420"," 0.1405255985446274281" +"1421"," 0.3453875239938497543" +"1422","-0.5167019548825919628" +"1423"," 0.8885767362080514431" +"1424","-0.4600252797827124596" +"1425"," 0.6812070431187748909" +"1426","-0.7536486205644905567" +"1427","-0.2883236855268478394" +"1428","-0.8868867312557995319" +"1429","-0.6917211720719933510" +"1430","-0.7855497323907911777" +"1431"," 0.6362766907550394535" +"1432","-0.7976860255002975464" +"1433"," 0.3387232199311256409" +"1434"," 0.7759685534983873367" +"1435","-0.1990947797894477844" +"1436"," 0.0355994487181305885" +"1437"," 0.2250036839395761490" +"1438"," 0.3530472880229353905" +"1439"," 0.4536853814497590065" +"1440","-0.1920316643081605434" +"1441","-0.2149619851261377335" +"1442","-0.0561135541647672653" +"1443"," 0.4883327241986989975" +"1444"," 0.9938907437026500702" +"1445","-0.1834662039764225483" +"1446"," 0.5260142027400434017" +"1447","-0.7079396247863769531" +"1448"," 0.7590545080602169037" +"1449"," 0.8379638637416064739" +"1450","-0.6601241277530789375" +"1451"," 0.6616852674633264542" +"1452","-0.7348949974402785301" +"1453","-0.7615909473970532417" +"1454","-0.7746735289692878723" +"1455","-0.5379515509121119976" +"1456"," 0.9904915173538029194" +"1457"," 0.2693698545917868614" +"1458","-0.8592721093446016312" +"1459"," 0.9533273717388510704" +"1460"," 0.9676937647163867950" +"1461"," 0.8769808611832559109" +"1462","-0.5967151233926415443" +"1463","-0.8615175038576126099" +"1464","-0.0137105947360396385" +"1465","-0.4113058885559439659" +"1466","-0.3266689279116690159" +"1467","-0.4531493345275521278" +"1468"," 0.2236177097074687481" +"1469","-0.6014150669798254967" +"1470","-0.3253517285920679569" +"1471"," 0.7230239380151033401" +"1472"," 0.3863032194785773754" +"1473","-0.1063712355680763721" +"1474"," 0.7037157868035137653" +"1475","-0.0359120690263807774" +"1476"," 0.6010502525605261326" +"1477","-0.0798397888429462910" +"1478","-0.8866789080202579498" +"1479"," 0.3002668223343789577" +"1480","-0.4087740690447390079" +"1481","-0.8506870092824101448" +"1482"," 0.5743093262426555157" +"1483","-0.8064826373010873795" +"1484"," 0.7956476313993334770" +"1485","-0.2349993479438126087" +"1486"," 0.7321592103689908981" +"1487"," 0.6022445326671004295" +"1488"," 0.4801948717795312405" +"1489"," 0.4244775008410215378" +"1490"," 0.1981153599917888641" +"1491"," 0.2240036092698574066" +"1492","-0.8361187041737139225" +"1493"," 0.4230820420198142529" +"1494","-0.9374305144883692265" +"1495","-0.4494777373038232327" +"1496","-0.4436950576491653919" +"1497"," 0.2426687185652554035" +"1498"," 0.6301405155099928379" +"1499"," 0.8365440326742827892" +"1500"," 0.3453166834078729153" +"1501","-0.4825999266467988491" +"1502"," 0.3355309837497770786" +"1503"," 0.6488384804688394070" +"1504"," 0.4287365456111729145" +"1505","-0.9552863747812807560" +"1506","-0.3370152353309094906" +"1507","-0.3374671838246285915" +"1508","-0.3436894179321825504" +"1509","-0.1439265483058989048" +"1510"," 0.1548769688233733177" +"1511"," 0.5968248918652534485" +"1512","-0.8227211218327283859" +"1513","-0.1190731949172914028" +"1514"," 0.3032732587307691574" +"1515"," 0.8163100415840744972" +"1516","-0.4877450824715197086" +"1517","-0.6957634091377258301" +"1518","-0.7791301351971924305" +"1519","-0.6222738958895206451" +"1520","-0.0379207432270050049" +"1521","-0.8500383994542062283" +"1522","-0.3766530067659914494" +"1523"," 0.0220519932918250561" +"1524"," 0.6761700189672410488" +"1525"," 0.2725079539231956005" +"1526"," 0.7895450964570045471" +"1527"," 0.1224050335586071014" +"1528"," 0.4748070626519620419" +"1529","-0.8237602375447750092" +"1530","-0.7022067876532673836" +"1531","-0.6224823486991226673" +"1532"," 0.5084923878312110901" +"1533"," 0.7674826621077954769" +"1534","-0.9466786175034940243" +"1535"," 0.1205858406610786915" +"1536","-0.3027884732000529766" +"1537"," 0.9472515638917684555" +"1538","-0.7697424259968101978" +"1539"," 0.6253074896521866322" +"1540","-0.8491355772130191326" +"1541"," 0.4141694800928235054" +"1542"," 0.5300699630752205849" +"1543","-0.4184986073523759842" +"1544","-0.2192706344649195671" +"1545","-0.7074078060686588287" +"1546"," 0.0258665648289024830" +"1547","-0.4513899385929107666" +"1548","-0.0381754902191460133" +"1549","-0.2506527313962578773" +"1550","-0.6339512672275304794" +"1551"," 0.1566242286935448647" +"1552","-0.2436544499360024929" +"1553","-0.3555087577551603317" +"1554","-0.1077781212516129017" +"1555","-0.1675301301293075085" +"1556"," 0.3687523184344172478" +"1557"," 0.7033379753120243549" +"1558","-0.1709644049406051636" +"1559"," 0.2216656701639294624" +"1560","-0.1163853891193866730" +"1561"," 0.8355983602814376354" +"1562","-0.7684348956681787968" +"1563","-0.2529265568591654301" +"1564","-0.0417288588359951973" +"1565","-0.2916964162141084671" +"1566"," 0.9082808862440288067" +"1567"," 0.6897770720534026623" +"1568"," 0.2647241069935262203" +"1569"," 0.9828529804944992065" +"1570","-0.2790195229463279247" +"1571","-0.2406237367540597916" +"1572"," 0.7114046867936849594" +"1573"," 0.1027758149430155754" +"1574"," 0.2621711874380707741" +"1575","-0.6217328361235558987" +"1576","-0.4624175382778048515" +"1577","-0.0079606371000409126" +"1578"," 0.8315042960457503796" +"1579"," 0.7307996237650513649" +"1580"," 0.4270880213007330894" +"1581","-0.9313063002191483974" +"1582","-0.3017743621021509171" +"1583"," 0.9084496106952428818" +"1584","-0.0208139275200664997" +"1585"," 0.6036435640417039394" +"1586","-0.4875116571784019470" +"1587"," 0.7208630070090293884" +"1588"," 0.0962574644945561886" +"1589","-0.0329896532930433750" +"1590"," 0.1526718144305050373" +"1591","-0.6441476433537900448" +"1592"," 0.0031475042924284935" +"1593","-0.9720119819976389408" +"1594"," 0.3528767270036041737" +"1595"," 0.9240739392116665840" +"1596","-0.4412061357870697975" +"1597"," 0.8457574862986803055" +"1598","-0.6221634750254452229" +"1599","-0.1116880904883146286" +"1600"," 0.6475888174027204514" +"1601","-0.7047299272380769253" +"1602","-0.3443760010413825512" +"1603"," 0.8550787013955414295" +"1604","-0.4473539269529283047" +"1605","-0.5139035861939191818" +"1606","-0.2087387540377676487" +"1607","-0.4302940517663955688" +"1608","-0.9580730875022709370" +"1609"," 0.8797939429059624672" +"1610"," 0.1035303510725498199" +"1611"," 0.2484194119460880756" +"1612"," 0.3206892427988350391" +"1613"," 0.1296640327200293541" +"1614","-0.0220864373259246349" +"1615"," 0.1325922845862805843" +"1616"," 0.3922848319634795189" +"1617"," 0.6597967999987304211" +"1618"," 0.1474135597236454487" +"1619"," 0.7005135039798915386" +"1620"," 0.2681771004572510719" +"1621","-0.4327892311848700047" +"1622"," 0.7737417384050786495" +"1623"," 0.2199666649103164673" +"1624"," 0.2819538637995719910" +"1625","-0.9973910516127943993" +"1626"," 0.9910944565199315548" +"1627"," 0.5403341646306216717" +"1628","-0.2515509310178458691" +"1629","-0.7454513474367558956" +"1630","-0.6679625092074275017" +"1631"," 0.9531010580249130726" +"1632","-0.5349109265953302383" +"1633"," 0.0147921564057469368" +"1634","-0.6363387787714600563" +"1635","-0.3763873660936951637" +"1636","-0.4714758433401584625" +"1637","-0.5680320230312645435" +"1638","-0.5647004335187375546" +"1639"," 0.4291197648271918297" +"1640","-0.0669197281822562218" +"1641"," 0.4515942679718136787" +"1642"," 0.1184852807782590389" +"1643"," 0.1079110321588814259" +"1644","-0.0463303155265748501" +"1645","-0.0383068444207310677" +"1646","-0.1815979979000985622" +"1647"," 0.1991306780837476254" +"1648"," 0.0754543975926935673" +"1649"," 0.2700797859579324722" +"1650"," 0.7811779920011758804" +"1651","-0.0918569010682404041" +"1652","-0.2310922415927052498" +"1653","-0.0087066851556301117" +"1654"," 0.2833541203290224075" +"1655"," 0.7137206187471747398" +"1656"," 0.1785005303099751472" +"1657"," 0.4046265189535915852" +"1658"," 0.8510829065926373005" +"1659"," 0.3805528669618070126" +"1660","-0.4532900266349315643" +"1661"," 0.0502031347714364529" +"1662"," 0.4253968461416661739" +"1663","-0.0307799177244305611" +"1664","-0.6212423252873122692" +"1665"," 0.4163154610432684422" +"1666"," 0.2640412426553666592" +"1667","-0.5369939384981989861" +"1668"," 0.9860560838133096695" +"1669"," 0.5902918642386794090" +"1670"," 0.3773452276363968849" +"1671","-0.0276010623201727867" +"1672","-0.0153536810539662838" +"1673","-0.2404850292950868607" +"1674","-0.7010439275763928890" +"1675","-0.6024570199660956860" +"1676","-0.7658679410815238953" +"1677"," 0.9725971454754471779" +"1678"," 0.8716689883731305599" +"1679","-0.1477124872617423534" +"1680"," 0.6042798114940524101" +"1681"," 0.7746456298045814037" +"1682","-0.6138543151319026947" +"1683","-0.4048353885300457478" +"1684","-0.0170212457887828350" +"1685"," 0.0689200186170637608" +"1686"," 0.2655550166964530945" +"1687","-0.7426223088987171650" +"1688"," 0.8987969709560275078" +"1689","-0.1204050919041037560" +"1690","-0.6329219755716621876" +"1691"," 0.3292277771979570389" +"1692","-0.9640436177141964436" +"1693","-0.5018981061875820160" +"1694","-0.6649418622255325317" +"1695","-0.7918221238069236279" +"1696"," 0.4923606752417981625" +"1697"," 0.1993544176220893860" +"1698","-0.8074462516233325005" +"1699"," 0.0449704686179757118" +"1700"," 0.9504832383245229721" +"1701"," 0.9556250469759106636" +"1702","-0.0969357588328421116" +"1703"," 0.2356021706946194172" +"1704"," 0.5782323176972568035" +"1705","-0.3759749941527843475" +"1706","-0.4124012961983680725" +"1707"," 0.1238643946126103401" +"1708","-0.8769386722706258297" +"1709"," 0.1195723321288824081" +"1710","-0.0191743643954396248" +"1711"," 0.0771630541421473026" +"1712","-0.2644690363667905331" +"1713","-0.9487218498252332211" +"1714"," 0.0920877372846007347" +"1715"," 0.5449748928658664227" +"1716","-0.4018082390539348125" +"1717","-0.1996476529166102409" +"1718","-0.3173177246935665607" +"1719","-0.3380166250281035900" +"1720"," 0.7796826022677123547" +"1721"," 0.2514543998986482620" +"1722"," 0.0780946523882448673" +"1723"," 0.2506421497091650963" +"1724","-0.5724652614444494247" +"1725"," 0.5245487699285149574" +"1726"," 0.0224325181916356087" +"1727"," 0.9389271321706473827" +"1728","-0.7689884887076914310" +"1729"," 0.8345895851962268353" +"1730"," 0.9921228745952248573" +"1731","-0.8856417317874729633" +"1732","-0.1182389655150473118" +"1733","-0.9771673609502613544" +"1734"," 0.6009154338389635086" +"1735","-0.7807055073790252209" +"1736","-0.6297623505815863609" +"1737"," 0.3527500834316015244" +"1738"," 0.9037473089993000031" +"1739"," 0.4198921644128859043" +"1740","-0.4913774831220507622" +"1741"," 0.7526937145739793777" +"1742"," 0.2212217669002711773" +"1743"," 0.4869242263957858086" +"1744","-0.8027212554588913918" +"1745"," 0.4205481121316552162" +"1746"," 0.1365805482491850853" +"1747","-0.2844929466955363750" +"1748"," 0.0224429713562130928" +"1749"," 0.5432662079110741615" +"1750","-0.2071009571664035320" +"1751","-0.7355755181051790714" +"1752","-0.2460786048322916031" +"1753","-0.7137668253853917122" +"1754"," 0.5781404743902385235" +"1755"," 0.6093241763301193714" +"1756","-0.8991275900043547153" +"1757"," 0.8878094027750194073" +"1758","-0.9100796310231089592" +"1759","-0.4344428447075188160" +"1760"," 0.6051450441591441631" +"1761","-0.8906859671697020531" +"1762"," 0.5002548354677855968" +"1763","-0.4475811445154249668" +"1764"," 0.3971186485141515732" +"1765"," 0.0537300789728760719" +"1766"," 0.0989888571202754974" +"1767"," 0.2707690661773085594" +"1768","-0.6865705251693725586" +"1769","-0.2175191859714686871" +"1770"," 0.0913116782903671265" +"1771"," 0.8401339165866374969" +"1772","-0.3124477150849997997" +"1773"," 0.7005913709290325642" +"1774","-0.4950867644511163235" +"1775"," 0.5244033457711338997" +"1776"," 0.5150562087073922157" +"1777","-0.4515805793926119804" +"1778","-0.1091327667236328125" +"1779"," 0.6473863027058541775" +"1780","-0.0470031364820897579" +"1781","-0.8474819902330636978" +"1782","-0.4035394499078392982" +"1783","-0.1539897890761494637" +"1784","-0.6519320621155202389" +"1785","-0.8598732780665159225" +"1786"," 0.1065155244432389736" +"1787"," 0.7454750542528927326" +"1788","-0.7278724322095513344" +"1789"," 0.4779659067280590534" +"1790","-0.5267415717244148254" +"1791"," 0.0802900241687893867" +"1792","-0.0541063463315367699" +"1793","-0.4250199906527996063" +"1794","-0.2876114808022975922" +"1795","-0.9593104599043726921" +"1796","-0.2761088097468018532" +"1797"," 0.3512172615155577660" +"1798"," 0.7770269773900508881" +"1799"," 0.8629376967437565327" +"1800","-0.0566778541542589664" +"1801"," 0.0188185269944369793" +"1802","-0.4771419428288936615" +"1803","-0.6711321459151804447" +"1804","-0.3293494465760886669" +"1805"," 0.4448285601101815701" +"1806"," 0.7784371091984212399" +"1807","-0.4234805572777986526" +"1808"," 0.9433762026019394398" +"1809","-0.3941280120052397251" +"1810","-0.1062691989354789257" +"1811"," 0.2275680131278932095" +"1812","-0.4701661956496536732" +"1813"," 0.7479579611681401730" +"1814","-0.8797096037305891514" +"1815","-0.0306077366694808006" +"1816","-0.9328093007206916809" +"1817"," 0.7429910753853619099" +"1818","-0.1482739024795591831" +"1819"," 0.5887058083899319172" +"1820"," 0.7324485108256340027" +"1821"," 0.5238924100995063782" +"1822","-0.2666683313436806202" +"1823"," 0.0465328870341181755" +"1824","-0.9389082286506891251" +"1825"," 0.5095439604483544827" +"1826"," 0.1489133653230965137" +"1827","-0.7811501803807914257" +"1828"," 0.1445897384546697140" +"1829"," 0.7496428969316184521" +"1830"," 0.1438578646630048752" +"1831"," 0.8044076082296669483" +"1832","-0.9401294863782823086" +"1833"," 0.9676829576492309570" +"1834","-0.6732768453657627106" +"1835"," 0.8958945800550282001" +"1836"," 0.4066919139586389065" +"1837"," 0.8572772727347910404" +"1838","-0.7054324252530932426" +"1839","-0.5920984242111444473" +"1840","-0.8252455759793519974" +"1841","-0.5253816084004938602" +"1842"," 0.4440985601395368576" +"1843","-0.8612815039232373238" +"1844","-0.5042974464595317841" +"1845"," 0.1703597079031169415" +"1846"," 0.3946479628793895245" +"1847"," 0.8339237985201179981" +"1848"," 0.7501397938467562199" +"1849"," 0.4859037334099411964" +"1850","-0.1430437462404370308" +"1851"," 0.6066270424053072929" +"1852","-0.4537463504821062088" +"1853"," 0.6144013023003935814" +"1854"," 0.8990250020287930965" +"1855","-0.6694774781353771687" +"1856"," 0.0509979184716939926" +"1857","-0.2973085818812251091" +"1858"," 0.9465977693907916546" +"1859"," 0.6262151845730841160" +"1860","-0.3977169608697295189" +"1861","-0.3824454620480537415" +"1862","-0.0340713020414113998" +"1863"," 0.9017790094949305058" +"1864"," 0.5227726036682724953" +"1865"," 0.5043788156472146511" +"1866","-0.9846730078570544720" +"1867","-0.6882952149026095867" +"1868","-0.6313872155733406544" +"1869"," 0.6114803021773695946" +"1870","-0.7929989057593047619" +"1871"," 0.6275833453983068466" +"1872","-0.9708864027634263039" +"1873"," 0.7411626027897000313" +"1874","-0.2869874532334506512" +"1875"," 0.2187859113328158855" +"1876"," 0.9282311634160578251" +"1877"," 0.2267325627617537975" +"1878","-0.1466501951217651367" +"1879"," 0.1794227208010852337" +"1880"," 0.5085824751295149326" +"1881"," 0.0971313705667853355" +"1882"," 0.8575268620625138283" +"1883","-0.8724852050654590130" +"1884"," 0.7631685063242912292" +"1885"," 0.3870142288506031036" +"1886"," 0.1990431942977011204" +"1887","-0.0731011601164937019" +"1888","-0.3223457885906100273" +"1889"," 0.0810175370424985886" +"1890"," 0.4965213350951671600" +"1891","-0.4642991516739130020" +"1892"," 0.5840909476391971111" +"1893"," 0.9553975048474967480" +"1894","-0.4573097312822937965" +"1895","-0.7876903400756418705" +"1896","-0.8048557415604591370" +"1897","-0.0178118343465030193" +"1898","-0.9124774187803268433" +"1899"," 0.9258657139725983143" +"1900"," 0.4576016636565327644" +"1901"," 0.1640203781425952911" +"1902","-0.0736831659451127052" +"1903"," 0.7080388921312987804" +"1904"," 0.4655985780991613865" +"1905"," 0.6893019401468336582" +"1906","-0.8060797858051955700" +"1907"," 0.7309327474795281887" +"1908","-0.9813230410218238831" +"1909","-0.7858709790743887424" +"1910","-0.2228294922970235348" +"1911"," 0.2185861980542540550" +"1912"," 0.1578305182047188282" +"1913"," 0.1315682828426361084" +"1914"," 0.2763421158306300640" +"1915"," 0.5819404469802975655" +"1916","-0.9050694764591753483" +"1917","-0.9826540891081094742" +"1918","-0.0621766140684485435" +"1919"," 0.3142948229797184467" +"1920","-0.9813367086462676525" +"1921","-0.0900533790700137615" +"1922","-0.9544370505027472973" +"1923","-0.3649963075295090675" +"1924"," 0.2571413414552807808" +"1925"," 0.7510554529726505280" +"1926","-0.9909942820668220520" +"1927"," 0.6664269068278372288" +"1928"," 0.4717860096134245396" +"1929"," 0.5939408238045871258" +"1930"," 0.9581122994422912598" +"1931"," 0.5397899351082742214" +"1932","-0.2803971390239894390" +"1933"," 0.8917906456626951694" +"1934"," 0.1140508055686950684" +"1935"," 0.4985430324450135231" +"1936","-0.4098741123452782631" +"1937"," 0.4232616862282156944" +"1938"," 0.9758886792697012424" +"1939","-0.5940521061420440674" +"1940","-0.9911278849467635155" +"1941"," 0.4498924622312188148" +"1942"," 0.7130779712460935116" +"1943"," 0.9005574993789196014" +"1944","-0.5860858070664107800" +"1945"," 0.6060081827454268932" +"1946","-0.3546491116285324097" +"1947","-0.7803699746727943420" +"1948","-0.4250887562520802021" +"1949"," 0.6255628569051623344" +"1950","-0.8451219266280531883" +"1951","-0.8264398188330233097" +"1952"," 0.2976446640677750111" +"1953","-0.1368191721849143505" +"1954","-0.5923132956959307194" +"1955"," 0.3728827913291752338" +"1956"," 0.1612517186440527439" +"1957"," 0.7268952908925712109" +"1958","-0.4150467491708695889" +"1959","-0.0776541139930486679" +"1960"," 0.8345757503993809223" +"1961","-0.7747413124889135361" +"1962"," 0.7446898543275892735" +"1963"," 0.2398136770352721214" +"1964","-0.1443590628914535046" +"1965"," 0.4471727176569402218" +"1966"," 0.8689091620035469532" +"1967","-0.3660121755674481392" +"1968"," 0.0744738313369452953" +"1969"," 0.7123914510011672974" +"1970"," 0.3175757271237671375" +"1971"," 0.8841828359290957451" +"1972","-0.7911342764273285866" +"1973","-0.1140307830646634102" +"1974"," 0.4009236735291779041" +"1975","-0.8666856568306684494" +"1976","-0.6233880664221942425" +"1977","-0.1393338581547141075" +"1978"," 0.1843319688923656940" +"1979"," 0.5937852775678038597" +"1980","-0.7424211860634386539" +"1981","-0.3391776010394096375" +"1982"," 0.1842507398687303066" +"1983","-0.5600003893487155437" +"1984","-0.0891717760823667049" +"1985"," 0.2183607206679880619" +"1986","-0.0651244926266372204" +"1987"," 0.1248184419237077236" +"1988","-0.6010366915725171566" +"1989","-0.8244123915210366249" +"1990"," 0.8404520875774323940" +"1991","-0.5069596832618117332" +"1992","-0.8368059396743774414" +"1993","-0.5062624639831483364" +"1994","-0.5982785550877451897" +"1995","-0.5876571596600115299" +"1996","-0.4863472403958439827" +"1997"," 0.7900477079674601555" +"1998","-0.0071942401118576527" +"1999"," 0.0032749320380389690" +"2000"," 0.1514038839377462864" +"2001","-0.2781408862210810184" +"2002"," 0.3018982857465744019" +"2003","-0.3438489465042948723" +"2004","-0.4602577015757560730" +"2005","-0.0688122715801000595" +"2006","-0.6354194595478475094" +"2007","-0.6527426671236753464" +"2008","-0.4278271752409636974" +"2009","-0.7551977005787193775" +"2010"," 0.2092714277096092701" +"2011","-0.5213500629179179668" +"2012"," 0.7756624165922403336" +"2013","-0.3790372633375227451" +"2014","-0.0805368623696267605" +"2015"," 0.2142507145181298256" +"2016","-0.1146599408239126205" +"2017"," 0.1967678484506905079" +"2018"," 0.1620936910621821880" +"2019"," 0.0586351254023611546" +"2020"," 0.5858669150620698929" +"2021","-0.8702711570076644421" +"2022"," 0.5471907937899231911" +"2023"," 0.5582432211376726627" +"2024","-0.2429350698366761208" +"2025","-0.6880844291299581528" +"2026"," 0.1282029422000050545" +"2027"," 0.2001617443747818470" +"2028"," 0.0006998488679528236" +"2029"," 0.3221289431676268578" +"2030"," 0.4353249655105173588" +"2031","-0.7434038133360445499" +"2032","-0.5044633671641349792" +"2033"," 0.1171580255031585693" +"2034"," 0.9687938322313129902" +"2035"," 0.6154262209311127663" +"2036"," 0.9365364899858832359" +"2037","-0.3282617572695016861" +"2038"," 0.1946096974425017834" +"2039"," 0.1051688599400222301" +"2040"," 0.2959708468988537788" +"2041","-0.5581699949689209461" +"2042","-0.6855661077424883842" +"2043"," 0.7346450681798160076" +"2044"," 0.4690186553634703159" +"2045","-0.4831554829142987728" +"2046"," 0.1525783184915781021" +"2047","-0.5551556688733398914" +"2048"," 0.3710513478145003319" +"2049"," 0.1416271002963185310" +"2050"," 0.5952625740319490433" +"2051","-0.7504492639563977718" +"2052","-0.9111995203420519829" +"2053"," 0.4325344553217291832" +"2054","-0.6395226526074111462" +"2055"," 0.5724293580278754234" +"2056","-0.3381044310517609119" +"2057","-0.4777414570562541485" +"2058","-0.2326928339898586273" +"2059","-0.3248734413646161556" +"2060"," 0.8117801612243056297" +"2061","-0.4941527941264212132" +"2062","-0.0041308780200779438" +"2063"," 0.2957567907869815826" +"2064","-0.7710919603705406189" +"2065","-0.1188183887861669064" +"2066","-0.2470757663249969482" +"2067","-0.3828348559327423573" +"2068"," 0.0030779410153627396" +"2069","-0.7724238256923854351" +"2070"," 0.5970205781050026417" +"2071","-0.8380931154824793339" +"2072"," 0.9264049073681235313" +"2073"," 0.3408782803453505039" +"2074","-0.7580985734239220619" +"2075"," 0.1045438572764396667" +"2076","-0.8897268911823630333" +"2077"," 0.7172789135947823524" +"2078","-0.5382813117466866970" +"2079","-0.3251853557303547859" +"2080"," 0.2857688865624368191" +"2081","-0.2598376320675015450" +"2082","-0.5724293380044400692" +"2083"," 0.3650242858566343784" +"2084","-0.9054436143487691879" +"2085"," 0.4629922402091324329" +"2086","-0.8742805761285126209" +"2087","-0.1521669439971446991" +"2088","-0.0936252735555171967" +"2089"," 0.7476759594865143299" +"2090"," 0.3019151343032717705" +"2091"," 0.0629253382794559002" +"2092","-0.3796669170260429382" +"2093","-0.7818689844571053982" +"2094"," 0.8279016786254942417" +"2095"," 0.1234830147586762905" +"2096"," 0.4853306924924254417" +"2097","-0.4922530227340757847" +"2098"," 0.7553927809931337833" +"2099"," 0.0876216636970639229" +"2100","-0.3098303088918328285" +"2101","-0.0144894924014806747" +"2102","-0.5492917546071112156" +"2103"," 0.4106200630776584148" +"2104"," 0.0589549560099840164" +"2105"," 0.3291792650707066059" +"2106"," 0.1647166684269905090" +"2107","-0.3588066445663571358" +"2108","-0.9256008886732161045" +"2109","-0.1509812693111598492" +"2110"," 0.8367706192657351494" +"2111","-0.1917547117918729782" +"2112","-0.5343884192407131195" +"2113","-0.8660597926937043667" +"2114"," 0.3376781051047146320" +"2115","-0.8250928395427763462" +"2116"," 0.9769259947352111340" +"2117"," 0.3864512252621352673" +"2118","-0.1622883146628737450" +"2119"," 0.3413787516765296459" +"2120"," 0.0800125873647630215" +"2121","-0.9659513747319579124" +"2122","-0.6494540651328861713" +"2123"," 0.9777997317723929882" +"2124"," 0.4128633909858763218" +"2125"," 0.2653481946326792240" +"2126"," 0.9144315561279654503" +"2127"," 0.9638500455766916275" +"2128"," 0.6578719485551118851" +"2129","-0.9252373338676989079" +"2130","-0.7099193274043500423" +"2131"," 0.8202580758370459080" +"2132","-0.5258064786903560162" +"2133"," 0.1467253868468105793" +"2134"," 0.1373671931214630604" +"2135"," 0.8013704493641853333" +"2136","-0.9324110662564635277" +"2137"," 0.1953998538665473461" +"2138"," 0.5098278815858066082" +"2139","-0.8848121385090053082" +"2140","-0.2012549429200589657" +"2141","-0.3743667388334870338" +"2142","-0.8436712911352515221" +"2143"," 0.3838976914994418621" +"2144","-0.6351087675429880619" +"2145","-0.8142594988457858562" +"2146","-0.6547217355109751225" +"2147"," 0.4705735235475003719" +"2148"," 0.2254345784895122051" +"2149"," 0.6229442851617932320" +"2150"," 0.5502489046193659306" +"2151","-0.6736291828565299511" +"2152"," 0.1527500255033373833" +"2153"," 0.9273161091841757298" +"2154"," 0.0706712361425161362" +"2155"," 0.7498446106910705566" +"2156"," 0.8555454355664551258" +"2157","-0.3326227669604122639" +"2158","-0.2119837026111781597" +"2159","-0.8919609989970922470" +"2160","-0.5791553915478289127" +"2161","-0.8623627852648496628" +"2162","-0.9015253800898790359" +"2163"," 0.2604070794768631458" +"2164","-0.7748621418140828609" +"2165","-0.6472139288671314716" +"2166","-0.4404372572898864746" +"2167"," 0.5852073994465172291" +"2168","-0.9760397262871265411" +"2169","-0.1588079682551324368" +"2170","-0.8379612825810909271" +"2171"," 0.3899022210389375687" +"2172"," 0.9641209999099373817" +"2173"," 0.5402704169973731041" +"2174","-0.5035084499977529049" +"2175","-0.4951318842358887196" +"2176"," 0.0429381397552788258" +"2177"," 0.3049488067626953125" +"2178","-0.5700770379044115543" +"2179"," 0.9825770715251564980" +"2180","-0.6299416348338127136" +"2181"," 0.6661038971506059170" +"2182"," 0.3182946327142417431" +"2183"," 0.7291333293542265892" +"2184"," 0.7784797027707099915" +"2185","-0.8258122298866510391" +"2186"," 0.1651245965622365475" +"2187"," 0.8688963423483073711" +"2188","-0.5838880972005426884" +"2189"," 0.1605759696103632450" +"2190","-0.5179472467862069607" +"2191","-0.8430391731671988964" +"2192","-0.4093487216159701347" +"2193","-0.3055626288987696171" +"2194"," 0.3091003233566880226" +"2195"," 0.9639738886617124081" +"2196","-0.8456188789568841457" +"2197","-0.4939125138334929943" +"2198","-0.2934722788631916046" +"2199","-0.7282634498551487923" +"2200"," 0.8925514952279627323" +"2201"," 0.0805870322510600090" +"2202","-0.9389975955709815025" +"2203"," 0.0491106645204126835" +"2204","-0.4373201453126966953" +"2205","-0.7972452314570546150" +"2206","-0.9783330219797790051" +"2207","-0.4942252868786454201" +"2208"," 0.6474677850492298603" +"2209","-0.0958379348739981651" +"2210"," 0.4608975588344037533" +"2211"," 0.9531130366958677769" +"2212","-0.7775980904698371887" +"2213"," 0.9902125434018671513" +"2214","-0.4341027918271720409" +"2215","-0.9455609400756657124" +"2216","-0.2077644304372370243" +"2217"," 0.3944054883904755116" +"2218"," 0.8362952740862965584" +"2219","-0.7747889258898794651" +"2220","-0.7521768491715192795" +"2221"," 0.3161576134152710438" +"2222","-0.4607069161720573902" +"2223"," 0.4830403318628668785" +"2224","-0.1118376371450722218" +"2225"," 0.8726873206906020641" +"2226"," 0.0649307947605848312" +"2227","-0.1460664668120443821" +"2228"," 0.2074669250287115574" +"2229","-0.2415526732802391052" +"2230"," 0.2101022680290043354" +"2231"," 0.2699849503114819527" +"2232","-0.1424742699600756168" +"2233"," 0.6150939594954252243" +"2234"," 0.3197323614731431007" +"2235","-0.9382672673091292381" +"2236"," 0.2695933538489043713" +"2237"," 0.8141296687535941601" +"2238","-0.6317418599501252174" +"2239","-0.4328152756206691265" +"2240","-0.0262447521090507507" +"2241"," 0.5122429165057837963" +"2242"," 0.0796749549917876720" +"2243"," 0.9184634718112647533" +"2244"," 0.5883273771032691002" +"2245","-0.6783548323437571526" +"2246","-0.5920139332301914692" +"2247"," 0.9560930994339287281" +"2248"," 0.0814438974484801292" +"2249","-0.5237141484394669533" +"2250","-0.7119337036274373531" +"2251"," 0.6272956505417823792" +"2252","-0.3357640528120100498" +"2253"," 0.6510857380926609039" +"2254"," 0.2316348906606435776" +"2255","-0.0111213456839323044" +"2256"," 0.4850549534894526005" +"2257","-0.2863014740869402885" +"2258","-0.3137377961538732052" +"2259"," 0.8908909563906490803" +"2260","-0.4277073387056589127" +"2261"," 0.3386438074521720409" +"2262"," 0.6212153588421642780" +"2263"," 0.9437115527689456940" +"2264"," 0.2081587975844740868" +"2265"," 0.0026261792518198490" +"2266"," 0.6603700504638254642" +"2267"," 0.4605392506346106529" +"2268"," 0.8177611706778407097" +"2269","-0.7391154253855347633" +"2270","-0.2051635812968015671" +"2271"," 0.5748160593211650848" +"2272","-0.4532243786379694939" +"2273"," 0.3563490202650427818" +"2274","-0.6688238759525120258" +"2275","-0.6959171872586011887" +"2276"," 0.2370751150883734226" +"2277","-0.6873614848591387272" +"2278"," 0.4054191242903470993" +"2279"," 0.8767738440074026585" +"2280","-0.1641969946213066578" +"2281","-0.8127850620076060295" +"2282","-0.2629192741587758064" +"2283"," 0.4577850196510553360" +"2284"," 0.7289513819850981236" +"2285"," 0.7966773826628923416" +"2286","-0.0399763262830674648" +"2287","-0.3732109810225665569" +"2288"," 0.2805083426646888256" +"2289"," 0.5703509431332349777" +"2290","-0.6429831874556839466" +"2291","-0.1891655861400067806" +"2292"," 0.1570268673822283745" +"2293"," 0.6511817355640232563" +"2294"," 0.9300432824529707432" +"2295","-0.6325774774886667728" +"2296","-0.2301805941388010979" +"2297","-0.2431034315377473831" +"2298"," 0.5488958195783197880" +"2299"," 0.0010734815150499344" +"2300"," 0.6763404114171862602" +"2301"," 0.3118585282936692238" +"2302"," 0.4564653621055185795" +"2303","-0.8145829313434660435" +"2304","-0.8659387878142297268" +"2305","-0.8255355926230549812" +"2306","-0.3686499744653701782" +"2307"," 0.0540822702459990978" +"2308"," 0.6231994894333183765" +"2309","-0.1950844204984605312" +"2310"," 0.8720671483315527439" +"2311"," 0.2195082521066069603" +"2312"," 0.7918931264430284500" +"2313","-0.0787835358642041683" +"2314","-0.5894498471170663834" +"2315","-0.2039455045014619827" +"2316"," 0.9372857725247740746" +"2317","-0.8407919504679739475" +"2318"," 0.5503914915025234222" +"2319"," 0.9495129073038697243" +"2320","-0.0724353864789009094" +"2321"," 0.7617157604545354843" +"2322","-0.3949406309984624386" +"2323","-0.0890346337109804153" +"2324","-0.1855561598204076290" +"2325"," 0.9500181227922439575" +"2326","-0.0213839476928114891" +"2327","-0.2296253656968474388" +"2328"," 0.8319395049475133419" +"2329"," 0.5081565463915467262" +"2330","-0.0011753458529710770" +"2331"," 0.6430949363857507706" +"2332","-0.8283844059333205223" +"2333","-0.5758141181431710720" +"2334"," 0.0923343840986490250" +"2335"," 0.1537605240009725094" +"2336","-0.0368336043320596218" +"2337"," 0.8224199889227747917" +"2338","-0.6418741443194448948" +"2339","-0.0552192782051861286" +"2340"," 0.7949390215799212456" +"2341"," 0.7212266065180301666" +"2342","-0.6419189400039613247" +"2343"," 0.9125661719590425491" +"2344","-0.8513717702589929104" +"2345","-0.1516681495122611523" +"2346"," 0.3111822619102895260" +"2347","-0.8354648305103182793" +"2348","-0.8736465708352625370" +"2349"," 0.1806773273274302483" +"2350","-0.1661156918853521347" +"2351"," 0.2615793636068701744" +"2352"," 0.3506760615855455399" +"2353"," 0.9981110440567135811" +"2354","-0.9236591081134974957" +"2355"," 0.6117722634226083755" +"2356","-0.5290774307213723660" +"2357"," 0.3724152669310569763" +"2358","-0.7038596621714532375" +"2359","-0.3753076284192502499" +"2360","-0.9889510194770991802" +"2361"," 0.2635620287619531155" +"2362","-0.4866149369627237320" +"2363","-0.0414817626588046551" +"2364"," 0.5693062767386436462" +"2365"," 0.4471497819758951664" +"2366"," 0.4006345113739371300" +"2367"," 0.8184286640025675297" +"2368","-0.6553206751123070717" +"2369"," 0.9650545800104737282" +"2370"," 0.6168957501649856567" +"2371"," 0.6282967976294457912" +"2372","-0.8850321453064680099" +"2373","-0.4383587278425693512" +"2374","-0.8677117582410573959" +"2375"," 0.1524185012094676495" +"2376","-0.1361141731031239033" +"2377","-0.0117076300084590912" +"2378"," 0.7408676100894808769" +"2379"," 0.2026914176531136036" +"2380","-0.7654689243063330650" +"2381"," 0.5246133105829358101" +"2382"," 0.5822648927569389343" +"2383","-0.6065545273013412952" +"2384"," 0.0128523344174027443" +"2385","-0.8324881303124129772" +"2386","-0.0717201391234993935" +"2387","-0.7299671266227960587" +"2388","-0.7882757964543998241" +"2389"," 0.4617115654982626438" +"2390","-0.2800253462046384811" +"2391"," 0.8756471048109233379" +"2392","-0.8919154014438390732" +"2393"," 0.1785732647404074669" +"2394","-0.6290651708841323853" +"2395","-0.5928353560157120228" +"2396","-0.1359981638379395008" +"2397","-0.8846822860650718212" +"2398"," 0.5850391425192356110" +"2399","-0.8854734310880303383" +"2400"," 0.6975710908882319927" +"2401","-0.0895012072287499905" +"2402","-0.7590910741128027439" +"2403","-0.8482880829833447933" +"2404","-0.5591789158061146736" +"2405","-0.4674107227474451065" +"2406"," 0.4562764763832092285" +"2407","-0.6619342300109565258" +"2408","-0.5715970732271671295" +"2409","-0.0388962882570922375" +"2410","-0.7956659351475536823" +"2411","-0.7993818861432373524" +"2412"," 0.1878260672092437744" +"2413","-0.3765196716412901878" +"2414"," 0.0854772268794476986" +"2415"," 0.2893024203367531300" +"2416"," 0.7624235847033560276" +"2417"," 0.8943439195863902569" +"2418"," 0.9682784131728112698" +"2419"," 0.4362612045370042324" +"2420","-0.0367782223038375378" +"2421","-0.9915968626737594604" +"2422","-0.6855344637297093868" +"2423","-0.9054321586154401302" +"2424","-0.7859590379521250725" +"2425","-0.1803421038202941418" +"2426"," 0.0219465070404112339" +"2427","-0.1848900387994945049" +"2428"," 0.9365339018404483795" +"2429","-0.9300093832425773144" +"2430"," 0.1351784071885049343" +"2431","-0.3956956714391708374" +"2432","-0.5654623024165630341" +"2433","-0.5358052202500402927" +"2434"," 0.3315789047628641129" +"2435","-0.5289651853963732719" +"2436"," 0.6312114377506077290" +"2437"," 0.5560971004888415337" +"2438"," 0.6608914616517722607" +"2439","-0.2627424816600978374" +"2440"," 0.6517580389045178890" +"2441"," 0.5994138573296368122" +"2442"," 0.1953257098793983459" +"2443","-0.4785914025269448757" +"2444","-0.2210244415327906609" +"2445","-0.6446354808285832405" +"2446"," 0.5612894953228533268" +"2447"," 0.4718678290955722332" +"2448","-0.6445472985506057739" +"2449","-0.1998258158564567566" +"2450"," 0.6779204751364886761" +"2451","-0.1753678107634186745" +"2452"," 0.5602934150956571102" +"2453","-0.3855039644986391068" +"2454"," 0.2041710517369210720" +"2455","-0.5467590685002505779" +"2456","-0.4762927717529237270" +"2457"," 0.6916118930093944073" +"2458"," 0.9615290355868637562" +"2459","-0.6927377497777342796" +"2460"," 0.3205359815619885921" +"2461"," 0.5689092534594237804" +"2462","-0.9144749278202652931" +"2463","-0.8720899350009858608" +"2464"," 0.2086956235580146313" +"2465"," 0.3925506677478551865" +"2466","-0.4956115270033478737" +"2467"," 0.1220934442244470119" +"2468"," 0.0649025323800742626" +"2469","-0.9592426531016826630" +"2470"," 0.7077533844858407974" +"2471"," 0.2529041972011327744" +"2472","-0.4188719848170876503" +"2473"," 0.8089859480969607830" +"2474","-0.8730111462064087391" +"2475"," 0.3144570020958781242" +"2476"," 0.2522731921635568142" +"2477"," 0.3610257231630384922" +"2478","-0.4584089550189673901" +"2479"," 0.2176866657100617886" +"2480","-0.3714917474426329136" +"2481"," 0.6376459486782550812" +"2482","-0.9955207766033709049" +"2483","-0.0126088210381567478" +"2484"," 0.8056608638726174831" +"2485","-0.6483145290985703468" +"2486","-0.5119359535165131092" +"2487"," 0.2775243637152016163" +"2488","-0.2023031441494822502" +"2489","-0.7580638742074370384" +"2490"," 0.1145194494165480137" +"2491"," 0.4582782364450395107" +"2492"," 0.9886709810234606266" +"2493"," 0.9398781079798936844" +"2494","-0.6385719445534050465" +"2495","-0.4622349138371646404" +"2496"," 0.1648886082693934441" +"2497"," 0.4776916517876088619" +"2498","-0.4390838369727134705" +"2499"," 0.8334561260417103767" +"2500","-0.6497647399082779884" +"2501"," 0.8167204833589494228" +"2502","-0.5715296338312327862" +"2503"," 0.6681706472299993038" +"2504"," 0.2082686321809887886" +"2505"," 0.0505613475106656551" +"2506","-0.0451150806620717049" +"2507"," 0.9207163164392113686" +"2508"," 0.3356212778016924858" +"2509","-0.8073728131130337715" +"2510"," 0.6524622165597975254" +"2511"," 0.2977244714275002480" +"2512"," 0.3988330792635679245" +"2513"," 0.0857935091480612755" +"2514"," 0.4128350871615111828" +"2515","-0.3685744535177946091" +"2516","-0.9720734050497412682" +"2517","-0.2822327516041696072" +"2518"," 0.4562744209542870522" +"2519","-0.5148744769394397736" +"2520"," 0.7141426368616521358" +"2521","-0.7254793974570930004" +"2522","-0.1492700953967869282" +"2523"," 0.0757069671526551247" +"2524","-0.4974998557008802891" +"2525","-0.8407417088747024536" +"2526","-0.2602096619084477425" +"2527","-0.8145263358019292355" +"2528","-0.9881963711231946945" +"2529"," 0.1498601334169507027" +"2530"," 0.2342629572376608849" +"2531"," 0.7657087943516671658" +"2532","-0.2386679509654641151" +"2533"," 0.1733678430318832397" +"2534"," 0.0091240140609443188" +"2535","-0.6055987197905778885" +"2536"," 0.7640317436307668686" +"2537"," 0.4544672877527773380" +"2538"," 0.0045325672253966331" +"2539"," 0.1763295577839016914" +"2540"," 0.5312958057038486004" +"2541"," 0.8480978482402861118" +"2542","-0.1633521993644535542" +"2543","-0.8650130289606750011" +"2544","-0.7481847470626235008" +"2545","-0.9325951738283038139" +"2546","-0.9818476131185889244" +"2547","-0.5476444335654377937" +"2548"," 0.7574692284688353539" +"2549"," 0.3632600018754601479" +"2550","-0.0903485706076025963" +"2551","-0.8504392299801111221" +"2552","-0.8758681826293468475" +"2553","-0.8319414453580975533" +"2554"," 0.4289929834194481373" +"2555"," 0.6094862660393118858" +"2556"," 0.3409255659207701683" +"2557"," 0.4598635053262114525" +"2558"," 0.5333386561833322048" +"2559","-0.3853989532217383385" +"2560","-0.0469508045352995396" +"2561","-0.2782097132876515388" +"2562"," 0.9746113745495676994" +"2563"," 0.3207508591003715992" +"2564"," 0.4995891083963215351" +"2565","-0.4908593613654375076" +"2566","-0.7904783352278172970" +"2567","-0.5131154539994895458" +"2568","-0.5786153236404061317" +"2569"," 0.6090186717920005322" +"2570"," 0.8843429726548492908" +"2571"," 0.6339423991739749908" +"2572"," 0.7257266365922987461" +"2573","-0.5834420137107372284" +"2574","-0.6256226468831300735" +"2575","-0.5292507042177021503" +"2576","-0.0118098771199584007" +"2577","-0.6790434112772345543" +"2578","-0.9236767110414803028" +"2579","-0.9725990318693220615" +"2580"," 0.7487301216460764408" +"2581"," 0.6427046246826648712" +"2582","-0.7601235504262149334" +"2583","-0.5140855968929827213" +"2584","-0.2468772260472178459" +"2585"," 0.1980326259508728981" +"2586","-0.6375528387725353241" +"2587","-0.7022306318394839764" +"2588","-0.0768729336559772491" +"2589","-0.3723159437067806721" +"2590","-0.4352628621272742748" +"2591"," 0.2011627792380750179" +"2592","-0.2125196470879018307" +"2593"," 0.0708315605297684669" +"2594","-0.1449140687473118305" +"2595"," 0.2918239454738795757" +"2596"," 0.4248563596047461033" +"2597","-0.4548836001195013523" +"2598"," 0.5965441535227000713" +"2599","-0.0337430294603109360" +"2600"," 0.1203189999796450138" +"2601","-0.8914647866040468216" +"2602","-0.3250688575208187103" +"2603","-0.9153833277523517609" +"2604","-0.2541487640701234341" +"2605","-0.0167037760838866234" +"2606"," 0.0621351236477494240" +"2607"," 0.7498876862227916718" +"2608"," 0.5738842478021979332" +"2609"," 0.4230713471770286560" +"2610"," 0.9113151887431740761" +"2611","-0.1434802720323204994" +"2612","-0.0079925348982214928" +"2613","-0.6814728509634733200" +"2614"," 0.7360066873952746391" +"2615","-0.9546494558453559875" +"2616"," 0.2636590306647121906" +"2617","-0.4557378604076802731" +"2618","-0.7610918516293168068" +"2619"," 0.9699604236520826817" +"2620"," 0.9823603522963821888" +"2621","-0.1204043244943022728" +"2622","-0.5573307313024997711" +"2623"," 0.1269008941017091274" +"2624","-0.3431530627422034740" +"2625","-0.1584260491654276848" +"2626"," 0.0505341938696801662" +"2627","-0.3558237506076693535" +"2628","-0.7021499443799257278" +"2629","-0.2122925780713558197" +"2630","-0.8057224173098802567" +"2631"," 0.5401681950315833092" +"2632"," 0.9836212350055575371" +"2633","-0.2791846487671136856" +"2634"," 0.9478168510831892490" +"2635"," 0.7815850507467985153" +"2636","-0.7184487171471118927" +"2637"," 0.1757222544401884079" +"2638"," 0.5354050672613084316" +"2639","-0.9866329329088330269" +"2640","-0.4942025807686150074" +"2641"," 0.5520877894014120102" +"2642","-0.2544069960713386536" +"2643","-0.9609281327575445175" +"2644","-0.8336646645329892635" +"2645"," 0.6356075895018875599" +"2646"," 0.9989893846213817596" +"2647","-0.4688093145377933979" +"2648"," 0.4388361126184463501" +"2649"," 0.7254600981250405312" +"2650","-0.3267598715610802174" +"2651","-0.1471538827754557133" +"2652"," 0.8379791947081685066" +"2653"," 0.8385984646156430244" +"2654","-0.5228691613301634789" +"2655","-0.2800648976117372513" +"2656","-0.9782013446092605591" +"2657"," 0.3550164382904767990" +"2658","-0.0407428196631371975" +"2659","-0.2651369799859821796" +"2660"," 0.4161143116652965546" +"2661","-0.8695820667780935764" +"2662","-0.3809960247017443180" +"2663","-0.5902906958945095539" +"2664"," 0.1516102319583296776" +"2665","-0.9746549595147371292" +"2666","-0.4232541597448289394" +"2667","-0.9906765562482178211" +"2668","-0.7598680951632559299" +"2669","-0.0433074352331459522" +"2670","-0.6478851502761244774" +"2671","-0.2101531103253364563" +"2672","-0.3381639402359724045" +"2673"," 0.0224854308180510998" +"2674"," 0.7281888993456959724" +"2675"," 0.0181698780506849289" +"2676","-0.5799993057735264301" +"2677","-0.1368484306149184704" +"2678"," 0.6951803476549685001" +"2679"," 0.2325943275354802608" +"2680"," 0.9743733815848827362" +"2681"," 0.2387854182161390781" +"2682"," 0.3980073584243655205" +"2683"," 0.0504769724793732166" +"2684"," 0.5178850134834647179" +"2685","-0.1326007707975804806" +"2686","-0.6534184743650257587" +"2687","-0.5938994227908551693" +"2688"," 0.0568302893079817295" +"2689"," 0.5675441590137779713" +"2690"," 0.5901096407324075699" +"2691","-0.2061912333592772484" +"2692","-0.3814601986669003963" +"2693"," 0.2758933715522289276" +"2694","-0.7971349991858005524" +"2695"," 0.7175137498416006565" +"2696","-0.6844567796215415001" +"2697"," 0.0211021848954260349" +"2698","-0.8957494273781776428" +"2699"," 0.2299762587063014507" +"2700"," 0.1433900794945657253" +"2701","-0.0976051772013306618" +"2702"," 0.4588270178064703941" +"2703"," 0.5299279401078820229" +"2704","-0.0174836381338536739" +"2705"," 0.3905583112500607967" +"2706","-0.5056629548780620098" +"2707"," 0.7128422223031520844" +"2708"," 0.1760789384134113789" +"2709"," 0.8269918640144169331" +"2710"," 0.2858884609304368496" +"2711"," 0.4067235044203698635" +"2712","-0.6133253118023276329" +"2713"," 0.8632039097137749195" +"2714"," 0.5980352335609495640" +"2715"," 0.4345282567664980888" +"2716"," 0.2574250269681215286" +"2717"," 0.6213084952905774117" +"2718"," 0.2255164766684174538" +"2719","-0.3593395231291651726" +"2720","-0.8747507152147591114" +"2721","-0.8003377481363713741" +"2722","-0.2373787686228752136" +"2723"," 0.3340664678253233433" +"2724","-0.6599291805177927017" +"2725"," 0.1976709230802953243" +"2726","-0.9426764203235507011" +"2727"," 0.9006312564015388489" +"2728","-0.7446126565337181091" +"2729","-0.8986065266653895378" +"2730","-0.2190422494895756245" +"2731"," 0.6341639487072825432" +"2732"," 0.0925100799649953842" +"2733"," 0.7121625216677784920" +"2734","-0.3925216416828334332" +"2735"," 0.9443217376247048378" +"2736"," 0.5521528609097003937" +"2737"," 0.9801705474965274334" +"2738"," 0.6288932501338422298" +"2739"," 0.8414272367954254150" +"2740"," 0.9118877402506768703" +"2741"," 0.4009401802904903889" +"2742","-0.1846811794675886631" +"2743","-0.3863874236121773720" +"2744"," 0.8860890241339802742" +"2745","-0.2837521303445100784" +"2746","-0.5972415157593786716" +"2747","-0.1492740213871002197" +"2748","-0.4816771564073860645" +"2749","-0.0795149034820497036" +"2750","-0.1492534922435879707" +"2751","-0.1063404069282114506" +"2752"," 0.7262989198789000511" +"2753"," 0.3180847819894552231" +"2754","-0.2809795043431222439" +"2755","-0.8091150070540606976" +"2756","-0.8952994900755584240" +"2757","-0.6873305337503552437" +"2758"," 0.8737272042781114578" +"2759","-0.1612684130668640137" +"2760","-0.1565708690322935581" +"2761","-0.9079844048246741295" +"2762","-0.7623210777528584003" +"2763"," 0.6308366358280181885" +"2764"," 0.9440456395968794823" +"2765","-0.7149137309752404690" +"2766","-0.3719865065068006516" +"2767","-0.5410453910008072853" +"2768"," 0.3700255155563354492" +"2769"," 0.7174382321536540985" +"2770","-0.3646803894080221653" +"2771"," 0.7997881611809134483" +"2772","-0.0117211197502911091" +"2773"," 0.4619450811296701431" +"2774"," 0.6252529472112655640" +"2775","-0.1872781030833721161" +"2776","-0.8236612356267869473" +"2777","-0.3819642551243305206" +"2778","-0.8425601334311068058" +"2779"," 0.9187249997630715370" +"2780","-0.9865631745196878910" +"2781","-0.5448258626274764538" +"2782"," 0.2562231402844190598" +"2783","-0.1066045337356626987" +"2784","-0.8716373546048998833" +"2785"," 0.1824545897543430328" +"2786"," 0.8567344644106924534" +"2787"," 0.4108042740263044834" +"2788","-0.8088031508959829807" +"2789"," 0.2065827026963233948" +"2790"," 0.6605786313302814960" +"2791","-0.0326966354623436928" +"2792","-0.2802895498462021351" +"2793"," 0.6326987021602690220" +"2794"," 0.0185196530073881149" +"2795"," 0.0069080777466297150" +"2796","-0.2916574426926672459" +"2797","-0.4162046443670988083" +"2798","-0.2780420659109950066" +"2799","-0.3388432380743324757" +"2800"," 0.6525822263211011887" +"2801","-0.2288081115111708641" +"2802","-0.4312420017085969448" +"2803","-0.6592179834842681885" +"2804"," 0.7994433077983558178" +"2805","-0.8234819676727056503" +"2806","-0.2476235977374017239" +"2807","-0.3583797533065080643" +"2808"," 0.9342831834219396114" +"2809","-0.6686714468523859978" +"2810"," 0.4712510006502270699" +"2811"," 0.4934670701622962952" +"2812","-0.8765452499501407146" +"2813","-0.4163647401146590710" +"2814"," 0.0291048316285014153" +"2815"," 0.3501872536726295948" +"2816"," 0.2289318875409662724" +"2817"," 0.4473832515068352222" +"2818","-0.1923321001231670380" +"2819","-0.2066509951837360859" +"2820"," 0.3304147054441273212" +"2821","-0.0382251753471791744" +"2822","-0.5661967121995985508" +"2823"," 0.4309061635285615921" +"2824"," 0.6965197264216840267" +"2825","-0.3661248343996703625" +"2826"," 0.9796230830252170563" +"2827"," 0.2167848716489970684" +"2828"," 0.5303850471973419189" +"2829"," 0.9077355717308819294" +"2830"," 0.2831891006790101528" +"2831","-0.7643342814408242702" +"2832"," 0.9578307443298399448" +"2833"," 0.0246682330034673214" +"2834"," 0.0302697108127176762" +"2835"," 0.5813736347481608391" +"2836","-0.5572215118445456028" +"2837","-0.6290857251733541489" +"2838","-0.2016740497201681137" +"2839"," 0.6915889531373977661" +"2840","-0.9675341439433395863" +"2841","-0.1349121332168579102" +"2842","-0.7941014794632792473" +"2843"," 0.8923948355950415134" +"2844"," 0.3335993401706218719" +"2845","-0.7154580079950392246" +"2846","-0.5019627036526799202" +"2847","-0.2862302223220467567" +"2848"," 0.4735559839755296707" +"2849","-0.8840215681120753288" +"2850","-0.7882891711778938770" +"2851"," 0.0041980538517236710" +"2852"," 0.6291587003506720066" +"2853","-0.4711293992586433887" +"2854","-0.8980533513240516186" +"2855"," 0.3255475875921547413" +"2856","-0.7969488413073122501" +"2857"," 0.7539123962633311749" +"2858","-0.5651074419729411602" +"2859"," 0.6322239739820361137" +"2860"," 0.8218697183765470982" +"2861"," 0.4314181115478277206" +"2862"," 0.4271486434154212475" +"2863"," 0.2289375462569296360" +"2864","-0.2505849557928740978" +"2865"," 0.4179442203603684902" +"2866","-0.3423944707028567791" +"2867"," 0.9379354510456323624" +"2868","-0.6202581860125064850" +"2869"," 0.1902458579279482365" +"2870","-0.7420976739376783371" +"2871","-0.8488402278162539005" +"2872","-0.9156211665831506252" +"2873"," 0.1559607526287436485" +"2874","-0.3742107492871582508" +"2875"," 0.3591151284053921700" +"2876"," 0.9646626026369631290" +"2877"," 0.5620474121533334255" +"2878"," 0.0933151342906057835" +"2879","-0.8027287577278912067" +"2880","-0.8846865780651569366" +"2881","-0.9141028430312871933" +"2882","-0.1484669288620352745" +"2883"," 0.4953382336534559727" +"2884","-0.4351006140932440758" +"2885","-0.3904838939197361469" +"2886"," 0.0708575230091810226" +"2887"," 0.1870009792037308216" +"2888"," 0.5758978235535323620" +"2889"," 0.2965450501069426537" +"2890","-0.2158940155059099197" +"2891","-0.0889467154629528522" +"2892"," 0.6167543176561594009" +"2893","-0.0598631794564425945" +"2894"," 0.6167766377329826355" +"2895"," 0.4916505683213472366" +"2896"," 0.7500334824435412884" +"2897"," 0.4281895598396658897" +"2898"," 0.3455428364686667919" +"2899","-0.1806218326091766357" +"2900","-0.8349303347058594227" +"2901"," 0.1783511564135551453" +"2902"," 0.4421471967361867428" +"2903","-0.9951486825011670589" +"2904"," 0.3741457927972078323" +"2905","-0.4190003997646272182" +"2906"," 0.9208868723362684250" +"2907","-0.2080837548710405827" +"2908","-0.3749344367533922195" +"2909"," 0.9898134251125156879" +"2910"," 0.0512766572646796703" +"2911","-0.4348454000428318977" +"2912"," 0.1609949935227632523" +"2913","-0.2192942691035568714" +"2914","-0.8750867871567606926" +"2915","-0.2660818058066070080" +"2916"," 0.3777688466943800449" +"2917","-0.2313248943537473679" +"2918"," 0.1124770068563520908" +"2919"," 0.6740333414636552334" +"2920"," 0.0713396770879626274" +"2921","-0.7243873840197920799" +"2922"," 0.5454836911521852016" +"2923"," 0.4687160979956388474" +"2924","-0.9186507398262619972" +"2925","-0.2637418089434504509" +"2926"," 0.4502793471328914165" +"2927","-0.6716886861249804497" +"2928"," 0.5181312086060643196" +"2929"," 0.4445688142441213131" +"2930"," 0.9973743534646928310" +"2931"," 0.9692937196232378483" +"2932"," 0.4160334724001586437" +"2933"," 0.6115598939359188080" +"2934","-0.5063391705043613911" +"2935","-0.3057118635624647141" +"2936"," 0.3849233854562044144" +"2937","-0.1238072919659316540" +"2938"," 0.2025208477862179279" +"2939"," 0.1572673264890909195" +"2940"," 0.4148875889368355274" +"2941"," 0.9578036195598542690" +"2942","-0.5758040277287364006" +"2943","-0.4339796104468405247" +"2944"," 0.8432278526015579700" +"2945","-0.9652393832802772522" +"2946"," 0.7360091670416295528" +"2947","-0.8560125241056084633" +"2948"," 0.2087668119929730892" +"2949"," 0.0428348709829151630" +"2950"," 0.7871005875058472157" +"2951"," 0.0057379584759473801" +"2952"," 0.8700243602506816387" +"2953"," 0.0298635279759764671" +"2954"," 0.7183265779167413712" +"2955","-0.0803182623349130154" +"2956"," 0.7617573207244277000" +"2957","-0.0528347655199468136" +"2958","-0.5627889423631131649" +"2959"," 0.8480635061860084534" +"2960","-0.2621984789147973061" +"2961","-0.8836286556906998158" +"2962","-0.5936369565315544605" +"2963"," 0.9381576278246939182" +"2964"," 0.8809949699789285660" +"2965"," 0.6211367119103670120" +"2966"," 0.1019146763719618320" +"2967"," 0.3526362767443060875" +"2968","-0.0311921080574393272" +"2969"," 0.4018170856870710850" +"2970"," 0.1371880746446549892" +"2971"," 0.9761044834740459919" +"2972","-0.3721613106317818165" +"2973","-0.1079044416546821594" +"2974","-0.2423993689008057117" +"2975"," 0.4264670060947537422" +"2976"," 0.7795161590911448002" +"2977"," 0.3789688898250460625" +"2978"," 0.8838180643506348133" +"2979"," 0.7419557301327586174" +"2980","-0.1663027252070605755" +"2981","-0.5869768490083515644" +"2982","-0.8042633272707462311" +"2983","-0.6938000652007758617" +"2984","-0.5861638956703245640" +"2985","-0.4553493354469537735" +"2986","-0.4090126752853393555" +"2987"," 0.4239407130517065525" +"2988"," 0.7617440982721745968" +"2989"," 0.2904935888946056366" +"2990"," 0.9124378943815827370" +"2991"," 0.2028963342308998108" +"2992","-0.5252322652377188206" +"2993"," 0.6688493140973150730" +"2994","-0.5491491239517927170" +"2995","-0.4785385373979806900" +"2996"," 0.4311919994652271271" +"2997"," 0.2013053637929260731" +"2998"," 0.0190160744823515415" +"2999","-0.7008688980713486671" +"3000"," 0.8896134747192263603" +"3001"," 0.6994602880440652370" +"3002","-0.0005875229835510254" +"3003","-0.5203544124960899353" +"3004"," 0.6504210974089801311" +"3005","-0.7319761030375957489" +"3006","-0.1154384450055658817" +"3007","-0.3307654396630823612" +"3008"," 0.2570399763062596321" +"3009"," 0.3302236958406865597" +"3010","-0.3280445444397628307" +"3011","-0.5256498069502413273" +"3012","-0.7137911324389278889" +"3013"," 0.6012081303633749485" +"3014","-0.5367929795756936073" +"3015"," 0.5286836395971477032" +"3016","-0.5224240305833518505" +"3017"," 0.7056327834725379944" +"3018","-0.5916212974116206169" +"3019"," 0.5678971954621374607" +"3020"," 0.2116398266516625881" +"3021"," 0.8414227063767611980" +"3022","-0.1352094011381268501" +"3023"," 0.3719160673208534718" +"3024","-0.4160541561432182789" +"3025","-0.7437360081821680069" +"3026"," 0.5492548188194632530" +"3027","-0.2968372432515025139" +"3028"," 0.1637290678918361664" +"3029"," 0.7570612328127026558" +"3030","-0.2642821855843067169" +"3031"," 0.4978132485412061214" +"3032","-0.2328891782090067863" +"3033"," 0.3867515535093843937" +"3034","-0.3285744013264775276" +"3035"," 0.8353978791274130344" +"3036","-0.3537452709861099720" +"3037","-0.9075509733520448208" +"3038","-0.5961430878378450871" +"3039","-0.8423726223409175873" +"3040"," 0.4659547084011137486" +"3041","-0.4483921844512224197" +"3042"," 0.5922895958647131920" +"3043","-0.4449279233813285828" +"3044"," 0.4094635848887264729" +"3045"," 0.4863452194258570671" +"3046"," 0.4981900532729923725" +"3047"," 0.6760782226920127869" +"3048"," 0.9469544319435954094" +"3049"," 0.2007948104292154312" +"3050","-0.8319809483364224434" +"3051","-0.6266619786620140076" +"3052"," 0.7849501282908022404" +"3053"," 0.4052339615300297737" +"3054","-0.3563212146982550621" +"3055","-0.1018767347559332848" +"3056","-0.8626083242706954479" +"3057"," 0.2360686273314058781" +"3058","-0.8501994754187762737" +"3059","-0.7845924054272472858" +"3060"," 0.3961783512495458126" +"3061","-0.3350790571421384811" +"3062","-0.3543675141409039497" +"3063"," 0.6728717964142560959" +"3064","-0.7934626834467053413" +"3065","-0.6444823932833969593" +"3066","-0.2572938273660838604" +"3067"," 0.7355872862972319126" +"3068"," 0.3831586614251136780" +"3069","-0.5079681654460728168" +"3070"," 0.2603899184614419937" +"3071"," 0.3809185451827943325" +"3072"," 0.5394829097203910351" +"3073"," 0.2944454825483262539" +"3074"," 0.2281742594204843044" +"3075","-0.2525769667699933052" +"3076"," 0.9495614455081522465" +"3077"," 0.4560435777530074120" +"3078","-0.5647060787305235863" +"3079"," 0.6560910730622708797" +"3080"," 0.8949581636115908623" +"3081"," 0.0520580927841365337" +"3082","-0.3652058541774749756" +"3083"," 0.1218321262858808041" +"3084","-0.5889043509960174561" +"3085","-0.7528586969710886478" +"3086"," 0.3758959858678281307" +"3087"," 0.9772293046116828918" +"3088"," 0.9953766316175460815" +"3089","-0.6931031681597232819" +"3090","-0.0562207680195569992" +"3091"," 0.0765081881545484066" +"3092"," 0.8854921325109899044" +"3093"," 0.2017197264358401299" +"3094","-0.5081223589368164539" +"3095","-0.6307604848407208920" +"3096"," 0.4348915959708392620" +"3097","-0.9508926547132432461" +"3098","-0.5421815062873065472" +"3099"," 0.4824869944714009762" +"3100","-0.8176409220322966576" +"3101","-0.4676526566036045551" +"3102"," 0.1852142387069761753" +"3103"," 0.4346316121518611908" +"3104","-0.3764836327172815800" +"3105"," 0.8418688452802598476" +"3106"," 0.2424500049091875553" +"3107","-0.0720712621696293354" +"3108"," 0.4961016350425779819" +"3109"," 0.1051840172149240971" +"3110"," 0.9394043860957026482" +"3111"," 0.3462339723482728004" +"3112"," 0.2595685264095664024" +"3113","-0.8465870106592774391" +"3114","-0.9323750645853579044" +"3115"," 0.9195040320046246052" +"3116","-0.5098082167096436024" +"3117","-0.9022373408079147339" +"3118"," 0.1271766992285847664" +"3119","-0.2162013626657426357" +"3120","-0.0539105543866753578" +"3121"," 0.0300716916099190712" +"3122"," 0.5863985810428857803" +"3123","-0.1131952353753149509" +"3124","-0.7404895965009927750" +"3125"," 0.3364113909192383289" +"3126"," 0.1482000532560050488" +"3127"," 0.0451955068856477737" +"3128"," 0.5621115709654986858" +"3129","-0.4215387655422091484" +"3130","-0.5282752360217273235" +"3131","-0.3292044554837048054" +"3132"," 0.0129586155526340008" +"3133","-0.3583715446293354034" +"3134"," 0.2144945869222283363" +"3135"," 0.4083444080315530300" +"3136","-0.3051045723259449005" +"3137"," 0.4581971475854516029" +"3138"," 0.7310106451623141766" +"3139","-0.7135712229646742344" +"3140"," 0.8619396095164120197" +"3141"," 0.9931871742010116577" +"3142"," 0.9222924783825874329" +"3143","-0.9301089555956423283" +"3144","-0.5319223445840179920" +"3145","-0.8994403290562331676" +"3146"," 0.0306323389522731304" +"3147"," 0.9165725843049585819" +"3148"," 0.5646360549144446850" +"3149","-0.3008717913180589676" +"3150","-0.3839787221513688564" +"3151"," 0.8712222641333937645" +"3152","-0.5541810686700046062" +"3153"," 0.6275819996371865273" +"3154","-0.6689238180406391621" +"3155"," 0.9626969550736248493" +"3156"," 0.4012232511304318905" +"3157","-0.2094678794965147972" +"3158","-0.2083833194337785244" +"3159"," 0.6906845727935433388" +"3160","-0.3504341421648859978" +"3161"," 0.0877199210226535797" +"3162","-0.4770649527199566364" +"3163"," 0.0519798444584012032" +"3164","-0.5490275113843381405" +"3165","-0.1441173795610666275" +"3166"," 0.1105600860901176929" +"3167"," 0.1607634448446333408" +"3168"," 0.7625489355996251106" +"3169"," 0.5910701341927051544" +"3170","-0.8221845696680247784" +"3171","-0.7390960552729666233" +"3172","-0.8456560736522078514" +"3173"," 0.2427913020364940166" +"3174","-0.9856120487675070763" +"3175"," 0.8457304742187261581" +"3176","-0.8335018870420753956" +"3177","-0.2220707670785486698" +"3178","-0.9612102769315242767" +"3179"," 0.1858391314744949341" +"3180","-0.3237018054351210594" +"3181"," 0.0445685349404811859" +"3182"," 0.5185434930026531219" +"3183","-0.9737340160645544529" +"3184"," 0.8068150156177580357" +"3185"," 0.1444738493300974369" +"3186"," 0.0692794886417686939" +"3187"," 0.4580051796510815620" +"3188"," 0.0516954297199845314" +"3189","-0.3017223426140844822" +"3190"," 0.4427995667792856693" +"3191","-0.1468129367567598820" +"3192"," 0.1806385582312941551" +"3193","-0.3384259608574211597" +"3194","-0.0920880800113081932" +"3195"," 0.7760251504369080067" +"3196"," 0.5885825436562299728" +"3197"," 0.6097452943213284016" +"3198","-0.9826387218199670315" +"3199","-0.4929358335211873055" +"3200","-0.0667721577920019627" +"3201"," 0.7498049237765371799" +"3202"," 0.5251749362796545029" +"3203","-0.7613493897952139378" +"3204"," 0.0084095927886664867" +"3205"," 0.3467955659143626690" +"3206","-0.5194805944338440895" +"3207"," 0.3163998136296868324" +"3208"," 0.2258182959631085396" +"3209","-0.0184185192920267582" +"3210"," 0.5265603284351527691" +"3211"," 0.1919581927359104156" +"3212"," 0.8904818906448781490" +"3213","-0.7552433609962463379" +"3214"," 0.9892207258380949497" +"3215","-0.1874373643659055233" +"3216","-0.2037552213296294212" +"3217"," 0.4339971812441945076" +"3218","-0.4024020116776227951" +"3219"," 0.3434680183418095112" +"3220","-0.2808181918226182461" +"3221"," 0.9663511216640472412" +"3222","-0.3497653999365866184" +"3223"," 0.6107559748925268650" +"3224"," 0.3252739659510552883" +"3225","-0.8105063410475850105" +"3226","-0.6393819451332092285" +"3227"," 0.4737297729589045048" +"3228","-0.4891727417707443237" +"3229","-0.0196004495956003666" +"3230"," 0.2486024713143706322" +"3231"," 0.2153387935832142830" +"3232"," 0.9905718662776052952" +"3233"," 0.0252568749710917473" +"3234"," 0.3608686807565391064" +"3235","-0.0429284032434225082" +"3236"," 0.2120063975453376770" +"3237","-0.3297133897431194782" +"3238"," 0.4431959767825901508" +"3239","-0.4608946698717772961" +"3240"," 0.3504742328077554703" +"3241","-0.2540748831816017628" +"3242"," 0.7321414235047996044" +"3243"," 0.9541343240998685360" +"3244"," 0.5851460127159953117" +"3245"," 0.3242003307677805424" +"3246","-0.7499805451370775700" +"3247"," 0.4658808521926403046" +"3248","-0.8916242835111916065" +"3249"," 0.1320945033803582191" +"3250"," 0.6318298890255391598" +"3251"," 0.7573445662856101990" +"3252","-0.5062875538133084774" +"3253","-0.8519603516906499863" +"3254"," 0.3812330896034836769" +"3255","-0.6374491374008357525" +"3256"," 0.1907272296957671642" +"3257"," 0.1214830954559147358" +"3258","-0.3520600348711013794" +"3259"," 0.3379023126326501369" +"3260"," 0.6074757524766027927" +"3261","-0.9202065682038664818" +"3262"," 0.4726234399713575840" +"3263"," 0.1976149184629321098" +"3264","-0.5400811447761952877" +"3265"," 0.7993695694021880627" +"3266","-0.0192133435048162937" +"3267","-0.1406744215637445450" +"3268"," 0.2139943935908377171" +"3269"," 0.5306396661326289177" +"3270","-0.7589585315436124802" +"3271"," 0.3871068269945681095" +"3272"," 0.0002416465431451797" +"3273"," 0.2921816064044833183" +"3274"," 0.8885718551464378834" +"3275","-0.4028770602308213711" +"3276"," 0.7915209280326962471" +"3277"," 0.8223326671868562698" +"3278"," 0.2883350527845323086" +"3279"," 0.5189801193773746490" +"3280","-0.6299390150234103203" +"3281"," 0.9715380882844328880" +"3282","-0.1182091352529823780" +"3283","-0.4018648960627615452" +"3284","-0.0804663719609379768" +"3285"," 0.0281885839067399502" +"3286","-0.3806959753856062889" +"3287","-0.0399467661045491695" +"3288"," 0.0303027308546006680" +"3289","-0.2354894797317683697" +"3290"," 0.1246455255895853043" +"3291"," 0.2243352583609521389" +"3292"," 0.1857252097688615322" +"3293","-0.3799745473079383373" +"3294","-0.5941015733405947685" +"3295"," 0.6468191538006067276" +"3296"," 0.5925898849964141846" +"3297"," 0.6992770703509449959" +"3298","-0.7426766543649137020" +"3299","-0.5193991498090326786" +"3300","-0.7240331061184406281" +"3301","-0.6240057880058884621" +"3302","-0.0459838127717375755" +"3303"," 0.5947116212919354439" +"3304","-0.1945842895656824112" +"3305"," 0.5836539673618972301" +"3306","-0.1107443450018763542" +"3307","-0.6444032364524900913" +"3308","-0.8543106308206915855" +"3309","-0.0985448341816663742" +"3310","-0.8849594285711646080" +"3311","-0.5429394631646573544" +"3312"," 0.9177653584629297256" +"3313"," 0.4617896452546119690" +"3314","-0.1069554407149553299" +"3315"," 0.9077892806380987167" +"3316","-0.9860490122810006142" +"3317"," 0.8321945164352655411" +"3318"," 0.6150790895335376263" +"3319"," 0.0946581088937819004" +"3320"," 0.2504316777922213078" +"3321"," 0.1918705492280423641" +"3322"," 0.8741560089401900768" +"3323"," 0.1408878457732498646" +"3324"," 0.2367912279441952705" +"3325"," 0.3663658048026263714" +"3326"," 0.6308840592391788960" +"3327","-0.0585748143494129181" +"3328"," 0.3850663052871823311" +"3329","-0.1163981598801910877" +"3330"," 0.3355187433771789074" +"3331","-0.4306767964735627174" +"3332"," 0.4170516622252762318" +"3333","-0.0488875289447605610" +"3334","-0.5469955895096063614" +"3335"," 0.9180370545946061611" +"3336"," 0.1617726790718734264" +"3337"," 0.9117618566378951073" +"3338"," 0.2818043427541851997" +"3339"," 0.6163415485061705112" +"3340"," 0.6337109864689409733" +"3341"," 0.7687366716563701630" +"3342","-0.3875904898159205914" +"3343","-0.2526249736547470093" +"3344","-0.0530702942050993443" +"3345"," 0.0027268598787486553" +"3346","-0.7650718586519360542" +"3347"," 0.4168036244809627533" +"3348"," 0.3775543682277202606" +"3349"," 0.7875634143128991127" +"3350","-0.5306157139129936695" +"3351"," 0.9710323126055300236" +"3352"," 0.4488569553941488266" +"3353","-0.5395797588862478733" +"3354","-0.2579903719015419483" +"3355"," 0.4299658183008432388" +"3356","-0.9905712064355611801" +"3357","-0.8939329027198255062" +"3358","-0.8385720397345721722" +"3359"," 0.0549665386788547039" +"3360"," 0.7952980077825486660" +"3361","-0.5638944669626653194" +"3362","-0.7100218930281698704" +"3363"," 0.2082362766377627850" +"3364"," 0.2863829038105905056" +"3365"," 0.1374063827097415924" +"3366"," 0.1048509725369513035" +"3367"," 0.5385187817737460136" +"3368","-0.7051670602522790432" +"3369","-0.3683716873638331890" +"3370"," 0.6840245649218559265" +"3371"," 0.7218757593072950840" +"3372"," 0.5117321414873003960" +"3373","-0.3834823630750179291" +"3374","-0.8233096138574182987" +"3375","-0.8378857900388538837" +"3376","-0.1476043183356523514" +"3377"," 0.8885085685178637505" +"3378"," 0.5021085455082356930" +"3379"," 0.7670882819220423698" +"3380"," 0.3992621572688221931" +"3381"," 0.4111445611342787743" +"3382","-0.6333435820415616035" +"3383","-0.2985562216490507126" +"3384"," 0.5513436095789074898" +"3385"," 0.4004079005680978298" +"3386"," 0.4717203518375754356" +"3387","-0.9285880113020539284" +"3388"," 0.5061351992189884186" +"3389","-0.8715346800163388252" +"3390","-0.0174196758307516575" +"3391","-0.3760452168062329292" +"3392"," 0.4597758529707789421" +"3393"," 0.6668290612287819386" +"3394","-0.0623044352978467941" +"3395"," 0.8060508328489959240" +"3396"," 0.5158545658923685551" +"3397"," 0.7005865997634828091" +"3398","-0.6805236940272152424" +"3399"," 0.1923568081110715866" +"3400"," 0.6950364187359809875" +"3401","-0.2449394045397639275" +"3402","-0.7846826477907598019" +"3403","-0.9877694817259907722" +"3404","-0.7649848768487572670" +"3405"," 0.5152697442099452019" +"3406","-0.8912931350059807301" +"3407"," 0.9377921130508184433" +"3408"," 0.6902342610992491245" +"3409","-0.5003011464141309261" +"3410","-0.5615728744305670261" +"3411"," 0.2296227919869124889" +"3412","-0.8595524788834154606" +"3413"," 0.9994142334908246994" +"3414","-0.7145909653045237064" +"3415"," 0.5953414365649223328" +"3416"," 0.8580548474565148354" +"3417"," 0.7527098977006971836" +"3418","-0.9935805639252066612" +"3419"," 0.5724973385222256184" +"3420","-0.5178010580129921436" +"3421","-0.1796656851656734943" +"3422","-0.2675763359293341637" +"3423"," 0.8127541416324675083" +"3424","-0.5026184883899986744" +"3425"," 0.9274587575346231461" +"3426"," 0.2524075759574770927" +"3427","-0.4097417644225060940" +"3428","-0.5082397693768143654" +"3429"," 0.2682871986180543900" +"3430"," 0.0951121523976325989" +"3431","-0.2342571318149566650" +"3432","-0.4267582148313522339" +"3433"," 0.5271475194022059441" +"3434","-0.7297652713023126125" +"3435"," 0.6513439998961985111" +"3436"," 0.2728727399371564388" +"3437","-0.9747005086392164230" +"3438"," 0.3124284204095602036" +"3439"," 0.9454553700052201748" +"3440"," 0.3201357228681445122" +"3441","-0.9750361638143658638" +"3442","-0.3130152523517608643" +"3443"," 0.1341755772009491920" +"3444","-0.4269096129573881626" +"3445","-0.9120642961934208870" +"3446"," 0.4400515439920127392" +"3447"," 0.3692601076327264309" +"3448","-0.5537182828411459923" +"3449"," 0.0667909597977995872" +"3450","-0.5202395375818014145" +"3451","-0.6224822243675589561" +"3452"," 0.4948784066364169121" +"3453","-0.3002277892082929611" +"3454","-0.9853853117674589157" +"3455"," 0.9999314276501536369" +"3456","-0.0326661933213472366" +"3457","-0.6691212505102157593" +"3458"," 0.7944211894646286964" +"3459","-0.2482679635286331177" +"3460","-0.5979366004467010498" +"3461","-0.4852868709713220596" +"3462"," 0.8461389010772109032" +"3463","-0.9546547513455152512" +"3464"," 0.4562212987802922726" +"3465","-0.6349640870466828346" +"3466"," 0.9006871460005640984" +"3467","-0.5611883909441530704" +"3468","-0.8757421895861625671" +"3469","-0.5134655581787228584" +"3470"," 0.8142871074378490448" +"3471","-0.3139470396563410759" +"3472","-0.2686246512457728386" +"3473"," 0.5291876103729009628" +"3474"," 0.5994353764690458775" +"3475"," 0.1242099860683083534" +"3476","-0.3338468647561967373" +"3477","-0.0764805208891630173" +"3478"," 0.3146593184210360050" +"3479"," 0.9833441823720932007" +"3480","-0.1382311708293855190" +"3481"," 0.8973841494880616665" +"3482"," 0.8920610947534441948" +"3483","-0.4158391947858035564" +"3484","-0.9745323718525469303" +"3485","-0.1130215902812778950" +"3486","-0.3281112234108150005" +"3487","-0.0199067443609237671" +"3488"," 0.8596883337013423443" +"3489"," 0.9193444834090769291" +"3490","-0.7720738737843930721" +"3491","-0.7435381151735782623" +"3492","-0.3268085923045873642" +"3493","-0.8867039778269827366" +"3494"," 0.2103272392414510250" +"3495","-0.3090365589596331120" +"3496"," 0.9523666896857321262" +"3497"," 0.6198572320863604546" +"3498","-0.9005643897689878941" +"3499","-0.6067852857522666454" +"3500"," 0.5308120064437389374" +"3501"," 0.2012823349796235561" +"3502","-0.8905593231320381165" +"3503","-0.2213805764913558960" +"3504"," 0.8386489143595099449" +"3505"," 0.5000797281973063946" +"3506","-0.5516619957052171230" +"3507","-0.1562734646722674370" +"3508"," 0.7709275842644274235" +"3509","-0.2941856859251856804" +"3510"," 0.3438597954809665680" +"3511","-0.5962961185723543167" +"3512","-0.3154078922234475613" +"3513"," 0.9387733917683362961" +"3514","-0.2069166782312095165" +"3515","-0.2183370827697217464" +"3516","-0.0200474755838513374" +"3517"," 0.6602112678810954094" +"3518"," 0.8796647964045405388" +"3519","-0.5886084367521107197" +"3520"," 0.6422489713877439499" +"3521"," 0.6625638273544609547" +"3522"," 0.2865073611028492451" +"3523"," 0.9700983176007866859" +"3524"," 0.1089712698012590408" +"3525","-0.1323466831818223000" +"3526"," 0.7936005718074738979" +"3527","-0.7849200204946100712" +"3528"," 0.1903121923096477985" +"3529","-0.3699496760964393616" +"3530"," 0.2675143149681389332" +"3531"," 0.0487161059863865376" +"3532","-0.3009204445406794548" +"3533"," 0.9983281404711306095" +"3534"," 0.9049865002743899822" +"3535","-0.3668675385415554047" +"3536"," 0.5951229934580624104" +"3537"," 0.6745037115179002285" +"3538"," 0.6401644656434655190" +"3539","-0.7729524183087050915" +"3540"," 0.8455491731874644756" +"3541","-0.2983606928028166294" +"3542"," 0.3619629484601318836" +"3543"," 0.7111476669088006020" +"3544","-0.2354501546360552311" +"3545"," 0.6923992400988936424" +"3546"," 0.5595426694490015507" +"3547","-0.9282311578281223774" +"3548"," 0.7701697940938174725" +"3549"," 0.5349713834002614021" +"3550","-0.5836085658520460129" +"3551"," 0.5284859794192016125" +"3552","-0.6731170681305229664" +"3553"," 0.9110626908950507641" +"3554"," 0.7393303010612726212" +"3555","-0.1356611237861216068" +"3556","-0.0178141840733587742" +"3557"," 0.5041413689032196999" +"3558","-0.0710106254555284977" +"3559"," 0.1940335473045706749" +"3560","-0.7680648020468652248" +"3561"," 0.6548450081609189510" +"3562"," 0.0481090722605586052" +"3563"," 0.9488389939069747925" +"3564"," 0.7872749920934438705" +"3565","-0.1314639220945537090" +"3566","-0.0818646629340946674" +"3567"," 0.0477386433631181717" +"3568"," 0.9286955147981643677" +"3569","-0.3736938592046499252" +"3570"," 0.6737616616301238537" +"3571","-0.7319448390044271946" +"3572","-0.1862803068943321705" +"3573","-0.0138717414811253548" +"3574"," 0.3343628630973398685" +"3575","-0.6842036759480834007" +"3576"," 0.1014335760846734047" +"3577"," 0.6901171966455876827" +"3578"," 0.3156446898356080055" +"3579","-0.6416086773388087749" +"3580","-0.0456793829798698425" +"3581"," 0.8639279697090387344" +"3582","-0.9014844442717730999" +"3583","-0.8690481404773890972" +"3584"," 0.4233332257717847824" +"3585","-0.6459034699946641922" +"3586","-0.2770926514640450478" +"3587","-0.3812566776759922504" +"3588","-0.0685555166564881802" +"3589","-0.9345475775189697742" +"3590","-0.9300585458986461163" +"3591"," 0.1556064980104565620" +"3592","-0.9454095973633229733" +"3593","-0.0031835963018238544" +"3594"," 0.2118101627565920353" +"3595","-0.9323812820948660374" +"3596","-0.9158820621669292450" +"3597"," 0.6896133790723979473" +"3598","-0.9261532286182045937" +"3599"," 0.6785468189045786858" +"3600","-0.1216346910223364830" +"3601"," 0.7436523209325969219" +"3602","-0.9355527437292039394" +"3603"," 0.5272431867197155952" +"3604","-0.6649643201380968094" +"3605","-0.7485286695882678032" +"3606","-0.6430016481317579746" +"3607","-0.9810719094239175320" +"3608","-0.3101107496768236160" +"3609","-0.3549271728843450546" +"3610","-0.1610579509288072586" +"3611"," 0.0751892630942165852" +"3612","-0.0342305172234773636" +"3613","-0.6320223840884864330" +"3614","-0.1520647918805480003" +"3615","-0.6257942700758576393" +"3616"," 0.2419946179725229740" +"3617","-0.6911582774482667446" +"3618"," 0.1118201036006212234" +"3619"," 0.1508804215118288994" +"3620","-0.8124674139544367790" +"3621"," 0.5493527236394584179" +"3622"," 0.0598933775909245014" +"3623","-0.8132621441036462784" +"3624","-0.3746686140075325966" +"3625"," 0.0422018626704812050" +"3626"," 0.2736797025427222252" +"3627","-0.6903673508204519749" +"3628"," 0.2798199593089520931" +"3629","-0.0383296543732285500" +"3630"," 0.1351994224824011326" +"3631"," 0.1811530212871730328" +"3632","-0.3591402722522616386" +"3633","-0.0174272130243480206" +"3634","-0.5349931195378303528" +"3635","-0.4143805927596986294" +"3636"," 0.8673077286221086979" +"3637"," 0.9695521797984838486" +"3638","-0.1206308053806424141" +"3639"," 0.2879445673897862434" +"3640","-0.8960286723449826241" +"3641"," 0.5307854972779750824" +"3642","-0.3367397035472095013" +"3643"," 0.5045916684903204441" +"3644","-0.1306924023665487766" +"3645","-0.5630841180682182312" +"3646"," 0.0999263320118188858" +"3647","-0.2199025144800543785" +"3648","-0.4785488145425915718" +"3649","-0.2344374456442892551" +"3650"," 0.9360686275176703930" +"3651"," 0.3158579603768885136" +"3652","-0.5450671920552849770" +"3653"," 0.9081017985008656979" +"3654"," 0.4015126680023968220" +"3655"," 0.3243670649826526642" +"3656"," 0.7228028131648898125" +"3657","-0.1164639322087168694" +"3658","-0.3124910006299614906" +"3659","-0.2652087621390819550" +"3660"," 0.1134405960328876972" +"3661"," 0.4343104525469243526" +"3662"," 0.0043372665531933308" +"3663"," 0.2037417343817651272" +"3664"," 0.2948203873820602894" +"3665"," 0.3549154163338243961" +"3666"," 0.6902888175100088120" +"3667","-0.8347936100326478481" +"3668","-0.8100766008719801903" +"3669"," 0.4882971802726387978" +"3670"," 0.3378380681388080120" +"3671","-0.3471172992140054703" +"3672","-0.6361308884806931019" +"3673"," 0.6746102455072104931" +"3674","-0.8047046712599694729" +"3675","-0.7511976198293268681" +"3676"," 0.4711654190905392170" +"3677"," 0.5676694214344024658" +"3678","-0.4655985608696937561" +"3679"," 0.2668474819511175156" +"3680","-0.3580431370064616203" +"3681"," 0.2164622703567147255" +"3682","-0.8985997019335627556" +"3683"," 0.9451374341733753681" +"3684","-0.5538388155400753021" +"3685","-0.2637003511190414429" +"3686","-0.0737206223420798779" +"3687","-0.0087879435159265995" +"3688"," 0.0109837157651782036" +"3689"," 0.9914964423514902592" +"3690","-0.1150745376944541931" +"3691","-0.9292449727654457092" diff --git a/test/data/models/srpde/25D_test1/y.csv b/test/data/models/srpde/25D_test1/y.csv new file mode 100644 index 00000000..506aef42 --- /dev/null +++ b/test/data/models/srpde/25D_test1/y.csv @@ -0,0 +1,3692 @@ +"","x" +"1","12.4191556002815399751" +"2"," 8.1878311770064780006" +"3"," 4.7937809358777023760" +"4","15.3950526352648235928" +"5","-4.7546122349620070224" +"6","-4.3687148938213864469" +"7","-5.9126458411431830342" +"8","-6.3904770324123694181" +"9"," 3.0230384424858263159" +"10"," 5.5340715343480688659" +"11"," 0.7058507173117023470" +"12"," 2.2120349797748115606" +"13"," 0.0914930437780238082" +"14"," 0.3564710034817006323" +"15","-0.3402495750890067727" +"16","-0.4571121054924730531" +"17","-0.9953153613718497272" +"18","-1.4174962268079003280" +"19","-1.4718608263369035161" +"20","-2.9300330229327498088" +"21","-2.6852642380429525559" +"22","-1.6208022461695184013" +"23","-0.0815291839083842618" +"24","-0.6856169853361506750" +"25","-2.8097856663639904085" +"26","-1.9769272995275914973" +"27"," 0.2260691210674943830" +"28"," 1.6659303634277264905" +"29"," 1.7340399829824453271" +"30","-0.5421108074334899385" +"31"," 4.8278973390727344395" +"32"," 3.9130685172069754607" +"33"," 1.5415205659320794229" +"34"," 5.3108705373090518975" +"35"," 3.8949993663978972336" +"36"," 2.6684990512793800299" +"37"," 3.0753056508632101718" +"38"," 0.1874508347109100637" +"39"," 1.5725190534371151774" +"40"," 2.8609372882500201385" +"41"," 4.8032478917989473999" +"42"," 3.7433682370574130616" +"43"," 2.7063763985431439352" +"44"," 1.5797172472688290057" +"45"," 3.0957716528237790854" +"46"," 3.8928162097319720658" +"47"," 5.1348760827089794390" +"48"," 7.1846222054291004611" +"49"," 7.2021800865290597216" +"50"," 4.0528933897547529952" +"51"," 6.1277003278684301080" +"52"," 5.8694908895342852162" +"53"," 5.2235042821582720052" +"54"," 5.5440156620736908977" +"55"," 3.9571112615116712519" +"56"," 2.8884477895840783290" +"57"," 5.9383518872896114971" +"58"," 0.7358113985387477740" +"59"," 3.9131178470937464375" +"60"," 2.8272396904136938289" +"61"," 1.3229094377407077943" +"62"," 3.6196293071809257924" +"63"," 5.3444074010232416327" +"64"," 1.4476972240037548900" +"65","-0.5653497729357428447" +"66"," 2.2156789053414662760" +"67"," 0.7997913954949404935" +"68"," 1.4426875265917684654" +"69","-0.1662311419129705037" +"70"," 1.8422090169730289677" +"71"," 0.4561348725166421980" +"72"," 1.5461070687408711155" +"73"," 1.3634843214651677368" +"74"," 4.2987679102790838925" +"75"," 0.6829842841082784943" +"76"," 1.5450458141354053154" +"77"," 1.1868082079402046958" +"78"," 4.4545293670935706132" +"79"," 2.8623053530886721774" +"80"," 3.8209893172646465231" +"81"," 3.1695907345144420653" +"82"," 4.6583251314729086090" +"83"," 7.1339062732649773935" +"84"," 4.8631404819067567402" +"85"," 3.1964979818445020676" +"86"," 5.7380583670509075489" +"87"," 0.6463006440344434278" +"88"," 1.0617480191215817875" +"89","-0.0955363436546941003" +"90"," 2.9525213627465753952" +"91"," 1.4519930703615810952" +"92","-2.2294478896958631609" +"93","-1.1173614061362899808" +"94"," 1.3305389557553228830" +"95","-2.0660866309215890624" +"96","-1.4882948360386012432" +"97"," 1.2755340055514530206" +"98","-1.9458745267100356902" +"99","-1.7174752773267998318" +"100","-0.7216142263929428147" +"101","-2.0015323290528774791" +"102","-1.5712617498067540378" +"103"," 0.1365472118481484420" +"104","-0.9850310571087094180" +"105"," 1.2914150674489079940" +"106","-0.1217325439648812568" +"107"," 1.4910080233306493014" +"108"," 2.9264506592059529311" +"109"," 0.7658337713332314944" +"110"," 4.2118526331058783185" +"111"," 5.0652115442881573415" +"112"," 2.1922600984419093884" +"113"," 1.9451045318740511902" +"114"," 3.8793041334015136989" +"115"," 3.6831741853437973688" +"116"," 0.4681390108320462318" +"117"," 3.9050942609146677142" +"118"," 1.4787281324902874502" +"119"," 4.1784017525206014199" +"120"," 3.7455066913979075949" +"121"," 3.5953597815059783471" +"122"," 3.8758547554474875874" +"123"," 6.4582034073084439996" +"124"," 5.4104265880779554010" +"125"," 8.0196735499161615479" +"126"," 7.3385529576748353975" +"127"," 7.3287697971573058098" +"128","16.3103974188513483057" +"129","13.8738243999655956884" +"130","15.9785917081410744345" +"131","11.6987497599669048043" +"132","11.8943772748071445733" +"133","11.3013906896166975713" +"134","10.6799807987089891981" +"135","13.1720562951259960727" +"136","13.6247623442127530069" +"137","13.7048966251733759236" +"138","13.5019477797299511934" +"139","13.3590528056597701578" +"140","12.9811469513932760123" +"141","10.9033777247202916527" +"142"," 8.2701976199282309921" +"143"," 9.1797038487894475622" +"144"," 9.5230358800887575654" +"145"," 9.0484420509535645749" +"146"," 9.7217541141831311791" +"147","11.4021100077941248685" +"148","11.9711231043108252692" +"149","10.4749753481840368607" +"150","13.0646878434962712134" +"151"," 7.9200887770667698362" +"152","12.6339070770881143346" +"153","10.5183593560401398292" +"154","10.6841444088796375667" +"155","12.2609981712082856120" +"156"," 9.6623678030727759847" +"157","14.0605267928246764342" +"158","11.1691160859234948077" +"159","13.8981572095676124690" +"160","11.5526380041676208776" +"161","13.0748157340760258194" +"162","12.9513679335824392069" +"163","14.5942128053505140173" +"164","11.0980518243334049799" +"165","-0.6500183733780926509" +"166","-0.7886741358808426750" +"167","-0.7283082004695130562" +"168","-3.1772760513741094002" +"169","-2.3934148420067482554" +"170","-4.4321469803979809399" +"171","-3.9113561538028216447" +"172","-5.2530037006227310314" +"173","-4.7314227999731759411" +"174","-7.9378224535074419776" +"175","-6.1861451988127145185" +"176","-7.0006290732985529957" +"177","-5.0735296650337344815" +"178","-6.9883554947514845423" +"179"," 8.8499167515279566487" +"180"," 8.5916051114986764503" +"181"," 8.0448740755858061391" +"182"," 7.8496158323253393263" +"183"," 8.0701218856262553203" +"184"," 6.5574122913535415336" +"185"," 9.4727268533421664642" +"186"," 8.8544719830346689804" +"187"," 8.9211837874395616410" +"188","12.6240235111798053680" +"189","12.7938498572012289145" +"190","10.4246660712898489010" +"191","12.8964120826673678266" +"192","14.3086742947089931022" +"193","10.2748008353299429274" +"194","10.2302430301877418373" +"195"," 9.7768443126021367107" +"196","10.2195130231246960051" +"197"," 7.7270772946663406344" +"198","11.7966916309930347495" +"199"," 8.6473935480876225057" +"200","10.2013182112454536821" +"201"," 9.3359290249514153004" +"202"," 9.8672374062181322785" +"203"," 9.9660310490219146118" +"204","11.4489254126318016347" +"205","12.8862728939905508696" +"206","11.8566739185891396602" +"207","10.5584665637713310815" +"208","12.4611816351314494966" +"209","12.0852026847437699075" +"210","12.6955581476806820262" +"211","14.6526157021038869743" +"212","12.1873278866943124399" +"213","15.0926903975457307183" +"214","13.6305778063788611831" +"215","13.8345933733507102659" +"216"," 7.3604201632666805821" +"217"," 6.2453952832676842277" +"218"," 6.9472843741073440071" +"219"," 6.4461754141379303817" +"220"," 6.0997307559473483707" +"221"," 8.0444627591026787172" +"222"," 8.0272625794927812137" +"223"," 7.2222671053699416532" +"224","10.5840634231196677462" +"225","10.2144070073259136677" +"226"," 9.2102811496700613958" +"227","12.4578520154788012775" +"228","13.2631738101831277987" +"229","13.6992547592961759761" +"230","-1.0549558878660503236" +"231","-0.2456151527725054518" +"232","-2.3543845720820577583" +"233","-3.1710449277041599103" +"234","-2.3765221791007631325" +"235","-4.2304454833809108649" +"236","-4.1016573588406401996" +"237","-3.7061763114009411701" +"238","-4.2414010905379724292" +"239","-6.3911414204519116922" +"240","-5.6449505981663854470" +"241","-5.8040932225206409711" +"242","-6.1558736748810787276" +"243","-7.4129807864629757574" +"244","-7.2202287432495975139" +"245","-8.2633840555923878668" +"246","-7.1971664870033027483" +"247","-7.7614206633133724367" +"248","-6.7456073230363875481" +"249","-4.9513561941868342586" +"250","-5.5705446027150999910" +"251","-6.1909268196780136151" +"252","-4.7996630543656042533" +"253","-6.7172969391167622888" +"254","-3.7677850245820163622" +"255","-5.4281885568666972119" +"256","-6.3115809409319680867" +"257","-6.3243387537640263218" +"258","-0.0409430841513098720" +"259"," 4.8185050611263662290" +"260","-0.9217319756208496306" +"261"," 8.9556785521345467771" +"262"," 2.5147498300252921766" +"263","10.7676061438353176669" +"264","11.5545961923926938653" +"265"," 0.3648487180334769597" +"266","-0.3754404502077345329" +"267"," 2.8198570334910382229" +"268","-6.9675956638919407382" +"269"," 3.0481798103379009746" +"270","-1.2787758086134703994" +"271"," 9.3243284997685442761" +"272"," 0.1041818792566542862" +"273","13.4346668634196237946" +"274","11.0787613299107778886" +"275"," 3.8971577533380967751" +"276","-4.6699703168454886892" +"277","-0.4704454482985497288" +"278"," 5.7419604397051493549" +"279","12.1252255082835613820" +"280","-2.6368175777421605233" +"281"," 1.6369047647645977861" +"282"," 7.9499093442186996583" +"283","-0.5198527230335829863" +"284"," 1.2471393527385854494" +"285"," 0.4499434288049909414" +"286"," 1.9680202223069898082" +"287"," 2.4348056326693394702" +"288"," 9.7670712147958127503" +"289","-0.2050427084130745925" +"290"," 1.0540819601392374949" +"291","11.7807497244806871350" +"292","12.4694214477120066675" +"293","-2.4235403850842955897" +"294"," 5.1839867557408281229" +"295"," 7.6485266821050164054" +"296","-5.2812810537370840080" +"297","-0.7376482281771702398" +"298"," 3.4683868134115654058" +"299"," 6.1609292207075974090" +"300"," 5.3266369905457224831" +"301"," 6.9521106713172002856" +"302","-4.9281858201671786546" +"303","11.4957070926169144798" +"304"," 9.6634048444804889755" +"305"," 4.7104843463523806690" +"306","12.9574280096653655647" +"307"," 1.8301258874503241181" +"308","-2.2070629357099438295" +"309","-2.8154204883571782858" +"310","-0.0997821809736594290" +"311","-3.3110469278853011943" +"312","-1.8012247139689365749" +"313","-1.6568659549350266413" +"314","-1.3491940454103974467" +"315","-2.6840040104118787490" +"316","-0.9778918420883746521" +"317","-5.1888821897678800710" +"318","-1.1593569629023483536" +"319","-4.5589535561372311889" +"320","-2.1418150599857885830" +"321","-4.2577052943013082853" +"322","-3.1131283559573597053" +"323","-4.9137112637935818071" +"324","-1.9563044335778285721" +"325","-1.2159114764107663564" +"326","-1.2656852782278396052" +"327","-1.4661332095443337931" +"328","-2.6449818870348380528" +"329","-2.7027971656187879113" +"330","-1.4789202504890357481" +"331","-2.0681921020180862314" +"332"," 2.1693469686484085912" +"333"," 3.7433469718319942743" +"334"," 3.9925426174977958205" +"335"," 4.2385249986245181475" +"336"," 4.1431101797364950912" +"337"," 3.3693117312658960039" +"338"," 5.2462115899971708544" +"339"," 5.2238804996030037131" +"340"," 5.6304712382635067058" +"341"," 3.3758751552076193825" +"342"," 5.0371536221544177536" +"343"," 4.3563981179888831008" +"344"," 5.0804840325294682302" +"345"," 2.0817900719600350712" +"346"," 4.3589316883613928866" +"347"," 3.5886510485636731183" +"348"," 4.6097684783426542410" +"349"," 5.4764003247981314360" +"350"," 4.1903136880228135652" +"351"," 4.7538886776514566179" +"352"," 6.0033703656437573670" +"353"," 5.3129139460291314734" +"354"," 5.9592794191784985713" +"355"," 5.4525280633538111275" +"356"," 3.9917070975077448836" +"357"," 4.9497388980082677179" +"358"," 6.3348029345733998241" +"359"," 7.0133583471394143061" +"360"," 4.6454424379127150502" +"361"," 5.5508693815174368069" +"362"," 7.1647166363630141461" +"363","-2.3205164176300687728" +"364","-7.0904863738248540272" +"365","-4.8314813408006358486" +"366","-3.7586444663873952443" +"367","-3.6649379360944260853" +"368","-4.3657831189662905658" +"369","-3.1367232243037030948" +"370"," 6.4246028180728984580" +"371"," 5.7290159667185491799" +"372"," 4.4980687358495190509" +"373"," 5.7412114990353586563" +"374","-0.7157456543110880531" +"375"," 8.5023475336859100082" +"376","-6.1323638517306049422" +"377","-5.7539939923839487079" +"378","-3.9840961787183073461" +"379","-7.5341755873498144069" +"380"," 5.5408699562233501013" +"381"," 5.7614565415004186377" +"382","-3.4896322713612510924" +"383","-5.7130194992222280703" +"384","-3.3586291221872786039" +"385","-6.2055986895869841291" +"386","-3.4065411976935826566" +"387","-2.0593317846441219210" +"388"," 7.6495488587235982436" +"389"," 3.3970186010246612440" +"390"," 5.9649427317935206361" +"391","-2.9290261775218811025" +"392","-4.5565440007070616701" +"393","-3.1599179082434525334" +"394"," 7.1333706730590495937" +"395","-6.3722119175091185284" +"396","-7.2162811374663373698" +"397","-2.6805463371776174775" +"398"," 3.6757142261524835547" +"399"," 6.2753337772611477163" +"400"," 4.7428852321852712493" +"401","-5.0398645513439950250" +"402","-1.9407322104037856292" +"403","-3.9082814865107264879" +"404"," 4.5956469340200456486" +"405"," 4.9873915418954535284" +"406","-4.7947668583879607951" +"407","-4.9278211497218915582" +"408"," 5.8937520493538890776" +"409"," 5.9609936046756057948" +"410","-0.7735324788042653443" +"411","-5.8769340870273225619" +"412","-4.8794482325228010211" +"413"," 8.1198452516745280860" +"414","-3.3356729682071404319" +"415","-3.9967735927326746292" +"416"," 5.9440242642859946187" +"417"," 7.6390294094782333900" +"418"," 5.7605074846543518063" +"419"," 7.5310849197041020986" +"420","-3.0064926967999676677" +"421","-4.4491265852122783286" +"422","-3.8742154637632402192" +"423","-4.2843610809465433320" +"424","-3.9156824776061993632" +"425","-3.5279630486598376748" +"426","-2.8673166041519211333" +"427","-1.8140230990699817148" +"428","-2.8709561799331724252" +"429","-2.3902385749328387554" +"430","-2.7631181749930657787" +"431","-3.6316971817831897873" +"432","-4.6420058865826607786" +"433","-2.1792646333958778371" +"434","-1.5151867741968283454" +"435","-1.0039756451447889862" +"436","-2.7454025806729709380" +"437","-2.9071957811459192556" +"438"," 2.3352544049325518749" +"439"," 0.1305089966287318326" +"440","-1.3253725344775588724" +"441"," 4.8357507683158971190" +"442"," 5.9005783129402873399" +"443"," 6.5287432455651268626" +"444"," 6.6843160208334904127" +"445","-4.9621367536828078215" +"446","-5.1644335628223467793" +"447","-1.1746098429400413377" +"448","-0.2722082948408118819" +"449"," 8.1790245965231012093" +"450"," 4.9456501133290737826" +"451"," 4.7966487988380066554" +"452"," 7.3213729008739010240" +"453"," 7.2742711358172824632" +"454"," 4.7565985905272558654" +"455"," 5.6907882403218197354" +"456"," 5.0611329976923586926" +"457"," 8.8488002004290926550" +"458"," 6.4244529575440880720" +"459"," 5.5122449798823236478" +"460"," 6.4913491752158964943" +"461"," 5.3571006010494635063" +"462"," 5.7701038771209667289" +"463"," 5.7511488262389747206" +"464"," 6.4785618634343116184" +"465"," 5.3123319809379019318" +"466"," 7.7436231966892092871" +"467"," 9.5440729715288146195" +"468"," 6.3405263369697850706" +"469"," 6.1235628160970287936" +"470"," 7.5322218482110958604" +"471"," 6.5438562473509573891" +"472"," 6.7130339299410684006" +"473"," 5.1514163727222772593" +"474"," 5.4481142314366586277" +"475"," 5.7023036521372887364" +"476","-4.3874637367429700774" +"477","-3.4084552814599051729" +"478","-3.8456820861981033666" +"479","-1.7453215186102897238" +"480","-3.7923650612050794351" +"481","-2.3807643409719143612" +"482","-0.6071288754172032842" +"483","-0.1505771938266096122" +"484","-4.6341271599625812883" +"485","-2.4728125035145276378" +"486","-3.3451268201590873552" +"487","-0.3266040534092833347" +"488"," 6.6406317113466366564" +"489"," 7.4432399866359650886" +"490","-4.3135838830894179807" +"491"," 8.2656385871321162995" +"492"," 6.9798645796857341495" +"493"," 5.7190984785285348124" +"494"," 4.0098389570664902948" +"495"," 1.8258886294729816946" +"496"," 8.9302519025717064238" +"497","-1.8262187976912653831" +"498","-3.2211489961429258244" +"499","-5.1621762591638882256" +"500","-6.8268037733664543865" +"501"," 6.9578757472195693623" +"502"," 6.9454556222494145956" +"503","-0.7684646286341629828" +"504"," 7.7967036987580362606" +"505"," 5.0833462309807293522" +"506","10.5563251674866922514" +"507"," 6.9861563724556825505" +"508","-4.6084489517372446699" +"509"," 5.0984467173964844733" +"510"," 2.9954125702271090503" +"511"," 5.4396420520944079868" +"512","-3.4587986165801729577" +"513","-5.6530280389089107018" +"514","-3.0221391023045498514" +"515","-2.9943166773480300868" +"516","-0.5502406130235162340" +"517","-0.1744042004536252577" +"518"," 1.2583516987084648608" +"519","-1.7392511764706481969" +"520","-1.3957004629967679765" +"521","-1.7541544169645870710" +"522","-4.5008365262788014860" +"523","-6.6436993776812851564" +"524"," 1.2557896883208967687" +"525","-3.4608966317154612469" +"526"," 4.4094136018190290827" +"527"," 7.9284484515367914526" +"528","-1.3522483412210950515" +"529","-2.7776799439391082203" +"530","-3.3789486493507872034" +"531","-3.8423411898320649627" +"532","-3.2262361750006158800" +"533"," 5.1647668869163663175" +"534","-0.6507781483184199578" +"535","-0.6606191714319822328" +"536","-3.0819958583160271814" +"537"," 4.0393180059053550579" +"538"," 5.3851157589843916540" +"539","-2.5664578722870876604" +"540","-4.4291628077000311237" +"541","-1.4133467788221045769" +"542"," 3.4088299212935990745" +"543"," 5.4258680660550329122" +"544","-2.6790359637441123475" +"545"," 8.4398260966448948039" +"546"," 8.5047659993838848891" +"547"," 8.3952018564461710071" +"548"," 6.8792155943965020981" +"549","10.6842712465141715938" +"550"," 8.5592705996099063270" +"551"," 7.6805545080236772293" +"552"," 9.1701261966341682808" +"553"," 4.0401110875159531588" +"554"," 8.6795402160556456295" +"555"," 9.6887176375841868037" +"556"," 8.0315565829616080151" +"557","11.0990900684945064114" +"558"," 7.3368220692408661066" +"559"," 0.5263737004888320303" +"560","-2.6341328582422747218" +"561","-0.1007302875989468660" +"562","-1.0153419904508251825" +"563","-1.0499358226872768096" +"564","-1.4252427339498194847" +"565","-1.4007237811753507906" +"566","-0.2047329942118381041" +"567","-1.7243789004604244131" +"568"," 0.7799993887241685186" +"569","-1.6752391377044719700" +"570"," 1.6492885733183411112" +"571","-0.4027882656976567999" +"572","-2.3107363324598093612" +"573"," 4.0158847785476297076" +"574"," 8.3427859623696214442" +"575","-3.6078121265478730884" +"576"," 8.2753099833189658341" +"577"," 6.5570686430607381112" +"578","-3.7478654975712735187" +"579","-3.2861352635851002191" +"580","-1.6480556306107208009" +"581","-1.4170695711066059186" +"582","-4.4380686275771283889" +"583","-1.7263286628697476210" +"584","11.9533384303930922954" +"585"," 7.6742629035748812782" +"586"," 0.6607262275837535448" +"587","-0.8963455706677221357" +"588","-0.1468844103557874758" +"589","-4.3602453164925689677" +"590","-5.5275124836821758478" +"591","-3.2013509119784320234" +"592","-2.9238452093270321797" +"593"," 0.9573062554715431327" +"594","-2.2449528838183159252" +"595","-4.1587811750491656682" +"596","-0.3480363208920064233" +"597","-1.9854367271385167104" +"598"," 2.8635284528367188628" +"599"," 2.6760419480809995996" +"600"," 4.1136782859181373340" +"601"," 4.9988647232306497870" +"602"," 3.0338818388179404906" +"603"," 1.7780133802719049196" +"604"," 3.4533084174437180813" +"605"," 4.5543493877543985704" +"606","-2.8902999077179067910" +"607","-5.8234768517250596886" +"608","-2.1824707869453838782" +"609"," 4.6307232556759565512" +"610"," 2.8198603813876421675" +"611"," 7.3998157223536216165" +"612"," 6.4927584876568609218" +"613"," 3.8926422652514851563" +"614"," 3.9637761004984466418" +"615"," 3.6272631739024738806" +"616"," 3.6553193332282680750" +"617"," 4.1573422632535468324" +"618"," 7.6634828731900475063" +"619"," 5.8137496635445753412" +"620"," 9.8913830771516106921" +"621"," 9.6124894972080223710" +"622","-6.4350135293741725917" +"623"," 5.2658206698458371875" +"624","-0.9606737812110947017" +"625","-0.5394105831812134877" +"626"," 9.3684684978630041741" +"627"," 4.6989855510274338712" +"628"," 9.8067679747079221642" +"629","10.0149897826682945379" +"630","10.6961888593472611575" +"631","-5.8647276568071662339" +"632"," 6.0641652149563407548" +"633"," 7.5897664582230559560" +"634"," 4.5814780101613008512" +"635"," 3.9542179482630337439" +"636"," 2.3984222796823728707" +"637"," 2.8824672617403432895" +"638"," 4.5125805896277046969" +"639"," 7.1037625895780305285" +"640","10.9332957043830827359" +"641","-1.4213655391052948396" +"642"," 4.7683707900841554306" +"643"," 8.2829965660344555545" +"644"," 8.1607022507781827869" +"645"," 8.6421296472562634250" +"646","-0.8808384005044134213" +"647"," 1.2623896634459983446" +"648"," 0.8555407368181792149" +"649"," 1.9330832999683247309" +"650"," 6.2114621930124407356" +"651"," 8.6899863749491235154" +"652"," 9.5482294226260862047" +"653"," 2.1980161046847621620" +"654","-3.8371148859278640941" +"655","12.2467979298671068022" +"656","-3.5820589199952692638" +"657","-1.5839544024841696324" +"658"," 5.4174721020089924295" +"659"," 3.2922528422857366692" +"660","11.0511469198299963068" +"661"," 8.1954780523933905556" +"662"," 5.7487547085584207451" +"663","-3.6450128329109445779" +"664","-3.2094854144392108708" +"665"," 5.8063091235927162259" +"666"," 7.6865546985573711680" +"667"," 6.7790142161041888613" +"668"," 9.7673368837407714693" +"669"," 6.1720281793848039698" +"670","-4.7292245121618110559" +"671"," 7.7366339062496924939" +"672"," 6.1738721575703028321" +"673","-2.9233715634325689869" +"674","-3.7112467774206114868" +"675","-2.6090394832494681054" +"676"," 0.1911934428765295069" +"677"," 4.7939683641192525343" +"678","-3.0520783593504541287" +"679","-1.1221151308726691198" +"680","-1.2717810270020966090" +"681"," 0.6267124736255089701" +"682"," 1.0102378503323936609" +"683","-0.1057359779537599964" +"684","-0.8884793529027246173" +"685"," 2.3033327706443706973" +"686"," 0.2467973109895393313" +"687","-1.1243817171591616866" +"688"," 0.5589201863169581674" +"689"," 1.7626948277561309553" +"690"," 1.0338053607063408812" +"691"," 1.1034250738937052549" +"692"," 1.2912798517733725667" +"693","-4.4255822243988056641" +"694","-2.9154391821306124832" +"695","-3.7089382333867617625" +"696"," 6.5120578895797089913" +"697"," 7.9819420139363330691" +"698"," 8.2634823616186903195" +"699"," 6.2319392559649227081" +"700"," 6.0059935016885352965" +"701","10.4373353518562534958" +"702"," 4.5106639249059243824" +"703","-5.3350476480440960358" +"704"," 2.2021951919727635882" +"705","-4.3238658630430606422" +"706","-4.7563472193919809072" +"707","-0.1442339820783100635" +"708"," 4.6520925258704561855" +"709","-2.7506492534931954452" +"710","-2.2665167063524691571" +"711"," 0.4589796842034918889" +"712","-0.9625466196022106624" +"713","-1.7124497700489642593" +"714","-0.8547992393917440701" +"715"," 1.7532210314899925319" +"716"," 3.7109341417174435129" +"717"," 4.4621676192847044007" +"718"," 8.2009864105706391513" +"719","-5.7322460197564577555" +"720"," 7.0856355344692447673" +"721"," 8.2074041895704432648" +"722"," 8.2570281124115858518" +"723"," 2.1122512290895860687" +"724","-5.8706256603876942890" +"725","-2.4480749206089145176" +"726"," 6.4411674763697170931" +"727","-6.3223105087460451657" +"728","-3.1671025950907982782" +"729"," 2.3786365544426910645" +"730","-2.9108421500364576318" +"731","-3.1311839781254331427" +"732","-1.1946955045055069888" +"733","-3.3130965589160958906" +"734"," 9.3415402969536813771" +"735","-1.6023930431326263157" +"736","-0.9580879959278939539" +"737","-0.6799273583865945714" +"738","-1.5190183559493264376" +"739","-3.4245895656544078633" +"740"," 6.5985606607472133689" +"741","-2.5156846192108739402" +"742","-3.5472272193833553899" +"743","-2.5904813454966375552" +"744"," 3.0653678792350582683" +"745","10.1732040906881735509" +"746"," 9.2512338652935550698" +"747","-1.1089796180707560680" +"748","-1.1920658982860425912" +"749","11.5305028082501568321" +"750","13.2666171298168027448" +"751","-5.9123213410990533845" +"752","-5.2874636387766846823" +"753"," 7.4106250142468956810" +"754"," 8.3838207935736352994" +"755"," 2.5693522654809139993" +"756"," 9.8512967217671327802" +"757"," 8.4360092846007574963" +"758","-1.0329830487078792700" +"759","-1.2672516571056666734" +"760"," 1.4033157900560198073" +"761"," 0.4122419870284369514" +"762"," 6.0180031492930083914" +"763"," 5.0332775212743543491" +"764"," 7.3433097534816589302" +"765","12.2673037653141001613" +"766"," 2.1576121577739026947" +"767"," 7.2797773535672503087" +"768"," 2.4108582756837200201" +"769"," 4.5462812414221183133" +"770"," 5.3571538591845948574" +"771"," 5.8866238931863987816" +"772","10.5917586714612195209" +"773","12.5305003124368070644" +"774"," 2.3745214531263139079" +"775","-3.3110271426107225068" +"776"," 3.8999391559445442113" +"777"," 0.8415752873753112873" +"778","-0.4832148631162699881" +"779"," 8.2058969272377080273" +"780"," 7.3118818383955348494" +"781"," 9.7394251419358841559" +"782"," 1.7589237760322071757" +"783"," 3.5607791533381667470" +"784","-3.6638490598561137546" +"785","-3.0132851259199027183" +"786","12.7846000691932371041" +"787","-2.3914903696387419529" +"788","11.3212189921052566177" +"789"," 1.8327559483934166007" +"790"," 6.4176945105420903914" +"791"," 5.8886211976553184400" +"792"," 0.4307638811155700687" +"793"," 4.8893349897174642749" +"794"," 0.8561713434801809797" +"795"," 9.9206564086454331886" +"796"," 5.9398371078699110370" +"797"," 6.4171204704544635433" +"798","-4.2402654037411036114" +"799","-4.5892487973617051011" +"800","-3.5868628423344168787" +"801","-0.7367111339150902438" +"802","-0.7396478855395332008" +"803","-0.2710159198378010448" +"804","-2.2925244280205845371" +"805"," 5.9378786694250198508" +"806","-0.9178840703982771299" +"807","-3.4407401430182797952" +"808","-2.7898235787565610622" +"809","-1.0547057980094733942" +"810","-1.1882935417584845617" +"811","-2.9884366533565378532" +"812","-1.1033856177222947093" +"813","-3.8059831794614655820" +"814"," 1.4888403343141363155" +"815"," 3.2225128660374897649" +"816"," 4.1082187890382400042" +"817"," 1.7802707834622055749" +"818"," 1.5530587447045933747" +"819","-0.8361005854638370316" +"820","-0.3586588933400537971" +"821"," 2.0709638875917137923" +"822","-2.9161318741385606756" +"823","-1.3226427330814263250" +"824"," 1.1665436320238342649" +"825"," 5.4361721050155766832" +"826"," 4.1991141911557656741" +"827"," 2.8890098475115051357" +"828"," 5.6257955992897290542" +"829"," 4.8455346835343480194" +"830"," 6.3274763498739092782" +"831"," 2.6066369759126852834" +"832"," 4.8020064621714384501" +"833"," 5.9442139993248304108" +"834"," 6.4830660649798943496" +"835"," 5.6425391060581500113" +"836"," 4.5505672907086385237" +"837"," 6.4052806241229891526" +"838"," 4.8083718156588917125" +"839"," 6.5066343267257371608" +"840"," 7.2281770426804605734" +"841"," 4.5394946492765058110" +"842","-3.8804313247004103005" +"843"," 4.4228559504507316547" +"844","-1.2791884921124112573" +"845"," 5.5290869674048046534" +"846"," 8.4730838671198505097" +"847","-1.7987515489758592047" +"848"," 1.8439866603965828773" +"849"," 3.8129885233380451659" +"850"," 2.5155537586257050719" +"851"," 5.2109548702671188991" +"852"," 0.2981958779201125953" +"853"," 1.3246164575773466954" +"854"," 0.0561605804193389263" +"855"," 9.7186832095910737905" +"856"," 3.9363018180519535605" +"857"," 3.1105372286988615116" +"858"," 2.7383726376241073197" +"859","-0.6863119691935350986" +"860"," 3.0724066195723147565" +"861"," 3.5989717615136331830" +"862"," 2.0717337674256373070" +"863"," 1.7828634711075512786" +"864"," 3.0747513929186016668" +"865"," 0.4759471045980089299" +"866"," 4.3401776973282846228" +"867"," 3.9501636002895019750" +"868"," 6.4037054847490768594" +"869"," 3.1429759855656049794" +"870"," 3.5108811657067464651" +"871"," 5.8998737734325317206" +"872"," 5.5559427350615164798" +"873","-5.0326980085414234622" +"874"," 0.1403759627471057314" +"875"," 2.1712038303925220717" +"876","-0.8844749531119037167" +"877"," 2.7148036142193143760" +"878","-0.2259963433684553102" +"879"," 4.9785642021281439895" +"880","-0.7052809832567430437" +"881","-2.6407453108072980186" +"882","-3.3314148291294394255" +"883","-5.7346299540465039968" +"884","-4.0140337188712429395" +"885","-2.0473975119662259914" +"886","-3.4930485376549262888" +"887","-4.8781414141888079783" +"888"," 0.0649997033788065615" +"889","-3.5365774160953220573" +"890","-0.1768781235266699836" +"891"," 2.4204696333017086118" +"892","-0.4895721117813561785" +"893"," 6.3330479305802818146" +"894","-2.2632349284515989041" +"895"," 4.6737196057151164652" +"896","-3.8725555897346883860" +"897"," 6.1024369322781248925" +"898","10.8394357272455383878" +"899","-7.2837272309728664510" +"900","-7.6087828458365329709" +"901"," 3.1810010988696522105" +"902"," 4.2311544094795729976" +"903"," 4.5154505797701602887" +"904","-3.4605984724894014448" +"905"," 0.3682636675825246009" +"906","-0.0771117762537571194" +"907"," 4.9872578035523069673" +"908"," 6.5381529021934889911" +"909"," 7.5240824667793830827" +"910"," 7.7401479227320271193" +"911"," 5.5295163276888699144" +"912"," 8.0575885829904958513" +"913"," 5.3028879221114033626" +"914","-1.3111161464227549800" +"915","-3.9340323043376752565" +"916"," 6.6292517324501858411" +"917","-4.8595172314525356683" +"918","-1.7088323269317067243" +"919","-3.3629547828289059197" +"920"," 5.8435048301283698535" +"921"," 5.6155530694256521329" +"922"," 6.0231252837681905632" +"923"," 8.2759543758841527250" +"924","-3.4246400331352275792" +"925","-1.4366995735931480382" +"926","-3.5947985589245021742" +"927"," 6.7594610619882109503" +"928"," 8.0147295532806115403" +"929"," 9.0062759283861542059" +"930","-2.2408469592787887414" +"931","-2.5027759765865020825" +"932"," 2.6491227914733506132" +"933"," 1.6649570618236000374" +"934","10.5120795516209177833" +"935","11.5281773638430742324" +"936"," 8.8356588564617890569" +"937","10.2339767883516188363" +"938"," 8.4950320179234672935" +"939"," 9.2167783359024166856" +"940"," 7.5611973360698350177" +"941"," 7.9850231866832697136" +"942"," 7.2345670095699494695" +"943"," 8.4908096964657389094" +"944"," 7.1192706255055604458" +"945"," 8.0455336079979105079" +"946"," 4.8007558872422730900" +"947","-0.1090853513468885705" +"948"," 1.6488050289818532157" +"949","10.7507729631982336116" +"950","10.8082254074186305814" +"951"," 9.5528117993557284393" +"952"," 1.5410192882998021702" +"953"," 7.7073427961318090595" +"954"," 3.5861652119379714421" +"955"," 2.2849285305834650117" +"956"," 1.6572157689489190879" +"957"," 0.4996356412296724669" +"958","-1.0221535622752146999" +"959"," 2.3458807692329690653" +"960"," 0.1368728887646780690" +"961","11.0096249189710597705" +"962","-5.4191692172643355363" +"963"," 9.8445358418214468088" +"964"," 8.9798676485559916216" +"965"," 5.2654963197776467609" +"966","-7.7638325757043844533" +"967"," 7.5052150672228332695" +"968","-3.8994420250069641298" +"969"," 0.0595866974283492876" +"970","11.2715934109606887858" +"971","11.9463376821819942109" +"972","10.7336644294071756889" +"973"," 0.3460563582944597982" +"974"," 0.4858807561365598993" +"975","-0.0585121783637336801" +"976"," 0.1634810375332669263" +"977","-0.7143954899416458115" +"978","-1.7133756409178118041" +"979","-1.7484273446051199485" +"980","12.4699286195604610583" +"981","-0.2826169931030554361" +"982","-1.5307035817839493852" +"983","-2.4575694247328105924" +"984","-1.9742844117703566287" +"985","13.7982840621252709212" +"986"," 6.7591218142516327205" +"987","-5.2502634395072576012" +"988","-1.8727068833403546222" +"989","-9.6215554898954049889" +"990","-5.7154223552720120338" +"991","-5.2542726393236085514" +"992","-6.5038981520112004731" +"993","-4.1623728653911120645" +"994","-5.2297354030981839657" +"995"," 5.3278811974440083432" +"996","-2.8227064865088098422" +"997"," 9.1152359156420796893" +"998","-3.6732061837565708196" +"999"," 5.8277569377334179634" +"1000","-4.5942489073336449934" +"1001","-5.4141533568243591645" +"1002"," 5.4983195049265916055" +"1003"," 7.4964731592614519684" +"1004"," 5.9899780083935958430" +"1005","-2.2508320874396163802" +"1006"," 9.3095259785750332782" +"1007","10.6457346569385933321" +"1008"," 9.5424030740474208301" +"1009"," 9.9421930012457213621" +"1010","11.6815665989765768984" +"1011","11.2683959165133273927" +"1012"," 7.2297289859606284068" +"1013","-5.6331724424233460269" +"1014","-5.3614617197374565549" +"1015","-2.7718771914296382874" +"1016"," 3.0892925337623378113" +"1017"," 5.9365977211862928087" +"1018","-1.9959184837307077931" +"1019","-4.7564414627904918476" +"1020"," 9.8287987357771626762" +"1021"," 5.0215587178334866181" +"1022"," 0.7932216258895787853" +"1023"," 7.2163202294192432262" +"1024","-4.5296353038645076339" +"1025","-5.4123906349500776614" +"1026","-2.0169587243960775957" +"1027","-1.9435839405195913798" +"1028"," 3.1323964388579614848" +"1029","-0.0539607618527611077" +"1030"," 8.5953907204964803412" +"1031"," 6.4895434172840786857" +"1032","-2.9030684418994425755" +"1033"," 8.5630852588596315655" +"1034","-1.1008845223784073930" +"1035"," 7.7323555201186868757" +"1036"," 6.4354477754432579673" +"1037"," 5.2989830254397212173" +"1038","-4.7209140461487164586" +"1039"," 8.6083718297823708099" +"1040"," 2.8529405650762198476" +"1041","-5.2335339913613641016" +"1042","-4.7499733584507923823" +"1043"," 9.2389007089483676793" +"1044"," 6.4331652708707149912" +"1045"," 5.3849055748218832562" +"1046","10.4012736391638593858" +"1047"," 6.8396692733170878498" +"1048","-4.6149103222929879209" +"1049"," 5.7205660986367572463" +"1050"," 4.0945905706320235851" +"1051"," 7.3078811472234521673" +"1052"," 0.9694384638027567780" +"1053"," 3.0296691930656294289" +"1054"," 6.6977751814435828592" +"1055"," 6.1760281345347118886" +"1056","-1.3936179115010098872" +"1057","-0.7503045810066517607" +"1058","-2.3822814317983898036" +"1059"," 5.9738459222542950044" +"1060"," 5.6861000286481573340" +"1061","-4.0104108482544091885" +"1062"," 2.8807870610300074787" +"1063"," 4.6452601003440916472" +"1064","-1.4109324600765238422" +"1065","-4.8053384424627205718" +"1066","-3.5235168050311971299" +"1067","-4.0092821753202052548" +"1068","-3.4932939363705481917" +"1069"," 0.2995832558374824650" +"1070"," 4.2811327128868139624" +"1071"," 7.6761510202890939070" +"1072","-0.4935232913284294809" +"1073"," 9.3388190987908945573" +"1074","-1.9195576822572970599" +"1075"," 6.0210990417126843965" +"1076"," 5.0250374980467444885" +"1077","-3.6499775401648113515" +"1078","-3.3468282093687333756" +"1079","-3.1680636762892091518" +"1080","-3.8646252475302027563" +"1081"," 7.6709477348425956222" +"1082","-1.8432217480683430466" +"1083"," 7.9979492688064457440" +"1084"," 8.6837514273832479006" +"1085"," 5.5151563680502100340" +"1086","-4.7991621539908884131" +"1087","-1.2581042832222788519" +"1088"," 0.1602890391980200668" +"1089","-0.2932277134361120918" +"1090"," 0.9856884324114196794" +"1091"," 3.7548307204938602410" +"1092"," 4.3530166171208879433" +"1093","-2.3381155699408919801" +"1094"," 0.0902691177322281213" +"1095","-5.9013811079377038737" +"1096","-2.6374479327837074827" +"1097"," 3.0267729410552983715" +"1098","-4.8223946894752884873" +"1099","-3.2787763690685438611" +"1100","-0.1179441659758504179" +"1101"," 1.2911966506664223076" +"1102"," 7.7841757317483164513" +"1103","-2.6446220613757813744" +"1104","-5.4493656640625953713" +"1105"," 2.9369224192722054312" +"1106","-3.9867243646007182178" +"1107","-2.1740597349466797006" +"1108"," 6.0275249123878174018" +"1109","-1.9924385809155176208" +"1110"," 7.7477219576179443550" +"1111","-4.6759556960825330307" +"1112","-0.6148764887058830730" +"1113"," 3.8858299790450470113" +"1114","-0.9004199207440692909" +"1115","-0.6581174253196907520" +"1116","-4.3179029304129423750" +"1117","-1.0227727487983722110" +"1118"," 7.6570431647020491539" +"1119","-4.5714638308312114390" +"1120","-2.6061741209295381516" +"1121","11.8683063396267947098" +"1122","-1.6424297035810688783" +"1123","-0.3397221678969841729" +"1124","-3.5283409590914827092" +"1125"," 4.5048236736531590552" +"1126"," 5.0076493730585305286" +"1127"," 2.9038434376627435540" +"1128"," 3.4428191983469029758" +"1129"," 1.9491877784582187783" +"1130"," 7.8574535709114723403" +"1131","10.4120737515326080569" +"1132"," 4.8189452670175665361" +"1133","-3.2477149458060621257" +"1134","-1.6863523925103516277" +"1135","-2.4662584194974579432" +"1136","-2.9783105608044833090" +"1137"," 9.7486697221908684696" +"1138"," 5.5618428405423063765" +"1139","-6.3822092864078090457" +"1140"," 1.2933971361246732190" +"1141","-0.7739658241466880195" +"1142"," 2.8038455892474249964" +"1143","-1.9722373907007049176" +"1144","-4.3885230095833520636" +"1145","11.2499027204306774053" +"1146"," 7.3616651283134313388" +"1147"," 5.1162688611915108083" +"1148"," 4.0161661211936801053" +"1149"," 2.6649953894144364774" +"1150","-1.8442637469650096094" +"1151","-0.8875314464591695929" +"1152"," 0.2714153204414164189" +"1153","-0.7259613769539446926" +"1154"," 8.8232682944670237646" +"1155"," 5.0452900003125860096" +"1156"," 3.3405365081607367728" +"1157","-3.2455851982415140355" +"1158","-1.3706534949793818257" +"1159","-3.7420512088036019804" +"1160","12.7168122420711711129" +"1161","-1.3411337633211231068" +"1162","-0.6801334271203715032" +"1163"," 1.5240131036001971498" +"1164"," 9.4385582189162011701" +"1165","-0.9662653480797354089" +"1166"," 1.6500322586971685190" +"1167"," 6.2937757593065297712" +"1168"," 3.1451281524322545202" +"1169","-4.4292456323965510023" +"1170","-3.5161145464592751253" +"1171"," 9.5415386586825174930" +"1172"," 7.0098271779883329913" +"1173","-6.1350770789484387890" +"1174"," 5.6917987379937473591" +"1175","-5.3071223012884765069" +"1176"," 2.9477058803145204102" +"1177","-3.7649551363188629161" +"1178"," 5.9141514128295558095" +"1179","-1.9059070913844298190" +"1180"," 2.1012399350906423301" +"1181"," 9.9478034382440139183" +"1182"," 8.6974645305708353504" +"1183"," 0.7611893322911864601" +"1184","-3.6046180036736901187" +"1185"," 3.5816583384812035185" +"1186"," 8.1892811346044975807" +"1187"," 5.1865821345378222418" +"1188"," 5.9394776460972309451" +"1189"," 1.2637543503687931334" +"1190","13.1161508630817937870" +"1191"," 6.0418746514669789960" +"1192","11.1310928740016219507" +"1193"," 0.7434048494842517840" +"1194"," 5.6056768462898967087" +"1195","-0.7116426586604395199" +"1196","-4.8165372819581921959" +"1197","-0.4163032224898332023" +"1198"," 7.3899649498596300390" +"1199"," 2.1573001911204450209" +"1200","-3.3564154768962364273" +"1201"," 9.5069218607570977753" +"1202"," 2.8603458487433721658" +"1203","-4.9598443488092947007" +"1204","-2.3500435463922477730" +"1205"," 9.5612624294606032294" +"1206"," 3.2133768424720101642" +"1207"," 3.5725373337716765931" +"1208"," 6.9613416588706780175" +"1209","13.7521822627187884081" +"1210"," 5.2356880193089931907" +"1211"," 3.6074574974114663739" +"1212"," 9.3499468475308464832" +"1213","-7.1264859173603545273" +"1214"," 5.2143354405396351581" +"1215"," 0.2910340043621542083" +"1216","10.2354951139599190668" +"1217"," 1.0986663043163678033" +"1218"," 8.3876079059816373018" +"1219"," 1.4033670576511618755" +"1220"," 4.0072468498163811290" +"1221"," 5.5990389743485051710" +"1222"," 7.1836604241949562066" +"1223"," 7.4057285294480461602" +"1224","-3.7219626535455549998" +"1225"," 1.9910446507698380536" +"1226","-0.5589993616305907187" +"1227"," 3.4187416030444413018" +"1228"," 6.4169341422598824565" +"1229","10.0232158862180167347" +"1230"," 7.6024297579679309678" +"1231","-5.5228191646317199570" +"1232"," 2.0206725806477523477" +"1233"," 1.4223645821231847286" +"1234"," 3.1126328221415051623" +"1235"," 5.4413063895408493309" +"1236","-5.2099297291418391609" +"1237"," 9.5196422996659499915" +"1238","10.1960298963048536791" +"1239"," 2.5259468883360702840" +"1240"," 4.7932317097064514044" +"1241"," 7.5302990690877713575" +"1242"," 6.2206236225128286321" +"1243"," 8.0708386531032978439" +"1244"," 4.8256293125803040311" +"1245","-2.9935159519739316103" +"1246"," 1.1953750505125613213" +"1247","-1.0751032668153652772" +"1248","10.0750350353125899261" +"1249","-0.3088576221392055343" +"1250"," 7.8496834144807614564" +"1251"," 9.9869279268532391569" +"1252","12.4346395405473604256" +"1253","-3.6556449434614139982" +"1254","-1.5550386613156024218" +"1255"," 7.0392606315178758436" +"1256","-2.5424414410868125813" +"1257"," 2.4849322650496965537" +"1258"," 4.3657935650282846396" +"1259","-3.1260811351759021370" +"1260"," 7.2265673049137735262" +"1261","-2.1499575270779098801" +"1262","-5.1027964423045233389" +"1263"," 7.6032976044247311265" +"1264"," 0.3442656618010088154" +"1265","-2.1363024454714931721" +"1266"," 8.7278155282516465263" +"1267"," 2.0540061700378657861" +"1268"," 3.1580308454572976196" +"1269"," 3.0578036513135584684" +"1270","-0.9098134455337496540" +"1271","12.8300085872827391853" +"1272","-1.5665706663125864573" +"1273"," 3.8399178315088877689" +"1274"," 3.5972465867987755139" +"1275"," 1.0837398517445322454" +"1276"," 3.2483540119526841394" +"1277"," 0.8233638497314557103" +"1278","10.4697515514044958707" +"1279","-4.1958666528918993066" +"1280","-0.2242958951737131779" +"1281","12.2842293185457283045" +"1282"," 4.5870169221805081605" +"1283","-2.3052040042715011836" +"1284"," 4.0387506055602999666" +"1285"," 2.9270405307864288957" +"1286","-5.0799331379107712792" +"1287","-0.4482968599840508883" +"1288","-1.0639588533932107239" +"1289"," 2.1730679561340533468" +"1290"," 4.9904856022034431717" +"1291","-3.5671010522109791729" +"1292"," 5.8906290656293069929" +"1293","-3.9062880326602966718" +"1294"," 5.0784831432652497440" +"1295"," 7.5726308512461892875" +"1296","-2.3306641529170013527" +"1297"," 6.0174279174421405614" +"1298","-1.8572081966746460946" +"1299","-5.0034722041817403237" +"1300"," 2.5067976676003222991" +"1301"," 2.3281527098158494304" +"1302","-2.7925295591660921346" +"1303","-1.5973422790586009334" +"1304"," 1.2760131042371274379" +"1305"," 2.5366637347596725505" +"1306"," 0.3886318546674547569" +"1307"," 0.8021368792160469274" +"1308"," 3.1212242715352687128" +"1309"," 1.3122333270757937651" +"1310"," 2.7771409304133536367" +"1311"," 3.1546854823653798228" +"1312"," 0.9885763961898907937" +"1313"," 2.0645439255238642318" +"1314","-0.4939541126138332627" +"1315"," 0.4108642401587070947" +"1316"," 1.3021334171414147285" +"1317","-1.9972820920293445912" +"1318"," 4.5401236086355964972" +"1319"," 3.1974854254751123861" +"1320"," 1.2730404516068989373" +"1321","-0.1820732252793047512" +"1322"," 4.6143035808080314908" +"1323","-0.1973022831017783862" +"1324"," 3.5033377403999268473" +"1325"," 2.1635700033342555315" +"1326"," 3.8069670942498179400" +"1327"," 3.7871810988020495614" +"1328"," 4.3686464115790197837" +"1329"," 3.0078552267341844839" +"1330"," 1.4080924569498636245" +"1331"," 3.5290143977492216543" +"1332"," 0.9471423602994903934" +"1333"," 4.1722230478647617247" +"1334"," 4.1161817383567873563" +"1335"," 5.4691958227789090330" +"1336"," 2.0536275170281088620" +"1337"," 4.7717761929556088418" +"1338","-1.3669935652664739756" +"1339"," 2.4863076231320300202" +"1340","-3.2621378119045569832" +"1341"," 2.0052345926695158695" +"1342"," 2.9175654986391816870" +"1343"," 5.8558616456662413441" +"1344","-3.1026047083119818737" +"1345"," 4.7688046633283907028" +"1346"," 3.9261262666845917479" +"1347"," 2.3464903591850907461" +"1348"," 3.1365487279352413097" +"1349","-1.5969994619377299028" +"1350"," 0.7255232229672918809" +"1351"," 0.7059715218290598671" +"1352"," 1.2266396166895940922" +"1353","-0.8804446629693425397" +"1354"," 2.4220171565749284426" +"1355"," 3.5214106936550160221" +"1356"," 6.9947395396737812590" +"1357"," 3.8156334760965315844" +"1358"," 4.5892280627464430154" +"1359"," 2.9738159630709106729" +"1360"," 7.6616499311972390274" +"1361"," 5.8261588630800513755" +"1362"," 6.7763227880187759666" +"1363","-1.3626611981394940454" +"1364","-0.5706383354686774823" +"1365"," 2.4090138574065798061" +"1366"," 0.9165312968650564107" +"1367"," 2.7710800603910463735" +"1368"," 1.4872847789321841372" +"1369"," 2.8524372683521876937" +"1370"," 1.8303687540520050536" +"1371"," 2.6535793657491528741" +"1372"," 0.8463467110389082393" +"1373"," 0.8731889411495628028" +"1374"," 2.5957483239714056467" +"1375"," 1.0328666769808527715" +"1376"," 2.8782386463243776475" +"1377","-0.4830386349977415783" +"1378"," 2.0551648202361576523" +"1379"," 1.5349476255149687720" +"1380"," 0.7405876299421194631" +"1381"," 0.4590136236626813915" +"1382"," 2.4255025608066889120" +"1383"," 2.8641505919397585167" +"1384"," 1.7257911842246398404" +"1385","-0.5352381661530110080" +"1386"," 1.5870670295708841913" +"1387"," 1.0553043051815635955" +"1388"," 2.1206982702981158617" +"1389"," 0.2373202611524360961" +"1390"," 1.1430147571995741274" +"1391"," 3.1727787595433243339" +"1392"," 1.8512166930021396460" +"1393"," 1.7452595916902182704" +"1394"," 0.4749984148271321205" +"1395"," 1.9718946758042183998" +"1396"," 1.4856830854787657081" +"1397"," 0.7802164695136951655" +"1398"," 1.2671592639748414655" +"1399"," 0.3563896100397410116" +"1400"," 1.7878060665766750681" +"1401"," 3.0930521871744032225" +"1402"," 2.5706035404005276312" +"1403"," 1.5101539569317787848" +"1404"," 2.0498464567307865813" +"1405"," 0.1210961612998480152" +"1406"," 0.5341963410229131348" +"1407","-0.2060941493939864033" +"1408"," 0.6101131485972206558" +"1409"," 0.8509004506464794559" +"1410"," 2.5143955378268834089" +"1411"," 0.8334742598096540611" +"1412"," 3.0889277567534625391" +"1413","-1.2835674668588992198" +"1414","-0.2069546711236817105" +"1415","-0.8797082726473554048" +"1416","-1.5674109294598868036" +"1417","-2.0898481049194264081" +"1418","-0.9458455701030419327" +"1419","-0.1781596970226654308" +"1420"," 0.0211496395973276297" +"1421"," 1.3649704379944820332" +"1422","-0.9084928402277744341" +"1423","-1.0243771255705853562" +"1424","-2.1177333245524772032" +"1425"," 1.7524468394413683647" +"1426"," 0.0569826237226500609" +"1427","-1.4850527852561219433" +"1428","-2.2286730218704073891" +"1429"," 0.9421287608891792953" +"1430"," 0.5534496534588755345" +"1431"," 3.6666536493671015862" +"1432","-1.1567323235704798368" +"1433"," 1.0452541326723825410" +"1434","-0.2792593801755870464" +"1435","-2.7717512708194362858" +"1436","-1.7434212292048663073" +"1437","-1.0363170740958882465" +"1438","-0.3702830166581208560" +"1439","-0.7902523912572521070" +"1440","-0.4137188408416082597" +"1441","-1.4142927131850964173" +"1442"," 3.1245398774224826255" +"1443","-0.1495274672097837154" +"1444"," 1.8783965562040969566" +"1445"," 2.8425994083240855304" +"1446"," 1.1924958674932963909" +"1447","-1.3053544958515812535" +"1448"," 2.4206658804077108016" +"1449"," 2.5094703213286950749" +"1450","-1.2800082939034429508" +"1451"," 1.1177538717988277917" +"1452"," 0.5929157080752283093" +"1453"," 0.3751104845965480550" +"1454","-1.2268907443655339140" +"1455","-0.6194213437733520067" +"1456"," 0.5485903443401707325" +"1457"," 3.6550095169529885908" +"1458"," 0.4135764812627002462" +"1459"," 0.5419300594067046895" +"1460"," 2.0314003628610359797" +"1461"," 2.6415019106654775705" +"1462","-0.2800387673026137891" +"1463","-0.7248879508620006407" +"1464"," 0.8011914712164596164" +"1465"," 0.2736334183370158213" +"1466"," 0.9155708721072377543" +"1467","-0.2295081948487154300" +"1468"," 1.1826001820640614781" +"1469","-0.0717546460558363686" +"1470"," 1.2357949816500410911" +"1471"," 4.3118227585491997189" +"1472"," 2.6136743699068367697" +"1473"," 4.0299958344399557930" +"1474"," 3.1573842324926650882" +"1475","-0.1028925155987288065" +"1476"," 1.4177187920127272136" +"1477"," 2.7853163861444083516" +"1478"," 1.8821282695835293008" +"1479"," 2.3951210929499504587" +"1480","-2.0220118537580167306" +"1481"," 2.8605337400008701287" +"1482"," 4.1054057501562208898" +"1483"," 0.9325932107431167406" +"1484"," 3.2443707354524065067" +"1485","-1.3420001267501686648" +"1486"," 2.8846007281735110972" +"1487"," 2.2473603508100374881" +"1488"," 2.6956541173594756877" +"1489","-0.9594139124124588802" +"1490"," 0.7476640381858169482" +"1491"," 1.2801193987347561087" +"1492"," 1.2856924050168903051" +"1493"," 3.8002214649156838000" +"1494"," 3.6465453459161301097" +"1495","-0.9092461010299044410" +"1496"," 1.0234474100725980961" +"1497"," 2.9800659788836627584" +"1498"," 2.3519265067945149816" +"1499"," 1.8488123106993361588" +"1500"," 2.1815640357194037158" +"1501"," 0.5105693951217660231" +"1502"," 3.2816816509669686219" +"1503"," 1.7580835714703386685" +"1504"," 0.9034624199606455797" +"1505","-0.7191727579522870784" +"1506","-1.0951718405493076069" +"1507","-1.1685367443286223121" +"1508","-2.0597114643241214438" +"1509","-1.0093532179200419563" +"1510","-0.6750659504007620049" +"1511","-1.4240117920517689765" +"1512","-1.3539704783195578575" +"1513"," 0.2205362041722634947" +"1514"," 0.8062029789997687823" +"1515","-0.1638742701326871831" +"1516","-1.0689084327750371095" +"1517","-2.7596098981304644226" +"1518"," 0.7522419738796268796" +"1519","-1.5845969125588355020" +"1520","-0.4531429941547072682" +"1521","-1.4025986126818581479" +"1522","-0.3809058217534903035" +"1523"," 0.3838120613189556218" +"1524","-1.1072947561690915652" +"1525"," 1.2236199059902956865" +"1526"," 1.5452000289369960395" +"1527"," 0.1209338265611861196" +"1528","-0.2960033872917598452" +"1529"," 1.5564248053051403797" +"1530","-1.1709719115408108170" +"1531","-0.6477640392472201469" +"1532"," 0.7765490995583872458" +"1533"," 1.0662005928872160254" +"1534","-1.9300067095103434767" +"1535"," 0.5312765475409195748" +"1536","-0.3008454475556771035" +"1537"," 0.9340695649025189118" +"1538","-0.7835352859855266860" +"1539"," 2.2549320801763905742" +"1540"," 0.9119913862372103219" +"1541"," 0.8980098990456616415" +"1542"," 0.6278323764301436682" +"1543","-0.6971983680104469894" +"1544","-3.1627815841207160830" +"1545","-0.8162771782548885469" +"1546","-1.7293874870548349154" +"1547"," 1.5630500534046796179" +"1548"," 2.6978573509992713753" +"1549","-0.1534235661601219824" +"1550","-1.3767249951844982014" +"1551","-1.4600595765563915140" +"1552","-1.0409058026260524787" +"1553","-1.6510299692100058877" +"1554"," 1.2475015011865722148" +"1555"," 1.2420169958677587108" +"1556"," 2.5115313585744427627" +"1557"," 1.1747952188967740739" +"1558"," 0.2481897289845491628" +"1559"," 0.5294367493596139340" +"1560"," 1.9586848088452986083" +"1561"," 3.4531989297245466730" +"1562","-0.0266518323658844203" +"1563"," 3.4163512410280754139" +"1564"," 0.9162651198081117609" +"1565","-0.4050925153978921500" +"1566"," 4.2041353715035141292" +"1567"," 1.9707821209649767358" +"1568"," 1.3084214369251307986" +"1569"," 1.1692874966661994662" +"1570","-0.7246757264139074284" +"1571"," 1.0297197916762694803" +"1572"," 0.7363910532638294759" +"1573"," 1.1864658032585722047" +"1574"," 3.1710105522482936458" +"1575","-0.5120128248892681366" +"1576","-0.3216653703024439093" +"1577"," 0.7296450555576327046" +"1578"," 2.5103295479178124872" +"1579"," 0.2701109774429826249" +"1580"," 1.5937268250062959218" +"1581","-0.5500867663890698367" +"1582"," 0.3113073116162071718" +"1583"," 2.7454810982827528854" +"1584","-1.2134124530235999018" +"1585","-0.2535762566777854943" +"1586","-0.9617528203024050537" +"1587"," 0.1574620597711751113" +"1588"," 1.1146511000614693909" +"1589"," 0.0755409646435287740" +"1590"," 3.3663777110097976575" +"1591"," 2.8304635931583064234" +"1592"," 0.4301653964968317201" +"1593"," 0.9818453409861680470" +"1594"," 5.2102945453035660606" +"1595"," 4.7109347887119872311" +"1596"," 3.3814679438397590161" +"1597"," 5.1784193440908730111" +"1598","-0.2592556306877655814" +"1599"," 1.5458663821636835500" +"1600"," 4.4852262864264123010" +"1601"," 3.1021979412732014758" +"1602"," 0.8444492526585479775" +"1603"," 3.7526173480747662126" +"1604"," 1.5258380828485338387" +"1605"," 2.7784210002575995269" +"1606"," 0.0234643751143008839" +"1607"," 0.8302860106638378923" +"1608","-0.5413376887794670855" +"1609","-0.4620330080520828053" +"1610"," 2.1227626904597887147" +"1611"," 1.9120985785277362368" +"1612"," 4.0820924843844439422" +"1613","-0.0974784341524310705" +"1614"," 2.5975082091108232518" +"1615"," 2.1745157207882184203" +"1616"," 2.0683005462618284653" +"1617"," 0.6487404875541242788" +"1618"," 0.4143544630513492089" +"1619"," 1.9419691644429382116" +"1620"," 0.0489824452902976049" +"1621"," 0.7130088079262922873" +"1622"," 2.1419714881169089615" +"1623"," 1.8736709299259675099" +"1624"," 1.4091589950732539283" +"1625"," 1.1399525874781466506" +"1626"," 2.4340805015187458871" +"1627"," 6.5754103152451914838" +"1628"," 1.0589175943662860746" +"1629"," 2.2423428552289772497" +"1630"," 1.0904244408133507704" +"1631"," 3.0867082601905138084" +"1632","-0.4937922945079369352" +"1633"," 1.6477214996689126814" +"1634"," 4.0042456449474652658" +"1635"," 3.7317602631903570298" +"1636"," 3.0506832882940235763" +"1637","-1.1223616527183464253" +"1638"," 1.1889694813668647555" +"1639"," 1.4706920486855099561" +"1640"," 1.9509169528183938347" +"1641"," 2.1272766819647506154" +"1642","-0.0261163745715601719" +"1643","-1.2915784599623589823" +"1644","-1.8275781880823616099" +"1645"," 2.9717394048146430485" +"1646"," 1.5722806248652196892" +"1647"," 0.3323210204821149816" +"1648","-1.6135906141117879464" +"1649"," 0.5033480735682370755" +"1650"," 1.9511046833066119088" +"1651"," 1.1869141527537545588" +"1652"," 5.5148515373421957975" +"1653"," 4.5255559078274298912" +"1654"," 6.1604651857012164839" +"1655","-0.8781586364264297728" +"1656"," 0.8312531117218424637" +"1657"," 1.0994509858531578139" +"1658"," 4.5881777645610144489" +"1659"," 0.5439315924445226047" +"1660","-2.4069440155854433527" +"1661"," 5.2740326889243185349" +"1662"," 1.7789929980557708245" +"1663"," 0.8958356472493922418" +"1664"," 2.3426380667701449667" +"1665"," 0.4721160584444895614" +"1666"," 1.6012215755830996322" +"1667"," 1.6481715074240481655" +"1668"," 4.3084290745616726781" +"1669"," 0.2161909439871458893" +"1670","-0.9276681939352221518" +"1671","-0.7628164158683631291" +"1672","-0.5123068107579107355" +"1673"," 3.7579540415708727608" +"1674","-0.1064466823463794398" +"1675"," 0.9909739742513146155" +"1676"," 2.0412952933619439300" +"1677"," 2.9292089564747461061" +"1678"," 4.0880845157196690209" +"1679"," 1.1142328072161060692" +"1680"," 2.0262384602961591717" +"1681"," 2.8855320576025387247" +"1682","-2.0916123402453310476" +"1683","-1.2727979378843159441" +"1684"," 2.8203371514823243338" +"1685"," 2.3776637443059249755" +"1686"," 2.4103294402322985590" +"1687"," 0.2772275001377795256" +"1688"," 2.8391607389767292702" +"1689","-1.5918318611633575088" +"1690","-0.7222799042949337167" +"1691","-2.3247430576588050677" +"1692","-0.5535107456139909399" +"1693","-0.0536829464938100021" +"1694","-1.7528899781783127132" +"1695"," 1.8892216156216812273" +"1696"," 2.3772635101268888569" +"1697"," 4.2660618332241480033" +"1698","-0.2910149489311339988" +"1699"," 1.5350537748191395160" +"1700"," 1.7909094362040778314" +"1701"," 1.9644959079708161909" +"1702","-0.7995774106382145252" +"1703","-0.9282235436943886420" +"1704"," 2.3785275938009697860" +"1705","-0.3929743070843217945" +"1706"," 1.0558072385553183281" +"1707"," 2.2675260745692735753" +"1708"," 2.6545969239007662921" +"1709"," 4.8453583757292753020" +"1710"," 4.5390414914062313656" +"1711"," 0.5878066381911739580" +"1712","-0.4000851408852899582" +"1713"," 1.7163720315417758666" +"1714"," 2.7093998886229226919" +"1715"," 2.0941501683585803661" +"1716"," 1.3019199680947841635" +"1717"," 1.4126377637282652167" +"1718"," 0.9968045808919088202" +"1719"," 1.8582571267545819893" +"1720"," 2.5876602294953117145" +"1721"," 3.3690999915028845280" +"1722"," 2.1972025763225682127" +"1723"," 0.3686316911906598603" +"1724"," 0.6396545889781423133" +"1725"," 4.1033709208078761321" +"1726"," 0.4891256139692983784" +"1727"," 2.1496146814371055456" +"1728"," 1.8781086663410320181" +"1729","-0.1439397236399506674" +"1730"," 0.3448678672705577375" +"1731","-1.0125629550660981693" +"1732","-1.7406851438533206267" +"1733","-1.6525997488518811007" +"1734"," 1.1008756644190920149" +"1735"," 1.7068724403550379343" +"1736"," 1.0087623221545936048" +"1737"," 0.9718560446352505489" +"1738"," 1.8995901450682335376" +"1739"," 2.4289087411668965899" +"1740","-0.0449921053058082165" +"1741"," 3.0072339039609365940" +"1742"," 1.5393044020116346537" +"1743"," 0.0639979678008941733" +"1744"," 1.9528970660976550100" +"1745","-0.9832269227509985443" +"1746"," 1.7371149989801029090" +"1747","-2.6983103001825061718" +"1748"," 0.5719920901596755591" +"1749"," 3.5267520316671134850" +"1750"," 1.8206264021162281708" +"1751","-0.0099200225578597312" +"1752"," 3.7188961280965773248" +"1753"," 1.0603657979915090959" +"1754"," 3.9083456296297329757" +"1755"," 1.6425633253205405016" +"1756"," 0.9341202287540183447" +"1757"," 0.7277142567612200352" +"1758","-0.4479442630965677630" +"1759"," 0.8136326530603235074" +"1760"," 0.1233855380878824404" +"1761"," 1.8982896084118368041" +"1762"," 3.5074986471035809465" +"1763","-0.8111557938654427868" +"1764","-0.0041095751178152895" +"1765"," 0.7615609886403091888" +"1766","-2.3409408681483450110" +"1767"," 0.5113336472976313107" +"1768"," 2.5931462328996315314" +"1769"," 0.6212729224593019905" +"1770"," 2.1635787004287498902" +"1771"," 1.8854982427178377247" +"1772"," 2.7349248651771187468" +"1773"," 2.6071833101380081921" +"1774"," 2.5110613263057808275" +"1775"," 0.4308147588340567324" +"1776"," 2.5475800623168227688" +"1777"," 2.0366174738758231477" +"1778"," 1.5260671879841174459" +"1779"," 3.2221920920234676800" +"1780"," 2.7194905201925965166" +"1781"," 0.0882840119470481577" +"1782"," 0.8428879879709967327" +"1783","-0.2833653505439657216" +"1784","-0.0119875793072130588" +"1785"," 0.0548033300629534037" +"1786","-1.6928265853313442246" +"1787"," 2.1213787581614660382" +"1788"," 2.9423251921824977728" +"1789","-0.3521849529746621243" +"1790","-0.5773028711849930161" +"1791"," 0.2098029779019336960" +"1792"," 1.7376578851775419388" +"1793"," 1.5060360338466680652" +"1794"," 2.5306532143661910617" +"1795"," 0.3060291046463481379" +"1796"," 2.1904943245347485714" +"1797"," 1.0721716420366258493" +"1798"," 3.1635798471760243622" +"1799"," 4.9263077375287069870" +"1800"," 2.0076220519144105658" +"1801"," 0.6114801020586047020" +"1802","-2.8094052238355962103" +"1803","-0.1671505136802475810" +"1804"," 4.4434347482871459079" +"1805"," 0.9824946892759965911" +"1806","-1.4830920271509244746" +"1807","-0.2815091772714581886" +"1808"," 0.5995209566589463357" +"1809","-1.1850212733204250615" +"1810"," 2.6514269402785974883" +"1811"," 1.9256556129045927506" +"1812"," 2.0098061165981326859" +"1813"," 5.1743334299506704710" +"1814"," 1.6363368924211048050" +"1815"," 1.1879881312359401591" +"1816"," 4.3113744699091904877" +"1817"," 7.0057488553010065502" +"1818"," 0.8871373362981647137" +"1819"," 2.2950809676399206438" +"1820"," 1.0639135177289977818" +"1821"," 1.9173198727518889761" +"1822"," 0.7307014140762587706" +"1823"," 3.4834568696924814724" +"1824"," 0.6298204554845008296" +"1825"," 1.0457905366837678685" +"1826","-0.4847197198541483010" +"1827","-0.1403340170248877361" +"1828"," 0.0539911837273432393" +"1829"," 5.5178460071523574015" +"1830","-0.4206609550817514975" +"1831"," 0.5031130031322377238" +"1832","-0.5101367038917588026" +"1833"," 1.4711542985081231816" +"1834"," 2.9325778553906074464" +"1835"," 2.7450283487603677202" +"1836"," 1.1090085680832368897" +"1837"," 1.4065778999494815693" +"1838"," 1.7000620823795724590" +"1839","-2.8887898164035923365" +"1840","-3.3219668774722825866" +"1841","-1.6491794606371024123" +"1842","-1.2866034031580912966" +"1843","-2.2797116948875260078" +"1844","-0.2582045532755393169" +"1845"," 0.1946188289609685484" +"1846"," 2.4029240216853846590" +"1847"," 4.4269552273591621372" +"1848"," 5.0638909270322978173" +"1849"," 4.3550193446139067177" +"1850"," 1.6599170392970492571" +"1851"," 4.4776016344921227841" +"1852","-0.0080463751245165027" +"1853"," 0.3232933894884036929" +"1854","-1.1338452164892225404" +"1855","-1.3334453355404771724" +"1856","-1.8650765303403584738" +"1857","-0.1917989669510510309" +"1858"," 1.4339611213067793294" +"1859","-0.0576620202042689781" +"1860","-1.4418053616878674372" +"1861"," 1.3192055233846398110" +"1862"," 1.9220049004849384389" +"1863"," 2.4054333945254438021" +"1864","-1.3173805518675469894" +"1865"," 0.8879589338014630684" +"1866"," 1.6690067169300604188" +"1867"," 0.5217065225490100655" +"1868"," 2.0907396522721519716" +"1869"," 2.4143462428690551924" +"1870"," 1.5375805758832989945" +"1871"," 4.7357298223544503912" +"1872"," 0.7552645912636249959" +"1873"," 0.5994415973575309975" +"1874","-0.1849666734675921298" +"1875","-1.0826172459975418327" +"1876"," 2.6338447016824306779" +"1877","-1.9597628746807176370" +"1878","-1.7307934802466147239" +"1879","-0.0592611907142166494" +"1880"," 0.5122980903400737862" +"1881"," 2.5648339520321581375" +"1882"," 2.2622036484537910717" +"1883","-0.6023931978728213066" +"1884"," 1.2428816193791671907" +"1885"," 2.3055237105716495094" +"1886"," 3.9809902582988652142" +"1887"," 1.6622900365199824169" +"1888"," 4.5222481914883339016" +"1889"," 2.6404430351588668024" +"1890"," 5.0656710525769259590" +"1891"," 3.0839751932174626070" +"1892"," 6.1213832306410740358" +"1893"," 7.3973771937913621599" +"1894","-1.7306146984997288207" +"1895","-0.1635506900234869887" +"1896","-0.2763944420123318757" +"1897"," 0.2960380692959094784" +"1898","-1.2534689837431587378" +"1899"," 1.0199607488278505940" +"1900"," 0.0834093964028976842" +"1901","-2.7411366547628608359" +"1902"," 3.1682687464864045523" +"1903"," 2.9232818352635736581" +"1904","-0.2442276681265607707" +"1905","-1.9654967391870021842" +"1906","-0.2876031955369620086" +"1907","-0.7441828714686422597" +"1908","-2.0820300350505194231" +"1909","-0.8880158524938709386" +"1910","-1.2700501368423855464" +"1911"," 0.5006695198936681468" +"1912","-1.0332356104101774186" +"1913","-2.2278476956584620794" +"1914","-2.7313114804546581027" +"1915"," 0.0526122803873484424" +"1916","-2.4032607300917696591" +"1917","-2.6607702361786964573" +"1918","-0.4299835470946936633" +"1919"," 1.5746049792509955179" +"1920","-1.8386151451364090015" +"1921"," 1.2464992901490774546" +"1922","-0.0365327373720021331" +"1923","-0.1155361313636638632" +"1924"," 0.4233726605530900855" +"1925"," 3.0238588921592350900" +"1926"," 0.8838237925568600550" +"1927"," 5.8034902429864017037" +"1928"," 1.8819754842208920032" +"1929","-0.7950859316317177017" +"1930","-0.5997048582512993775" +"1931"," 0.4908497468362897909" +"1932"," 2.3283625270086822923" +"1933"," 2.1847136550879078243" +"1934"," 3.4968341888353542402" +"1935"," 4.1244326429856164040" +"1936"," 3.2449968281398158254" +"1937"," 4.4509262878393016649" +"1938"," 3.6010671008170795915" +"1939"," 0.2628741148269024275" +"1940"," 2.0082446005337741823" +"1941"," 2.2622618570014090267" +"1942"," 0.2191797511292907785" +"1943"," 0.6700990011136875868" +"1944","-0.1919748786426969944" +"1945"," 3.5276981761331462906" +"1946"," 2.9580880114775074397" +"1947"," 1.4646031733908166927" +"1948"," 4.0665741618917712330" +"1949"," 3.9854001006832859844" +"1950"," 1.3868288381514768393" +"1951"," 1.5843707303307104084" +"1952","-1.1214648537031606246" +"1953"," 0.2851006133488199756" +"1954"," 0.4423927800387419396" +"1955"," 0.8078546854892739715" +"1956"," 1.5787477220948140655" +"1957"," 0.9062674633158009918" +"1958"," 1.7033933227130404475" +"1959"," 0.0690634444665611524" +"1960"," 0.5650604599751520851" +"1961","-0.6173381651106744084" +"1962"," 1.5228844755389132626" +"1963"," 2.4711574988069879844" +"1964"," 4.3756488629547245495" +"1965"," 1.6593627781250694930" +"1966"," 2.9099544404995709712" +"1967"," 2.1337457142227505003" +"1968","-0.3161111778015724405" +"1969"," 3.5509275975079592769" +"1970"," 2.7784104731790923992" +"1971"," 3.4177965355375188317" +"1972"," 0.6869363197124099818" +"1973"," 0.3712295763384452774" +"1974"," 2.1511425136624664489" +"1975"," 0.2514025914173376730" +"1976"," 0.4285837693023513140" +"1977","-0.3222300417831367447" +"1978","-0.1202735221063211402" +"1979"," 1.8175738317410323752" +"1980"," 2.5030409279717460436" +"1981"," 2.2295552963967093518" +"1982"," 6.1530513956336854164" +"1983"," 4.5024645395566995631" +"1984"," 6.6582337541203582276" +"1985"," 4.3385688151121275524" +"1986"," 3.5817241401933488376" +"1987","-0.6893869881231597940" +"1988","-0.1377602292003441420" +"1989","-2.2363915725172569537" +"1990"," 3.7493784263953537916" +"1991"," 3.0188353618027541359" +"1992","-1.0507141464472922188" +"1993"," 1.9812404332490571868" +"1994"," 0.6263993928055506810" +"1995","-0.7370237371075436528" +"1996","-0.1786624518430189879" +"1997"," 4.4955909632732069525" +"1998","-0.9273228871100598347" +"1999"," 0.4575550754593226688" +"2000"," 0.2676063124708935037" +"2001"," 0.5258959194230270473" +"2002"," 1.0356986137302235385" +"2003"," 5.5963712011021495840" +"2004"," 5.7239442443126433702" +"2005"," 3.3218133727758702989" +"2006"," 4.8801323867478840768" +"2007"," 6.8120183948644736915" +"2008"," 5.3524473262260876538" +"2009"," 5.5636622802056345805" +"2010"," 2.0865600757642051022" +"2011"," 1.9423776256544029728" +"2012"," 1.0745664825883449733" +"2013"," 2.1741973461914416710" +"2014"," 4.6631867095414492042" +"2015"," 2.3697012607934464512" +"2016"," 4.7196090593881070419" +"2017"," 2.7744096041072237036" +"2018"," 3.5620093526203087109" +"2019"," 4.1285858730122058091" +"2020"," 1.9258286532005701730" +"2021"," 0.6661331125165342870" +"2022"," 2.3067089284558051077" +"2023"," 4.7043750411873936912" +"2024"," 1.5726473669142935208" +"2025","-0.0676259865324585485" +"2026"," 2.0876697868918014933" +"2027"," 4.5011669851466420411" +"2028"," 4.6661443939231732614" +"2029"," 4.0723776380641361072" +"2030"," 3.0871318515745849176" +"2031"," 2.9235518473244037629" +"2032"," 2.1517526847780521493" +"2033"," 3.3883459930308319485" +"2034"," 1.7962730312937285060" +"2035"," 1.9800601155388171115" +"2036"," 0.8969189516534985529" +"2037"," 3.2475873469272205085" +"2038"," 3.1022440999922249460" +"2039"," 2.5016346333317143191" +"2040"," 4.8607306239022083361" +"2041","-0.5816320548099382925" +"2042"," 3.0882482656845957614" +"2043"," 2.2918733447351682386" +"2044"," 2.7041797554167907869" +"2045","-0.0118506909870856880" +"2046","-1.8689642388878784374" +"2047"," 2.3990283413723108019" +"2048","-1.1792966443482892913" +"2049"," 4.9656001032697290043" +"2050","-1.3695689095032765881" +"2051"," 2.5580404618717680343" +"2052"," 1.6262186209954170302" +"2053"," 2.5840332572140090051" +"2054"," 2.0835651883216019797" +"2055"," 3.6952666869998909149" +"2056"," 1.4957352032168327316" +"2057","-2.9599691318759187020" +"2058"," 2.1854546100270382247" +"2059"," 1.0055016241865748494" +"2060"," 3.1153698891283232442" +"2061"," 2.8259153506567984415" +"2062","-0.7412881807364435360" +"2063"," 3.7489648644354769402" +"2064"," 1.9136910545513852178" +"2065"," 2.1650431585420277791" +"2066"," 0.9321479895516013858" +"2067"," 2.9724715778666164212" +"2068"," 2.1152432026415199928" +"2069","-0.7737086848957219765" +"2070"," 7.4806247289489178343" +"2071"," 4.3152112381094527294" +"2072"," 1.1726180331392306311" +"2073"," 1.1545115343583716161" +"2074"," 0.3077748526627075432" +"2075"," 2.8673195234678847676" +"2076"," 0.4898252788936166002" +"2077"," 2.5349145919471678390" +"2078"," 1.6102731863667034684" +"2079"," 1.5699893271110085813" +"2080"," 4.0763733918853137794" +"2081"," 3.4376727127443480470" +"2082"," 0.8482080058036448600" +"2083"," 3.0570884172269447987" +"2084"," 0.1446445883026184764" +"2085"," 0.2905012345032661480" +"2086","-0.4996309036411292759" +"2087"," 3.9805666835446453788" +"2088"," 2.7468479479172573932" +"2089"," 2.0068459550219697185" +"2090"," 2.7486813091446995472" +"2091"," 1.4710724950067697314" +"2092","-0.8200439984881164879" +"2093","-3.0212808503629728918" +"2094"," 4.6852100693529559194" +"2095"," 0.1421900813198931357" +"2096"," 1.7141464949761071601" +"2097"," 1.5859809389368308974" +"2098"," 4.0511436457479756967" +"2099"," 3.6906191306041549183" +"2100"," 1.4933467944568379338" +"2101"," 1.7250779977307466595" +"2102"," 0.6760890711954848920" +"2103"," 0.8358300669487344070" +"2104"," 1.5034904968949036608" +"2105"," 1.4147227328546019276" +"2106"," 1.1108983697297314386" +"2107"," 0.0687495412048053645" +"2108"," 1.2294752697284925258" +"2109"," 3.5642480528326494493" +"2110"," 3.4679017745097349135" +"2111"," 0.2378455390355875831" +"2112","-0.9374090570431163894" +"2113"," 0.4876486308102696565" +"2114"," 3.4233322605752340984" +"2115"," 0.5166245767213776263" +"2116"," 6.7023071300575409737" +"2117"," 3.4974054714166684654" +"2118","-0.2993416002951359567" +"2119"," 0.1241528818172516480" +"2120"," 1.7853082464552036956" +"2121"," 1.6485522344462144595" +"2122","-2.2482203413708177209" +"2123"," 4.4294350363180150509" +"2124"," 1.9541462368351130152" +"2125"," 5.3109523329410226467" +"2126"," 1.7442661372887606763" +"2127"," 1.3638413736450489822" +"2128"," 3.5433533125851344181" +"2129"," 1.3255534622329701033" +"2130","-1.2586897081954322442" +"2131"," 2.0147494743702965003" +"2132"," 1.6747498824051110233" +"2133"," 2.3763853798879881474" +"2134"," 1.4840321281601978054" +"2135"," 1.8860114546182575879" +"2136","-2.4857964739606401849" +"2137","-1.5059024258309186006" +"2138"," 4.3405415911913483029" +"2139"," 2.7500215929277089799" +"2140"," 1.6751333435858593024" +"2141","-0.2782384597417572047" +"2142","-0.6697338408318478375" +"2143"," 0.0893524850851162844" +"2144","-2.8565072826835629094" +"2145"," 1.5215844077864109085" +"2146","-0.1006209219768308127" +"2147"," 2.0268062387964125293" +"2148"," 4.7126383993454830090" +"2149"," 7.5700327834356802015" +"2150"," 8.4144194546318633599" +"2151"," 5.3432882144303164296" +"2152","-0.6931698152317029571" +"2153"," 0.1989693766188988522" +"2154"," 1.4768111549972202656" +"2155"," 3.2563684775709962338" +"2156"," 3.0451391451816900435" +"2157","-1.5790010118818915696" +"2158"," 1.7418333702899506665" +"2159","-2.0418319315196598041" +"2160","-2.2826878729680615265" +"2161","-2.3057046192657377759" +"2162"," 4.6456482635519824598" +"2163"," 0.6390402966196524481" +"2164"," 0.2818812846568374275" +"2165"," 3.9769112656758185409" +"2166","-1.7405826099431731535" +"2167"," 1.8395690455362379012" +"2168","-0.2831767730471986821" +"2169"," 1.2453310944867426180" +"2170"," 0.4982394530945351008" +"2171"," 1.9795355274672823409" +"2172"," 0.0505958880170194886" +"2173"," 0.0556993558569406008" +"2174"," 1.3126458461844099368" +"2175"," 1.4851132928477057682" +"2176"," 1.6163351421091918247" +"2177"," 0.5561513695285087433" +"2178","-0.5699990666472618539" +"2179"," 6.1116703826834202218" +"2180","-1.7658200608511469554" +"2181"," 1.1892062275765067358" +"2182"," 0.1732296637168442288" +"2183"," 1.1948334357316954257" +"2184"," 1.3290599672334013626" +"2185","-1.3641453576564719352" +"2186"," 2.7682212527331651053" +"2187"," 1.6112360872377895493" +"2188","-2.8720147698812690251" +"2189"," 2.2749543994484517917" +"2190"," 0.7050368606502863678" +"2191","-2.1783859092528077284" +"2192"," 1.0933940401786017560" +"2193"," 0.9235716705654923864" +"2194","-0.4976365543680021375" +"2195"," 1.9001489052612985375" +"2196"," 1.3059259788879902242" +"2197","-0.6888207713325413817" +"2198"," 0.0008495897647131656" +"2199","-0.7831068969674790381" +"2200"," 2.4518157398448425788" +"2201"," 2.3083733216632613683" +"2202"," 2.3555598360397129731" +"2203"," 1.0151796107688171311" +"2204"," 1.4593250537909749909" +"2205","-1.2496179286254678331" +"2206","-0.4539117005916562531" +"2207","-0.7560743380495161814" +"2208"," 0.4663645601909474081" +"2209"," 1.7834491973632986550" +"2210"," 4.0232043533337318308" +"2211"," 2.7760258420470953489" +"2212"," 4.1945725359784873376" +"2213","-0.6117076864392625435" +"2214","-1.9875250795860948116" +"2215"," 1.0786245630891011515" +"2216","-0.4772041094026568953" +"2217"," 1.6809717752928698964" +"2218"," 2.1930140117531715660" +"2219","-1.5076368979021597116" +"2220"," 1.1256271908220389921" +"2221"," 3.4640363501487110298" +"2222","-1.1731532321595301571" +"2223","-0.7692137648874100009" +"2224"," 6.9999036022837026749" +"2225"," 3.0505093172060213647" +"2226"," 1.3834084874101502116" +"2227","-0.0729623768768152825" +"2228","-0.1857396433196322749" +"2229"," 3.4562629357922109996" +"2230"," 1.9844288665527636262" +"2231","-0.4440102180467995763" +"2232"," 2.9898327160735944652" +"2233"," 5.1899022525205493750" +"2234"," 0.6301757857597373169" +"2235"," 3.3534065773941992283" +"2236"," 0.5467879956324461777" +"2237","-1.3812045811533568695" +"2238"," 0.7191938943065198098" +"2239","-1.7250163941051086525" +"2240"," 4.2675026568710894281" +"2241"," 0.9354216670555203228" +"2242"," 0.2354380874353250164" +"2243"," 2.2559494579154470983" +"2244","-1.3030626490749979141" +"2245"," 1.4788418720460629885" +"2246"," 4.1754355484562255540" +"2247"," 4.9398069954676744331" +"2248"," 3.5905529838390490838" +"2249"," 0.8034698875535939422" +"2250"," 0.9508400635368965403" +"2251"," 6.4776508605868832191" +"2252","-2.6823577025858322820" +"2253"," 3.9547913798273266472" +"2254"," 5.6297167072526130838" +"2255","-1.0345059735453199234" +"2256"," 3.5549770969700253964" +"2257","-1.6627742318617144690" +"2258","-0.9418425703809101268" +"2259"," 2.3250095501632985773" +"2260"," 2.2883031193845626561" +"2261"," 3.0269112203055810184" +"2262"," 3.4491473044059910436" +"2263"," 3.1029396471203494201" +"2264"," 1.9991390195624338944" +"2265"," 1.5083393552117019265" +"2266","-0.4465319307540552840" +"2267"," 3.6451199117322983234" +"2268"," 1.5014359917125308375" +"2269"," 0.0201162065427051839" +"2270"," 4.3550339597443290529" +"2271"," 3.6807345667619069118" +"2272","-0.6665131713712445505" +"2273"," 3.3777864879353778349" +"2274"," 0.6246923253767282525" +"2275","-0.6384434362538109475" +"2276"," 6.4039571230458944839" +"2277"," 8.4666606304020781693" +"2278"," 0.1965279575611279528" +"2279"," 7.3976610038462133900" +"2280"," 7.6983622715210477949" +"2281"," 1.0268062154456332191" +"2282","-0.1356212548788724714" +"2283","-1.2269900293965294580" +"2284","-1.5800317971220312341" +"2285"," 2.4544593261661042938" +"2286"," 6.1566628611805471749" +"2287"," 4.3871891827450388845" +"2288"," 2.1658441038791433897" +"2289"," 0.0484444621774740014" +"2290"," 4.7689872704747759968" +"2291"," 0.6358514906155554591" +"2292"," 3.5116562757575047193" +"2293"," 0.6560104352102644754" +"2294"," 2.5737226589511763564" +"2295"," 0.0837564563333890177" +"2296"," 3.2815147287879375959" +"2297","-2.0277954820609593867" +"2298"," 1.8360376676972114396" +"2299","-0.0401763296300480244" +"2300"," 5.0267415449300667518" +"2301"," 5.3049671454612621346" +"2302"," 1.5067439890862859286" +"2303","-0.8817369450029236555" +"2304"," 2.0637592679830318865" +"2305"," 2.7550911637894373030" +"2306","-0.1444855351062104276" +"2307"," 2.1108790699221149367" +"2308"," 1.1595826050033017918" +"2309","-0.1217830843542131447" +"2310"," 3.7350084065502313635" +"2311"," 4.1330964577150757222" +"2312"," 2.3732757126100105793" +"2313","-0.3928690570807049642" +"2314"," 0.1931174701745406175" +"2315","-0.1285567849354782854" +"2316","-0.1179980182397114830" +"2317"," 1.1134976911208782635" +"2318","-0.5680407615870712856" +"2319"," 3.5176436004699542792" +"2320"," 0.4498704538514279871" +"2321"," 1.0576978098247107329" +"2322"," 1.3656120804644120703" +"2323"," 1.5721645645395265767" +"2324"," 1.1694906474485646797" +"2325"," 1.6576608170271143194" +"2326"," 2.2140425463234474357" +"2327","-1.1544013827886319135" +"2328"," 4.1786075071381922896" +"2329","-1.3223226883520728947" +"2330"," 7.6079200276574692197" +"2331"," 3.1172697975439835893" +"2332"," 8.4273316488902381138" +"2333","11.3174288774398625890" +"2334"," 2.3499707824373294862" +"2335","-0.9000468946479720511" +"2336"," 5.1226567821831032745" +"2337","-7.1424128324533597834" +"2338"," 3.4218150384194050417" +"2339","-1.1845621773188550474" +"2340"," 9.2505138786713008159" +"2341"," 1.7012213502176511959" +"2342","11.4396638869675726369" +"2343"," 9.7021964386544663483" +"2344"," 0.3549473453778677623" +"2345","-6.4117051071883759406" +"2346"," 0.9369197242784144120" +"2347"," 2.2522562471292228992" +"2348"," 7.8051264677055636199" +"2349"," 0.4411158648789322290" +"2350"," 3.7200421150991664909" +"2351"," 7.8219532010566927838" +"2352","-1.9737645936215537645" +"2353"," 4.1862882098471363435" +"2354","-2.1179491416680669147" +"2355","-1.5519635576082502215" +"2356"," 1.4880548659767085518" +"2357"," 9.5802700975303984876" +"2358"," 1.7253165898594322591" +"2359"," 2.2143635119766198471" +"2360","11.4896884434595634161" +"2361","12.9013216403677049016" +"2362","-0.2373872398168720421" +"2363"," 3.0647558316440757231" +"2364"," 7.6478288825447986454" +"2365","-6.1342576884494119938" +"2366","-0.9074051069457694796" +"2367"," 3.6657152414026716869" +"2368"," 5.9305798057116669852" +"2369"," 1.9656581848830487758" +"2370"," 9.9342351659234786609" +"2371","-5.6544045150486326179" +"2372"," 9.6082722253935486378" +"2373"," 8.6765182009302641575" +"2374"," 0.9246147104524875537" +"2375","12.9350910179023959046" +"2376","-0.8385690841958322039" +"2377","-3.5927582002571578634" +"2378","-0.8989837349418171586" +"2379","-2.9153995938495862461" +"2380","-2.3941898005277777450" +"2381","-1.0053042036663171199" +"2382","-1.8024780660313075575" +"2383","-2.0582458300119714778" +"2384","-3.6383251544554888746" +"2385","-4.1740354265825327928" +"2386","-3.4686144777555929508" +"2387","-4.8692883275082881056" +"2388","-2.7903147618342769576" +"2389","-2.2097914675042287236" +"2390","-1.6918936469944845236" +"2391","-0.2410762551947203125" +"2392","-4.6624226317550920839" +"2393","-2.1987113004322149656" +"2394","-1.1754290017759427833" +"2395","-1.7385012520425993099" +"2396","-3.0908305655546861601" +"2397","-3.4593597809136822363" +"2398","-0.6463666348186993815" +"2399","-3.8086650516583313575" +"2400","-0.4298503957069169101" +"2401"," 2.0209903824437169817" +"2402"," 4.5488901010370970113" +"2403"," 1.9407390648488265228" +"2404"," 1.7197339191211304943" +"2405"," 2.3555108370361481640" +"2406"," 5.6814046188220679312" +"2407"," 2.5354027225845241489" +"2408"," 2.3411853241963824779" +"2409"," 4.9038258862625756507" +"2410"," 2.5349325818625692008" +"2411"," 2.1574870830021541934" +"2412"," 5.6363250010319454475" +"2413"," 5.1218019450212697308" +"2414"," 4.1979875068031455854" +"2415"," 5.4222268245730509406" +"2416"," 5.0346093592484910673" +"2417"," 2.4141643053963841581" +"2418"," 6.5055206494994308741" +"2419"," 7.6199308992208401037" +"2420"," 4.3118328273720560873" +"2421"," 3.7253267832681693505" +"2422"," 4.9806198279422657649" +"2423"," 2.8171226870405225995" +"2424"," 2.8594976923837904792" +"2425"," 6.6661845332409246367" +"2426"," 3.9972268404260118402" +"2427"," 7.0452084571136683877" +"2428"," 5.9721489892309111980" +"2429"," 5.4465196091788055099" +"2430"," 6.1137959180488365973" +"2431"," 6.8682969938502731466" +"2432","-4.6806057360011008583" +"2433","-3.0720018779731281811" +"2434","-2.2206717554494850297" +"2435","-4.3812783115775353338" +"2436","-3.1276948819191097151" +"2437","-2.8869219902924463383" +"2438","-1.9635655107768750227" +"2439"," 4.4898515532696361419" +"2440"," 5.5492811833736395144" +"2441"," 5.0480008326059957469" +"2442"," 5.8059720744897482803" +"2443","-3.7507287709610190873" +"2444"," 7.1930476728799810360" +"2445","-4.9864744700949490408" +"2446","-2.7718222623867312393" +"2447","-4.0229312414511344542" +"2448","-5.7190647923843425104" +"2449"," 3.2401731176041637106" +"2450"," 5.9058093392973800562" +"2451","-6.2656613176253390662" +"2452","-2.8634435948683192308" +"2453","-4.8115622795973527204" +"2454","-4.8049673419725431600" +"2455","-5.4543755647346063853" +"2456","-5.7161024377702602806" +"2457"," 5.5613761848019738210" +"2458"," 3.1154786624686412466" +"2459"," 4.3961388331477175839" +"2460","-2.7420310133688503562" +"2461","-3.6501001399990937735" +"2462","-5.4604201966156731274" +"2463"," 4.1041025116293745612" +"2464","-3.6308588518663205136" +"2465","-5.2279080560296131708" +"2466","-4.2205343918686040183" +"2467"," 4.3661410688103456934" +"2468"," 5.6611762792160842395" +"2469"," 2.3697121683548694193" +"2470","-5.2312593795915098838" +"2471","-3.6815198165824645216" +"2472","-5.1151693702017064780" +"2473"," 6.5576269974940730734" +"2474"," 5.5787558016967597752" +"2475","-3.7795571475834948139" +"2476","-3.2746581027818706389" +"2477"," 4.5155597203650925664" +"2478"," 6.0339109619213235902" +"2479","-0.5069243937134806366" +"2480","-4.6690311733593201637" +"2481","-4.7261516633389728526" +"2482"," 2.1910208264526507271" +"2483","-3.4146531123031791388" +"2484","-3.3122670661233861722" +"2485"," 5.0156802836561418246" +"2486"," 7.3339359530849144164" +"2487"," 5.7661164828941373628" +"2488"," 7.1794702268657042410" +"2489","-5.4294630667082426356" +"2490","-4.9696310144116297991" +"2491","-2.8556489678718892655" +"2492","-5.3551742095737715488" +"2493","-3.1048974348529356782" +"2494","-4.4707604904555404701" +"2495","-4.2225861351942999278" +"2496","-3.4104419569129360568" +"2497","-1.8371990602294989703" +"2498","-2.2976882668515594688" +"2499","-0.5012055412648734887" +"2500","-3.7239650100688201917" +"2501","-0.3937630096572624083" +"2502","-4.2322710144634720919" +"2503","-0.1041042908752070062" +"2504","-2.4771359913257255947" +"2505","-1.4776348720365100053" +"2506"," 0.1451966804940831857" +"2507"," 5.8704616534964060293" +"2508"," 1.1461574423667577616" +"2509","-1.3632318451956524363" +"2510"," 7.3263551414644343396" +"2511"," 8.1669460967539411200" +"2512"," 6.6297744096455080154" +"2513"," 4.9013730209271209048" +"2514","-4.2304643070264020821" +"2515","-5.1195144834551404855" +"2516","-3.3086068011039184711" +"2517","-1.1424554882444517556" +"2518"," 7.9182001069469682974" +"2519"," 3.8152595824346420272" +"2520"," 8.3133426740646143571" +"2521"," 7.8942545569019921814" +"2522"," 6.1707581495928076620" +"2523"," 6.4114962125291530270" +"2524"," 7.0363112959396714174" +"2525"," 6.8305150312054951911" +"2526"," 6.7207276137562121932" +"2527"," 2.8123315361683234315" +"2528"," 4.6406418290060100773" +"2529"," 7.0764761433060927587" +"2530"," 7.0025503829558761737" +"2531"," 7.7211532254355130789" +"2532"," 8.1557203717416761890" +"2533"," 8.0490339640461368020" +"2534"," 7.4313153041536486043" +"2535"," 8.2520616391854719751" +"2536"," 8.3286316171520784479" +"2537"," 7.7879631963924031979" +"2538"," 6.4168399176516803806" +"2539"," 6.9806018125533704222" +"2540"," 8.3315679216508158333" +"2541"," 7.2212588141728524249" +"2542"," 7.6150133986466768121" +"2543"," 3.8655913467341891376" +"2544"," 3.7280691508479684160" +"2545","-5.2405471202554565480" +"2546","-4.2833640377804282906" +"2547","-2.9815105745059051756" +"2548","-2.0079975384598296451" +"2549","-4.8412413217619301165" +"2550","-0.0098469696079749314" +"2551","-3.1104662770060653720" +"2552","-1.5139115648597978314" +"2553","-4.0964129074714517031" +"2554","-2.7578130037261670005" +"2555","-0.4277392932701977735" +"2556","-2.2158193792896678787" +"2557"," 7.8280310045171859201" +"2558"," 6.1510053500125287940" +"2559","-2.9168142761598212509" +"2560"," 5.7331052821825059240" +"2561"," 6.5914761432342388048" +"2562"," 8.2194983275723778604" +"2563"," 7.0118709719231704369" +"2564"," 0.8581942453250452907" +"2565"," 6.3910350704576810443" +"2566","-1.8040486897818013290" +"2567","-2.3423029401058985677" +"2568","-4.3578150411869156500" +"2569","-3.0621140184778266047" +"2570"," 6.9353193728788102845" +"2571"," 6.7596242534098189836" +"2572","-2.7064223550163157839" +"2573"," 6.0073236035402119981" +"2574"," 2.3642724386972595596" +"2575"," 6.0747729594107369167" +"2576"," 8.7131155986869774921" +"2577","-4.5364772093831726707" +"2578"," 5.9608268783619120512" +"2579"," 2.4984206269143309775" +"2580"," 4.0351312412578321798" +"2581","-3.7246822456902348719" +"2582","-4.0192661013354697985" +"2583","-5.5153112209836514523" +"2584","-1.4809166704603344833" +"2585"," 0.1942577070639399939" +"2586","-0.4486079628670147645" +"2587"," 0.0689636126650274434" +"2588","-4.1847950517687317884" +"2589","-3.9149254016583459048" +"2590","-5.5588988351880024297" +"2591","-5.0488992333147777458" +"2592","-4.8940750667743717628" +"2593","-1.2697180729783017483" +"2594","-3.7527228097741684998" +"2595"," 6.9934219228685243763" +"2596"," 6.4172975127951836782" +"2597","-3.2960744237223100761" +"2598"," 0.8768559203016303982" +"2599","-3.6592519401545522406" +"2600","-1.3647880956830540367" +"2601","-3.9114137210908692666" +"2602"," 5.7388994576314793505" +"2603","-1.0532353370165341566" +"2604","-2.4368860071105631349" +"2605","-2.2765144748071972636" +"2606"," 4.8028920615424306462" +"2607"," 6.8188358983853225581" +"2608","-1.9325865543010647407" +"2609","-2.6651239572376286269" +"2610","-1.6768904337250793990" +"2611"," 5.4374837463216785238" +"2612"," 2.4834448714243313461" +"2613","-3.0767965258501659420" +"2614"," 7.2630146402798816396" +"2615"," 6.6920151115810329046" +"2616"," 8.4192855188039423808" +"2617"," 7.9705326619350742590" +"2618"," 5.7630922545016716185" +"2619","11.2699961700278130650" +"2620","11.6439696231452014530" +"2621"," 9.5776821027340783843" +"2622"," 5.4012118837207268029" +"2623"," 9.1458496803555533461" +"2624"," 8.5541405005443689191" +"2625"," 8.6779843612697025179" +"2626"," 6.6409542803851113746" +"2627"," 8.3902363959012351557" +"2628","-2.1052563224899967231" +"2629","-3.6809019848317032775" +"2630","-1.9166049983288888647" +"2631","-1.6651625912598833068" +"2632"," 0.6280532366547202372" +"2633","-1.9105191384180717495" +"2634","-0.1956916729231194252" +"2635","-0.9203888084573390582" +"2636","-0.3606971951946480459" +"2637","-0.3061149351236462368" +"2638","-0.7375901669417120887" +"2639","-2.5892046562483348460" +"2640","-3.6744291666596788914" +"2641","-0.2444682826405659704" +"2642"," 3.4971891959233003533" +"2643"," 5.9397711541689677262" +"2644","-5.4834958720046795833" +"2645"," 9.7416468037257359924" +"2646"," 9.2880888553065066304" +"2647","-3.4339338532426189055" +"2648","-4.3053442372079908651" +"2649","-0.5052711552751227853" +"2650","-3.4741129690165140076" +"2651","-5.2333655187904417616" +"2652"," 0.4535652234096421154" +"2653","10.5851394450483144993" +"2654"," 9.0952344052554980891" +"2655","-2.9929559434721038080" +"2656"," 1.0472525914850114859" +"2657"," 1.2701443223674750982" +"2658","-4.6062944822588445248" +"2659","-5.4486375521054810633" +"2660","-1.2860765500799977712" +"2661","-2.1532593718786263715" +"2662","-2.1855334556781551569" +"2663","-1.1796629637310436234" +"2664","-1.7649262340305993391" +"2665","-4.0496521956433788603" +"2666","-0.2530155592729549374" +"2667"," 4.2375614459144124169" +"2668"," 4.6480995363696200329" +"2669"," 0.8019170396079342567" +"2670"," 3.3842823813481799355" +"2671"," 3.8892303220523540830" +"2672"," 3.0383411161531892475" +"2673"," 3.4508615078173527912" +"2674"," 5.1188796467514841027" +"2675","-2.8493055650335237239" +"2676","-1.7688680616567848958" +"2677","-1.8001348580552563039" +"2678"," 4.9942115753448801385" +"2679"," 3.9417277053382964169" +"2680"," 8.0697712841915993920" +"2681"," 6.2315763434379540797" +"2682"," 6.5549937399496567281" +"2683"," 2.7055669604717000887" +"2684"," 3.5128785232155195217" +"2685"," 4.0613557937281559163" +"2686"," 3.8347172052811666632" +"2687"," 5.9980019961997488309" +"2688"," 7.4113814397999302486" +"2689","10.2070709967854966749" +"2690"," 9.8664391687628718586" +"2691","-6.4393815421347504468" +"2692"," 4.6308045658158309976" +"2693"," 2.1988847398129252042" +"2694","-2.2863522176376820383" +"2695"," 9.5038216962430563939" +"2696"," 6.5934920428614578469" +"2697","10.1496925673163129744" +"2698"," 8.3215379415426351528" +"2699","11.7063540071264711173" +"2700","-4.8650059575708732851" +"2701"," 8.4516112909296303712" +"2702"," 9.6647367627171796300" +"2703"," 3.0110033135758955680" +"2704"," 2.2890181040475576779" +"2705"," 2.0634456975658390654" +"2706"," 4.3448506880043638034" +"2707"," 3.7766054611346628889" +"2708"," 8.8362190086337850659" +"2709"," 9.6151951309098020459" +"2710","-2.0420557113689858930" +"2711"," 6.5502679979241325015" +"2712"," 7.0590318092478705481" +"2713"," 8.2304558760123036620" +"2714"," 8.7388266306280826257" +"2715"," 1.2783868005703886706" +"2716"," 1.1746367182631689552" +"2717"," 1.2064052614194471502" +"2718"," 4.5713772598044482010" +"2719"," 7.3962754099902996430" +"2720"," 6.4035198059509212953" +"2721"," 7.8684539866376166373" +"2722"," 5.4375688026574620082" +"2723","-1.0803616445293768855" +"2724"," 8.9209855425989328381" +"2725","-2.5622299576598455140" +"2726","-1.7424401460594447499" +"2727"," 4.0993309239288606705" +"2728"," 3.8709290296280971511" +"2729"," 8.9232679569013750864" +"2730"," 9.7836635707312016308" +"2731"," 3.6218543853666771426" +"2732","-4.4671608324994913630" +"2733","-1.1554979314903648380" +"2734"," 1.7800604798674861673" +"2735"," 8.0640591260877112489" +"2736"," 7.0085249150009021335" +"2737"," 9.2465359454888123025" +"2738"," 8.1648494484090701206" +"2739","-4.6028283878633846626" +"2740","10.3155036082119213603" +"2741"," 5.3753504476025035785" +"2742","-1.4823345571441917112" +"2743","-5.1223084461248982180" +"2744","-0.8171262880921967842" +"2745","-0.9501157749950983611" +"2746"," 4.0492860195081457064" +"2747","-2.6583262595813543783" +"2748","-2.1591063284069864636" +"2749","-0.9553228943947398299" +"2750","-1.7360029124406368695" +"2751","-1.1372351494886445700" +"2752"," 1.1670822428700220463" +"2753","-1.8387923958482685904" +"2754","-0.2881425157680591598" +"2755","-0.9115750471089058005" +"2756","-1.5710596285898050795" +"2757","-2.9194156998192908326" +"2758"," 0.8434640810264169009" +"2759"," 1.5732686169771410434" +"2760","-0.0645157039731734105" +"2761","-1.8385706765862384060" +"2762","-6.4248627974048035938" +"2763","-3.3818474077106555065" +"2764","-3.1146025177986742527" +"2765"," 5.2287794092905617305" +"2766"," 6.8446926237765364220" +"2767"," 7.9937799277745442694" +"2768"," 6.4266725992308995075" +"2769"," 5.5077470716400434014" +"2770"," 9.0026978344451489278" +"2771"," 6.1890233621231960370" +"2772","-3.6863845799673633508" +"2773"," 2.5571465995024613704" +"2774","-3.5114791951304180628" +"2775","-3.6794394563752694793" +"2776"," 0.0937851562701212949" +"2777"," 4.6125407014411905493" +"2778","-1.2704065405679738632" +"2779","-1.4127621696693477560" +"2780","-3.7105450871092409137" +"2781","-1.9571478006233800073" +"2782"," 0.1962891185007555883" +"2783","-0.0741883567940111455" +"2784"," 1.7700318394506386888" +"2785"," 5.1649960080034382770" +"2786"," 1.2975182334406092366" +"2787"," 7.2183569142884254077" +"2788","-7.8799460653811230770" +"2789"," 9.4932554583892141409" +"2790"," 8.0323804346691183298" +"2791"," 8.6078751611255821530" +"2792"," 1.9311924654629442077" +"2793","-2.6015929176020913260" +"2794","-2.4240622229353818717" +"2795"," 5.6816150064524597596" +"2796","-7.4018199887079187960" +"2797","-2.1130256587936155910" +"2798"," 0.9553972330168742921" +"2799","-2.6977363923458326234" +"2800","-2.0938610562339468046" +"2801","-1.5371194228987685726" +"2802","-3.9536015403592887907" +"2803"," 7.9741500219095442503" +"2804","-0.1010936672937235992" +"2805","-2.3110157195592497814" +"2806"," 0.3441912302150063052" +"2807","-1.2305570664404170689" +"2808"," 0.6060076509201721695" +"2809"," 6.5684665227081593386" +"2810","-4.3317986608447522912" +"2811","-2.9515860357053820273" +"2812","-1.7392786521019394375" +"2813"," 4.8587566362286729316" +"2814","10.7125818991246859468" +"2815"," 8.7090634166594558252" +"2816"," 2.6751195350134873152" +"2817"," 0.3580581429516503933" +"2818"," 9.7453550187634192525" +"2819","11.2380790497914730963" +"2820","-5.1267261285683360938" +"2821","-2.4555283204203943725" +"2822"," 4.4859102103196590861" +"2823"," 7.5480323075360127305" +"2824","-1.4397878623086064476" +"2825"," 8.3188191600560870143" +"2826","12.6767376783380800731" +"2827"," 0.8724187302420427503" +"2828"," 0.5186363886621094821" +"2829"," 2.4319859908193164344" +"2830"," 3.0788847922645210531" +"2831"," 3.4695882010081211533" +"2832"," 5.8889443142728001845" +"2833"," 9.7679339139043683815" +"2834","10.4957535265332690955" +"2835"," 4.2414051012268769725" +"2836"," 4.6035939486685526489" +"2837"," 2.1126842671674439522" +"2838"," 2.9100258782457855133" +"2839"," 7.2060481659626383077" +"2840"," 8.4976280035888738240" +"2841","10.6330518216624145822" +"2842"," 8.1051043455760183321" +"2843"," 4.6887275549697360333" +"2844","-4.2323457710192409209" +"2845","-0.3561466886578976698" +"2846","-0.6580685116034179494" +"2847"," 0.4436637767403155408" +"2848"," 6.3063579598929040415" +"2849"," 7.7508922627075209633" +"2850"," 7.1915121004806659144" +"2851"," 2.9649629317499082148" +"2852"," 4.1690147201742480121" +"2853","-3.8390213141356657189" +"2854","-3.4147218154357901199" +"2855","12.4552575633207549544" +"2856"," 0.0609307590479430949" +"2857","11.1540625550277692213" +"2858"," 1.8349562541150019612" +"2859"," 5.8648949941734738189" +"2860"," 4.1042526477666054774" +"2861","-2.7169377299387971192" +"2862"," 3.5001390164007766259" +"2863"," 2.0471695826255000839" +"2864"," 8.1005975961712284317" +"2865"," 8.9996486520802285725" +"2866"," 6.6325765560026894718" +"2867","-4.6507095431288103526" +"2868","-4.6116595380121179204" +"2869","-4.8296821189288987597" +"2870","-5.3363710009888416508" +"2871","-0.8384828201278735627" +"2872","-3.2276624884877005428" +"2873","-1.4387861869647105006" +"2874"," 4.5662522109790462110" +"2875","-1.7267287924546068645" +"2876","-0.0062979291016489469" +"2877","-1.8521035520579312017" +"2878","-1.7212579488671881922" +"2879","-1.8622724249250239836" +"2880","-3.3353986958294314924" +"2881","-2.4005987914404984807" +"2882","-1.3565217750428366639" +"2883"," 3.0475584106513631255" +"2884"," 2.0340202907395776855" +"2885"," 0.1094659302813301149" +"2886"," 4.6911142195949979694" +"2887"," 1.4510318720319466124" +"2888"," 1.5274821523844475113" +"2889","-0.8679829923007040815" +"2890"," 2.1747872181991221296" +"2891","-2.2008701080290657970" +"2892","-1.4388454895665989675" +"2893"," 4.2452082979541732044" +"2894"," 2.9175189209135692359" +"2895"," 4.3630976651054833582" +"2896"," 4.4135524584264942405" +"2897"," 6.7315746826984641515" +"2898"," 6.1234459666803591205" +"2899"," 4.8778215724658213759" +"2900"," 4.1888143576987451056" +"2901"," 4.8847566818581844572" +"2902"," 4.9861188958866744514" +"2903"," 5.1719888980980872617" +"2904"," 4.2225707028722450076" +"2905"," 4.9199724192639040510" +"2906"," 6.2156450592620355877" +"2907"," 5.5305762746124891294" +"2908"," 4.4527527067483543277" +"2909"," 4.6148401809556922615" +"2910"," 5.7872143477084954100" +"2911","-5.2595441431229055240" +"2912"," 5.5278395299524962780" +"2913","-1.6025548598734049577" +"2914"," 6.5500437626626517584" +"2915","-1.1709648295950558783" +"2916"," 2.7422590939857003356" +"2917"," 3.9469445090692949485" +"2918"," 3.4896967094789275166" +"2919"," 3.7971975693904491678" +"2920"," 6.8440953940497539776" +"2921","-1.8820798240471159346" +"2922"," 0.9796389745057632048" +"2923","-0.0039708228615973340" +"2924"," 7.5582550634782252885" +"2925"," 2.4289955058194196980" +"2926"," 4.9411402679231137824" +"2927","-0.7539438405224829776" +"2928","-0.1061984185242152989" +"2929"," 1.6432121806343946702" +"2930"," 4.2676810514526763995" +"2931"," 4.5571147039223189878" +"2932"," 4.2962518765123709485" +"2933"," 1.8435024424978616597" +"2934","-1.3944379704674767506" +"2935"," 2.5099720593998031681" +"2936"," 4.3109476073322170464" +"2937"," 5.8935880262529423135" +"2938"," 7.1376536184907308780" +"2939"," 4.1304764687946562418" +"2940"," 5.0473122243657213559" +"2941"," 5.8036240590645542525" +"2942","-5.4047289429334002264" +"2943"," 3.4140871125732243918" +"2944"," 2.2439963708890360294" +"2945","-1.3152444015793676169" +"2946"," 0.8292118445748846156" +"2947","-2.9799256591722285137" +"2948"," 6.3775363306408419106" +"2949","-3.1115414849215592419" +"2950","-1.6928766909781980399" +"2951","-1.8942710256025108162" +"2952","-4.0687892060717310017" +"2953","-3.3702960755135640269" +"2954","-2.4387956034891997703" +"2955","-5.1139136428556399849" +"2956","-1.6296220187254988332" +"2957","-3.5395826837600572468" +"2958","-3.5572914959092472031" +"2959","-0.3063399662976232785" +"2960"," 4.0430801551329169641" +"2961","-1.2485541796051828900" +"2962"," 4.2864515218758425519" +"2963"," 5.7039195675119920281" +"2964","-2.0745787908768922314" +"2965"," 6.8625825963941613495" +"2966"," 9.3828723790168915286" +"2967","-7.1411468752050666353" +"2968","-5.2006686225782638999" +"2969"," 7.3177570828784030965" +"2970"," 3.2079004017208134769" +"2971"," 6.2185643143078452866" +"2972","-4.3619429563444187536" +"2973","-1.2812403416966149372" +"2974","-2.0377463403260711594" +"2975","-1.5419786087032374411" +"2976"," 5.0673681528013290176" +"2977"," 8.6190139061031185719" +"2978","10.2915609493863602353" +"2979"," 9.0789300175742013721" +"2980"," 8.1021084372017355690" +"2981"," 5.3609659592291256658" +"2982"," 5.0286494455440058360" +"2983","-2.7408935910339722319" +"2984","-4.9242309208801229303" +"2985"," 5.0008546102598145922" +"2986","-2.8049521946701831965" +"2987","-3.0060243894270697318" +"2988","-2.5069095389650271066" +"2989"," 6.7190531793358303503" +"2990"," 6.9430077917216141969" +"2991"," 4.1530536205120007764" +"2992"," 6.7779893630578165187" +"2993","-1.5456017318889869738" +"2994","-1.5947064130765533640" +"2995","-3.3610158418415085890" +"2996"," 4.2281524837230035629" +"2997"," 9.2314310995928288150" +"2998"," 7.1562623195676184906" +"2999","-4.1507714956042374155" +"3000","-0.4913265572248670665" +"3001"," 2.0440014003978244084" +"3002","-0.0828844570533819880" +"3003"," 8.4414242394650056411" +"3004"," 9.1036020131597652494" +"3005"," 7.1081066479658465695" +"3006"," 8.4023606603024862949" +"3007"," 8.6202435651781375014" +"3008","10.6719559904605407752" +"3009"," 6.8246846318344935867" +"3010"," 8.7777400677234407311" +"3011"," 7.1172880695578539800" +"3012"," 6.1915930612121501397" +"3013"," 6.5663513644575610684" +"3014","11.5374218042660867667" +"3015","11.2915648486034854159" +"3016"," 1.4203887996699218199" +"3017"," 3.4809973785682979397" +"3018","13.4122783673959755646" +"3019","10.9796731771315112525" +"3020","10.5241962331243108508" +"3021"," 0.9807558606057962258" +"3022"," 1.8218327047572642208" +"3023"," 2.3712017276782768604" +"3024","-0.7522005882424445122" +"3025"," 0.3029273317714829550" +"3026","-1.5707783014006806432" +"3027"," 1.6027489104037708767" +"3028"," 2.1232881248736794610" +"3029","10.9138379219739061199" +"3030","-5.4198703381457162820" +"3031"," 9.4539090063571773470" +"3032","-5.0304107560611619476" +"3033","-5.3004188196477768358" +"3034","-4.8105514945518468295" +"3035","-4.6618524204743572170" +"3036"," 5.6323068003049137076" +"3037","-6.7947432119612383161" +"3038"," 0.0234637322277414379" +"3039","11.2616128039732981136" +"3040","12.5897751891996669826" +"3041","11.6588108567101720325" +"3042"," 2.9340969401943728379" +"3043"," 0.7402119908878361798" +"3044","-1.2377954943036193480" +"3045"," 0.8888085174320250470" +"3046"," 2.3024429958384300399" +"3047","-0.9066998118271646367" +"3048","-1.6467300899086658728" +"3049"," 0.1920676385902849725" +"3050","-3.5737302614364647724" +"3051","-1.8469908021817789123" +"3052","-1.0960637973843514459" +"3053","12.0699554867155995908" +"3054"," 4.9499067192096353196" +"3055","-4.4725901762161912600" +"3056","10.8882138289339831516" +"3057","-1.7132623121091425933" +"3058","-4.9191671162814500917" +"3059","-5.3983844762682116070" +"3060","-5.0707761784402354266" +"3061"," 5.8692350693027020014" +"3062"," 5.9860579134363813836" +"3063"," 8.5221983933638405517" +"3064"," 4.8083157841078589811" +"3065","-5.4456853564539029477" +"3066","10.6696534225322832157" +"3067","-4.4344501495344630371" +"3068"," 7.1203777744583156561" +"3069","-2.0291181237380824243" +"3070","-3.0664401026650938142" +"3071","11.6324786551525622968" +"3072"," 7.8209020707876240053" +"3073"," 6.2958046160047960171" +"3074"," 6.6383649456080400242" +"3075","-2.1728311913639553055" +"3076","11.7084007586836538195" +"3077"," 9.6768234487796114252" +"3078"," 9.3859336507613857492" +"3079","10.3546372635623900038" +"3080","11.7640405433798331813" +"3081","10.9580255791497744866" +"3082"," 9.1309927214338362234" +"3083","-4.9986885053786744848" +"3084","-3.6338614651424592239" +"3085","-2.3308752101425942449" +"3086"," 2.4158138136088549430" +"3087"," 5.4603980225857595698" +"3088","-1.0304022263134413606" +"3089","-6.4135592281895936750" +"3090","-4.6006903220596253590" +"3091","-3.5401384729273432939" +"3092"," 8.3025887636261224145" +"3093"," 2.3976116276064787236" +"3094"," 4.8917378492847909399" +"3095","-2.6337157866825497976" +"3096","-1.4866689872666636330" +"3097","-2.2936591772285339630" +"3098"," 7.1572777846407902302" +"3099"," 5.4911714221534433378" +"3100","-3.8096729392205070930" +"3101"," 5.7526028568736302660" +"3102","-1.3066215002709558046" +"3103"," 9.5543320806891571806" +"3104"," 4.6049462657076754013" +"3105"," 7.9503220501209099780" +"3106","-6.2678746880147366838" +"3107"," 7.2421544481627986301" +"3108"," 4.7098008053890714208" +"3109","-3.5088352391535582164" +"3110","-2.4965642112322692370" +"3111"," 6.3480898586032497022" +"3112"," 8.5816414705928689699" +"3113"," 6.7485691980271873547" +"3114"," 6.8721177087547884454" +"3115","-3.5151735935469266003" +"3116"," 4.3920571215972756818" +"3117"," 2.7906126642634312418" +"3118"," 5.4558423384997780659" +"3119"," 7.0940827323585855524" +"3120"," 2.7264038970731050426" +"3121"," 1.1910752175599221836" +"3122"," 6.0073145947344377404" +"3123"," 5.1601516471306965173" +"3124","-1.2460067603218327736" +"3125"," 1.4048672800624950607" +"3126","-3.5657702275903426781" +"3127"," 6.7877554185434370027" +"3128"," 5.2732898441458617711" +"3129","-4.2183752544678139174" +"3130"," 5.5074212205043595603" +"3131"," 5.5502194421776502864" +"3132","-0.6639457855680406251" +"3133","-7.2664429961799186231" +"3134"," 8.6633563996329563395" +"3135","-2.2327592376828651055" +"3136","-4.6700613292418706735" +"3137","-0.6996431601162639291" +"3138","-2.5178521079034674734" +"3139","-2.9241722075825022920" +"3140"," 4.3181573207429666539" +"3141"," 9.0546821917530735391" +"3142"," 0.2463408197028910673" +"3143","10.7401257003941772439" +"3144"," 5.0587578243090645103" +"3145","-4.4804915725953495809" +"3146"," 7.7891010786606278415" +"3147","-4.1254091018210194974" +"3148","-3.5078335246607732500" +"3149","-2.3632351062250633866" +"3150"," 6.1387900761206415368" +"3151"," 2.3708497568320678894" +"3152"," 8.2183155128628797570" +"3153"," 8.6435147744480289589" +"3154"," 4.7886312261011907410" +"3155","-2.1425824668818900243" +"3156"," 0.8664807907292286782" +"3157","-2.1182053252212078576" +"3158","-3.8031256046875365762" +"3159"," 3.5341483757059375392" +"3160"," 2.6714403580952739148" +"3161"," 4.1287383796528791535" +"3162","-2.4315207920844006395" +"3163"," 0.2105154625168565996" +"3164","-5.1143645311967267375" +"3165","-3.9428048123711483264" +"3166"," 6.6344789088749331896" +"3167","-6.2373548940431824406" +"3168","-1.0929539097339402431" +"3169"," 0.1224500270489956577" +"3170","-1.5544639625679421702" +"3171"," 6.6001859994288718525" +"3172","-3.7559435011868029797" +"3173","-3.6352309325167402321" +"3174"," 0.8435991807198486292" +"3175","-3.0531567214183636949" +"3176","-1.5396706754672762063" +"3177"," 6.0619468912499216984" +"3178","-1.8710364093658418128" +"3179"," 7.2775864886354382222" +"3180","-4.0546942519635269520" +"3181"," 0.7747494458538557449" +"3182"," 2.3309435390854291725" +"3183","-2.8821052959624910983" +"3184","-1.9291612228803092233" +"3185","-5.2707670843010534512" +"3186","-4.7710733760074299781" +"3187"," 0.1544370344152237728" +"3188"," 6.9174148381941416019" +"3189","-4.7494914749641861107" +"3190","13.1611238870124989120" +"3191","-3.2241985302452969009" +"3192","-3.2358384558149779764" +"3193"," 3.3720998170017297824" +"3194"," 4.7391652249677651554" +"3195"," 4.0845284607089409334" +"3196"," 4.4094432703016455122" +"3197"," 3.6084999356765692369" +"3198","-4.0793279812162568376" +"3199","-0.6787871683385844346" +"3200"," 5.2368149176618290497" +"3201","11.9313422456226376767" +"3202"," 5.2259413542409802744" +"3203","-0.3604541023591760762" +"3204","-2.2676076917302401270" +"3205","10.9868346912316727781" +"3206"," 6.0763354817638859373" +"3207","-3.4359623354321482402" +"3208","-5.9172413388471252205" +"3209"," 2.2693090467137269073" +"3210","-3.5299966401239997182" +"3211"," 4.4818173875387916638" +"3212"," 0.4862316292520991734" +"3213"," 7.5734787019418821075" +"3214"," 0.9405474921121583787" +"3215","10.8012030342017322226" +"3216","-5.9113315118115696833" +"3217"," 8.7407071653485388651" +"3218"," 3.1730594025417864223" +"3219"," 4.2332587755097970117" +"3220","-0.7957440072886025062" +"3221"," 1.9218589063185156363" +"3222","-0.5410272163797105183" +"3223"," 9.3179913875377522459" +"3224"," 0.6146579041157775869" +"3225"," 2.9645862523555903678" +"3226","-6.7466363087141889565" +"3227","-4.9489987640236359212" +"3228","-1.3989731627231172251" +"3229","10.2688920896340807332" +"3230","-1.1323978585770677618" +"3231","-2.5445377421934107787" +"3232","-0.7667469432709812516" +"3233","11.3687997166077074951" +"3234"," 4.3149046675700191145" +"3235","10.4316760672630746143" +"3236"," 3.4238684017581064722" +"3237"," 4.7333765139943846378" +"3238","-4.9959261921172730680" +"3239","-5.6122216487362788229" +"3240"," 5.4011082916094945716" +"3241","-5.5677155361856200955" +"3242"," 2.0307864242880073746" +"3243"," 6.3680747251793716757" +"3244","-5.6646401081552948398" +"3245"," 8.2640411868278746965" +"3246","-5.3685833031511673852" +"3247","-0.9953805990817694571" +"3248"," 1.0641434515754855106" +"3249","-0.8264617844597386132" +"3250","11.1368155937390724830" +"3251"," 9.0021102299342210529" +"3252","-3.2302069260194361533" +"3253","-5.7196590431498286478" +"3254"," 3.4666389349317672242" +"3255"," 5.6839655101447972285" +"3256"," 7.8822065692708607187" +"3257"," 4.0461220122667285182" +"3258"," 2.5345328528424779790" +"3259","12.3169880295204627885" +"3260"," 3.8956071678777224321" +"3261","10.3399693932632423810" +"3262"," 0.5909633648492278457" +"3263"," 3.4467834524124123519" +"3264"," 3.5030242809330607301" +"3265","-0.3567977297362839306" +"3266"," 8.2156868837319443344" +"3267","-0.8653053882912126182" +"3268","-7.5934055408704068668" +"3269","-1.0564576980809066153" +"3270"," 2.4900107564398257232" +"3271"," 9.8386851712258707181" +"3272"," 5.0772823025121667229" +"3273"," 0.0492814151988801852" +"3274","-0.7485636285638569420" +"3275"," 4.6337182333185147343" +"3276"," 2.3708783883864184006" +"3277"," 7.7949060168509873847" +"3278"," 9.2453353098707538038" +"3279"," 4.6067817275567346513" +"3280","11.5664001182111455535" +"3281"," 7.8858970440559001958" +"3282","10.6397692243202364182" +"3283"," 2.5663734771721111727" +"3284","-4.9644941765808106027" +"3285"," 6.6712566631226497549" +"3286"," 9.3642867151557016570" +"3287"," 0.1488752441279346250" +"3288"," 5.0315727530222496000" +"3289"," 9.6187608749869148994" +"3290"," 4.6062410858589553087" +"3291"," 3.3221283402547605590" +"3292"," 9.3983980516852643206" +"3293"," 5.0669905529810224110" +"3294","-3.9383122575222144768" +"3295","-0.7980029698755481959" +"3296"," 5.4748453046230531882" +"3297"," 6.5196276884115107464" +"3298","10.3582595966165786905" +"3299"," 8.1030133665786330255" +"3300"," 4.0035192351552364443" +"3301","-7.9589624320871603658" +"3302","-1.6596970047965811101" +"3303"," 3.5894395292662082397" +"3304","-2.1474610492307979470" +"3305","10.8875991584319660177" +"3306"," 8.9206933827984826735" +"3307"," 3.9109097059585957723" +"3308"," 4.7070919379101185953" +"3309"," 7.3703240575994630746" +"3310"," 8.1907852085538497278" +"3311"," 8.4407832118748338246" +"3312"," 9.8399079557262076889" +"3313"," 0.1040506051304981860" +"3314","-0.7288895410097415706" +"3315"," 5.4527562795672341878" +"3316","10.4384191203829317374" +"3317","-1.5654842629013381305" +"3318","11.1905995233246180476" +"3319","11.0170801087438121613" +"3320","12.7340544699149145202" +"3321","-0.6419038588151320113" +"3322","-1.3450932050350106195" +"3323"," 8.5516593785885994805" +"3324","-4.3649438821041384173" +"3325"," 6.1256079451711151762" +"3326"," 5.0579579850086222592" +"3327"," 2.9223711886524492698" +"3328","-3.2036066893094701236" +"3329"," 7.4029526867631254561" +"3330","-1.4254575469632750906" +"3331"," 5.2194508014571301402" +"3332","-1.5183437765618279514" +"3333"," 1.9884801170039825280" +"3334"," 0.1423351874496230351" +"3335","-1.9197616694591790321" +"3336"," 7.6963259957661041000" +"3337","-0.6940456347820440630" +"3338"," 0.8358318014974899235" +"3339"," 6.3000999221984592680" +"3340","-0.4363711665811397800" +"3341","10.3385220840192886271" +"3342","-3.8212994414309022773" +"3343"," 4.1534339207059804977" +"3344"," 0.1437648190712729757" +"3345"," 3.9514611605703788832" +"3346"," 1.9300174004385981519" +"3347"," 9.5439977922097778418" +"3348","-3.6807007579953827658" +"3349","11.1900161673929439132" +"3350","-0.3647621067473845180" +"3351","-0.2950007670946117599" +"3352"," 5.4998140671386845924" +"3353","-5.2077264268691045856" +"3354","-2.0227018174912587689" +"3355"," 0.3333195257350621832" +"3356"," 2.9455138110494796244" +"3357"," 2.0085847863911938660" +"3358"," 0.5797461733161949349" +"3359","-4.7328317221714568674" +"3360"," 9.1101192787141993534" +"3361"," 3.7615333433116493467" +"3362"," 6.9577683032957811093" +"3363","-2.2055231257529928079" +"3364","-4.6462156551345286104" +"3365"," 3.3643332181164664618" +"3366","-3.7664082307943118622" +"3367"," 0.5170738815792064180" +"3368","-5.9331697081893475243" +"3369","-6.2371683536921054269" +"3370","-4.9221842812062854833" +"3371","-2.5252725342220063709" +"3372","-6.8278476000248602418" +"3373","-7.5356448755588703037" +"3374","-4.2833570123465447566" +"3375","-6.4621053835567021650" +"3376","-6.5435491788832118587" +"3377","-1.4856880689252238703" +"3378","-5.3079196420506615794" +"3379"," 0.9830922474981040882" +"3380","-5.7763083510470183413" +"3381","-3.7515413301153870407" +"3382","-6.5587860730292240063" +"3383","-7.8708280747053436244" +"3384","-4.4056619248861688121" +"3385","-6.3600856382512995779" +"3386","-5.7921027245871012923" +"3387","-8.4319130425725123956" +"3388","-6.1573930302785537805" +"3389","-5.2199057777704425121" +"3390","-5.0915750893357092366" +"3391","-6.9185829889148120486" +"3392","-3.0607383752355064033" +"3393","-2.2445928157308587814" +"3394","-3.8352753738344795842" +"3395","-4.9197136125409315355" +"3396","-4.1734278312056778404" +"3397","-7.4053762190404697208" +"3398","-6.6788020699086736442" +"3399","-6.2309786990008726448" +"3400","-4.2582544832434816584" +"3401","-2.9725934083646343709" +"3402","-3.7224219858940514882" +"3403","-8.7185215002586318178" +"3404","-4.1542590230908382765" +"3405","-4.8101077226918835805" +"3406","-5.9350956649001966881" +"3407","-4.8901022920624379609" +"3408","-2.3558671893075535664" +"3409","-5.7279214126498061432" +"3410","-5.5483931700263724451" +"3411","-6.9355490845738998473" +"3412","-8.3712594084421851903" +"3413","-3.9539229123816550526" +"3414","-5.5958859225926076419" +"3415","-4.6763827412514453741" +"3416","-5.8137177779968123303" +"3417","-4.0505964912507135267" +"3418","-5.2208838505722479084" +"3419","-6.3224734734888494714" +"3420","-2.2189949167799061236" +"3421","-5.6939485533500793224" +"3422","-5.6819661887581487392" +"3423","-3.5332236868521897932" +"3424","-4.6272904986740375222" +"3425","-3.6840126735697529270" +"3426","-6.1807305147600954953" +"3427","-6.6403653748082138719" +"3428","-7.5320904016780794166" +"3429","-0.8895593673784489841" +"3430","-6.1649233590235024138" +"3431","-3.2534492158994972044" +"3432","-6.3604514750751990348" +"3433","-0.8898968410331079548" +"3434","-3.5577204931680670441" +"3435","-4.8652243440841029809" +"3436","-6.2392807536420100689" +"3437","-4.4794251868825565310" +"3438","-2.3687330985394008387" +"3439","-7.5823199218477546069" +"3440","-4.9345362971730200030" +"3441","-9.6017323646100116719" +"3442","-3.8974281523565617036" +"3443","-2.2833509391908690667" +"3444","-5.6895152979913428126" +"3445","-7.8022173747136509547" +"3446","-0.8735685639951016324" +"3447","-5.1736075846245839216" +"3448","-5.3842332726879247318" +"3449","-5.3237635582726152705" +"3450","-2.6580861903619346087" +"3451"," 9.2749035034982991732" +"3452","11.0918894797176630362" +"3453"," 7.1768487793850912482" +"3454"," 7.1510789433740029608" +"3455","13.3685077810031849310" +"3456"," 9.4325269565060523291" +"3457","12.1859518238672581703" +"3458"," 9.0640971546119502023" +"3459"," 5.8817607680393653169" +"3460"," 9.8771992171026639085" +"3461"," 7.9304094477329254431" +"3462","15.2348355771901005085" +"3463"," 6.5801237359732303034" +"3464"," 9.2723024117353016749" +"3465"," 7.3047744048432035058" +"3466"," 7.1947551191101393186" +"3467"," 9.8653834396888910874" +"3468"," 6.1996580270104635346" +"3469"," 5.6419850960550759211" +"3470","10.9938919478688905684" +"3471"," 8.9327089389147182885" +"3472"," 9.5240034000609785636" +"3473"," 9.6683961961068902724" +"3474","10.5638119402739931729" +"3475","10.1660476466091775904" +"3476","11.5215798300010554556" +"3477","10.3467150093152877588" +"3478"," 7.9101680169820642874" +"3479","12.4780519007472747717" +"3480"," 9.6565638838149681078" +"3481","10.4155000893379838800" +"3482","12.4158591163978933025" +"3483","10.7067122628925712746" +"3484","10.2041678936856854421" +"3485","11.4382243471240609978" +"3486"," 8.4693682716123817045" +"3487","14.1527177946131281772" +"3488","11.4219456828693797235" +"3489","11.6650543298746285359" +"3490"," 9.7659919554808922726" +"3491","10.0514146463334839154" +"3492"," 6.1074212720124281262" +"3493"," 9.6282139073397861040" +"3494"," 8.1548105105258503755" +"3495"," 7.3297795240843797160" +"3496"," 9.4893320248380543802" +"3497"," 8.7090024983381777446" +"3498"," 5.4188809048594173134" +"3499"," 7.6486457972040238218" +"3500","11.6126241558288416655" +"3501","10.7653357392103448120" +"3502"," 9.3169976201178741348" +"3503","13.9843048844241106821" +"3504","10.1337746253767111426" +"3505","10.9287324794747693346" +"3506"," 8.6193629662734014829" +"3507","11.4658755307600248585" +"3508","10.6792972287699434730" +"3509"," 9.3153158909994928649" +"3510"," 9.9671528862291651762" +"3511"," 7.6396025809419771946" +"3512","13.8020208808104172249" +"3513"," 9.4803030754800747815" +"3514","11.9430558241339817016" +"3515"," 8.6791548424171907072" +"3516","13.3444405498047320435" +"3517","13.2675118242867178253" +"3518","10.0905873601636546510" +"3519"," 9.3007431785334251373" +"3520","12.9499327825006993464" +"3521","13.2489284452867881470" +"3522","10.4581746421939012492" +"3523","11.6207528129076962387" +"3524","10.3358994283678811144" +"3525","10.3606097852947769411" +"3526","13.5437369377267593507" +"3527"," 8.8289895312318744658" +"3528"," 8.7560631630596859054" +"3529","13.4731417779895821241" +"3530"," 7.4231646818519108066" +"3531","10.8696117365940576605" +"3532","10.6149380307337555251" +"3533","13.1157918382181470918" +"3534"," 9.8429675317525280320" +"3535","13.2275770602244087115" +"3536"," 9.5398981056737834905" +"3537","10.7507847648499303972" +"3538","14.0431967401726076616" +"3539","11.7846776354593476555" +"3540"," 8.5856883829067740521" +"3541","11.7693171833614051991" +"3542","12.1386141277830237328" +"3543"," 7.0046364395040354722" +"3544","12.9766987172328214228" +"3545"," 6.8595688562536736299" +"3546","11.2108636995319024265" +"3547","11.2477673383934497764" +"3548","10.3972646922006717318" +"3549","12.0460763477247994047" +"3550"," 9.4586642738347421755" +"3551","11.3841820611871131774" +"3552"," 9.4400360160990892666" +"3553","11.3775355048872093278" +"3554","11.2932221791461167015" +"3555"," 9.5455681268803953543" +"3556"," 9.0797376194080428036" +"3557"," 8.6251008994540399044" +"3558"," 9.7276184763504502939" +"3559"," 8.8345508564458636869" +"3560"," 7.3458876549004994416" +"3561","12.1885912318745379679" +"3562"," 8.0434091112825640835" +"3563","11.4147114060054644114" +"3564"," 8.4914302129908705297" +"3565","11.3719203166104350089" +"3566"," 8.3378948002756079205" +"3567"," 7.2378565328773039056" +"3568"," 9.8673619370620038183" +"3569","10.6656650119955198619" +"3570","11.2645666679798868159" +"3571"," 8.2629939090305555283" +"3572"," 8.1511158932884750783" +"3573"," 9.5618513545362837647" +"3574"," 9.9284114537743946016" +"3575"," 9.3321891532623713061" +"3576"," 7.5049885573448449350" +"3577","13.5535380404808130095" +"3578","10.5581514077767906201" +"3579","12.4462907566586391539" +"3580","13.6013469168822016542" +"3581","15.4092637124306737206" +"3582","10.2746437994333064125" +"3583","10.8704926469161176072" +"3584","10.5762959152128228624" +"3585"," 9.6511106152891397159" +"3586","10.0784902180216739964" +"3587"," 9.3800697042270755333" +"3588","12.4777886422119212995" +"3589","13.1907274207529336962" +"3590"," 8.7818471070445838222" +"3591"," 8.9612240293822420512" +"3592"," 9.7265362072602492560" +"3593","11.1162614440796740922" +"3594","10.6962893365082400976" +"3595"," 8.0827621903666084791" +"3596"," 9.5351112267791720001" +"3597"," 8.6617690111145613230" +"3598"," 7.6772969323025606059" +"3599","13.3008273219004564680" +"3600"," 7.1142333938536674864" +"3601"," 9.8994099316755814755" +"3602","11.8699250617106351058" +"3603"," 9.9075378345722544537" +"3604"," 9.3226963105087392591" +"3605"," 7.8595577632665438728" +"3606"," 7.8467613686165202935" +"3607","10.8515314439549541703" +"3608"," 7.5031742719382892304" +"3609"," 7.1905225877245806387" +"3610","10.7270075152802633056" +"3611","12.9421316157312311645" +"3612"," 6.9079820493737962295" +"3613","-6.3353145263974024459" +"3614","-3.1932414902091119657" +"3615","-6.2385422893086737162" +"3616","-2.3107558248322641603" +"3617","-8.3974820407022097157" +"3618","-0.3766844032914624663" +"3619","-6.1709913537885725532" +"3620","-5.8622924878348641187" +"3621","-2.3005215113763428647" +"3622","-6.4172142111477219473" +"3623","-4.1112751445540869355" +"3624","-6.4039915384927965647" +"3625","-3.4029183503944344658" +"3626","-5.3599213562633893915" +"3627","-2.0569899740228172469" +"3628","-3.8373782510969061121" +"3629","-5.2206998553625005854" +"3630","-3.6240017525606584847" +"3631","-5.9241134342022903070" +"3632","-5.4302967540542503855" +"3633","-5.4136777912346616404" +"3634","-7.6471882398583748142" +"3635","-5.3022505267497237469" +"3636","-6.1016685576364446675" +"3637","-7.3310219949137982454" +"3638","-5.8360781518532984791" +"3639","-6.4302972911514144627" +"3640","-4.5008334394927178579" +"3641","-7.3172492986049686436" +"3642","-5.4325502519496922105" +"3643","-4.3319546790828429295" +"3644","-2.4699622808351895387" +"3645","-7.8416420079423589939" +"3646","-7.5940763179130987837" +"3647","-8.5732567501787340092" +"3648","-6.7453166755311944058" +"3649","-7.8263064664894210765" +"3650","-5.6169714091161528913" +"3651","-7.0658375038425278447" +"3652","-7.6892796179826063963" +"3653","-4.6221389655658011719" +"3654","-4.3240816303144367083" +"3655","-4.5903171958295940769" +"3656","-1.9676964013947833010" +"3657","-0.9926103600689910600" +"3658","-3.8595207935783504283" +"3659","-1.9491095204914237193" +"3660","-3.0106534281656704977" +"3661","-3.4489218017691429807" +"3662","-0.9235716281788404203" +"3663","-4.7373359693259127212" +"3664","-3.8911662956284724935" +"3665","-4.3725308459729825827" +"3666","-6.2933298790186782412" +"3667","-4.8783610108714583475" +"3668","-3.4794055159746539729" +"3669","-6.9602067233166957649" +"3670","-6.1575562674166315347" +"3671","-5.3540241795681788872" +"3672","-6.0430921711777454419" +"3673","-3.2187026119868140661" +"3674","-7.2033524990147226319" +"3675","-5.1298167730387129737" +"3676","-4.5608605767239573936" +"3677","-4.0908079321515442572" +"3678","-1.4756102258750605216" +"3679","-4.8376886668190062224" +"3680","-8.6952101801993837427" +"3681","-3.6971584667474828301" +"3682","-6.9423501586799067908" +"3683","-2.6296902779070445710" +"3684","-6.6313048050605942763" +"3685","-6.8183381583226605471" +"3686","-6.4559921582907273674" +"3687","-7.1146238845327856026" +"3688","-7.1315049631405820207" +"3689","-2.7350207915923476776" +"3690","-0.2953660117769710824" +"3691","-6.2183521723334562736" diff --git a/test/data/models/srpde/2D_test2/pvalues.csv b/test/data/models/srpde/2D_test2/pvalues.csv new file mode 100644 index 00000000..1e56bf44 --- /dev/null +++ b/test/data/models/srpde/2D_test2/pvalues.csv @@ -0,0 +1,2 @@ +",""x""" +"wald,""2.458211564814289e-05, 6.521694240242158e-29""" diff --git a/test/data/models/srpde/3D_test1/X.csv b/test/data/models/srpde/3D_test1/X.csv new file mode 100644 index 00000000..13e04eb7 --- /dev/null +++ b/test/data/models/srpde/3D_test1/X.csv @@ -0,0 +1,588 @@ +"","cov1","cov2" +"1"," 0.1402057529525426727","-0.0319495619519348101" +"2"," 1.1989599094979097593","-0.1627123324446172192" +"3","-2.3299685051929466262"," 0.0275065302028412451" +"4"," 0.5709450649891433249"," 0.2753463881982737282" +"5"," 2.7482760560618055834","-0.0128796438829752377" +"6"," 1.7080399838880184760","-0.1628692114818505177" +"7"," 5.9526803325278763168"," 0.0824931496898422822" +"8"," 0.7698786814244464871"," 0.2980708532341562744" +"9"," 3.6841512387515171767","-0.3963749592660982257" +"10"," 2.0803492752231398377","-0.2188795223355479158" +"11"," 3.4680979471470982922","-0.0042679870424889967" +"12"," 2.3834326735379329776"," 0.2087200486914539688" +"13"," 0.4907250862918659529"," 0.4457930318361413846" +"14"," 0.1308606138730861179","-0.5578192962160016810" +"15"," 0.3577484900260882172","-0.4226632929353005830" +"16"," 2.5829377127682402460","-0.2559071653047541584" +"17"," 3.8765427747113090362","-0.0431555932272463250" +"18"," 0.2843624790295801175"," 0.1656469618774498997" +"19"," 1.6618621688860890639"," 0.3707839517044343447" +"20"," 4.3282041271969982077"," 0.5678528643896522121" +"21"," 1.7987308543320110754","-0.5823601970276469642" +"22"," 0.4848410742852681254","-0.4051884954955342621" +"23"," 0.0435912787913287358","-0.2056041435631877912" +"24"," 2.5969948679241761091"," 0.0548205042346643148" +"25"," 0.1152284462349988381"," 0.2670619944094594356" +"26"," 1.3690705433577672334"," 0.4719850037750771277" +"27"," 4.5151667841637808110"," 0.6044242765274573381" +"28","-0.6871926836928590188","-0.5703796579279433177" +"29","-1.9501447448007627194","-0.4142275914768878131" +"30","-0.3071564574059157948","-0.2177104147802056966" +"31"," 0.8456276923494197018","-0.0529672018830710037" +"32"," 1.1678234549055792613"," 0.1809575619491468335" +"33"," 2.8316142727606585794"," 0.3832939576313008079" +"34"," 1.9797932363649344278"," 0.5521318498398545271" +"35"," 0.9110583524447124493","-0.4321594374384007398" +"36","-3.1537750742968553297","-0.2255835652533447200" +"37"," 1.0463968071758051881","-0.0045829839565463010" +"38","-0.0708199038456043262"," 0.2019651444253302564" +"39"," 0.8173435071551262698"," 0.3994483265573693376" +"40"," 0.8600518598378505963","-0.2738338523593397134" +"41","-0.9090033646940265388","-0.0640431399229661885" +"42","-1.5234332565292794115"," 0.1970715590583692334" +"43"," 1.6613008101582735776","-0.2863623272800976949" +"44"," 4.7977037464154399515","-0.0649522430581653543" +"45"," 1.9673982913521625981"," 0.2011306286337000704" +"46"," 1.1457813909867180513","-0.4649454540480283393" +"47"," 2.0496887474885370217","-0.2411154039448954733" +"48"," 3.8912229525014052633"," 0.0005549999715076880" +"49"," 2.1339664121775583361"," 0.2186121581041913231" +"50"," 1.4448176148590614609"," 0.4276297010027325096" +"51","-0.9857752896472606885","-0.6091743111300945701" +"52"," 3.1645300741282222923","-0.4014614732050563739" +"53"," 1.8164415863519061123","-0.2042808412073095214" +"54"," 2.2870607366607140776","-0.0023359978754490703" +"55"," 0.0564315914275028696"," 0.1948279149101998786" +"56"," 2.4270240233432431864"," 0.3827914481747483610" +"57","-0.8721384974348838082"," 0.5781593713693479186" +"58","-1.8790236356447160837","-0.6948828635176040880" +"59"," 1.8500189099747794685","-0.5135663597902904165" +"60","-0.4078248149237420073","-0.3658649316270883856" +"61"," 0.9667547696337850383","-0.2169412487002216894" +"62"," 2.1646464630623221126","-0.0058449667186024979" +"63"," 1.3080064489556846308"," 0.1614610999104255928" +"64","-1.3163085380135597369"," 0.3805786928821001114" +"65"," 0.7759771844841352184"," 0.5468900271553183146" +"66"," 1.0784362004195156004"," 0.6854852769929533629" +"67","-1.3641391630823225256","-0.6990313390135790561" +"68"," 1.7806138221372886932","-0.5757768651069614663" +"69","-0.4471772067297665743","-0.4272120286308908610" +"70","-0.5262372916374731258","-0.2825534608986167151" +"71","-3.0937911632494587977","-0.0532937400199570005" +"72","-0.9709259055112291481"," 0.1337222299115466695" +"73"," 3.5897707612812470579"," 0.3345192083636120417" +"74"," 4.7799383674041164838"," 0.5199897920816063390" +"75","-1.9928378073003236715"," 0.7014664432177646347" +"76"," 0.2940909286990368576","-0.6801219716713412522" +"77"," 0.3387761434353407930","-0.5145845029574661611" +"78","-1.1689286258089617299","-0.3050910156084894465" +"79","-3.0228639124623688517","-0.1763174237286595780" +"80"," 0.3499132617418082569"," 0.0313988384250221894" +"81"," 1.7252145294109935136"," 0.1768892916204345689" +"82","-3.1583017683896938976"," 0.3983736147716799847" +"83"," 1.4729924038421187138"," 0.5792538202354665655" +"84"," 2.1578870482189493885"," 0.7051566141859414438" +"85"," 0.8212409261661096638","-0.5767959729464691154" +"86","-1.5668055426143756570","-0.3519906403708822906" +"87"," 3.2014521895063099421","-0.1585115888418846541" +"88"," 0.5458884092080580341"," 0.0480305136284656445" +"89","-1.2441764392946885742"," 0.2403039847488266934" +"90"," 3.5113833783314971626"," 0.4058502940553709859" +"91"," 2.5189651504213674826"," 0.5811263112800081343" +"92"," 3.0384354036963427959","-0.4499979111627419037" +"93"," 0.2880829257038715063","-0.2497760814886293146" +"94"," 1.1777487563125956793","-0.0109867789535717086" +"95"," 0.4906931027221727026"," 0.2267115649372252739" +"96","-1.2541068665280437067"," 0.4253639569015822963" +"97"," 1.4093362405178004870","-0.1852861043577709865" +"98"," 1.4031558391922043239"," 0.0774114755791246029" +"99","-0.2243983956467565655"," 0.2809722313610640287" +"100","-1.5445111910035715930","-0.4284467005768785031" +"101"," 1.6724945849463579428","-0.2183681983180175146" +"102"," 2.4071887347019735870"," 0.0057299686446319739" +"103"," 0.9946325145654657529"," 0.2105357881406689780" +"104"," 2.1634174241123922400"," 0.4075148173846114275" +"105"," 1.8080078350253745434","-0.5972900845039280648" +"106"," 5.3427195117276111702","-0.3799766009815749856" +"107","-0.8969268111984152192","-0.1850856328415442786" +"108","-0.0483502911462541096"," 0.0379658733628955788" +"109"," 0.6451458864501378176"," 0.2273007703857172490" +"110"," 3.3505221507103564171"," 0.4189721232111086047" +"111"," 0.1927283727471422736"," 0.5842389466517131646" +"112","-1.0746040367345432998","-0.7169644284631754294" +"113"," 3.3242574956738146774","-0.5432455437337548876" +"114","-0.2337859380704767620","-0.3304308219631789112" +"115"," 0.6969934537149284903","-0.1633378507326474216" +"116"," 3.9240189583510090010"," 0.0112237643383098461" +"117","-0.7421111738117216472"," 0.1673587287750597230" +"118"," 2.2455046952336674693"," 0.3581372108116119279" +"119"," 0.4604904627114604354"," 0.5620820510635873291" +"120"," 1.8009270204228235990"," 0.7048502381113956883" +"121"," 1.5850762798233004602","-0.7842876025325161704" +"122"," 1.5403175716886445823","-0.6224686479284257112" +"123","-2.0970988167588795470","-0.3945076670646264216" +"124","-0.1824052153377180296","-0.1494430763271208940" +"125","-0.1487787336597243826"," 0.0769528477596349708" +"126"," 3.3966896813004274769"," 0.2695445065783868555" +"127"," 0.1665617050979882885"," 0.4636975498247695726" +"128"," 5.6094859479976717509"," 0.6635515058210044170" +"129","-1.9045552126946247995"," 0.7749013445703217817" +"130"," 1.8108267884549027471","-0.7671164281357929493" +"131"," 1.2663678571481609136","-0.6659078054224797372" +"132"," 1.0779049862395682080","-0.4740669204502734879" +"133"," 3.3773958891741640009","-0.2449741208851611840" +"134","-0.1415725774086402655","-0.0564988981444144445" +"135"," 1.3105501773470786819"," 0.1897504768457888291" +"136"," 1.2151380884976323848"," 0.3856147407299347352" +"137","-1.4297867233879517634"," 0.6066207603747140187" +"138"," 2.5646122109327644800"," 0.7746661563807758499" +"139"," 1.3896870135291865545","-0.7762446599496801714" +"140"," 1.1035138619074698063","-0.6197240146910886205" +"141","-2.5515739443195273317","-0.4091141150702491958" +"142","-1.5162919301711643705","-0.1931857208218758781" +"143"," 2.2348139046736061886"," 0.0377680153707868824" +"144"," 1.7562662772616779439"," 0.2583946041092083923" +"145"," 0.0935702674709978366"," 0.4639978749904018485" +"146"," 3.7943717755058816721"," 0.6741645779768026259" +"147","-2.3791074670178766759"," 0.7804148346319251806" +"148","-3.7627742951754044043","-0.7040190989945782629" +"149"," 1.2347385090167175559","-0.5302259171465795173" +"150","-1.1427292630522045691","-0.3742556873711417875" +"151"," 4.6346119503434293208","-0.1516219614033380569" +"152"," 1.3817013201573871140"," 0.0109607805191295170" +"153"," 0.0388446262031509892"," 0.1735960562770224591" +"154"," 4.5766106979224447926"," 0.3861138432747642235" +"155"," 0.6845942051177142940"," 0.5598427420165074109" +"156"," 3.7111150531243710660"," 0.7070543378007263513" +"157"," 5.1938994175607327008","-0.5915307098256518126" +"158"," 4.5559781131076224625","-0.3735294768116474429" +"159","-0.8131130221399360813","-0.1514351438091469937" +"160"," 0.5804210328413041964"," 0.0690759492183636858" +"161"," 0.4982782890301290513"," 0.2063732872731970924" +"162","-0.1463696148782889228"," 0.3896826707723007321" +"163"," 2.9217890254327105737"," 0.5788755295773340137" +"164"," 0.4692688253897571160","-0.3952031556974764381" +"165"," 2.3017996218910616868","-0.2364455164295559131" +"166","-0.4409622442057603564","-0.0298305740393616826" +"167","-1.0882372417232106798"," 0.1964087710442060375" +"168"," 0.8733833053533330837"," 0.4332322698829275676" +"169"," 1.0736865171290810306","-0.0076059266641286261" +"170","-0.2076614656403046322","-0.5802095892146845735" +"171"," 0.1385799722367306863","-0.4363166147155467800" +"172"," 3.9750345958884225617","-0.2462788854451538612" +"173"," 1.8716623799377851700","-0.0925812305837705324" +"174"," 4.6205403620377794027"," 0.1455125333238435070" +"175"," 2.3115901329461312486"," 0.3739069865162011896" +"176","-0.0892248049107891017"," 0.5529728292622638763" +"177","-0.5469682076977091523","-0.7030710913488357194" +"178"," 2.9619106661329563934","-0.5191028810824135364" +"179"," 0.3860676690000921507","-0.3182955649766106565" +"180"," 5.3519980570881564574","-0.1713334757861583457" +"181"," 4.1976459343148961878"," 0.0422104553861103737" +"182"," 3.3128979646665919212"," 0.1772721439908273577" +"183","-1.0665638888033401876"," 0.4033857560444747969" +"184"," 1.3700289926967978982"," 0.5832638159128575861" +"185"," 3.4572410216700766306"," 0.7019779827450873810" +"186"," 0.6134791077404329052","-0.7791947173408992899" +"187"," 4.8762216983390676006","-0.6759035395035373206" +"188","-1.2110341709132548260","-0.3927684171074684594" +"189","-0.8680756103622724318","-0.1852477795167472296" +"190"," 4.6338741855319343088"," 0.0410084973162520017" +"191"," 4.0413410472290332009"," 0.2369546257934663780" +"192","-0.9777631578821137648"," 0.4609150235839013510" +"193"," 2.5159097340382281516"," 0.6712352595111321651" +"194"," 2.2966934108832810502"," 0.7778604190224893689" +"195"," 1.3454799012601890151","-0.8244416990944789525" +"196"," 1.6913624125356638839","-0.5387696593634843101" +"197","-3.2493741799778748103","-0.4224113288791260801" +"198"," 2.1612858553798268701","-0.2528646614414829519" +"199","-0.4104827275974538559","-0.0173631274475667778" +"200","-1.8009472827040693410"," 0.2116305523524405208" +"201"," 1.5549822982397405458"," 0.3775786633271540627" +"202","-1.0503733369320915614"," 0.5607232261578019017" +"203"," 2.3789238679112445496"," 0.8223022255182508289" +"204"," 2.5619835090643143793","-0.8211168214711821456" +"205","-0.7423272791801052151","-0.7097054341970699953" +"206"," 0.7545268779147655813","-0.5647250041331763892" +"207"," 3.4973617842609772133","-0.4008944691397647309" +"208"," 1.1381232427497172122","-0.2047154581292943976" +"209"," 0.8896137129227543738","-0.0254992358770831755" +"210","-0.8724531138345228420"," 0.1915390594355352860" +"211"," 0.6296764571483526307"," 0.3558290237803299338" +"212"," 0.9173958997722495567"," 0.5331512445076909135" +"213","-1.0261517786576308531"," 0.7037640986396872522" +"214"," 1.5072093940183848293"," 0.8198070561887628172" +"215"," 0.0922761810686645312","-0.8252569370731629439" +"216"," 1.0331778558296909054","-0.7039011992426593700" +"217"," 1.1452286051199653816","-0.5126161840940698378" +"218"," 0.8727557017108009685","-0.3363590548150066084" +"219"," 4.4673763275977655951","-0.1096967960681590470" +"220","-2.0088552636081744573"," 0.1410530311907012280" +"221","-0.6054029618196909990"," 0.3598732145816258554" +"222","-1.6175929358247063128"," 0.5506685918216678299" +"223"," 1.4098603770139039870"," 0.8242696131460973685" +"224","-1.6798331346751442794","-0.7742543191152886362" +"225","-0.3727950017128287552","-0.6078149467492949265" +"226","-1.0819499859486083615","-0.4035998620225791367" +"227"," 5.3149932476094257083","-0.1959959538451541694" +"228","-0.2955740102379482703"," 0.0230969459230932726" +"229","-0.9152773740614787990"," 0.2074074181099999636" +"230","-0.4835161645626817606"," 0.4405937735567430624" +"231"," 4.4485203713409209314"," 0.6495025319877321124" +"232","-1.6723019489202313181"," 0.7779854625993503081" +"233","-1.5064829471372922498","-0.6971790614153590138" +"234"," 0.7137958086292972570","-0.5201999027743540172" +"235","-0.2927913950880478566","-0.3282525282749494955" +"236","-1.9198155326420329736","-0.1791200862877798394" +"237","-1.1816876446037416493"," 0.0208884806613235802" +"238"," 8.9908247568543515627"," 0.2393681206690339569" +"239"," 2.8524940156159201976"," 0.3767664359497607807" +"240","-0.0442206061719780941"," 0.5273494923992246841" +"241"," 2.8645612148751737891"," 0.6865373730427795085" +"242"," 1.8858674631945337996","-0.5412012546618578668" +"243"," 2.1764620873032534121","-0.4022764436600040350" +"244"," 2.2146444041780291023","-0.1913358879400991197" +"245"," 1.6597218749509914382","-0.0188768787332179513" +"246"," 1.8127809337483606900"," 0.1622989019557419255" +"247"," 0.9858065220190993516"," 0.3640224244924470387" +"248"," 2.3934255338830761062"," 0.5664321208518502404" +"249","-0.3458084652431692163","-0.0065169538691995602" +"250"," 1.2948312656556286715","-0.1154638894578201153" +"251"," 1.1032680837379444938"," 0.0372983465456255686" +"252"," 1.2618288083150730472"," 0.2920609162183779861" +"253"," 1.9456723048024096023","-0.5471779931235077887" +"254"," 1.5438049009531207290","-0.3625596938652764778" +"255","-0.7448092143976539070","-0.2141123353388028339" +"256"," 2.3753885995357224559"," 0.0285191326214055962" +"257"," 0.5634938391597881235"," 0.1864170513703853060" +"258"," 1.3265707354568523346"," 0.4824047905930827218" +"259"," 0.4468186906020578109"," 0.6210330152187095720" +"260"," 2.4422412227399434848","-0.6772400625090383430" +"261"," 1.8883267740405489388","-0.5700305194237734741" +"262"," 0.7544303704078119122","-0.4233782215778963964" +"263","-4.1871506688193607104","-0.2568631076415580083" +"264"," 1.1678124176153605873","-0.0783855067255514182" +"265"," 1.2844668075172274158"," 0.1711374149893097885" +"266"," 2.6990362409709196534"," 0.3375227805920229529" +"267"," 0.7649164039609682719"," 0.5171117072338184961" +"268","-1.0688347959708885959"," 0.7080577907045659813" +"269"," 3.1505584484827551250","-0.7622272759025592315" +"270"," 2.9202037134030032206","-0.6052190446631117160" +"271","-1.7733913427331389201","-0.4109008835455052466" +"272"," 3.2555278421370514863","-0.2277827856979350862" +"273"," 1.6131992884880768102","-0.0430686741164166831" +"274"," 1.5569911206017068572"," 0.2073858964574791242" +"275"," 2.7037807250350205379"," 0.3667135485359954150" +"276"," 2.5782003175986178967"," 0.6141362207259614125" +"277","-1.4055976853963421114"," 0.7757836069628896158" +"278"," 1.1133202434197935204","-0.8178058565136407942" +"279"," 2.3260322512241788928","-0.7083331371012425715" +"280"," 2.1839457527670873560","-0.5614367565924047732" +"281"," 2.1145052343463102140","-0.3950469890511359994" +"282"," 0.8410975778955772642","-0.1719698876503480689" +"283"," 0.9998826017011698264"," 0.0515641223306162744" +"284"," 1.4567365962114755540"," 0.2091307799507819976" +"285"," 0.8313626238451865547"," 0.3537824406015213641" +"286"," 0.1889586431949311640"," 0.5213216678778529456" +"287"," 0.3275484188906869765"," 0.7016346214677150472" +"288"," 2.7578565439670690296"," 0.8200034234265699551" +"289","-2.5349460093375015823","-0.8412883145654852513" +"290","-1.8351084735023275307","-0.7236711635603287895" +"291"," 1.1431236454346056508","-0.5773178467408530690" +"292"," 0.6867601566980117145","-0.4142476151900459369" +"293"," 0.6736611653716962911","-0.2342169153759467159" +"294","-0.0148964283392074570","-0.0174671116754316728" +"295"," 2.9127554108866817728"," 0.1862588711717697298" +"296"," 2.2159552534018134295"," 0.4226252285174568746" +"297"," 0.4285689557001365335"," 0.5878406437274128482" +"298"," 0.5628052233536373627"," 0.7470817057268650530" +"299"," 6.3066535064423243639"," 0.8413985767444003283" +"300"," 1.1760422586150343083","-0.8254822096025727918" +"301","-1.4551802527447703639","-0.6993330451778728696" +"302"," 0.0019075894743659783","-0.5716291389664454048" +"303"," 1.0911348878507296511","-0.3871744065306659266" +"304"," 1.8743305268784493656","-0.1968274360639972465" +"305"," 1.7917737783630298676","-0.0076499253840308359" +"306"," 2.8432431947642662351"," 0.2159395692281658452" +"307"," 4.4459013305247268022"," 0.3836236678268315492" +"308"," 4.5561908860750293115"," 0.5114161951058252553" +"309","-0.7984839135743524441"," 0.6946037915178113753" +"310","-0.9571497544727853857"," 0.8197721236330661743" +"311","-0.4807752670736027412","-0.7849794775097139743" +"312"," 0.5727192655357431494","-0.6530894812218539514" +"313","-0.5636909546786295078","-0.4300318001330973861" +"314"," 0.9800471129471074461","-0.2182969594853240713" +"315"," 1.6619168661016656685","-0.0470376372703672913" +"316"," 0.4935665460137939053"," 0.1539433831286038667" +"317"," 0.1642195530627014177"," 0.3647813865118142429" +"318"," 0.0226528655145328273"," 0.6042354505187100822" +"319"," 1.5784565470956368749"," 0.7723268056470660170" +"320"," 4.5903161069898441582","-0.7027325187975608234" +"321","-1.3635207571502769852","-0.5566858781815192669" +"322"," 4.3727067247497970470","-0.4206140071425521487" +"323","-1.5879811077165246758","-0.2719001287085209828" +"324","-1.3150296659432263446","-0.0141015326023093083" +"325"," 0.9159260791182797234"," 0.1882794796405055093" +"326"," 0.9333944923985871833"," 0.3820365474860626942" +"327","-0.3998336013324894633"," 0.5407319520823353765" +"328"," 0.5643623986585495356"," 0.6969754345448077038" +"329"," 3.4239436347505574076","-0.5929560972125486051" +"330"," 0.5928073922454534239","-0.4470448905277257801" +"331","-6.0592122647520705314","-0.2023167333859396400" +"332"," 0.4358672237830665264"," 0.0195867474049130595" +"333","-0.5268583088942211390"," 0.2078456553654015881" +"334","-1.3105674438887597866"," 0.4596410669227107282" +"335"," 3.3724133977579091592"," 0.5895357742356777120" +"336","-0.4050341711355325280","-0.2657212584982381887" +"337"," 4.6855353869276603618","-0.0109667801585052321" +"338"," 0.5984471700198701338"," 0.2712514596285686697" +"339","-0.1659899997269704830","-0.0061929604131307379" +"340"," 0.9301367160019463620","-0.5834660562424928143" +"341"," 2.9017466885033389445","-0.4230919192886842817" +"342","-1.7459003087206088622","-0.2042436423915189037" +"343","-1.5164344827299136576","-0.0663392447036762201" +"344"," 3.2974901975186270420"," 0.1882195702453012820" +"345"," 4.0169303862299159391"," 0.3935067592400689485" +"346"," 4.3818436708408254887"," 0.5692965824337301584" +"347"," 0.9632910054767903629","-0.6986486652884558168" +"348","-0.7251818136963648076","-0.5049456524119224632" +"349"," 0.0009102662422746377","-0.3024233181841649021" +"350"," 1.4669262632841426619","-0.1810854142373820586" +"351"," 2.4180880241024738098"," 0.0287860229985834291" +"352"," 1.4957229976694177420"," 0.2313002855675950487" +"353"," 1.2694832857767004430"," 0.3872371020772080175" +"354"," 1.0885202734745169639"," 0.5664823904102802565" +"355"," 1.7364736528851256736"," 0.6929877272463178528" +"356"," 1.0085289572069044972","-0.7808254633653332055" +"357","-2.0699257866587976729","-0.6162451310510465019" +"358"," 1.2036440810311104244","-0.4015072664987927031" +"359"," 2.5360316675556369148","-0.2042935670502583623" +"360"," 2.3111907495132451018"," 0.0373972774759674317" +"361","-0.4782794205708882362"," 0.2288916956394652369" +"362"," 4.1405956564712660395"," 0.4282054329040133611" +"363"," 0.2187934525926510387"," 0.6818209294186589053" +"364","-0.4613492752548224995"," 0.7754143397961759110" +"365"," 0.2886990190138805090","-0.8226457823117919732" +"366"," 3.9451222804571832725","-0.5465073676243321632" +"367"," 0.7536728490185748974","-0.4225191879940543571" +"368"," 5.6906028855703567615","-0.2182520686644802144" +"369"," 2.5746580044612095151","-0.0147944602546556860" +"370","-0.7326470633194677173"," 0.2117908348626576509" +"371"," 3.7968683058026115873"," 0.4280011899695244093" +"372"," 1.3876427825356172363"," 0.5585900904907546982" +"373"," 0.2320858605626920923"," 0.8257716526033977988" +"374"," 1.8827647509064120435","-0.8260242437835159102" +"375"," 0.2881407217714145874","-0.7078798172924910537" +"376","-0.4768622530100805612","-0.5622722649343101509" +"377"," 2.0934154075774169534","-0.3666968024663130321" +"378","-0.9453926783689985403","-0.1573671357368562340" +"379"," 0.8941067921926644235"," 0.0093648631104832625" +"380"," 2.1870703648742333414"," 0.1996434186667962185" +"381"," 6.9522835313318305239"," 0.3700538639926122531" +"382"," 1.9448628549399862298"," 0.5230154121258868694" +"383"," 0.6204329107829779089"," 0.6983302142374936405" +"384","-0.4817729014846869884"," 0.8208861673612546372" +"385"," 2.5921397426333396830","-0.7900367865779313048" +"386","-1.1313273855118741729","-0.5089021831133262452" +"387","-1.7531860236756613425","-0.3508568822846447888" +"388","-3.6824541117304407933","-0.1537111801574671532" +"389"," 0.6928658012439730118"," 0.0205875453942318022" +"390"," 1.8227724697052645197"," 0.2217697101497259904" +"391"," 0.0660638137770678258"," 0.4357001540530114347" +"392","-1.4961937756489400719"," 0.6062884010027780324" +"393","-1.8842001307105475938"," 0.8234778311751452806" +"394"," 2.1583587705716524852","-0.7693646683915784656" +"395"," 1.9646816174792338661","-0.6155502684613062270" +"396"," 0.7781615690965499876","-0.3975011554618232967" +"397"," 2.5793201279633133360","-0.1983086528502585044" +"398","-0.6559157961209272081"," 0.0497953983777552345" +"399"," 2.2942877522584392835"," 0.2953711705737505633" +"400"," 0.0772225712293238553"," 0.4784897633713873777" +"401"," 5.5262874173691187707"," 0.6804063628714388523" +"402","-2.8196886724435961113"," 0.7757526870783542083" +"403","-2.1788094846241152780","-0.6795213355802568467" +"404","-0.9394560682637302929","-0.5054850232162471091" +"405"," 2.0126870285266962313","-0.3148199952571668070" +"406"," 3.8751398803052024000","-0.1827678610250696167" +"407","-2.9925069213177177829"," 0.0093688629350031655" +"408"," 1.6876790561471057828"," 0.1824827380758560214" +"409","-2.7731026516304719820"," 0.3729589209475682177" +"410"," 2.6327290672364180857"," 0.5659326071858001850" +"411"," 1.2109733521536862888"," 0.7027937012556486618" +"412"," 1.9817074248816117787","-0.5729264732728426290" +"413"," 3.1565588947960847577","-0.3909117903287195328" +"414"," 1.0523124665735479333","-0.1764985380814081128" +"415"," 2.8719760863193730671"," 0.0047449821943877741" +"416"," 1.0469280669522049720"," 0.1823863827121153525" +"417"," 2.7828895685344496869"," 0.3977855928761551141" +"418"," 1.9078497991221170516"," 0.5616502379735632822" +"419"," 3.5714530649753806202","-0.0044909849034580956" +"420","-0.9336084605349990184","-0.4440395020106908675" +"421"," 0.1442557962000700078","-0.2444098131900591941" +"422"," 0.8889615071562537718","-0.0371114760139241578" +"423","-0.0731770811858145631"," 0.2082721140692934125" +"424"," 1.2260062068590904527"," 0.4168426242906689283" +"425"," 1.1040920896407020457","-0.5963689660955560079" +"426"," 2.3430576070342832296","-0.3651761372257156246" +"427"," 1.9836519870473621197","-0.1591918402171841884" +"428"," 2.0856322063376673270"," 0.0545249469546588775" +"429"," 2.3778286961870280791"," 0.2307846254298880628" +"430"," 0.4660664642328800067"," 0.4330240621125702738" +"431","-1.7950415491849578409"," 0.5925960980344925355" +"432","-4.1242561949928475684","-0.7055564071046470653" +"433"," 0.3336942200951064086","-0.5305709507765803412" +"434","-0.7911527675246172731","-0.3109619556563242293" +"435"," 2.1223703470030041984","-0.1574826768592189619" +"436","-2.8488587757671166578","-0.0223941278129607471" +"437"," 1.8214550611952424752"," 0.1543000698507943080" +"438"," 0.6264762387703985969"," 0.3839514824241401780" +"439"," 1.2050410718172899216"," 0.5657957404391765754" +"440"," 1.9254681234540480528"," 0.7107332453000836381" +"441"," 3.0679082708138323277","-0.7684830183788532443" +"442","-0.6563500542722737752","-0.6651771190935117373" +"443","-2.3790614908711784636","-0.4070389856301121490" +"444"," 0.2113284950598663947","-0.1924409631326361170" +"445","-4.9116545853493898122"," 0.0438709150523438271" +"446"," 2.5656116603353051886"," 0.2458911861513277397" +"447"," 1.5441420782283841184"," 0.4343387176264630334" +"448"," 0.4080404350998582119"," 0.6366644291490026752" +"449","-2.5766781188987861739"," 0.7853504302002981552" +"450"," 0.7154208768052239265","-0.7845406593942958473" +"451","-1.4618313202030535081","-0.6373843970167439865" +"452"," 2.4063565729522133907","-0.4672908520849562986" +"453"," 0.4845726487965134055","-0.2295117380159998333" +"454"," 2.1703627320946403678","-0.0437410398449705543" +"455"," 5.0392906719881072064"," 0.1829733366558828900" +"456"," 1.6776182170786535508"," 0.3672549407303393743" +"457","-1.0645152972479503539"," 0.5907612472864264275" +"458"," 0.2407211570293467107"," 0.7732572158205881507" +"459"," 2.7388004842356998836","-0.7718279157979277549" +"460","-0.8475444806669421016","-0.6402433386385301128" +"461","-0.0530447298661471667","-0.3731138663380205167" +"462","-1.4188307743782755388","-0.1795647578776556341" +"463","-0.1889381053172523028"," 0.0224241202794811280" +"464","-0.5833817945291466245"," 0.2373519579370074184" +"465"," 1.0870818532673538481"," 0.4347196958465683325" +"466"," 4.5689428317961002790"," 0.6541104583931276473" +"467","-0.5706307034760349506"," 0.7770295751769373815" +"468"," 1.2764035272253717590","-0.7142094584911831134" +"469","-2.8208277083626591697","-0.5324183914053142175" +"470"," 0.0466932248163375307","-0.3441966315747935767" +"471"," 0.3366590077107530776","-0.1611798328198632835" +"472","-1.4671957482392996575"," 0.0153853929551298913" +"473"," 2.5445967960110973394"," 0.1986840317713779724" +"474"," 0.9520538630169861349"," 0.4356479479916905428" +"475"," 1.8593735211843243071"," 0.5845107937324919289" +"476"," 4.3723626193382596483"," 0.7026165424362346146" +"477"," 3.7959986520295285750","-0.5901615973854629216" +"478"," 0.8424688433211117156","-0.3512464064175833123" +"479"," 3.4538381920018963456","-0.1492146663955369046" +"480"," 3.4500491868518277094"," 0.0366577849509904935" +"481"," 2.5210434616767773974"," 0.1971107744649710503" +"482","-0.5141914420664275287"," 0.3904542892795629383" +"483"," 1.8677320401843937603"," 0.5814363319901801885" +"484"," 4.2887197529225211667","-0.4525777756486407677" +"485"," 2.3836265040331152676","-0.2252016521929182946" +"486","-1.3305307782392463700"," 0.0239207181702247584" +"487","-0.7002827637593218579"," 0.2280972827769361111" +"488","-0.5740467734659913113"," 0.4090292523609805886" +"489"," 3.1033683172158208485","-0.2819049423381739805" +"490"," 2.6011278268768411870","-0.0759338382516744070" +"491","-1.3958824130382367912"," 0.1700584669551901684" +"492","-0.2539874637630419318","-0.4583803839137437497" +"493"," 0.2651226935991120026","-0.2403253400397328821" +"494","-1.0561977492726608574"," 0.0102808188857875082" +"495"," 1.2212303459490509994"," 0.2601253309994627227" +"496","-1.4022569362602297360"," 0.4512878686932054739" +"497","-0.0990268348183320768","-0.6009410972262027029" +"498","-0.0919628687560165581","-0.4014129312179093301" +"499"," 1.4086214518795627804","-0.2149347325574506029" +"500"," 1.1570102202085386089","-0.0284011804200051676" +"501"," 3.1511980832488437620"," 0.1977764078262265468" +"502"," 3.0102379325179868808"," 0.3777777397639447976" +"503","-0.4341978028514590360"," 0.5857182989745952639" +"504"," 3.0792530704532450336","-0.6971668740650514007" +"505"," 3.7565742125024352838","-0.5618057745039413131" +"506"," 3.4083535138547333965","-0.4011857763734086313" +"507"," 2.7736415776208245276","-0.2070278397028236794" +"508"," 4.9152856992146016779"," 0.0104688087673826709" +"509","-1.1396200826291140729"," 0.1674780209737860015" +"510"," 0.7501315394285119620"," 0.3625606258256461323" +"511"," 2.2014476029040208616"," 0.5446888065054534822" +"512"," 1.7482245723475164922"," 0.7080853301912263253" +"513"," 1.7108568047052670202","-0.7008011865883624347" +"514"," 0.0007667228032341988","-0.5709208242350539697" +"515"," 3.8829340517132164834","-0.4408244695981562988" +"516"," 4.6021620592126755156","-0.2583917059896807533" +"517","-0.8197227731333232015","-0.0377000637992082402" +"518"," 1.1671239553653296461"," 0.1715856847211454095" +"519"," 0.6484386769174658172"," 0.3922910724135476590" +"520"," 2.6975806241323292411"," 0.5576516324259498392" +"521"," 1.2744269138413188980"," 0.6951941786003983381" +"522"," 3.0394166954355115173","-0.6906814840375463671" +"523"," 0.7591328404042433364","-0.5136410081860387500" +"524","-0.3454996017651259521","-0.3664995620403407317" +"525","-3.3455332250512537229","-0.1733350736950561854" +"526"," 0.7285846878058539478"," 0.0218242671504501017" +"527","-0.3457461249990143592"," 0.2262089704153060210" +"528","-0.9866790198649952881"," 0.3145931390845104758" +"529"," 1.5715864603415217182"," 0.5264876778947801261" +"530"," 2.3265629742630760113"," 0.6949540532834915796" +"531","-2.2622769468362489143","-0.5918934770318381444" +"532"," 2.9492088582412434583","-0.3533596363370059001" +"533"," 0.3642215216385026322","-0.1689615738366077591" +"534","-0.1595832691992171704","-0.0091048741982160189" +"535"," 2.7630754638448440375"," 0.1871980565871649016" +"536"," 5.6706640206739749033"," 0.3882703983180138541" +"537","-2.1623297467903652702"," 0.5893006962778790658" +"538"," 2.8450394636495754952","-0.4712778035849872760" +"539"," 1.1614499965590612263","-0.1742696304038461874" +"540"," 2.3741343453849284018"," 0.0831708128747150749" +"541"," 1.5554265344240905122"," 0.2722773393944649123" +"542","-0.3355304015422724273"," 0.4393850617323934449" +"543"," 3.3554911614873033088","-0.2977835220676502970" +"544","-1.6514395733197675398","-0.0832256221907155536" +"545"," 3.0418936138393406488"," 0.2078965194893743207" +"546","-1.0231833106052907745","-0.1871990389092626494" +"547"," 1.0918064081611325022"," 0.0667313738410769269" +"548","-1.6123636510420622514"," 0.2892976196987757098" +"549","-1.0041512412323347903","-0.4128172365935164900" +"550"," 0.0695215137538565120","-0.2486778648133409209" +"551"," 1.6701004162751833526","-0.0406687809612665055" +"552"," 1.9982748333532383000"," 0.1914595585229597607" +"553"," 2.6113361843391809103"," 0.4243564037393350308" +"554"," 0.5206937004359484256","-0.5530969698171352977" +"555"," 1.3347969639257617480","-0.3937568001890474623" +"556","-1.8565425722438360090","-0.1712477615986996438" +"557"," 0.4341015261201857101","-0.0278793871463998942" +"558"," 2.0878318100731236839"," 0.2946363941076863280" +"559","-3.2287074145712262307"," 0.4648763961661919186" +"560"," 2.6099684177519124617"," 0.5835212802452478531" +"561","-0.4508559143622066223","-0.5941134113710300202" +"562","-3.2158372149717004973","-0.4599483236551881737" +"563"," 0.3603388723022590279","-0.2406747737222716121" +"564"," 3.7599424866074051543","-0.0081399101081071432" +"565"," 0.3842168560161157709"," 0.1895226866368908691" +"566"," 0.5726625243280405453"," 0.3722638583534854662" +"567","-3.5444113816444646758"," 0.5656135020817433245" +"568"," 2.7286098845702229099","-0.5745006982945627394" +"569","-1.8681883161987076214","-0.3761522107894110234" +"570","-1.6570679298058741402","-0.1803251399322664261" +"571","-1.5685062905408919676"," 0.0743044551962325078" +"572","-0.4741129158579828751"," 0.1925714754677235740" +"573","-1.3875996750095223042"," 0.4199089550051153252" +"574","-0.8379458577556164744"," 0.5670928735508961038" +"575"," 3.4959959704512737488","-0.4494789850390794594" +"576"," 2.6299628698068486798","-0.2132174885537845288" +"577","-0.0948427430994276399"," 0.0387502956280948233" +"578"," 1.4068186037911014630"," 0.2369099355897605896" +"579"," 2.1809358488233003825"," 0.4238094072373119747" +"580"," 0.8767582044510778827","-0.3154197960255299416" +"581","-1.6742631920523480815","-0.1180004281457403131" +"582","-0.4841576153944000538"," 0.2546463695120379511" +"583"," 0.6399752612083318137"," 0.0583837805531180129" +"584"," 0.2881831131240162325","-0.2703109594982009978" +"585"," 1.1478465258823409290","-0.0345711099496351371" +"586"," 2.9051742610833941605"," 0.1733715135040837518" +"587"," 1.8638528333066433085","-0.0009729998464721211" diff --git a/test/data/models/srpde/3D_test1/y.csv b/test/data/models/srpde/3D_test1/y.csv new file mode 100644 index 00000000..d32632f3 --- /dev/null +++ b/test/data/models/srpde/3D_test1/y.csv @@ -0,0 +1,588 @@ +"","x" +"1"," -3.94784423671302021" +"2"," 3.20441423561408723" +"3"," -5.78478024056915707" +"4"," -2.34759118793749799" +"5"," 4.65475634484785328" +"6"," 4.03964593327322241" +"7"," 11.24434682434608135" +"8"," -0.01979320608505802" +"9"," 7.13443302002851887" +"10"," 3.55454035621658937" +"11"," 3.62557216959767281" +"12"," 2.44087504317653625" +"13"," -0.58325177197133671" +"14"," 0.80491919024115477" +"15"," -0.07907651201158568" +"16"," 4.50619171482062963" +"17"," 5.78577486497781468" +"18"," -2.11263638599459913" +"19"," 0.32985096204699299" +"20"," 6.55881482182625852" +"21"," 3.59819808517691797" +"22"," 0.94235603985942562" +"23"," -0.15123976230530978" +"24"," 1.13759689395218633" +"25"," -0.17886150233549358" +"26"," 1.10735091809956199" +"27"," 6.57836777548678597" +"28"," -3.05491472920545393" +"29"," -6.27370892279288661" +"30"," -1.18828328513589154" +"31"," 3.69553780055621361" +"32"," -1.56274923945517208" +"33"," 0.91147697399532257" +"34"," -0.60392430645573003" +"35"," 0.91542127149850772" +"36"," -6.53591635710018171" +"37"," 1.12454227969041387" +"38"," -4.21442199416637031" +"39"," 0.15025437543569420" +"40"," 0.08128709904612608" +"41"," -5.62087896825014344" +"42"," -6.99085145814967035" +"43"," 3.81174019612103221" +"44"," 7.50299079218257603" +"45"," 3.13748459621799114" +"46"," 4.36279679575259927" +"47"," 2.72826809977803730" +"48"," 8.59755807162266628" +"49"," 3.21499158692581721" +"50"," 2.12385298045197324" +"51"," -1.57447861997781846" +"52"," 5.91728799389240212" +"53"," 2.44434905506607913" +"54"," 3.27445642661734126" +"55"," -2.56609661099726383" +"56"," 1.98317651791858340" +"57"," -6.25101080397008779" +"58"," -2.38231714443194065" +"59"," 3.46131700891906702" +"60"," 0.87429621513815636" +"61"," 0.42672378620816820" +"62"," 1.13699416809546761" +"63"," 3.61275767453282359" +"64"," -2.66344682212420070" +"65"," -2.18403656409083524" +"66"," 1.20116716738653717" +"67"," -1.27650110524383376" +"68"," 1.51891518688283234" +"69"," -0.27676883071240210" +"70"," -0.83415160894996609" +"71"," -5.78691506530940281" +"72"," -1.70802009843230840" +"73"," 5.42828755028798504" +"74"," 7.09869784525943004" +"75"," -8.04037916577010847" +"76"," -0.49021735251483700" +"77"," 1.45694081162198863" +"78"," -4.94653694447391956" +"79"," -6.10578107907377365" +"80"," 0.82518267171050830" +"81"," 2.45683885329662388" +"82"," -7.84525872432079918" +"83"," -0.73404097675449964" +"84"," 2.24631108087919618" +"85"," 1.18770273001217563" +"86"," -3.33677474459749979" +"87"," 5.77281652188317018" +"88"," -0.06580139702490501" +"89"," -2.60672652586273212" +"90"," 5.47691624523540987" +"91"," 1.93788273493307495" +"92"," 6.69880600906336277" +"93"," -0.14172135038085734" +"94"," 2.77792727017489849" +"95"," 2.58370907685773199" +"96"," -5.15938581714193401" +"97"," 2.45373930981519006" +"98"," 4.27886540388376879" +"99"," -1.60879778844383114" +"100"," -3.63902229475529415" +"101"," 1.61568636124499898" +"102"," 3.54157506436581837" +"103"," 1.06418284877980462" +"104"," 3.79699271215772294" +"105"," 4.74075420028734573" +"106"," 10.49335963008481087" +"107"," -1.34097522907785027" +"108"," 0.56784136565930954" +"109"," 1.17708955973075469" +"110"," 3.60047656974402575" +"111"," 0.24207452664247953" +"112"," -1.23187704361546291" +"113"," 7.49698426480911806" +"114"," -1.56964566630822633" +"115"," -0.53496635971040774" +"116"," 7.42207651865514606" +"117"," -3.42687409466670623" +"118"," 3.56751333354263478" +"119"," 0.39973584968922005" +"120"," -0.27115609211322811" +"121"," 3.52225496242171676" +"122"," 3.84270260264151187" +"123"," -4.57946449325895610" +"124"," 0.18881097956197190" +"125"," -0.89992130735442433" +"126"," 4.65300705528716030" +"127"," -3.38941703330243183" +"128"," 8.26534808774253626" +"129"," -6.16552306509008385" +"130"," 2.26154904131858370" +"131"," 3.85931822515553424" +"132"," -1.22876300811883121" +"133"," 4.75452685781934381" +"134"," -0.93844218916862820" +"135"," -0.18776946926142868" +"136"," 3.54721289379598970" +"137"," -5.67861065268853515" +"138"," 3.40582299889942597" +"139"," 1.65412619501194058" +"140"," 1.57902315636572799" +"141"," -6.92951263726301914" +"142"," -4.64500680712134528" +"143"," 3.39482117693049901" +"144"," 1.11922083716467458" +"145"," -3.50700466295942803" +"146"," 3.02797515349257873" +"147"," -8.08414651588614142" +"148"," -4.56682732350656462" +"149"," 2.17208216664856435" +"150"," -2.40492062908041282" +"151"," 8.23606314219189528" +"152"," 1.42115949632826544" +"153"," -0.44092326537014670" +"154"," 6.39383882182736230" +"155"," -1.60035133683075981" +"156"," 3.36632908698974109" +"157"," 11.09283683577657875" +"158"," 8.43650525694401843" +"159"," -1.35949260561199448" +"160"," 1.03184649637581005" +"161"," -0.38270278907128774" +"162"," -2.86537779995207176" +"163"," 4.67621591067605102" +"164"," -0.66776120668897998" +"165"," 5.37299947937214739" +"166"," -1.40779187529143823" +"167"," -2.62011960461601578" +"168"," -0.59781474924041667" +"169"," 1.96369544207727520" +"170"," 0.27491985152844206" +"171"," 0.17233664171345908" +"172"," 7.61571778174447100" +"173"," 2.76851737994400171" +"174"," 8.64677559454849209" +"175"," 4.82207586340269678" +"176"," -1.86633492235458709" +"177"," -0.99386210362708372" +"178"," 8.39526383758335903" +"179"," 3.09629364487485059" +"180"," 12.17887165089724100" +"181"," 7.54067728180928665" +"182"," 7.41963075178589015" +"183"," -3.56066124438975917" +"184"," 2.54128201631264883" +"185"," 6.92465918740869135" +"186"," 2.81889977358238131" +"187"," 10.11091223521734683" +"188"," 0.25702333449988246" +"189"," -1.33331003108146584" +"190"," 10.45699293827978948" +"191"," 7.23893188904848905" +"192"," -2.18184609806315821" +"193"," 4.22444630716137492" +"194"," 1.76021262736205997" +"195"," 2.12940575170230462" +"196"," 3.51017236481954642" +"197"," -5.99017516228516822" +"198"," 4.83191758992052023" +"199"," -0.47159230360141080" +"200"," -5.30283148496029710" +"201"," -0.68485338278453733" +"202"," -2.35125830219521470" +"203"," 1.19783774564244183" +"204"," 4.13886083231565127" +"205"," -1.38320102047201599" +"206"," 3.01179250531267151" +"207"," 9.42500693677032686" +"208"," 6.70291803607574188" +"209"," -0.14877618135650583" +"210"," -4.57184213492798630" +"211"," -0.45442932751551157" +"212"," -0.03920311686027969" +"213"," -6.55488776478408930" +"214"," -0.24927271244184268" +"215"," 1.98066422865343128" +"216"," 2.79900409365937364" +"217"," 3.56988839890546039" +"218"," 3.20517298507841630" +"219"," 9.30645243787287058" +"220"," -3.87329484704886706" +"221"," -3.13252448120839633" +"222"," -7.77519034307402901" +"223"," -1.85205520277230562" +"224"," -1.38922678045447223" +"225"," -0.95047133803564510" +"226"," -2.28550983411252506" +"227"," 12.17539756401294859" +"228"," 1.81034376154820786" +"229"," -0.49804690340862523" +"230"," -1.83478596982665620" +"231"," 5.79105388524709941" +"232"," -5.59786436857442204" +"233"," -1.08172973570594166" +"234"," 1.65290722961020720" +"235"," -1.16222281634826152" +"236"," -1.45031564059722551" +"237"," -2.88564979294510771" +"238"," 17.31523412905939807" +"239"," 3.61793558512941260" +"240"," 0.25597599857862408" +"241"," 3.85377809821282913" +"242"," 4.46237675219805840" +"243"," 5.13072825223729012" +"244"," 9.04987044907019111" +"245"," 2.24361699688354577" +"246"," 2.97200710128982726" +"247"," 1.59105917756769100" +"248"," 3.42337155013473238" +"249"," -0.15422015954088164" +"250"," 3.67604910283976949" +"251"," 7.88803172571171096" +"252"," 7.11064008248336688" +"253"," 4.06776751839568984" +"254"," 4.45255174269056564" +"255"," -0.09579014683832043" +"256"," 3.46342759398561828" +"257"," 7.92823987782822481" +"258"," 4.78230969668334538" +"259"," -1.06038754336895469" +"260"," 6.44409819999449596" +"261"," 7.07417177352232152" +"262"," 2.64783789513365031" +"263"," -6.94705133054001589" +"264"," 5.26549056263843873" +"265"," 3.87496328008495006" +"266"," 2.16879194865488145" +"267"," 0.46731431773831261" +"268"," -0.08169819491169661" +"269"," 8.19507004088785962" +"270"," 8.77233038164237477" +"271"," -1.91804939479555125" +"272"," 7.86533348816327393" +"273"," 6.01484094800473024" +"274"," 5.90818697441929963" +"275"," 3.29099453075507764" +"276"," 4.86822730704503748" +"277"," -4.12523350855834270" +"278"," 5.16459721513122005" +"279"," 6.49475480584636600" +"280"," 6.80345357358169611" +"281"," 6.31066600798457777" +"282"," -1.21518829108460436" +"283"," 4.50141113317327690" +"284"," 2.19984132355987505" +"285"," 4.72854817010711592" +"286"," -3.76138989179091388" +"287"," 1.17984472599357249" +"288"," 4.13332196187032164" +"289"," -5.25448879188047080" +"290"," -3.07602479262047623" +"291"," -0.53943953505026121" +"292"," 2.39567747988542745" +"293"," 2.22800636101450911" +"294"," 1.93973804088861157" +"295"," 4.13487679420272869" +"296"," 2.09220564588677505" +"297"," 0.38847151784664447" +"298"," 5.27984436407164903" +"299"," 8.90761070886114048" +"300"," 2.61295788993806521" +"301"," -2.24832089391858059" +"302"," -0.35601517058205467" +"303"," 3.29613590532119716" +"304"," 3.35651291508859284" +"305"," 5.63550994969184416" +"306"," 6.49785238785337871" +"307"," 10.91224806112738399" +"308"," 7.86860842873002309" +"309"," -3.92912259276148657" +"310"," 0.11081742557774166" +"311"," 1.45442174215144249" +"312"," 2.26750784051200993" +"313"," -0.58343973652575287" +"314"," -0.05740422093038777" +"315"," 5.93128751785513675" +"316"," 5.20525975282916331" +"317"," -2.50447909779627720" +"318"," 3.87399128914614232" +"319"," 7.54502856599895644" +"320"," 10.90898352398363969" +"321"," -1.05681284658102781" +"322"," 11.72024885023928320" +"323"," -2.81682532627483528" +"324"," 2.02723658769476689" +"325"," 1.23701435407470139" +"326"," 3.90070372329133086" +"327"," -1.16776059099946083" +"328"," -0.89207978814130962" +"329"," 8.23154760112430139" +"330"," 3.73651684506747905" +"331","-11.46118898656752272" +"332"," 6.97802822174139248" +"333"," -1.97748997592212339" +"334"," -2.64767440635295337" +"335"," 10.81099983724532620" +"336"," 0.64457088264297435" +"337"," 8.23805152355889980" +"338"," 3.63453045284132248" +"339"," 1.95995340938712048" +"340"," 5.64939391207782027" +"341"," 5.74660188542117467" +"342"," -0.76481185889796988" +"343"," -3.66914511412573807" +"344"," 11.87883985398247155" +"345"," 12.04749419108815012" +"346"," 12.00323438075075444" +"347"," 2.40548319041321879" +"348"," -0.26690784826949077" +"349"," 2.62965045179549861" +"350"," 6.56047137209042219" +"351"," 7.64611160729420281" +"352"," 6.40862593066376096" +"353"," 5.21791296963126339" +"354"," 5.65567242076577692" +"355"," 4.27216554638875579" +"356"," 3.87838303127096440" +"357"," -2.59584656789502066" +"358"," 3.09129933248131472" +"359"," 8.38495387387045454" +"360"," 3.18794666964417583" +"361"," 0.39237223407849209" +"362"," 11.97153845028430297" +"363"," 3.53085004229147748" +"364"," 2.49659180483718490" +"365"," 1.40262520700439075" +"366"," 6.16378085313830670" +"367"," 2.38859110781786521" +"368"," 12.36797604405034967" +"369"," 9.17807303478413594" +"370"," 3.02921961077056245" +"371"," 8.53470484776786442" +"372"," 6.73317066820890453" +"373"," 4.65287739328461214" +"374"," 4.07443363354128518" +"375"," 3.20255951244530657" +"376"," 0.77459026901344563" +"377"," 4.81400321290925159" +"378"," 0.89925075391437681" +"379"," 2.94128763851187536" +"380"," 5.78211024331658052" +"381"," 16.93042068090700525" +"382"," 6.25764550909848261" +"383"," 5.00878245573784397" +"384"," 1.08458973416210935" +"385"," 7.27630288300511463" +"386"," 1.40364266315360142" +"387"," -1.25436850695676627" +"388"," -7.05096566614009124" +"389"," 4.05495458370152217" +"390"," 6.91820314841843675" +"391"," 3.18631012512496259" +"392"," 1.93576263455838204" +"393"," -0.65463849387272965" +"394"," 7.20959506956254881" +"395"," 4.97656993458518748" +"396"," 7.31433338785622755" +"397"," 10.17945389936162570" +"398"," 1.66978268403039531" +"399"," 5.14422972617517615" +"400"," 2.63785522375828307" +"401"," 15.53094888307429500" +"402"," -2.45725531560339405" +"403"," -5.10624953465486797" +"404"," 0.06342862803405444" +"405"," 6.34754690514501441" +"406"," 11.24618447702438928" +"407"," -2.70749277630285690" +"408"," 4.70281000197843113" +"409"," -2.23115342237417513" +"410"," 9.65548006907158829" +"411"," 7.03622449929589244" +"412"," 2.51328775486362144" +"413"," 8.67426914956572226" +"414"," 7.57734966972910851" +"415"," 8.79843844647673556" +"416"," 3.02314157895349256" +"417"," 10.51869579439530078" +"418"," 6.58458580441961772" +"419"," 12.13564120657420453" +"420"," 1.19327929583443693" +"421"," 4.65784035299578925" +"422"," 5.13946948129217418" +"423"," 1.97940619809316587" +"424"," 6.05771636640888733" +"425"," 1.94943748056845934" +"426"," 7.22290540221728605" +"427"," 6.85683276776748141" +"428"," 9.16205381844308953" +"429"," 6.88958146104291114" +"430"," 4.01033686196225059" +"431"," -0.35144474961434913" +"432"," -6.21169350903576056" +"433"," 2.65108406238563798" +"434"," 1.98218718750463019" +"435"," 6.61774396984541902" +"436"," -2.17811702429368559" +"437"," 8.86242062484021531" +"438"," 5.67962615497773715" +"439"," 5.73934949122592108" +"440"," 6.01219363627293824" +"441"," 7.35654403349268282" +"442"," -0.97263390821547413" +"443"," -2.84618624134135390" +"444"," 2.21532751614808188" +"445"," -7.21297757024044195" +"446"," 9.89335845768481903" +"447"," 6.39835463945421878" +"448"," 4.24893228798885580" +"449"," -1.75221443393997434" +"450"," 3.84160348961196707" +"451"," -1.76385881733097127" +"452"," 9.20390737731718289" +"453"," 2.32007563720904431" +"454"," 9.22726059524094921" +"455"," 13.37489247647055102" +"456"," 4.21782939785315758" +"457"," 1.17655916361077129" +"458"," 2.88073960693227438" +"459"," 5.20016545195993452" +"460"," -0.04793771536899338" +"461"," -0.04035191318275588" +"462"," 2.30463641418827070" +"463"," 2.02215756199766528" +"464"," 0.22293993824987934" +"465"," 5.11020814804670742" +"466"," 11.93391502918264990" +"467"," 1.89650630602135228" +"468"," 5.83119215380101874" +"469"," -4.60796985818052818" +"470"," 1.92177030855760345" +"471"," 5.68490133009610688" +"472"," -1.54594464688435895" +"473"," 9.05473591642463482" +"474"," 5.17345579619640450" +"475"," 7.01264652649842901" +"476"," 11.64834313869650373" +"477"," 10.95542893965802378" +"478"," 1.78151798089944480" +"479"," 11.84474244601515380" +"480"," 9.09718650535695161" +"481"," 8.79250885162222851" +"482"," 1.58072281274451409" +"483"," 7.09703260557860460" +"484"," 11.66399094768919475" +"485"," 7.10514377008925724" +"486"," 1.99696774958363599" +"487"," 4.27558283116420501" +"488"," -0.52008105325938425" +"489"," 9.75320004588952294" +"490"," 9.10980994264657262" +"491"," -0.10767626526974566" +"492"," 0.26468733772508024" +"493"," 4.56430919331407647" +"494"," 1.95417568537782871" +"495"," 7.64826378962088071" +"496"," -1.43226768193612042" +"497"," 3.60783212919611707" +"498"," 1.97017608792923382" +"499"," 4.59742945514267731" +"500"," 3.60148954063781446" +"501"," 7.39104428677655179" +"502"," 6.70408324106130138" +"503"," 3.90487268668183996" +"504"," 8.92004095195862234" +"505"," 10.38395193403466088" +"506"," 11.92799250546029022" +"507"," 6.52826771528895922" +"508"," 14.28751702286804459" +"509"," -0.08002938365251197" +"510"," 4.54437363232445168" +"511"," 10.14810173778608871" +"512"," 5.34174638351660658" +"513"," 4.39421815474543997" +"514"," 1.78544413490816112" +"515"," 9.95531279241944667" +"516"," 13.93001321794896441" +"517"," 0.83088702852718344" +"518"," 4.65834055933463453" +"519"," 4.68736980112172041" +"520"," 8.33011313617803850" +"521"," 4.89096356438007351" +"522"," 6.82349724323125351" +"523"," 4.81115515615711953" +"524"," 1.28385793793931358" +"525"," -5.26358212412968651" +"526"," 5.56728535054210028" +"527"," 0.19549876922628528" +"528"," -0.58177214190828552" +"529"," 4.21530141922045232" +"530"," 6.52491696911733943" +"531"," -4.41151566434838571" +"532"," 7.37138950360848177" +"533"," 1.24742797630520119" +"534"," 4.08816850078697502" +"535"," 7.79097457041684915" +"536"," 14.82082992544379252" +"537"," -0.23818469460423786" +"538"," 6.95277091838378425" +"539"," 5.03071287201901018" +"540"," 6.83767032603538549" +"541"," 1.65242439758334836" +"542"," 1.27666311150229550" +"543"," 9.31085807063347026" +"544"," -0.79568171759985562" +"545"," 9.48755502320908484" +"546"," -0.23452613791911897" +"547"," 5.61997171217534230" +"548"," 1.41181287389833177" +"549"," -0.61422696909639241" +"550"," 0.90437997213821286" +"551"," 4.94146821365941058" +"552"," 6.23142374622569761" +"553"," 5.02104754242623308" +"554"," 7.85490460543437852" +"555"," 2.72819346729247858" +"556"," -2.15663124476402679" +"557"," 6.73649650399278954" +"558"," 6.62282330896491445" +"559"," -4.00839501832824130" +"560"," 6.49338720094956834" +"561"," 1.56838799554955499" +"562"," -5.57047823978098577" +"563"," 3.09361187144951710" +"564"," 8.62307840824088068" +"565"," 0.89966582535865491" +"566"," 3.10017681304099524" +"567"," -4.14546124193137366" +"568"," 7.19887689945517728" +"569"," -3.29193737101531214" +"570"," -3.25414070648156706" +"571"," 0.88428629410711135" +"572"," -0.20727282140110503" +"573"," -0.74366660618180325" +"574"," 0.24599173806188007" +"575"," 9.74214612906047428" +"576"," 7.11428817788134182" +"577"," 1.43258255997379580" +"578"," 2.38930396284138657" +"579"," 7.08933034701197862" +"580"," 4.75810576000585517" +"581"," -0.57268908859647283" +"582"," 1.45754703489241133" +"583"," 3.55270495607330528" +"584"," 3.02503584155153504" +"585"," 4.61391375775529511" +"586"," 5.89179823852952378" +"587"," 7.77525798969524118" diff --git a/test/data/models/strpde/.DS_Store b/test/data/models/strpde/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6af779b8275c7e86fe537d366a7e9ce3728175ca GIT binary patch literal 6148 zcmeHK%}OId5Ux(5_8>wI3OP3HHDHp}i0EOAvoEkCdf3%$#tAw&nGTtWIfTHR^-;Wd z^a*@~eIBcSB8DX3K}4hqs=w;$s_yjHLw5=QSZf&80m=ZtQ56;(Y!-+bS2`yJ>sdu) zdX5abkU|FaU^Ev^j<3joIy(m%unQiv@#J35FYO1h3~=-*=*Ll-)oTA)p;%g3UE^zf zouB*Ha^z>7Y?!t>gFmWwB4r#*?M`qSbw};;=CMq&PLy;9Iw1@_Da|q6lPKpO)9e`1~cjC7dFndm>V?dz-;ls?8?kmC`_-8^9vmg%r!_YF+dE=GEg+# zvU>l2EwBG)lc+}w5Ch+e0ao&SuZ3H(Z|mIV)LSc1|Dh^Tak;_Q6g2cxjIrt|uApi` ZzfcCEYcV&79u)c`plP6n82D5MUI0$HYK8y+ literal 0 HcmV?d00001 diff --git a/test/data/models/strpde/25D_test1/X.csv b/test/data/models/strpde/25D_test1/X.csv new file mode 100644 index 00000000..d4004b88 --- /dev/null +++ b/test/data/models/strpde/25D_test1/X.csv @@ -0,0 +1,341 @@ +"","V1","V2","V3","V4","V5" +"1","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210" +"2"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"3"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210" +"4"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"5"," 2.35114100916989255"," 2.35114100916989255"," 2.35114100916989255"," 2.35114100916989255"," 2.35114100916989255" +"6"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"7","-2.35114100916989255","-2.35114100916989255","-2.35114100916989255","-2.35114100916989255","-2.35114100916989255" +"8"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"9","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210","-2.35114100916989210" +"10"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"11"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210"," 2.35114100916989210" +"12"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"13","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969" +"14","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311" +"15","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621" +"16","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609" +"17","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701" +"18","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718" +"19","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654" +"20"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654" +"21"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718" +"22"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701" +"23"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609" +"24"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621" +"25"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311" +"26"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969" +"27"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969" +"28"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311" +"29"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621" +"30"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609" +"31"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701" +"32"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718" +"33"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654" +"34","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654" +"35","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718" +"36","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701" +"37","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609" +"38","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621" +"39","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311" +"40","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969" +"41"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422" +"42","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422" +"43","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422","-1.55235519622772422" +"44"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422"," 1.55235519622772422" +"45","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969" +"46","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311" +"47","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621" +"48","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609" +"49","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701" +"50","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718" +"51","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654" +"52"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654" +"53"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718" +"54"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701" +"55"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609" +"56"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621" +"57"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311" +"58"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969" +"59"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969"," 1.56518041809451969" +"60"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311"," 0.17108826443888311" +"61"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621"," 0.01407524002416621" +"62"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609"," 1.62889563758780609" +"63"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701"," 3.46393206457571701" +"64"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718"," 3.73830365123306718" +"65"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654"," 2.27961995780520654" +"66","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654","-2.27961995780520654" +"67","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718","-3.73830365123306718" +"68","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701","-3.46393206457571701" +"69","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609","-1.62889563758780609" +"70","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621","-0.01407524002416621" +"71","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311","-0.17108826443888311" +"72","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969","-1.56518041809451969" +"73","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954" +"74"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104" +"75"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922" +"76"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698" +"77"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960" +"78"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719" +"79"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310" +"80"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"81"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"82"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"83"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"84"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"85"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"86"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"87"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954" +"88","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104" +"89","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922" +"90","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698" +"91","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960" +"92","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719" +"93","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310" +"94"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"95"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"96"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"97"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"98"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"99"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"100"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"101"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310"," 2.54213591864070310" +"102"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719"," 3.05074556470506719" +"103"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960"," 3.66369347974887960" +"104"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698"," 3.99900498773907698" +"105"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922"," 3.59531083254493922" +"106"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104"," 2.17166604648335104" +"107","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954","-0.06157278413420954" +"108"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"109"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"110"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"111"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"112"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"113"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"114"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"115","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310","-2.54213591864070310" +"116","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719","-3.05074556470506719" +"117","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960","-3.66369347974887960" +"118","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698","-3.99900498773907698" +"119","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922","-3.59531083254493922" +"120","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104","-2.17166604648335104" +"121"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954"," 0.06157278413420954" +"122"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"123"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"124"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"125"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"126"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"127"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"128"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000"," 0.00000000000000000" +"129"," 0.16182118768374407"," 0.16182118768374407"," 0.16182118768374407"," 0.16182118768374407"," 0.16182118768374407" +"130","-3.79050424827968246","-3.79050424827968246","-3.79050424827968246","-3.79050424827968246","-3.79050424827968246" +"131"," 0.69075879282681829"," 0.69075879282681829"," 0.69075879282681829"," 0.69075879282681829"," 0.69075879282681829" +"132"," 1.52250533337830185"," 1.52250533337830185"," 1.52250533337830185"," 1.52250533337830185"," 1.52250533337830185" +"133"," 1.08465804018633682"," 1.08465804018633682"," 1.08465804018633682"," 1.08465804018633682"," 1.08465804018633682" +"134","-2.06419786018427454","-2.06419786018427454","-2.06419786018427454","-2.06419786018427454","-2.06419786018427454" +"135"," 1.07682670416034587"," 1.07682670416034587"," 1.07682670416034587"," 1.07682670416034587"," 1.07682670416034587" +"136","-2.12774604171472159","-2.12774604171472159","-2.12774604171472159","-2.12774604171472159","-2.12774604171472159" +"137"," 2.87013317852921812"," 2.87013317852921812"," 2.87013317852921812"," 2.87013317852921812"," 2.87013317852921812" +"138"," 1.52573094742060844"," 1.52573094742060844"," 1.52573094742060844"," 1.52573094742060844"," 1.52573094742060844" +"139","-2.11551975416568716","-2.11551975416568716","-2.11551975416568716","-2.11551975416568716","-2.11551975416568716" +"140"," 0.97085586098887644"," 0.97085586098887644"," 0.97085586098887644"," 0.97085586098887644"," 0.97085586098887644" +"141","-0.96821992157555381","-0.96821992157555381","-0.96821992157555381","-0.96821992157555381","-0.96821992157555381" +"142"," 1.91371518239458593"," 1.91371518239458593"," 1.91371518239458593"," 1.91371518239458593"," 1.91371518239458593" +"143"," 2.39512454154888710"," 2.39512454154888710"," 2.39512454154888710"," 2.39512454154888710"," 2.39512454154888710" +"144","-0.54450885575919283","-0.54450885575919283","-0.54450885575919283","-0.54450885575919283","-0.54450885575919283" +"145"," 3.12422797170302635"," 3.12422797170302635"," 3.12422797170302635"," 3.12422797170302635"," 3.12422797170302635" +"146","-0.42266419054097337","-0.42266419054097337","-0.42266419054097337","-0.42266419054097337","-0.42266419054097337" +"147"," 1.52766261460490593"," 1.52766261460490593"," 1.52766261460490593"," 1.52766261460490593"," 1.52766261460490593" +"148"," 1.34449073903562510"," 1.34449073903562510"," 1.34449073903562510"," 1.34449073903562510"," 1.34449073903562510" +"149","-3.19419142098270203","-3.19419142098270203","-3.19419142098270203","-3.19419142098270203","-3.19419142098270203" +"150","-0.86931436754183489","-0.86931436754183489","-0.86931436754183489","-0.86931436754183489","-0.86931436754183489" +"151","-0.93730630571958007","-0.93730630571958007","-0.93730630571958007","-0.93730630571958007","-0.93730630571958007" +"152"," 0.38260031865261324"," 0.38260031865261324"," 0.38260031865261324"," 0.38260031865261324"," 0.38260031865261324" +"153"," 3.46676055188814969"," 3.46676055188814969"," 3.46676055188814969"," 3.46676055188814969"," 3.46676055188814969" +"154"," 2.49646991592859369"," 2.49646991592859369"," 2.49646991592859369"," 2.49646991592859369"," 2.49646991592859369" +"155"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830" +"156","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524" +"157","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961" +"158","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744" +"159","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703" +"160"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024" +"161"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833" +"162","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532" +"163"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243" +"164","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818" +"165","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462" +"166"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287" +"167"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646" +"168","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680" +"169","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648" +"170","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968" +"171"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385" +"172"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428" +"173"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196" +"174","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127" +"175"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181" +"176","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270" +"177","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109" +"178","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058" +"179","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184" +"180","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013" +"181","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407" +"182"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246" +"183","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829" +"184","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185" +"185","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682" +"186"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454" +"187","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587" +"188"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159" +"189","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812" +"190","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844" +"191"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716" +"192","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644" +"193"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381" +"194","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593" +"195","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710" +"196"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283" +"197","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635" +"198"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337" +"199","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593" +"200","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510" +"201"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203" +"202"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489" +"203"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007" +"204","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324" +"205","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969" +"206","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369" +"207","-3.75721165578642990","-3.75721165578642990","-3.75721165578642990","-3.75721165578642990","-3.75721165578642990" +"208"," 1.82411148468619588"," 1.82411148468619588"," 1.82411148468619588"," 1.82411148468619588"," 1.82411148468619588" +"209"," 2.26991213830209482"," 2.26991213830209482"," 2.26991213830209482"," 2.26991213830209482"," 2.26991213830209482" +"210"," 1.29917359332967997"," 1.29917359332967997"," 1.29917359332967997"," 1.29917359332967997"," 1.29917359332967997" +"211"," 1.67892304968017925"," 1.67892304968017925"," 1.67892304968017925"," 1.67892304968017925"," 1.67892304968017925" +"212"," 1.00685494264129627"," 1.00685494264129627"," 1.00685494264129627"," 1.00685494264129627"," 1.00685494264129627" +"213","-2.59741308949047456","-2.59741308949047456","-2.59741308949047456","-2.59741308949047456","-2.59741308949047456" +"214"," 1.34833576211353545"," 1.34833576211353545"," 1.34833576211353545"," 1.34833576211353545"," 1.34833576211353545" +"215"," 0.12722713797763185"," 0.12722713797763185"," 0.12722713797763185"," 0.12722713797763185"," 0.12722713797763185" +"216","-1.31455377133103424","-1.31455377133103424","-1.31455377133103424","-1.31455377133103424","-1.31455377133103424" +"217","-2.15153169115202481","-2.15153169115202481","-2.15153169115202481","-2.15153169115202481","-2.15153169115202481" +"218"," 2.68862335027119848"," 2.68862335027119848"," 2.68862335027119848"," 2.68862335027119848"," 2.68862335027119848" +"219"," 2.91297823202594097"," 2.91297823202594097"," 2.91297823202594097"," 2.91297823202594097"," 2.91297823202594097" +"220","-0.56609424753782733","-0.56609424753782733","-0.56609424753782733","-0.56609424753782733","-0.56609424753782733" +"221","-0.70708191043177759","-0.70708191043177759","-0.70708191043177759","-0.70708191043177759","-0.70708191043177759" +"222","-0.54365901696567887","-0.54365901696567887","-0.54365901696567887","-0.54365901696567887","-0.54365901696567887" +"223"," 3.17608240529237218"," 3.17608240529237218"," 3.17608240529237218"," 3.17608240529237218"," 3.17608240529237218" +"224"," 0.15640696509965163"," 0.15640696509965163"," 0.15640696509965163"," 0.15640696509965163"," 0.15640696509965163" +"225"," 0.62779679923747544"," 0.62779679923747544"," 0.62779679923747544"," 0.62779679923747544"," 0.62779679923747544" +"226","-2.47023829536321493","-2.47023829536321493","-2.47023829536321493","-2.47023829536321493","-2.47023829536321493" +"227"," 1.32022401237358555"," 1.32022401237358555"," 1.32022401237358555"," 1.32022401237358555"," 1.32022401237358555" +"228"," 1.29350254234470952"," 1.29350254234470952"," 1.29350254234470952"," 1.29350254234470952"," 1.29350254234470952" +"229"," 2.31909022691305822"," 2.31909022691305822"," 2.31909022691305822"," 2.31909022691305822"," 2.31909022691305822" +"230"," 0.93396090260876330"," 0.93396090260876330"," 0.93396090260876330"," 0.93396090260876330"," 0.93396090260876330" +"231"," 3.24794921778254730"," 3.24794921778254730"," 3.24794921778254730"," 3.24794921778254730"," 3.24794921778254730" +"232"," 0.16962639482683317"," 0.16962639482683317"," 0.16962639482683317"," 0.16962639482683317"," 0.16962639482683317" +"233","-0.42001719258147380","-0.42001719258147380","-0.42001719258147380","-0.42001719258147380","-0.42001719258147380" +"234"," 0.09514671250123147"," 0.09514671250123147"," 0.09514671250123147"," 0.09514671250123147"," 0.09514671250123147" +"235"," 1.52142993384844449"," 1.52142993384844449"," 1.52142993384844449"," 1.52142993384844449"," 1.52142993384844449" +"236"," 2.68994647314944091"," 2.68994647314944091"," 2.68994647314944091"," 2.68994647314944091"," 2.68994647314944091" +"237","-2.39226564357659521","-2.39226564357659521","-2.39226564357659521","-2.39226564357659521","-2.39226564357659521" +"238"," 2.17675439217180244"," 2.17675439217180244"," 2.17675439217180244"," 2.17675439217180244"," 2.17675439217180244" +"239"," 0.34689144941304778"," 0.34689144941304778"," 0.34689144941304778"," 0.34689144941304778"," 0.34689144941304778" +"240"," 1.52545021540260572"," 1.52545021540260572"," 1.52545021540260572"," 1.52545021540260572"," 1.52545021540260572" +"241","-2.03871710772267667","-2.03871710772267667","-2.03871710772267667","-2.03871710772267667","-2.03871710772267667" +"242"," 1.41702405884988991"," 1.41702405884988991"," 1.41702405884988991"," 1.41702405884988991"," 1.41702405884988991" +"243","-0.05600884961155872","-0.05600884961155872","-0.05600884961155872","-0.05600884961155872","-0.05600884961155872" +"244"," 1.63257197204089821"," 1.63257197204089821"," 1.63257197204089821"," 1.63257197204089821"," 1.63257197204089821" +"245"," 2.44135284405314668"," 2.44135284405314668"," 2.44135284405314668"," 2.44135284405314668"," 2.44135284405314668" +"246"," 1.31019753920946558"," 1.31019753920946558"," 1.31019753920946558"," 1.31019753920946558"," 1.31019753920946558" +"247","-1.92219008527324853","-1.92219008527324853","-1.92219008527324853","-1.92219008527324853","-1.92219008527324853" +"248","-0.79627282784376630","-0.79627282784376630","-0.79627282784376630","-0.79627282784376630","-0.79627282784376630" +"249","-0.49647028671521820","-0.49647028671521820","-0.49647028671521820","-0.49647028671521820","-0.49647028671521820" +"250"," 0.38587313866725004"," 0.38587313866725004"," 0.38587313866725004"," 0.38587313866725004"," 0.38587313866725004" +"251","-0.46935558819200146","-0.46935558819200146","-0.46935558819200146","-0.46935558819200146","-0.46935558819200146" +"252"," 0.98221521514592269"," 0.98221521514592269"," 0.98221521514592269"," 0.98221521514592269"," 0.98221521514592269" +"253"," 3.33756359173948258"," 3.33756359173948258"," 3.33756359173948258"," 3.33756359173948258"," 3.33756359173948258" +"254"," 2.47588171041516336"," 2.47588171041516336"," 2.47588171041516336"," 2.47588171041516336"," 2.47588171041516336" +"255"," 0.68736004549110707"," 0.68736004549110707"," 0.68736004549110707"," 0.68736004549110707"," 0.68736004549110707" +"256","-3.44548861938583295","-3.44548861938583295","-3.44548861938583295","-3.44548861938583295","-3.44548861938583295" +"257","-1.64976604651707737","-1.64976604651707737","-1.64976604651707737","-1.64976604651707737","-1.64976604651707737" +"258","-3.67789508248470698","-3.67789508248470698","-3.67789508248470698","-3.67789508248470698","-3.67789508248470698" +"259","-1.20986500857781287","-1.20986500857781287","-1.20986500857781287","-1.20986500857781287","-1.20986500857781287" +"260","-1.42679005028310901","-1.42679005028310901","-1.42679005028310901","-1.42679005028310901","-1.42679005028310901" +"261"," 3.46849310580023795"," 3.46849310580023795"," 3.46849310580023795"," 3.46849310580023795"," 3.46849310580023795" +"262"," 0.98515029677403076"," 0.98515029677403076"," 0.98515029677403076"," 0.98515029677403076"," 0.98515029677403076" +"263"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830"," 3.81760275798717830" +"264","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524","-0.16692707337850524" +"265","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961","-1.28321162488723961" +"266","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744","-1.95427233144057744" +"267","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703","-2.90872175877794703" +"268"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024"," 1.90766086568253024" +"269"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833"," 2.57895486614308833" +"270","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532","-1.56090664124655532" +"271"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243"," 0.04917993702332243" +"272","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818","-1.67922916485610818" +"273","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462","-1.00967167215127462" +"274"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287"," 2.24963051705412287" +"275"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646"," 0.86518707940547646" +"276","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680","-1.53703171785140680" +"277","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648","-1.22759001523508648" +"278","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968","-3.10677083726070968" +"279"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385"," 0.87431491973960385" +"280"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428"," 3.08727403932047428" +"281"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196"," 1.03131698728322196" +"282","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127","-2.45507200627730127" +"283"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181"," 0.28021010756667181" +"284","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270","-3.04144472838290270" +"285","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109","-1.38773294392880109" +"286","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058","-3.12335261984582058" +"287","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184","-0.51263792661432184" +"288","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013","-1.50341448392579013" +"289","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407","-0.16182118768374407" +"290"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246"," 3.79050424827968246" +"291","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829","-0.69075879282681829" +"292","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185","-1.52250533337830185" +"293","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682","-1.08465804018633682" +"294"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454"," 2.06419786018427454" +"295","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587","-1.07682670416034587" +"296"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159"," 2.12774604171472159" +"297","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812","-2.87013317852921812" +"298","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844","-1.52573094742060844" +"299"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716"," 2.11551975416568716" +"300","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644","-0.97085586098887644" +"301"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381"," 0.96821992157555381" +"302","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593","-1.91371518239458593" +"303","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710","-2.39512454154888710" +"304"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283"," 0.54450885575919283" +"305","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635","-3.12422797170302635" +"306"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337"," 0.42266419054097337" +"307","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593","-1.52766261460490593" +"308","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510","-1.34449073903562510" +"309"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203"," 3.19419142098270203" +"310"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489"," 0.86931436754183489" +"311"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007"," 0.93730630571958007" +"312","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324","-0.38260031865261324" +"313","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969","-3.46676055188814969" +"314","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369","-2.49646991592859369" +"315","-3.81760275798717830","-3.81760275798717830","-3.81760275798717830","-3.81760275798717830","-3.81760275798717830" +"316"," 0.16692707337850524"," 0.16692707337850524"," 0.16692707337850524"," 0.16692707337850524"," 0.16692707337850524" +"317"," 1.28321162488723961"," 1.28321162488723961"," 1.28321162488723961"," 1.28321162488723961"," 1.28321162488723961" +"318"," 1.95427233144057744"," 1.95427233144057744"," 1.95427233144057744"," 1.95427233144057744"," 1.95427233144057744" +"319"," 2.90872175877794703"," 2.90872175877794703"," 2.90872175877794703"," 2.90872175877794703"," 2.90872175877794703" +"320","-1.90766086568253024","-1.90766086568253024","-1.90766086568253024","-1.90766086568253024","-1.90766086568253024" +"321","-2.57895486614308833","-2.57895486614308833","-2.57895486614308833","-2.57895486614308833","-2.57895486614308833" +"322"," 1.56090664124655532"," 1.56090664124655532"," 1.56090664124655532"," 1.56090664124655532"," 1.56090664124655532" +"323","-0.04917993702332243","-0.04917993702332243","-0.04917993702332243","-0.04917993702332243","-0.04917993702332243" +"324"," 1.67922916485610818"," 1.67922916485610818"," 1.67922916485610818"," 1.67922916485610818"," 1.67922916485610818" +"325"," 1.00967167215127462"," 1.00967167215127462"," 1.00967167215127462"," 1.00967167215127462"," 1.00967167215127462" +"326","-2.24963051705412287","-2.24963051705412287","-2.24963051705412287","-2.24963051705412287","-2.24963051705412287" +"327","-0.86518707940547646","-0.86518707940547646","-0.86518707940547646","-0.86518707940547646","-0.86518707940547646" +"328"," 1.53703171785140680"," 1.53703171785140680"," 1.53703171785140680"," 1.53703171785140680"," 1.53703171785140680" +"329"," 1.22759001523508648"," 1.22759001523508648"," 1.22759001523508648"," 1.22759001523508648"," 1.22759001523508648" +"330"," 3.10677083726070968"," 3.10677083726070968"," 3.10677083726070968"," 3.10677083726070968"," 3.10677083726070968" +"331","-0.87431491973960385","-0.87431491973960385","-0.87431491973960385","-0.87431491973960385","-0.87431491973960385" +"332","-3.08727403932047428","-3.08727403932047428","-3.08727403932047428","-3.08727403932047428","-3.08727403932047428" +"333","-1.03131698728322196","-1.03131698728322196","-1.03131698728322196","-1.03131698728322196","-1.03131698728322196" +"334"," 2.45507200627730127"," 2.45507200627730127"," 2.45507200627730127"," 2.45507200627730127"," 2.45507200627730127" +"335","-0.28021010756667181","-0.28021010756667181","-0.28021010756667181","-0.28021010756667181","-0.28021010756667181" +"336"," 3.04144472838290270"," 3.04144472838290270"," 3.04144472838290270"," 3.04144472838290270"," 3.04144472838290270" +"337"," 1.38773294392880109"," 1.38773294392880109"," 1.38773294392880109"," 1.38773294392880109"," 1.38773294392880109" +"338"," 3.12335261984582058"," 3.12335261984582058"," 3.12335261984582058"," 3.12335261984582058"," 3.12335261984582058" +"339"," 0.51263792661432184"," 0.51263792661432184"," 0.51263792661432184"," 0.51263792661432184"," 0.51263792661432184" +"340"," 1.50341448392579013"," 1.50341448392579013"," 1.50341448392579013"," 1.50341448392579013"," 1.50341448392579013" diff --git a/test/data/models/strpde/25D_test1/y.csv b/test/data/models/strpde/25D_test1/y.csv new file mode 100644 index 00000000..73953cdc --- /dev/null +++ b/test/data/models/strpde/25D_test1/y.csv @@ -0,0 +1,341 @@ +"","V1","V2","V3","V4","V5" +"1","-0.0923149234704769839","-0.2140384391455752988","-0.8502613804854056712","-1.4707094979905095400","-0.7080733715160713038" +"2"," 0.0014240411989396018"," 0.2685521393903991805","-0.3023766095551068123","-0.7428944037950471202","-0.0126884301141694522" +"3"," 2.5772778539711342916"," 2.2165285177101008429","-0.2179143572409892871","-1.4773816350214576953","-0.6634957491820850928" +"4"," 1.8148225591096687204"," 1.4566567527446279140","-0.6317278581706028406","-1.4037834188416271619","-1.3738138332306224498" +"5"," 2.6309535515437545428"," 1.2938144640622737391"," 0.5633837005468698145","-0.7413637513443365190"," 0.3723049401493280786" +"6"," 1.5651362040972975898"," 0.4760924788968224908","-0.8172644609996990717","-1.8877981630999030038","-1.4699328671425069270" +"7"," 0.1487824450183397040","-1.4434432178274247960","-1.0631885610969429301","-1.5749615667966123667","-1.1361614486439453042" +"8"," 0.9212410922208309483"," 0.6515963928151590201"," 0.1088593357410635037"," 0.1936825105688665671","-0.0983536563553900206" +"9","-1.0434995193965854732","-1.3481869814904872129","-0.8988597324707203740","-1.8595332227235878975","-1.3672517858044159755" +"10"," 0.6228990942483531024"," 0.7987229832941840080","-0.2766272672056160897","-0.2298844647936721941","-0.2710781699756482643" +"11"," 2.9921603785746850868"," 2.0925740454252101941"," 0.1847792667577668191"," 0.3351666100096132306","-0.1523836830248914975" +"12"," 1.5488663902842962905"," 1.3106919447610705376","-1.2301233079233964141","-1.7626619576239319631","-1.7293453602163202376" +"13"," 0.1131441044900826087"," 0.0851708748660671838","-1.8486528618701383309","-1.4154627112170947711","-1.6188164477662185803" +"14"," 1.7806487599991756010"," 1.2975151147924053330","-0.8611092350359083047","-2.3442641351001398675","-1.8233331106816570433" +"15"," 3.1635623420064269418"," 0.1951110733054423063","-1.2793843412182206443","-2.4094825101417587376","-0.9670778051527124664" +"16"," 1.0588364995492853815"," 0.2182153893783450038","-1.8402673064101264799","-2.8200282558520246567","-2.6427148434662455223" +"17"," 0.7147145202933946617"," 0.7928999627277127926","-2.2504540181636345508","-2.2730453040825135957","-2.9129718056168028006" +"18","-0.8786881700324660205"," 0.3644730929091980487","-1.7016849054115099626","-2.0007172406477824467","-2.1379133333266286954" +"19"," 0.0431490882924135954","-0.7174096895019109743","-1.4030475325098248351","-1.4033725181464387077","-2.3775568843580376921" +"20","-0.0239184020557980936"," 0.5519623774893785972"," 1.0307150414386476722"," 1.6975861238084948290"," 0.9486815220497674117" +"21"," 1.2988411860903661399"," 1.3116709231623127074"," 2.0807049020348129531"," 2.6480004426310843613"," 1.7137922970101655551" +"22"," 1.6936711164441844435"," 2.6738879759411346981"," 1.6421071135169467148"," 0.4017649942786142292"," 1.6734971662883153520" +"23"," 1.9071677770511847871"," 2.0090122776313847908"," 0.4719190756667032138","-0.2079188664842399614"," 0.5737513473271379505" +"24"," 2.5297027368751492382"," 0.6722048899063582938","-0.6078264616872164350","-2.1060813937793860795","-1.6473487260772681218" +"25"," 1.3812953754756027713"," 1.5769936650627836006","-0.5380499259199204021","-2.3310194332225782077","-1.4914112289636709541" +"26"," 2.8971354308827201862"," 2.3835049013280098507"," 0.0018745724955639975","-1.9438312980689205212"," 0.0024435308283888846" +"27"," 1.6646547168945227124"," 1.6839320715316401511"," 0.8765400317794677099","-0.1148750767476303669"," 0.9103141707556207107" +"28","-0.0158262160104368776","-0.3269819531247101230"," 0.8166406415743865388"," 0.5950683214887458883"," 0.1935382822625203447" +"29"," 0.1255308366548529564","-1.2238989013448251519"," 0.0450281891380351074"," 0.1414927219739622322"," 0.5838801152910982895" +"30"," 1.3832201217419530792"," 0.3037609251519086673"," 0.5699177382964100147"," 0.2349593371001803543"," 0.1873546598832532828" +"31"," 1.1680373393900129741"," 1.5480841222480052899"," 1.6818452589694794508"," 1.5485706501317932915"," 0.6233682233600962297" +"32"," 1.9438629442153749771"," 1.3241477464827209332"," 1.3595851080829999269"," 1.7451185736038785645"," 1.3319489290766546308" +"33"," 2.2948208525217252962"," 1.8474988271405083928","-0.0533655882464184605"," 0.0614439250755564742","-0.0972715302066652909" +"34"," 1.2914285238374034748"," 0.4821050637309027831","-1.5264135713861564092","-3.8052686774206323506","-1.8923109124869872399" +"35"," 1.0616931164412455324","-0.8278247467353654354","-3.3173731761165754506","-4.1719474406721710480","-1.6051714853669942773" +"36"," 0.3502151975885500201","-0.7957766974521294223","-2.1136340723415361076","-3.0974221610137906424","-2.6914988746715535761" +"37","-0.3453353550243670744","-0.1796346659837120829","-0.9733546980878917676","-2.4091270655087608787","-1.3378707777075928842" +"38","-0.6029623900819842675","-1.1891665721836195413"," 0.4133905959674299968","-0.5392081737027345500","-0.0425176791999211379" +"39","-0.5797537764087855594","-1.0392876251882485761"," 0.5546118078121868855","-0.3338291751369281135"," 0.9230848004106237958" +"40","-0.6484556841894395518","-1.0869992077057495372","-1.0819881848905310573","-0.3605805174112503009","-0.9350351602531978834" +"41"," 3.2365454836176850151"," 1.8702793315927213058","-0.1832685381575494821","-0.8001107479102800291","-0.6593085284780915156" +"42","-0.2046354112242719792"," 0.6318726698478182024","-0.9856836799889687750","-2.0331376619872867373","-2.0970572234768054543" +"43","-0.5766155213963732873","-0.5254431948250466444","-0.8012509447137455831","-0.4115215385228155887","-0.5013227775901356598" +"44"," 2.7175645427020724831"," 1.1825977474105562326"," 0.1456462696757285513"," 0.0823906072320957084"," 0.0047642200316688477" +"45"," 0.9418246112446865270"," 1.5406807615661892719","-0.6589544495438603988","-2.4909411594342252272","-1.7942934045986596026" +"46"," 2.1907944134944989933"," 0.8434655619052517928","-1.1054747514020042409","-1.8196544031579631184","-1.4016373265519888047" +"47"," 2.3417363217553845978"," 1.4039555429061747471","-1.1253004646735322858","-1.6194526734222032260","-1.4172864015300934426" +"48"," 0.8540486237289612870"," 1.0112483474087987645","-0.7916566397364835916","-3.3266848093022773902","-1.7566939726304067193" +"49","-0.2306837310812557829","-0.8349520258513121185","-2.2335607272891730979","-3.1439597509271850484","-2.6163010153520556145" +"50","-0.4530296898959053076","-1.2156064242162358813","-3.1305130373004530497","-2.9311263189718985700","-2.2655222002935779813" +"51"," 0.1393190501267233261","-0.9560357989009435897","-1.6555729723064525061","-2.2277689999690464262","-1.4294658990249160535" +"52"," 0.9129420721038182807"," 1.2550615665289266421"," 1.2278092568765104353"," 1.4122058137358939334"," 1.5804069566952643200" +"53"," 0.6657324793243165617"," 1.5000335709760042047"," 2.2385954231118190272"," 2.3323604873428802620"," 1.6857629495769181904" +"54"," 2.0570527019339701624"," 1.5757186439572383740"," 0.5714883817667423260"," 0.9527290500400502626"," 0.4240177761569550174" +"55"," 1.6678374195301801652"," 1.4911421663716777353"," 0.9541809809823607047","-0.4664180244918187390"," 0.1960822257196815077" +"56"," 2.8577211120464194316"," 0.9831293059667589596","-0.5115923225610012892","-1.7575678760874167139","-1.2582478820824345433" +"57"," 2.7810904151014992358"," 1.4933632470084743371","-1.4269599354033750682","-2.5990734204476124702","-1.7442514829681214916" +"58"," 3.2981423695269076468"," 2.1048681981702537236","-0.2847352383197263026","-2.0554868231596534756","-1.1215892810051317774" +"59"," 0.6759422030868509346"," 1.1637398524543149936"," 0.8667439213919914121","-0.2303437535987218898"," 0.4358383133346549476" +"60","-0.0630448499682385727","-0.6503933571975240024","-0.2136783110983869194"," 0.0702010879101606644"," 0.1094604535145399377" +"61"," 0.0709320797989492768","-0.0221984551631843052"," 0.1017593530387895517"," 0.3359435659273258823","-1.2766247783404791605" +"62"," 0.2872264506701306397"," 0.3567162872673741991"," 0.7764643504419099784"," 0.6242770001214216213"," 0.5495818012907850436" +"63"," 1.3021635370112512042"," 1.9582180794573547100"," 1.8123612955753252152"," 1.6804330889402947502"," 1.8337776874038518304" +"64"," 2.2246631351174555036"," 2.2062020766046055442"," 1.6144752640129416132"," 1.0306063081605176812"," 0.6260908034314864867" +"65"," 2.9376745626618485652"," 2.2223804276995227092"," 0.3573168256417946775"," 0.2137690138636909598"," 0.3623178294720440507" +"66"," 1.6747709306913602934"," 0.0300896677468452944","-2.2314824423456967040","-3.7647418805164254429","-2.0598428950056315578" +"67"," 0.7835659645640222770","-0.3240709701254526065","-2.7133805811393711949","-3.6712679694050027734","-2.2962760583835049033" +"68","-0.5191750414067810571","-0.9714399458594589198","-2.0632074513968579055","-2.9990255551952360591","-2.3391573147185060755" +"69"," 0.7904451674401430372","-0.1642632125779407981","-1.4193082203318294621","-1.5743126326763170475","-1.1522690018542574020" +"70"," 0.0327332919039016734","-0.2340515495899792020"," 0.4127649087222580171","-0.6037926481873023832","-0.8422771372904502840" +"71","-0.6285856117861503556","-1.1086284873581986332"," 0.0458875196384286310"," 0.9377985462597211441"," 0.9793623264658066763" +"72","-0.8022375368079630586","-0.8991047702237368044","-0.6812968267174140946"," 0.2951633404772402991","-0.8693358785227459640" +"73"," 0.6218564016034757724","-0.8928231604246623654","-0.7655340180000522743","-0.9471526648694506001","-1.5133665475256163901" +"74"," 2.3384467643574442519"," 1.7967517018936198792"," 0.2620910586910492057","-0.1893899030868385347"," 0.4272620116601840712" +"75"," 3.1830498123952435385"," 2.1528421356191342895"," 0.6718786113552653871","-0.0027401462869571236"," 1.0525271277185843655" +"76"," 2.9886003658133626359"," 2.4888803317806726945"," 1.9200989549759386321"," 0.4841356381011449050"," 0.6882364354374550519" +"77"," 2.7273371606670475664"," 2.1486236364835997747"," 1.3056021324099154057"," 0.8592632489275052743"," 0.6114379502180773418" +"78"," 2.5012028074394661026"," 1.6455616768555232365"," 0.4613737827398277647"," 0.1195413638938737644"," 0.3449109127098103356" +"79"," 2.1552243080136470610"," 2.5020065557911812526"," 0.2100473825581990472"," 0.0908443206053338587"," 0.9463688338588283067" +"80"," 1.5019725888627770694"," 0.5548372338604116161","-0.1452680217505594173","-1.8583258648517197997","-0.4319965388165154518" +"81"," 1.9200256720324093695"," 0.8315000238679116640","-0.1917412874875230044","-1.1268944878829878498","-0.8133511486033105919" +"82"," 2.3437148201133695125"," 1.4013316988412760633","-0.8360937871852474057","-1.6938726860210633340","-1.3478269920768666257" +"83"," 1.6236529654932085887"," 0.9912724281306404261","-0.9862363442393928814","-1.9907471488534240756","-0.5592499975290612380" +"84"," 1.9179226492972503149"," 1.3955540183584811409"," 0.2651274055023042919","-1.5805201938481512336","-1.0304581614199597173" +"85"," 1.0242333198637987302"," 0.8480609631245479285"," 0.5325106801706390725","-0.6582846639129414923","-0.5627886360065218474" +"86"," 0.9557587960328715049"," 0.3855627662305597947","-0.4861554624640793687","-1.0434701012179978807","-0.8225264937660379250" +"87"," 0.1938623729740803769"," 0.2414871857202166572","-0.3674907905960012044","-1.3584397700021255684","-0.5917562993011280525" +"88","-0.0887901587741769527","-0.8363698969359397717","-1.3565429836820237508","-1.9802249955574999785","-1.7238348617656891193" +"89","-1.7672111145295337220","-1.2148548109733345868","-1.8714562871929729670","-1.7167491914324717328","-1.9427530513699022841" +"90","-2.4027921752254677301","-1.4522219713744939362","-0.8521126471522021406","-1.3381998704404178824","-0.8983874344472044804" +"91","-2.7123227698504921435","-2.7987957578063560327","-1.9197093757266252556","-1.3049089144643013505","-0.1973702626002680205" +"92","-2.1396646222249340319","-1.9375661265754851037","-0.6215642280009191500","-1.2074435363978508473","-0.8904655959709898427" +"93","-1.2903566861777209240","-0.8794454602964014711","-0.4376705405596283960","-1.9301020531800843205","-1.2910044526306745372" +"94"," 1.3173488587515733705"," 0.9989489527708794725","-0.5966659295388579975","-1.0568411735691516373","-0.9105154443002509979" +"95"," 1.2945321401376497228"," 0.2867261473070438216"," 0.7408730760706470075","-0.5290169248060893059"," 0.5420792901598404656" +"96","-0.8257961787395329267","-0.2758205025564123281","-0.0147151475025056877"," 0.5145305308270105016"," 0.2658002307885237725" +"97","-0.5508155134480288151","-0.9238565642247106302"," 0.0657583844761904790"," 1.0923646097634438501"," 0.5778981338204450813" +"98","-0.6311447240048109197"," 0.2868133918026757323"," 0.2831084665153186242"," 1.5391584911218796350"," 1.0948533364946750890" +"99","-0.1378377670597857874","-0.3377234367208944432"," 1.1159325709915881575"," 1.4377258140297886069","-0.1646324352415846626" +"100","-1.0906427564330116731"," 0.1657538095364276542","-0.6668512285294529995"," 0.4505089908059236037"," 0.0985956383299307348" +"101"," 3.6248562605338965348"," 3.1699063460023264582"," 0.3436779918157953362","-1.5940373645826704241"," 0.0136867446447651309" +"102"," 3.5597220735962626925"," 2.9263712218083570704"," 0.2408012664693739424","-1.0648990331259906572","-0.1903104781780374510" +"103"," 4.2494413250497666823"," 3.2236286610936564223"," 0.6111171013259683038","-0.8409102596807737084","-0.2635210364987640164" +"104"," 4.6333713702718331007"," 2.7830557718859219030"," 0.6736421526551850114","-1.0564371930612490580"," 0.0734845414475858438" +"105"," 3.9867960771967836386"," 3.0615475091905905991"," 0.8269233382994625181","-0.0321225496268363608"," 0.1029893997326872257" +"106"," 3.5683998706902961828"," 2.4391699865032143713"," 0.5457634366983765695","-0.4126793690031045347","-1.2299718028340578257" +"107"," 1.5455078069373007210"," 0.7156279807219477762","-0.7827650451434533529","-1.1903953369206994317","-0.8907669434126853636" +"108"," 2.5583777215659013748"," 0.9931894614062741766","-0.9782868274955678345","-2.2977395898777661642","-1.6892842497128901513" +"109"," 3.1110683168089350303"," 0.8262597419412535116","-0.3501190702605786464","-2.8511144975414453029","-1.9469316351946313048" +"110"," 2.7956696583295372882"," 1.3418300192792906866","-0.5433989745298111185","-2.8714353413976887452","-2.6553566862123347825" +"111"," 3.2720737961239194647"," 1.5004922211892357531","-1.4429073163293482107","-2.3726427542517738445","-2.4826478093534465330" +"112"," 3.9121348716465096373"," 1.5389889803804461810","-1.4382676199289918806","-2.6398125689308846731","-2.2707823353882372608" +"113"," 2.0301084819462684727"," 1.2430523728524760507"," 0.2886256149924525394","-2.1017481525930858943","-1.4356665822392882248" +"114"," 1.3528270654581970867"," 0.2438374085742811559","-0.7512522576661837537"," 0.0172025603512662162","-2.2947766983499700011" +"115"," 0.0818823161976071634","-0.5948336647617207262","-1.4994324046000770956","-1.5154358180854710092","-2.0029776755123553933" +"116","-0.2285454578580252138","-1.5613311238981790741","-1.6923773578331355871","-2.8413450498298029601","-1.7949455166618024649" +"117","-1.0936652229817833692","-1.2813091596353196611","-2.3148152052119526090","-3.0238020804320555612","-1.8932314394752931541" +"118","-0.7350268076130999084","-0.8374925528039051104","-2.1014783335733455694","-2.1019033118224323964","-1.5509425076672533894" +"119","-1.3765475655545809097","-1.1189955951563392844","-0.8358847105601734384","-1.7391014863055545003","-2.0461752201641250082" +"120","-0.3805290380139908502","-0.7884972176979391234","-1.0053470501814059102","-1.0204840841745514979","-1.0510397192178730918" +"121"," 1.3831592312817471147"," 0.5739272802998587331","-0.1243253133138432776","-0.5351351700202127137","-1.3194212921340211508" +"122"," 0.5328502383421294120"," 0.4159388922707635272","-0.1470923487746176872","-0.1706123090241141727","-0.3005845313711751343" +"123"," 1.2972196441121650601"," 0.5397997440290945859"," 0.5908755584925214910","-0.7294831835040674894","-0.8087896668696163971" +"124"," 0.7799682693295341140"," 0.5390695610400206839","-0.2347111623658801882","-1.0763055263969194542","-0.3681767861100464501" +"125"," 0.8562926575796248052","-0.2800739408405064634","-0.2956633158750400225","-0.5490636249658717993","-0.6944068574227491020" +"126"," 0.6601154520847661855","-0.3208543990840077020","-0.4498038621890959599","-0.2569470285238560359"," 0.1401847743829757464" +"127","-0.3598930090617468158"," 1.4850756163543934463","-0.3171677122599920740","-1.1577388453794019707","-0.0740846710154456078" +"128"," 1.6651306285495257598"," 0.7146270983298307344"," 0.1403745717505751056","-0.7698777548735884491","-0.5775493014631850608" +"129"," 2.5600954003131470849"," 1.6372145822134860360","-0.7874470737024611422","-1.8034066029821262944","-2.1809938330740696877" +"130","-0.1505920636297186643","-0.0279297308699648639","-1.5396545391329523600","-4.6415455171793809086","-2.4924076351078747749" +"131"," 3.1083726621756571085"," 1.7989230850920161497","-1.4247842106571297904","-0.9612805164249340617","-1.5638761322966345801" +"132"," 2.2587903029491736007"," 2.4755510040882442446","-0.1597839458131370405","-0.8258218151955696307","-0.1216351535909160897" +"133"," 1.8693902548143737086"," 1.6565321654058628997","-0.4314087367427612563","-1.0339537522463948527","-1.0036109228964962270" +"134"," 1.4800782659021254339"," 0.9480982300218354641","-1.3061007235684223282","-3.5502371628510136503","-1.9323993700365851289" +"135"," 3.3271405023375728582"," 2.0893606035138230226","-0.6173909465435551969","-2.1784551286177404883","-0.6172305366323536102" +"136"," 1.5800404677817858623"," 0.6202874644077747135","-2.7081024200745273944","-3.7784309676437732861","-2.8675372676682777673" +"137"," 3.5739708742167750621"," 1.9288889830128819192","-1.0114443889934039422","-0.4553649439501483709"," 0.5604410038117387804" +"138"," 2.9558460842362332954"," 1.5873198417625853374","-0.7067259284283314846","-1.1497201160780678997","-0.9783835371910185597" +"139"," 1.0760797824411729717"," 0.7096975248198844621","-2.3730934601533437700","-2.6055752262566462818","-2.6469918114305919232" +"140"," 2.4565260412321596739"," 1.4351702297423345467","-0.7213931014067602732","-2.1755432622917667551","-0.8219032183644759959" +"141"," 1.2470637080219146853"," 0.8246734277073439756","-1.0793597278205331325","-4.0294270299638093036","-1.9816759381533242124" +"142"," 2.3790740263799419196"," 2.8882772396257676562","-0.7094896337902487637","-1.4000588149219914680","-0.9853842922208539967" +"143"," 3.0856386381408102970"," 2.3830735802764446696"," 0.3442976393844295324","-0.7016442226162716844","-0.2476086780887007399" +"144"," 1.2767068293488641473"," 0.6108063729867034830","-2.2499430052222155751","-2.4811407511839203011","-1.5171002688696939575" +"145"," 3.8011215101583388787"," 2.2928785167289000846","-0.1430664124716709562","-0.6352404066690781059"," 0.3014254204185690122" +"146"," 2.1273098736601823155"," 2.0435693132075369860","-1.3635420448691977224","-3.4956575900892414843","-1.9323069012129543420" +"147"," 3.7956653595551799185"," 2.2334140361517480500","-0.9049427307034132451","-1.8169101447170064034","-1.0599768713266490838" +"148"," 2.4922473727320095804"," 1.2103788384363658448"," 0.4546170320087372652","-0.9960121186638274393","-1.0025979230926704844" +"149"," 1.2237895601400712309"," 0.7760807529023855400","-2.4830003994338878393","-3.9754930717864143119","-2.7828119212448756414" +"150"," 1.6291940649290208576"," 0.7445741177546177925","-1.1341788458039958609","-2.6628037277905702851","-1.9470621017291480648" +"151"," 2.1228503764345671989"," 0.9965863060543060925","-1.9533776294005222862","-4.2417993971210439241","-3.0545248030380198756" +"152"," 1.9278839170035069195"," 1.5245752692597895894","-0.9969308801170059242","-1.8502977385338137406","-0.6482191475461037689" +"153"," 2.9211686357612411946"," 1.9972335367873399470"," 1.7515379365846222015","-0.3949807940872548384"," 0.5074179992566504316" +"154"," 2.9820911656324775585"," 2.7523804462362999601","-0.4968866024294885664","-0.5530617458702448141","-0.0058843380211961692" +"155"," 1.9524749613760234990"," 2.2509799981648828116"," 1.7199584272557022491"," 1.9187966451552718183"," 0.2568399878353699872" +"156"," 1.8947412951810680415"," 1.4095374195850487453","-1.1133854583071929323","-2.2709439342448911603","-1.0556240343080822708" +"157"," 0.3832848293462592926","-0.5203432685003515079","-1.5022237348669587043","-0.4511548248741376055","-1.0245542603746402577" +"158"," 0.4469948140270432191","-1.3432362299507361048","-1.3523875991899156901","-2.2127805237750970413","-1.4103453954112734614" +"159","-1.1773897805622479673","-1.1163463356274387905","-1.6426522033738510942","-1.0888016620634803910","-1.6292865068239130721" +"160"," 2.9191837463698186994"," 0.9275923054101076204"," 1.0815190024462273399"," 0.1667932504436776542","-0.5696554876572903492" +"161"," 2.4558274432947158061"," 1.3068469608396893200"," 1.2842331287443060628"," 0.6374512447824365324"," 0.2650301424688910057" +"162"," 1.1744175252919228924","-0.1122305073269027620","-1.3492716829124618005","-1.7229422111338970058","-1.2612713162592483762" +"163"," 0.6242384981405386668"," 0.8057906228028474116","-0.4151972038587051772","-0.8756709378787396192","-0.5499695768442726118" +"164"," 0.7462906315763355725"," 0.2676308342942294582","-0.5548274823044294646","-1.4127243224018157797","-1.1525611421647072863" +"165"," 1.1553169327233965280"," 0.9219727068691583316","-0.8610219441196590440","-2.2001778277110775051","-1.0501465611764366770" +"166"," 2.0026979963808870799"," 1.1651004905337007944"," 0.0359499581160432902"," 0.7728447847063043552"," 0.0264644639342270782" +"167"," 1.3727484222104666678"," 0.6765718015896222681"," 0.7358819492859747236","-0.5595235207375351960","-0.5497475566634879574" +"168","-0.0209436454972457275"," 0.2663239262188936141","-0.7572879364735666252","-1.3294642569879608907","-0.6913123477292560937" +"169"," 1.1317290477042400987","-0.1769013922751262458","-0.8494430280315635740","-2.3861846890793110276","-1.0658814312557702841" +"170","-1.0841094156619281996","-0.8131269609628135608","-1.7438078281505311473","-2.4441760446616775937","-1.7628145264035119943" +"171"," 1.8638956781510866989"," 1.0897508432195772698"," 0.1786076023975942673","-0.5274557000293447206","-0.4126026907897920037" +"172"," 1.5012583114130921835"," 2.1925824787141903194"," 1.2274199437314983197"," 0.6167204074597136820"," 0.9215636521097505529" +"173"," 2.1583527348059621254"," 1.4720967299613525459","-0.3960756079867931989","-1.4351941446473739372"," 0.4230975459557098084" +"174","-0.5028345444933767228"," 0.6026840898641891986","-1.4392535167506843585","-1.6442466473262418170","-1.5825678478991394016" +"175"," 2.3184238814040374344"," 0.8684416407878760014","-1.3446557219947634643","-1.3540996097917212815","-1.7265350400454786417" +"176","-0.7492436303422915778","-1.8001643938708062898","-1.6859299571320753852","-1.8880219748392481627","-1.6777626127814035950" +"177"," 0.3144586222482959603","-0.8696055497666991263","-0.5643723159466156325","-1.1874924630107610568","-1.3660493241453968150" +"178","-1.1428416505418037552","-0.8323298329782542471","-1.2086908961965199261","-2.2061314598363064299","-2.5254747717724623790" +"179"," 0.8858310699100422347"," 0.0840633655501160093","-0.6795073741441328696","-0.1110101770351512585","-0.8662837139934784769" +"180"," 0.1742141883779928235","-0.3532239772582671522","-0.3331417716112723415","-1.2392195644244177188","-1.3114970787067730118" +"181","-0.8448986751122959937","-0.1745335916198133275"," 0.1853801570976228164"," 0.2599325949117800572","-0.2309660140283322227" +"182"," 0.9611910420079969875"," 1.1591005198647479357"," 1.5298544863465144417"," 1.6644342920036241384"," 1.8950258805615147750" +"183","-2.2476601692458193504","-1.5641780124828983389"," 0.1403262326108062896"," 1.7709107079358119563"," 0.9637697465374359673" +"184","-1.2408087810504817572","-0.8287996738872344116","-1.0262413665705940602"," 0.0306448991749311006","-0.7016993455018440962" +"185","-2.0702274502229425224","-1.4915858062239977233","-0.0879627266828812704"," 0.9585923463768682984","-0.0423889052250153719" +"186"," 0.0085459591931852652"," 0.2028537723918382163"," 1.8452834408369886976"," 1.6025905640343467429"," 0.8150788629396508167" +"187","-1.7871762526092520584","-1.0683984826215264796"," 0.2500933705050367162"," 0.3874678041997562938"," 0.1768628998476718395" +"188"," 0.4205010847020365095"," 0.6997090484417090028"," 1.5481393704270227651"," 1.8158394771600863127"," 1.9567028572684428411" +"189","-2.4371832761563947400","-1.5750602785244498527","-0.6394551262370881117"," 0.8473041896531579020","-0.3998251187416341779" +"190","-1.0028899466084664205","-1.0252240834668842062","-0.9297065413519394195"," 0.1354343665833360744","-0.2718289648796994307" +"191"," 0.0070913523392558409"," 1.0619403800361517654"," 1.5935016918010864728"," 0.8457823481551959288"," 0.8309135252774949576" +"192","-0.3464184344772238133","-0.1675212100872434107"," 0.1946947966495773952","-0.9369028415201181570","-0.2582181379576270475" +"193","-1.4854486666000059625","-0.5195810132897392686"," 0.8657215177490715785"," 0.9878065398523492302"," 1.7841331784640914737" +"194","-3.6967359393051912875","-1.8950255013983758889","-1.0683961055278039520"," 0.0485242660962189598"," 0.3541196678306219869" +"195","-1.5841848872805650572","-1.9673924584296806906","-0.8697109842353218934","-1.4161540137946249107","-0.1199144923977421562" +"196","-1.6501350088246828918","-0.3244558697769341915"," 1.0022774938350247353"," 2.0725534712604369858"," 1.6133231983674369836" +"197","-2.4671462009311588837","-1.8293613717987862177","-1.1861426678273758739","-0.8885365292825918582","-1.1111996515261466367" +"198","-0.3954948083281462634","-0.2457996703354066170"," 1.3024309906466231546"," 2.5043731313531867322"," 1.0007464774100980343" +"199","-2.1300211761990688331","-0.8204139564193517753","-0.1278954281814596028"," 0.5995901814814588171"," 0.3906802325999855219" +"200","-1.3849758075503575405","-1.0715033508511699889","-0.5840265200633205644"," 0.6323452583644073588","-0.2346948126386444455" +"201"," 0.2183359563054805830"," 0.5443232612648638558"," 1.6164976796580945440"," 1.9426735557142866817"," 2.5237619341483092938" +"202","-0.6848306035003492998","-0.0792838755188813582"," 0.3914419718378787660"," 0.9110877649647872722"," 0.5931259715744947592" +"203","-1.3276618375024571428","-0.4307261192964181307"," 1.1913292681595293310"," 2.4524612487131483007"," 1.7493825042209367737" +"204","-2.0513467333798542924","-1.6089214237489999348"," 0.8175160520722314361"," 2.4301415096898177914"," 1.2895255610092934972" +"205","-2.7751394435399920901","-2.7495555957126223134","-0.5572505107756676734","-0.2702739071922228842","-2.0174069322166614526" +"206","-3.0978131896024527769","-2.2437780491950261030","-0.5566617940537884612"," 0.0144491088089918340","-1.0216166593173408028" +"207","-0.4414840760464742164","-1.1439572309820289497","-2.9548768173181185759","-2.8804407852897870868","-2.7820727053568790055" +"208"," 1.2019392877424139865"," 1.3510179189630795449"," 0.1981974597339942745"," 0.0068183085865617943","-0.3896219495490301776" +"209"," 0.5266405760028934901"," 0.8567756436326260383"," 1.9679133893499232144"," 0.7346722405390863075"," 0.2878637336058154084" +"210"," 0.6353523548320417769"," 0.1338706594535895578"," 0.2581232896395014853"," 0.3289661112956822620"," 0.2293577808218680292" +"211"," 1.7324781904326920223"," 1.1853374493095636399"," 0.2487123554243745316"," 0.4282338236563727474","-0.2334749827367834096" +"212"," 1.5025387309950730685"," 0.1105702452905443778"," 0.6855669130259213206"," 0.1995086025516895900"," 0.7043685239102748241" +"213","-0.0005683945575914104","-0.3837345273326742690","-1.9387914680471736162","-1.9394247107999085245","-1.9395630672616237522" +"214"," 0.0078241585072372222"," 1.3949947066792707240"," 0.9532635789444899865"," 0.8329065447800833022"," 0.5424400622538956274" +"215"," 0.1966559482082463062"," 0.0992121832790575364"," 0.4661899974539636116","-0.7264548303753018965"," 0.5396951210312672664" +"216","-1.2605352285276398838"," 0.0482971286671166622","-0.5666303740631122299","-1.2811022375595593203","-0.3335910094387530278" +"217","-1.3187469595602132610","-0.4492247619021177973","-0.7098623277315065927","-1.8428926456990737393","-1.5410003026187211184" +"218"," 1.4810348305132949864"," 1.1755673238524702029"," 0.6743256053264269356"," 0.1536204463109316354"," 1.6456039481378799127" +"219"," 1.7165052521420935960"," 1.8059254835203681910"," 0.6612350135242527349"," 0.8050598851761159302","-0.0203638838864643734" +"220","-0.3603701784251853169","-0.6361427630773526243"," 0.0754136995059526694","-0.9765133736968958367","-0.2337886553084362329" +"221","-0.3542449830594794347","-0.3477691428400856433","-0.3180884637877412491","-0.9573588018712537728","-0.9076311675438231141" +"222","-0.0279541716662278089","-0.3525032479424086151"," 0.0770927949482125840","-0.3733454929792527910"," 0.0070220642383438392" +"223"," 1.8197276798236363682"," 1.6555965883830812135"," 0.9223529423914084147"," 1.0207658902006506718"," 0.4284551927010676886" +"224"," 0.3627377111619216055","-0.1787857112214494837","-1.0405419501736012933","-0.6190167085731729246"," 0.6082592369880185368" +"225"," 1.0234911550647245448"," 0.4157793985553546179"," 0.0192669252833183313"," 0.2019562207992524339"," 0.2296704847763025303" +"226"," 0.3043075211867553032","-1.1819579189947524434","-1.9585774489991547576","-1.8760618209981965165","-1.0901799360941517580" +"227"," 0.7085037629360567690"," 0.3567782930142648912"," 0.3144322337476965767"," 0.9278589704719460984"," 0.4859997723444834938" +"228"," 0.2945785548043495794"," 0.8723587162067643064","-0.0674869368500325972","-0.0305785141013421580"," 0.5340280825925686203" +"229"," 1.5004127818685630835"," 0.6286363255766200808"," 1.0347753255614793311"," 0.6182888954524313752","-0.5589868502053527699" +"230"," 0.3230397139445337351"," 0.0963607940078556879"," 0.5477742094319343336"," 0.5690217832448601909"," 0.6103386449684142789" +"231"," 1.9903873142152677111"," 2.2212360237304862309"," 1.8718471094791930831"," 1.4300073841499925109"," 0.7711983422619139716" +"232","-0.5419847819352010543"," 0.5772794402766178168"," 0.5481797236604816215"," 0.4972569275588791804"," 0.3881486181480439668" +"233","-0.2360255322601417238","-0.6611717624206584487"," 0.4383612325493334572"," 0.2212616708596309156"," 0.2794566102881095859" +"234"," 4.2216983788000446154"," 2.3158433157003392999","-1.3723201866901324486","-3.8888126933217441739","-1.3599451090975303025" +"235"," 3.5334225957426079745"," 2.8586188527254843272","-0.0612748009101913849","-1.8294871574313626983","-1.0665531337204738893" +"236"," 4.1893703208952475237"," 3.3851647648997600371","-0.1074583585038227512","-2.2681547406205142536","-0.4662271617463037421" +"237"," 1.0584854651971424833"," 0.2651640039641744995","-2.7961796006813490756","-3.5933755640380060647","-1.8092486545109369711" +"238"," 5.0692887934939250272"," 3.2257443566107331101","-1.4398088077913802074","-3.6025856836811227524","-0.9369969102672592864" +"239"," 3.5637225852129561510"," 1.8570483453455843836","-1.2614794249978067420","-3.9683132546367279048","-2.5004678730831608746" +"240"," 3.1750944280217936466"," 1.7783451157988099389"," 0.0598330961086644963","-1.3497981085690151648","-0.5202169248073525987" +"241"," 1.1974683974102906525","-0.2729815577236886504","-1.2825700708417042684","-2.3506202457390958926","-1.3283695473514289809" +"242"," 2.6534331655332756839"," 1.4107653888199649383","-0.3815120553315668461","-1.1291024634612196742","-1.0676603848247012696" +"243"," 2.5371937976418608152"," 1.4034838897149390924","-0.8822934513202600471","-2.4123462367562042985","-2.9161866666600184672" +"244"," 4.7868380933577387992"," 2.5551530166479694550","-0.3370507859350233004","-3.4403307456295491029","-1.2908349710791648945" +"245"," 4.5619144499648260904"," 2.1475693068701455779"," 0.3540664820812406410","-1.1856431317886948484"," 0.1646517711060700995" +"246"," 4.5741480290384917140"," 2.2998859308143377866","-0.7934107311204218194","-2.2670513123482494144","-1.2275583277126456139" +"247"," 1.5196014862146507429"," 0.7261105704621528822","-1.9381848422267606846","-3.5703564258016586841","-3.0179916587280430917" +"248"," 2.8781413485352174142"," 2.6922357342519354084","-1.5597297858834533457","-3.9082223364976793611","-3.4353495724223082064" +"249"," 2.9522191800001622575"," 1.3134212201761934491","-1.9063694365374121986","-3.5836702708660119754","-2.2837433183538435877" +"250"," 1.6867362829599084062"," 1.4256790189131967050","-0.2380214530491140401","-2.3266798399182007095","-1.2998856091077650721" +"251"," 1.6222504895311646855"," 0.5230618140892165924","-1.3318268957732872781","-1.8562946389396082214","-1.3211759640997358112" +"252"," 3.2413736326155837553"," 2.2322080417351775061"," 0.1757811970462987983","-2.9812257732907481156","-1.3659270493429183091" +"253"," 5.5100262272633067084"," 3.0722281549884820073","-0.4076633562846945225","-1.3340244361738036183","-0.9631925317845193568" +"254"," 3.8259381761276398670"," 3.6567332690295053510"," 0.1644965363074028519","-1.7384058711964991417","-0.6996874587380012001" +"255"," 4.3154933414217877541"," 2.1899589366099192489","-0.8818035884395934998","-3.9531465061846797759","-1.8360248550246101029" +"256"," 0.5690854596595847914","-0.3987375351993875383","-2.4544607243443112843","-3.2872012197642797027","-2.6513930433946937271" +"257"," 2.7098029481072716251"," 0.5177095475573847416","-2.6402759032494889091","-4.4800479377258737301","-2.4406721936418733776" +"258"," 1.0300918901560200958"," 0.0972394488172295679","-2.6024883186646645683","-3.9860505303156239520","-2.7427376316392750866" +"259"," 2.6649078886331185601"," 1.0181966344977118055","-1.3659898869648470221","-2.5186845530793298131","-2.7397508694051149192" +"260"," 2.7810531344850804025"," 0.7932596816998229716","-1.9162795370744092338","-4.8053181515198559737","-3.2587459047047264704" +"261"," 4.1545347481470233930"," 2.3329389008553547136"," 0.1331492622659633529","-1.9316865681388595277","-0.7360686069831178235" +"262"," 4.5893995173538781884"," 2.1428745924145937707","-1.1494036167511441082","-2.9082243336078530405","-1.8358885043288815098" +"263"," 2.7883529741557335768"," 1.8802403010508219605"," 0.9341885427189098312"," 1.2039056382430737280"," 2.4838486965148693919" +"264"," 1.9926876600639906734"," 0.5311233418642121729","-1.5419618802995360696","-3.0176457459983874188","-2.0412300343336324815" +"265"," 1.2771460406601229387"," 0.2267630424319072857","-0.8113592713341982732","-2.9555220948337765918","-2.7920365873586576733" +"266","-0.2732079942588901966","-0.0985445404438472089","-1.7832650264369820370","-2.7074601472930752699","-2.2205667911754765065" +"267"," 0.0232545369449331241","-0.2775175139717297457","-2.3606500981477931411","-3.4328679957981780291","-2.2330506563078760252" +"268"," 1.9609184039411999834"," 1.2831792350104491707"," 0.2014841746060372918","-1.4458653619747698915"," 0.6608540077971700732" +"269"," 2.4707321560574322383"," 1.9967904337846154039"," 0.2085344333831360975","-0.6228000939027824590"," 0.0095121487094638191" +"270"," 1.4343204439480956580"," 0.3790662803498421884","-1.5854943121836608810","-2.0564062692277662592","-1.5852389410710634454" +"271"," 3.0762429570324711925"," 1.9124997302302571001","-0.4519275604449960460","-2.9133964518584773984","-1.8750943566172149080" +"272"," 0.9381645327876686480"," 0.1625291729171520205","-0.6561794648045187195","-2.0608609559814619061","-2.5602410402036697157" +"273"," 1.1131324301216884987"," 0.5514026835473800903","-0.9302906183538663942","-1.6661385295415160890","-1.6704871335370146124" +"274"," 2.3644581313089525487"," 2.2765869600890340507"," 0.8319845069226675660"," 0.1521967692204470590"," 1.3189583441362291438" +"275"," 1.3669280515219188743"," 0.6650407913587194075","-0.4198112305975889580","-1.1304830054529306782","-0.7752580293653961174" +"276"," 1.7084840360873809750"," 0.7142398797840097124","-1.5425420918901515677","-2.9659341933713578854","-2.4204000516393682219" +"277"," 1.4048466526078267069"," 1.3854977374254104916","-1.8415870877115190218","-2.3478112991730135661","-1.9469607971372122623" +"278","-0.3980258704371917311","-0.3378952736238742816","-1.2560516877716101369","-2.6130696591981861232","-2.3160028147558930911" +"279"," 2.3186328153613411374"," 2.0377555929472657148","-0.6008063253098853140","-1.4379577892428845320","-1.1369842590226240109" +"280"," 2.5654834805349198135"," 2.1490924375499207422"," 0.4753139092280275757"," 1.0558511827489718282"," 1.0327095699744877066" +"281"," 2.3165468934953956648"," 1.3752534782421181880","-0.3088882363917279106","-1.8121551972673501929","-0.8656017648450272661" +"282"," 0.1628950975614165686","-0.2407762450383175157","-1.8238006913143904875","-2.9977966294571145589","-1.8903066389268139424" +"283"," 2.1158045689296125502","-0.1091710623077133402","-0.6078629126752684853","-2.2639507109795231621","-0.8096429361630467225" +"284","-0.5393913897046370698","-1.1661559876584357553","-1.6942078572861638541","-2.3220771837905185286","-1.7586641845583825816" +"285"," 1.1200166346977069587"," 0.3647295114202870892","-1.9115428525159274820","-1.7941067777953030316","-2.0384041984655874025" +"286","-0.5665175201264971427","-0.9367830477217540253","-1.9420796665735826636","-3.7539421214322681308","-2.3859532822615312497" +"287"," 2.4168535694805775016"," 1.2435293208682081101","-1.0624531959335190567","-3.0936418131589906722","-2.3604478277443003975" +"288"," 1.5965409844348921187"," 0.4253507823318793402","-1.6619397205253729766","-2.9491537576710915580","-1.9078103616509154428" +"289"," 0.0382875581025688971","-0.5078252846088271433"," 0.6452236759520264542"," 0.6179483873584372677"," 0.1834319553007532078" +"290"," 1.2991290871615921443"," 1.7363983002130447542"," 1.3697326067895589929"," 2.3879430903785419105"," 2.2363937331988905655" +"291","-1.3691754125942336984"," 0.2431764197938632854","-0.6362136289125388533"," 1.1562157851562291366","-0.0972015125860805629" +"292","-0.3442197417913342439"," 0.0438255679940516840","-1.2412565090801552792","-1.2904720740864790152","-0.9549198235456699546" +"293","-0.0832518884417811078","-0.4517983412317992942","-1.5727218800700737411","-0.9096987874255686446","-1.0547196090010237945" +"294"," 0.2836594049933927053"," 0.6648521199268505599"," 0.5410253737352952452"," 1.4161625802222967963"," 1.0021072010007179287" +"295","-1.3532922545500472022","-0.9297955701692510733"," 0.2633200411928720563"," 0.5098198409648423413","-0.8463989816540167244" +"296"," 0.4384428615355150383"," 0.6550109094531401110"," 0.8151611991828680015"," 1.5767246890390078651"," 1.3531442578846710756" +"297","-1.6851766090575099888","-1.8725770698419392790","-1.2296252942585164103","-0.8654182741614144803","-1.1491359180680622565" +"298","-1.2995809156013988783","-0.6359728844321383967","-1.0865660923409214966","-0.6676630581967986089","-0.2239475959063831345" +"299"," 0.8554905549105185081"," 0.9613439023862407895"," 0.5168396423015351182"," 0.4373602057725667902"," 0.6555641926972959332" +"300","-0.0717146205094846279"," 0.2294156707571985421","-0.4818388627624097253","-0.2539115067603588960","-1.5711201296806065475" +"301","-0.9049310053388904818"," 0.1717258619581180645"," 0.3590128908991879753"," 0.8811076548064100677"," 0.8392192894675223336" +"302","-1.4183288695969413773","-0.4803066548003922520","-0.4593215305530738979","-0.6236651783312698871"," 0.3496545629990333026" +"303","-1.6420926310916976743","-1.0346388575232319251","-0.8533655505997390645","-1.8330607893827561838","-1.7603519015212234500" +"304"," 0.6497268410560839147","-0.4265715784562320034"," 0.6507739448932784443"," 0.9407239856588078819"," 1.4184495144908710884" +"305","-1.2447152011656570370","-1.4349044024499795214","-1.1407511737262119311","-1.3555325121382164610","-2.6156501522811965721" +"306","-1.4597931246858908416"," 0.1698672701869234358"," 0.6888142445942585512"," 1.2676233506569607457"," 0.5084136969684145413" +"307","-0.9140048133020144405","-0.9654696180034419983","-0.6608957711289896730","-0.2852916256659271954","-0.2249446643912598187" +"308"," 0.0858120849043510492","-0.7474035542114398911","-0.7569387333255043204","-1.5134586998810894976","-0.8128057092793262717" +"309"," 0.8265675204569418177"," 0.2981002736815449028"," 1.7679853856461393846"," 2.2011637362254292682"," 1.7281375842228776651" +"310"," 0.5392639319960493838"," 0.6266675004600269494"," 0.6536548266238548788"," 0.4839685961849542473"," 0.4918743468701156640" +"311","-0.9588901345120053321","-0.2727203964069950248"," 1.0958082676945890555"," 1.6297632099244530046"," 1.4433155948675966407" +"312","-0.7593865879031878041","-1.0075071478966894922"," 0.1358003200476280981"," 0.3201181858063861796"," 0.1409847504183518729" +"313","-0.4431621324950388852","-1.2428599004770590764","-1.9289714180279307065","-1.2101530985679427310","-1.5928615021302767740" +"314","-0.4379058136813634983","-1.2646820259732318714","-1.0228770209120390255","-1.4416403722785007258","-0.5454757403400680715" +"315","-0.0832669815619009324","-0.6880425313731312054","-3.0930910914054310368","-3.1710680071798376112","-2.5426116381869210414" +"316"," 0.1677599874574271788","-0.8695018900593209921"," 0.3841501862432872838","-0.3524753470377790521"," 0.6984825664249803001" +"317"," 2.1331381122770376457"," 1.7018726265907702100"," 0.1165671868847893977","-0.1618577291252136230","-1.2693279934565617761" +"318"," 2.5591824828692968374"," 1.5600922101404259834"," 0.9370960928534285417","-0.9986069190000826934","-0.9046258707059214865" +"319"," 3.7300633335731010476"," 2.4807613471218807888"," 0.5633170583062295789","-0.1151372214262062488","-0.0330236055041418924" +"320"," 0.4510862020701081887","-0.6074389609375484556","-0.9712854646368724865","-2.0159314705222177722","-2.0228727677660023332" +"321"," 0.0780510987915975230","-0.4912272337399983257","-0.6907712060300713608","-1.6912076813734304714","-1.8170096490105518416" +"322"," 1.3699866516108851755"," 1.1948871276373265182"," 0.1292635339852085674","-0.1329754923657394117"," 0.5260538365449007880" +"323"," 0.6074536897580466999"," 0.5385261452452756448","-0.7577370288233656881","-0.4351231000541088134"," 0.1199992612483055110" +"324"," 1.3729167726601776423"," 1.1160386940080280205","-0.1874183441218787993","-0.3604525709764853092"," 0.8093183368117220500" +"325"," 0.8087028641447294719"," 0.5921005451062956171"," 0.3999794439927464862","-0.2006838317645035508"," 0.3729878611341562178" +"326","-0.2601976728048743803","-1.0548876091756120843","-2.3126019839583769055","-1.9893494788131085294","-1.6561752947088197452" +"327","-0.0291492895914239880"," 0.0609998263232876675","-0.0913355086619084267","-1.1990469355960080566","-0.6690211558901723032" +"328"," 2.3077014849092161164"," 1.1668396076126237304"," 1.3260649716376424756","-1.0156404592849668234","-0.0305382749768701167" +"329"," 0.3619225052596519721"," 0.5465822126812989179","-0.2936163309352529116","-0.3140538702725694797","-0.3188200139502128660" +"330"," 2.6101875297090995076"," 2.0718082951132923419"," 0.5959399416476958145","-0.3862970491529311712"," 0.2729589550101332862" +"331"," 0.1762451765350780131","-0.1891900502175223042","-1.4178437099834175772","-0.9978843351958682772","-1.9100698156424082974" +"332"," 0.2221240232693586503","-1.1410116143535282696","-1.5121652086045263008","-2.8986980239995800979","-2.1443124848479242495" +"333"," 0.0335492000281593650"," 0.3858267201155352599","-1.1817224088356532707","-1.2357688246561511214","-1.7655022062082106338" +"334"," 2.9405812495075278612"," 2.2353865503521235247"," 0.3893484900669121895","-0.7544522344877288011","-0.2510083663762232575" +"335","-0.4578783357541045262","-0.1145664626769713756","-0.3097407764685455311","-0.1396081452205242268","-0.3454454857721419025" +"336"," 3.0379050422471265414"," 3.2531848144222816899"," 0.8418132679128074169"," 1.0136229465240198522"," 0.7625517902341261145" +"337"," 1.7309670463242903260"," 1.5752780636308845175","-0.6522327715985416496","-1.1736592195888753132","-0.3195037983653528091" +"338"," 2.6679982272014783895"," 2.4335479729515800962"," 0.9499202826413168932","-1.1663686869233411691"," 0.5478794347965506573" +"339"," 0.7369228476832014874"," 0.3600306061234994082","-0.3700063349310970806","-0.3991150541984703204","-0.7208786928735773092" +"340"," 2.1687239690724418040"," 1.8336644168239997210","-0.1791033428738360023","-0.0908639351080429147","-0.3740860562351865370" diff --git a/test/main.cpp b/test/main.cpp index bbaeb42f..343dbbf5 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -4,6 +4,7 @@ #include // regression test suite +/* #include "src/srpde_test.cpp" #include "src/strpde_test.cpp" #include "src/gsrpde_test.cpp" @@ -16,6 +17,13 @@ #include "src/fpca_test.cpp" #include "src/fpls_test.cpp" #include "src/centering_test.cpp" +*/ +#include "src/inference_test.cpp" +#include "src/inferencetime_test.cpp" +#include +#include + + int main(int argc, char **argv){ // start testing diff --git a/test/run_tests.sh b/test/run_tests.sh index 6b1dea13..5ee04664 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -16,6 +16,7 @@ help() exit 2 } + clean_build_dir() { if [ -d "$BUILD_DIR" ]; @@ -47,7 +48,7 @@ while :; do --) shift; break - ;; + ;; *) echo "Unexpected option: $1" help @@ -57,8 +58,8 @@ done ## set CMake compiler if [ "$COMPILER" = "gcc" ]; then - export CC=/usr/bin/gcc - export CXX=/usr/bin/g++ + export CC=/usr/local/Cellar/gcc/14.1.0_1/bin/gcc-14 + export CXX=/usr/local/Cellar/gcc/14.1.0_1/bin/g++-14 elif [ "$COMPILER" = "clang" ]; then export CC=/usr/bin/clang export CXX=/usr/bin/clang++ diff --git a/test/src/centering_test.cpp b/test/src/centering_test.cpp index 70c01c29..bf76c1c8 100644 --- a/test/src/centering_test.cpp +++ b/test/src/centering_test.cpp @@ -23,6 +23,7 @@ using fdapde::core::FEM; using fdapde::core::Grid; using fdapde::core::laplacian; using fdapde::core::PDE; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" #include "../../fdaPDE/models/regression/gcv.h" @@ -54,16 +55,16 @@ using fdapde::testing::read_csv; // GCV optimization: grid stochastic TEST(centering_test, srpde_gcv_stochastic_grid) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix X = read_csv("../data/models/centering/2D_test1/X.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> pde(domain.mesh, L, u); // perform centering - std::vector> lambda_grid; - for (double x = -6.0; x <= 0.0; x += 0.5) lambda_grid.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambda_grid(12, 1); + for (int i = 0; i < 12; ++i) lambda_grid(i, 0) = std::pow(10, -6 + 0.5 * i); auto centered_data = center( X, SRPDE {pde, Sampling::mesh_nodes}, fdapde::calibration::GCV {Grid {}, StochasticEDF(100)}(lambda_grid)); diff --git a/test/src/density_estimation_test.cpp b/test/src/density_estimation_test.cpp new file mode 100644 index 00000000..904deddd --- /dev/null +++ b/test/src/density_estimation_test.cpp @@ -0,0 +1,168 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include +#include // testing framework + +#include +using fdapde::core::FEM; +using fdapde::core::fem_order; +using fdapde::core::laplacian; +using fdapde::core::PDE; +using fdapde::core::Triangulation; +using fdapde::core::GradientDescent; +using fdapde::core::BacktrackingLineSearch; +using fdapde::core::WolfeLineSearch; +using fdapde::core::BFGS; + +#include "../../fdaPDE/models/density_estimation/depde.h" +#include "../../fdaPDE/models/sampling_design.h" +using fdapde::models::DEPDE; +using fdapde::models::Sampling; +#include "../../fdaPDE/calibration/kfold_cv.h" +using fdapde::calibration::KCV; + +#include "utils/constants.h" +#include "utils/mesh_loader.h" +#include "utils/utils.h" +using fdapde::testing::almost_equal; +using fdapde::testing::MeshLoader; +using fdapde::testing::read_csv; + +// test 1 +// domain: unit square [1,1] x [1,1] +// optimizer: BGFS, fixed step +// lambda: fixed +// order FE: 1 +TEST(depde_test, fixed_smoothing_bfgs_fixed_step) { + // define domain + MeshLoader> domain("square_density"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(L), DMatrix, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define model + double lambda = 0.1; + DEPDE model(problem); + model.set_lambda_D(lambda); + model.set_tolerance(1e-15); // to let the optimization process stop for maximum number of iterations + // set model's data + BlockFrame df; + df.insert(SPACE_LOCS, read_csv("../data/models/depde/2D_test1/data.csv")); + model.set_data(df); + model.set_optimizer(BFGS {500, 1e-5, 1e-2}); + model.set_g_init(read_csv("../data/models/depde/2D_test1/f_init.csv").array().log()); + // solve density estimation problem + model.init(); + model.solve(); // this stops at maximum number of iterations (expected) + // test correctness + EXPECT_TRUE(almost_equal(model.g(), "../data/models/depde/2D_test1/g.mtx")); +} + +// test 2 +// domain: unit square [1,1] x [1,1] +// optimizer: gradient descent, backtracking adaptive step +// lambda: fixed +// order FE: 1 +TEST(depde_test, fixed_smoothing_gradient_descent_backtracking_step) { + // define domain + MeshLoader> domain("square_density"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(L), DMatrix, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define model + double lambda = 0.1; + DEPDE model(problem); + model.set_lambda_D(lambda); + // set model's data + BlockFrame df; + df.insert(SPACE_LOCS, read_csv("../data/models/depde/2D_test2/data.csv")); + model.set_data(df); + model.set_optimizer(GradientDescent {1000, 1e-5, 1e-2}); + model.set_g_init(read_csv("../data/models/depde/2D_test2/f_init.csv").array().log()); + // solve density estimation problem + model.init(); + model.solve(); + // test correctness + EXPECT_TRUE(almost_equal(model.g(), "../data/models/depde/2D_test2/g.mtx")); +} + +// test 3 +// domain: unit square [1,1] x [1,1] +// optimizer: BFGS, wolfe adaptive step +// lambda: fixed +// order FE: 1 +TEST(depde_test, fixed_smoothing_bfgs_wolfe_step) { + // define domain + MeshLoader> domain("square_density"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(L), DMatrix, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define model + double lambda = 0.1; + DEPDE model(problem); + model.set_lambda_D(lambda); + // set model's data + BlockFrame df; + df.insert(SPACE_LOCS, read_csv("../data/models/depde/2D_test3/data.csv")); + model.set_data(df); + model.set_optimizer(BFGS {1000, 1e-5, 1e-2}); + model.set_g_init(read_csv("../data/models/depde/2D_test3/f_init.csv").array().log()); + // solve density estimation problem + model.init(); + model.solve(); + // test correctness + EXPECT_TRUE(almost_equal(model.g(), "../data/models/depde/2D_test3/g.mtx")); +} + +// test 4 +// domain: unit square [1,1] x [1,1] +// optimizer: BFGS, backtracking adaptive step +// lambda: K-fold cross validation, 5 folds +// order FE: 1 +TEST(depde_test, kcv_smoothing_bfgs_backtracking_step) { + // define domain + MeshLoader> domain("square_density"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(L), DMatrix, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define model + DVector lambda_vect; + lambda_vect.resize(4); + lambda_vect << 0.001, 0.01, 0.1, 1; + DEPDE model(problem); + // set model's data + BlockFrame df; + df.insert(SPACE_LOCS, read_csv("../data/models/depde/2D_test4/data.csv")); + model.set_data(df); + model.set_optimizer(BFGS {1000, 1e-5, 1e-2}); + DMatrix f_init = read_csv("../data/models/depde/2D_test4/f_init.csv"); + // declare cross validation engine + KCV kcv(5, 10); + DVector cv_error; + cv_error.resize(lambda_vect.size()); + + for (int i = 0; i < lambda_vect.rows(); ++i) { + model.set_g_init(f_init.col(i).array().log()); + kcv.fit(model, SVector<1>(lambda_vect[i]), DEPDE::CVScore(model)); + cv_error[i] = kcv.avg_scores()[0]; + } + // test correctness + EXPECT_TRUE(almost_equal(cv_error, "../data/models/depde/2D_test4/cv_error.mtx")); +} diff --git a/test/src/fpca_test.cpp b/test/src/fpca_test.cpp index 965391ff..a448243a 100644 --- a/test/src/fpca_test.cpp +++ b/test/src/fpca_test.cpp @@ -24,6 +24,7 @@ using fdapde::core::FEM; using fdapde::core::fem_order; using fdapde::core::laplacian; using fdapde::core::PDE; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/functional/fpca.h" #include "../../fdaPDE/models/sampling_design.h" @@ -40,7 +41,7 @@ using fdapde::testing::almost_equal; using fdapde::testing::MeshLoader; using fdapde::testing::read_csv; using fdapde::testing::read_mtx; - +/* // test 1 // domain: unit square [1,1] x [1,1] // sampling: locations = nodes @@ -51,12 +52,12 @@ using fdapde::testing::read_mtx; // solver: sequential (power iteration) TEST(fpca_test, laplacian_samplingatnodes_sequential) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix y = read_csv("../data/models/fpca/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> pde(domain.mesh, L, u); // define model double lambda_D = 1e-2; @@ -84,12 +85,12 @@ TEST(fpca_test, laplacian_samplingatnodes_sequential) { // solver: monolithic (rsvd) TEST(fpca_test, laplacian_samplingatnodes_monolithic) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix y = read_csv("../data/models/fpca/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-2; @@ -106,7 +107,7 @@ TEST(fpca_test, laplacian_samplingatnodes_monolithic) { EXPECT_TRUE(almost_equal(model.Psi() * model.loadings(), "../data/models/fpca/2D_test1/loadings_mon.mtx")); EXPECT_TRUE(almost_equal(model.scores(), "../data/models/fpca/2D_test1/scores_mon.mtx" )); } - +*/ // test 3 // domain: unit square [1,1] x [1,1] // sampling: locations != nodes @@ -117,17 +118,17 @@ TEST(fpca_test, laplacian_samplingatnodes_monolithic) { // solver: sequential (power iteration) + GCV \lambda selection TEST(fpca_test, laplacian_samplingatlocations_sequential_gcv) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix locs = read_csv("../data/models/fpca/2D_test2/locs.csv"); DMatrix y = read_csv("../data/models/fpca/2D_test2/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> pde(domain.mesh, L, u); // grid of smoothing parameters - std::vector> lambda_grid; - for (double x = -4; x <= -2; x += 0.1) { lambda_grid.push_back(SVector<1>(std::pow(10, x))); } + DMatrix lambda_grid(20, 1); + for (int i = 0; i < 20; ++i) lambda_grid(i, 0) = std::pow(10, -4 + 0.1 * i); // define model RegularizedSVD rsvd(Calibration::gcv); rsvd.set_lambda(lambda_grid); @@ -156,17 +157,17 @@ TEST(fpca_test, laplacian_samplingatlocations_sequential_gcv) { // solver: sequential (power iteration) + KCV \lambda selection TEST(fpca_test, laplacian_samplingatlocations_sequential_kcv) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix locs = read_csv("../data/models/fpca/2D_test3/locs.csv"); DMatrix y = read_csv("../data/models/fpca/2D_test3/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // grid of smoothing parameters - std::vector> lambda_grid; - for (double x = -4; x <= -2; x += 0.1) lambda_grid.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambda_grid(20, 1); + for (int i = 0; i < 20; ++i) lambda_grid(i, 0) = std::pow(10, -4 + 0.1 * i); // define model RegularizedSVD rsvd(Calibration::kcv); rsvd.set_lambda(lambda_grid); @@ -195,18 +196,18 @@ TEST(fpca_test, laplacian_samplingatlocations_sequential_kcv) { // solver: sequential (power iteration) // TEST(fpca_test, laplacian_samplingatnodes_separable_sequential) { // // define time domain -// Mesh<1, 1> time_mesh(0, 1, 14); +// Triangulation<1, 1> time_mesh(0, 1, 14); // // define domain and regularizing PDE -// MeshLoader domain("unit_square15"); +// MeshLoader> domain("unit_square15"); // // import data from files // DMatrix y = read_csv("../data/models/fpca/2D_test5/y.csv"); // // define regularizing PDE in space // auto Ld = -laplacian(); -// DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); -// PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); +// DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); +// PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // // define regularizing PDE in time // auto Lt = -bilaplacian(); -// PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); +// PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // // define model // double lambda_D = std::pow(10, -3.6); // 1e-3.6 // double lambda_T = std::pow(10, -2.2); // 1e-2.2 @@ -235,12 +236,12 @@ TEST(fpca_test, laplacian_samplingatlocations_sequential_kcv) { // missing data: yes TEST(fpca_test, laplacian_samplingatnodes_nocalibration_missingdata) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/fpca/2D_test4/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-2; diff --git a/test/src/fpls_test.cpp b/test/src/fpls_test.cpp index 3ca29b09..7368d2ef 100644 --- a/test/src/fpls_test.cpp +++ b/test/src/fpls_test.cpp @@ -25,6 +25,7 @@ using fdapde::core::fem_order; using fdapde::core::laplacian; using fdapde::core::PDE; using fdapde::core::Grid; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" using fdapde::models::SRPDE; @@ -59,13 +60,13 @@ using fdapde::testing::read_mtx; // solver: sequential (power iteration) without calibration TEST(fpls_test, laplacian_samplingatnodes_sequential_off) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix X = read_csv("../data/models/fpls/2D_test1/X.csv"); DMatrix Y = read_csv("../data/models/fpls/2D_test1/Y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> pde(domain.mesh, L, u); // define model double lambda_D = 10.0; @@ -104,19 +105,19 @@ TEST(fpls_test, laplacian_samplingatnodes_sequential_off) { // solver: sequential (power iteration) with GCV calibration TEST(fpls_test, laplacian_samplingatnodes_sequential_gcv) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix X = read_csv("../data/models/fpls/2D_test2/X.csv"); DMatrix Y = read_csv("../data/models/fpls/2D_test2/Y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> pde(domain.mesh, L, u); // define model std::size_t seed = 476813; // grid for smoothing parameter selection - std::vector> lambda_grid; - for (double x = -4; x <= 0; x += 1) lambda_grid.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambda_grid(5, 1); + for (int i = 0; i < 5; ++i) lambda_grid(i, 0) = std::pow(10, -4 + 1.0 * i); RegularizedSVD rsvd {Calibration::gcv}; rsvd.set_tolerance(1e-2); rsvd.set_max_iter(20); diff --git a/test/src/gcv_qsrpde_test.cpp b/test/src/gcv_qsrpde_test.cpp index 21515036..9e29c8b1 100644 --- a/test/src/gcv_qsrpde_test.cpp +++ b/test/src/gcv_qsrpde_test.cpp @@ -23,7 +23,7 @@ using fdapde::core::fem_order; using fdapde::core::laplacian; using fdapde::core::diffusion; using fdapde::core::PDE; -using fdapde::core::Mesh; +using fdapde::core::Triangulation; using fdapde::core::bilaplacian; using fdapde::core::SPLINE; using fdapde::core::spline_order; @@ -38,6 +38,7 @@ using fdapde::models::ExactEDF; using fdapde::models::StochasticEDF; using fdapde::models::Sampling; using fdapde::models::SpaceTime; +using fdapde::models::SpaceTimeSeparable; #include "../../fdaPDE/calibration/gcv.h" #include "utils/constants.h" @@ -58,12 +59,12 @@ using fdapde::testing::read_csv; // GCV optimization: grid exact TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexact) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.1; @@ -75,8 +76,8 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexac model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -8.0; x <= -5.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -8.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -95,12 +96,12 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexac // GCV optimization: grid stochastic TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstochastic) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test2/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.1; @@ -113,8 +114,8 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstoc // define GCV function and grid of \lambda_D values std::size_t seed = 438172; auto GCV = model.gcv(1000, seed); - std::vector> lambdas; - for (double x = -8.0; x <= -5.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -8.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -133,14 +134,14 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstoc // GCV optimization: grid exact TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { // define domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/gcv/qsrpde/2D_test3/locs.csv"); DMatrix y = read_csv("../data/gcv/qsrpde/2D_test3/y.csv"); DMatrix X = read_csv("../data/gcv/qsrpde/2D_test3/X.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.9; @@ -154,8 +155,8 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -5.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(9, 1); + for (int i = 0; i < 9; ++i) { lambdas(i, 0) = std::pow(10, -5.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -174,14 +175,14 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { // GCV optimization: grid stochastic TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridstochastic) { // define domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/gcv/qsrpde/2D_test4/locs.csv"); DMatrix y = read_csv("../data/gcv/qsrpde/2D_test4/y.csv"); DMatrix X = read_csv("../data/gcv/qsrpde/2D_test4/X.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.9; @@ -196,8 +197,8 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridstochasti // define GCV function and grid of \lambda_D value std::size_t seed = 66546513; auto GCV = model.gcv(1000, seed); - std::vector> lambdas; - for (double x = -5.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(9, 1); + for (int i = 0; i < 9; ++i) { lambdas(i, 0) = std::pow(10, -5.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -216,14 +217,14 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingatlocations_gridstochasti // GCV optimization: grid exact TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridexact) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test5/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.1; @@ -235,8 +236,8 @@ TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gride model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -7.0; x <= -5.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(9, 1); + for (int i = 0; i < 9; ++i) { lambdas(i, 0) = std::pow(10, -7.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -255,14 +256,14 @@ TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gride // GCV optimization: grid stochastic TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridstochastic) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test6/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.1; @@ -275,8 +276,8 @@ TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_grids // define GCV function and grid of \lambda_D values std::size_t seed = 438172; auto GCV = model.gcv(1000, seed); - std::vector> lambdas; - for (double x = -7.0; x <= -5.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(9, 1); + for (int i = 0; i < 9; ++i) { lambdas(i, 0) = std::pow(10, -7.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -295,14 +296,14 @@ TEST(gcv_qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes_grids // GCV optimization: grid exact TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridexact) { // define domain - MeshLoader domain("c_shaped_areal"); + MeshLoader> domain("c_shaped_areal"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test7/y.csv"); DMatrix X = read_csv("../data/gcv/qsrpde/2D_test7/X.csv"); DMatrix subdomains = read_csv("../data/gcv/qsrpde/2D_test7/incidence_matrix.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.5; @@ -316,8 +317,8 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridexact) { model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -4.0; x <= -1.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -4.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -336,14 +337,14 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridexact) { // GCV optimization: grid stochastic TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridstochastic) { // define domain - MeshLoader domain("c_shaped_areal"); + MeshLoader> domain("c_shaped_areal"); // import data from files DMatrix y = read_csv("../data/gcv/qsrpde/2D_test8/y.csv"); DMatrix X = read_csv("../data/gcv/qsrpde/2D_test8/X.csv"); DMatrix subdomains = read_csv("../data/gcv/qsrpde/2D_test8/incidence_matrix.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double alpha = 0.5; @@ -358,8 +359,8 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridstochastic) { // define GCV function and grid of \lambda_D values std::size_t seed = 438172; auto GCV = model.gcv(100, seed); - std::vector> lambdas; - for (double x = -4.0; x <= -1.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -4.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -381,19 +382,19 @@ TEST(gcv_qsrpde_test, laplacian_semiparametric_samplingareal_gridstochastic) { // time penalization: separable (mass penalization) TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatlocations_timelocations_separable_gridexact) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, fdapde::testing::pi, 2); // interval [0, \pi] with 3 knots - MeshLoader domain("c_shaped_adj"); + Triangulation<1, 1> time_mesh(0, fdapde::testing::pi, 2); // interval [0, \pi] with 3 knots + MeshLoader> domain("c_shaped_adj"); // import data from files DMatrix space_locs = read_csv("../data/gcv/qsrpde/2D_test9/locs.csv"); DMatrix time_locs = read_csv("../data/gcv/qsrpde/2D_test9/time_locations.csv"); DMatrix y = read_csv("../data/gcv/qsrpde/2D_test9/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double alpha = 0.5; QSRPDE model(space_penalty, time_penalty, Sampling::pointwise, alpha); @@ -406,14 +407,16 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatlocations_timelocations_ model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambda_grid; - for (double lambda_s = -4.0; lambda_s <= -2.0; lambda_s += 1.0) { - for (double lambda_t = -7.0; lambda_t <= -5.0; lambda_t += 1.0) - lambda_grid.push_back(SVector<2>(std::pow(10, lambda_s), std::pow(10, lambda_t))); + DMatrix lambdas(9, 2); + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + lambdas(i * 3 + j, 0) = std::pow(10, -4.0 + 1.0 * i); + lambdas(i * 3 + j, 1) = std::pow(10, -7.0 + 1.0 * j); + } } // optimize GCV Grid opt; - opt.optimize(GCV, lambda_grid); + opt.optimize(GCV, lambdas); // test correctness EXPECT_TRUE(almost_equal(GCV.edfs(), "../data/gcv/qsrpde/2D_test9/edfs.mtx")); EXPECT_TRUE(almost_equal(GCV.gcvs(), "../data/gcv/qsrpde/2D_test9/gcvs.mtx")); @@ -432,19 +435,19 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatlocations_timelocations_ // time penalization: separable (mass penalization) TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatlocations_timelocations_separable_gridstochastic) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, fdapde::testing::pi, 2); // interval [0, \pi] with 3 knots - MeshLoader domain("c_shaped_adj"); + Triangulation<1, 1> time_mesh(0, fdapde::testing::pi, 2); // interval [0, \pi] with 3 knots + MeshLoader> domain("c_shaped_adj"); // import data from files DMatrix space_locs = read_csv("../data/gcv/qsrpde/2D_test10/locs.csv"); DMatrix time_locs = read_csv("../data/gcv/qsrpde/2D_test10/time_locations.csv"); DMatrix y = read_csv("../data/gcv/qsrpde/2D_test10/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double alpha = 0.5; QSRPDE model(space_penalty, time_penalty, Sampling::pointwise, alpha); @@ -458,18 +461,20 @@ TEST(gcv_qsrpde_test, laplacian_nonparametric_samplingatlocations_timelocations_ // define GCV function and grid of \lambda_D values std::size_t seed = 66546513; auto GCV = model.gcv(100, seed); - std::vector> lambda_grid; - for (double lambda_s = -4.0; lambda_s <= -2.0; lambda_s += 1.0) { - for (double lambda_t = -7.0; lambda_t <= -5.0; lambda_t += 1.0) - lambda_grid.push_back(SVector<2>(std::pow(10, lambda_s), std::pow(10, lambda_t))); + DMatrix lambdas(9, 2); + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + lambdas(i * 3 + j, 0) = std::pow(10, -4.0 + 1.0 * i); + lambdas(i * 3 + j, 1) = std::pow(10, -7.0 + 1.0 * j); + } } // optimize GCV Grid opt; - opt.optimize(GCV, lambda_grid); + opt.optimize(GCV, lambdas); // test correctness EXPECT_TRUE(almost_equal(GCV.edfs(), "../data/gcv/qsrpde/2D_test10/edfs.mtx")); EXPECT_TRUE(almost_equal(GCV.gcvs(), "../data/gcv/qsrpde/2D_test10/gcvs.mtx")); // check consistency with GCV calibrator - auto GCV_ = fdapde::calibration::GCV {Grid {}, StochasticEDF(100, seed)}(lambda_grid); + auto GCV_ = fdapde::calibration::GCV {Grid {}, StochasticEDF(100, seed)}(lambdas); EXPECT_TRUE(GCV_.fit(model) == opt.optimum()); } diff --git a/test/src/gcv_srpde_newton_test.cpp b/test/src/gcv_srpde_newton_test.cpp index 9ba23c8d..74eb65b8 100644 --- a/test/src/gcv_srpde_newton_test.cpp +++ b/test/src/gcv_srpde_newton_test.cpp @@ -23,6 +23,7 @@ using fdapde::core::FEM; using fdapde::core::Newton; using fdapde::core::laplacian; using fdapde::core::PDE; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" #include "../../fdaPDE/models/regression/gcv.h" @@ -55,7 +56,7 @@ using fdapde::testing::read_csv; */ /*TEST(GCV_SRPDE, Test1_Laplacian_NonParametric_GeostatisticalAtNodes_NewtonExact) { // define domain and regularizing PDE - MeshLoader> domain("unit_square_coarse"); + MeshLoader<>> domain("unit_square_coarse"); auto L = Laplacian(); DMatrix u = DMatrix::Zero(domain.mesh.elements()*3, 1); PDE problem(domain.mesh, L, u); // definition of regularizing PDE @@ -112,12 +113,12 @@ using fdapde::testing::read_csv; // GCV optimization: newton finite differences, exact evaluation of Tr[S] TEST(gcv_srpde_newton_test, laplacian_nonparametric_samplingatnodes_newton_fd_exact) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -153,12 +154,12 @@ TEST(gcv_srpde_newton_test, laplacian_nonparametric_samplingatnodes_newton_fd_ex // GCV optimization: newton finite differences, stochastic evaluation of Tr[S] TEST(gcv_srpde_newton_test, laplacian_nonparametric_samplingatnodes_newton_fd_stochastic) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -173,7 +174,7 @@ TEST(gcv_srpde_newton_test, laplacian_nonparametric_samplingatnodes_newton_fd_st GCV.set_step(4e-08); // optimize GCV Newton opt(10, 0.05, 1); - DVector pt = SVector<1>(6.25e-06); + DMatrix pt = SVector<1>(6.25e-06); opt.optimize(GCV, pt); auto best_lambda = opt.optimum(); DVector expected_lambda = SVector<1>(0.0000075627208132); diff --git a/test/src/gcv_srpde_test.cpp b/test/src/gcv_srpde_test.cpp index ed55b8e3..92ea5833 100644 --- a/test/src/gcv_srpde_test.cpp +++ b/test/src/gcv_srpde_test.cpp @@ -27,6 +27,7 @@ using fdapde::core::laplacian; using fdapde::core::DiscretizedMatrixField; using fdapde::core::PDE; using fdapde::core::DiscretizedVectorField; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" #include "../../fdaPDE/models/regression/gcv.h" @@ -57,12 +58,12 @@ using fdapde::testing::read_csv; // GCV optimization: grid exact TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexact) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -73,8 +74,8 @@ TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexact model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -93,12 +94,12 @@ TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridexact // GCV optimization: grid stochastic TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstochastic) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test2/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -110,8 +111,8 @@ TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstoch // define GCV function and grid of \lambda_D values std::size_t seed = 476813; auto GCV = model.gcv(100, seed); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -133,14 +134,14 @@ TEST(gcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_gridstoch // GCV optimization: grid exact TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { // define domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/gcv/2D_test3/locs.csv"); DMatrix y = read_csv("../data/models/gcv/2D_test3/y.csv" ); DMatrix X = read_csv("../data/models/gcv/2D_test3/X.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::pointwise); @@ -153,14 +154,19 @@ TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -3.0; x <= 3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(25, 1); + for (int i = 0; i < 25; ++i) { lambdas(i, 0) = std::pow(10, -3.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // test correctness EXPECT_TRUE(almost_equal(GCV.edfs(), "../data/models/gcv/2D_test3/edfs.mtx")); EXPECT_TRUE(almost_equal(GCV.gcvs(), "../data/models/gcv/2D_test3/gcvs.mtx")); + // check consistency with GCV calibrator + fdapde::calibration::GCV GCV_(Grid {}, ExactEDF()); + GCV_(lambdas).fit(model); // should have a side-effect on GCV calibrator + EXPECT_TRUE(GCV_.optimum() == opt.optimum()); + } // test 4 @@ -173,14 +179,14 @@ TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridexact) { // GCV optimization: grid stochastic TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridstochastic) { // define domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/gcv/2D_test4/locs.csv"); DMatrix y = read_csv("../data/models/gcv/2D_test4/y.csv" ); DMatrix X = read_csv("../data/models/gcv/2D_test4/X.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::pointwise); @@ -194,8 +200,8 @@ TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridstochastic // define GCV function and grid of \lambda_D values std::size_t seed = 66546513; auto GCV = model.gcv(100, seed); - std::vector> lambdas; - for (double x = -3.0; x <= 3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(25, 1); + for (int i = 0; i < 25; ++i) { lambdas(i, 0) = std::pow(10, -3.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); @@ -214,14 +220,14 @@ TEST(gcv_srpde_test, laplacian_semiparametric_samplingatlocations_gridstochastic // GCV optimization: grid exact TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridexact) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test5/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -232,8 +238,8 @@ TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridex model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -252,14 +258,14 @@ TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridex // GCV optimization: grid stochastic TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridstochastic) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test5/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -271,8 +277,8 @@ TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridst // define GCV function and grid of \lambda_D values std::size_t seed = 4564168; auto GCV = model.gcv(100, seed); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -291,7 +297,7 @@ TEST(gcv_srpde_test, costantcoefficientspde_nonparametric_samplingatnodes_gridst // GCV optimization: grid exact TEST(gcv_srpde_test, noncostantcoefficientspde_nonparametric_samplingareal_gridexact) { // define domain and regularizing PDE - MeshLoader domain("quasi_circle"); + MeshLoader> domain("quasi_circle"); // import data from files DMatrix K_data = read_csv("../data/models/gcv/2D_test7/K.csv"); DMatrix b_data = read_csv("../data/models/gcv/2D_test7/b.csv"); @@ -313,8 +319,8 @@ TEST(gcv_srpde_test, noncostantcoefficientspde_nonparametric_samplingareal_gride model.init(); // define GCV function and grid of \lambda_D values auto GCV = model.gcv(); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); // optimize gcv field @@ -333,7 +339,7 @@ TEST(gcv_srpde_test, noncostantcoefficientspde_nonparametric_samplingareal_gride // GCV optimization: grid stochastic TEST(gcv_srpde_test, noncostantcoefficientspde_nonparametric_samplingareal_gridstochastic) { // define domain and regularizing PDE - MeshLoader domain("quasi_circle"); + MeshLoader> domain("quasi_circle"); // import data from files DMatrix K_data = read_csv("../data/models/gcv/2D_test8/K.csv"); DMatrix b_data = read_csv("../data/models/gcv/2D_test8/b.csv"); @@ -356,8 +362,8 @@ TEST(gcv_srpde_test, noncostantcoefficientspde_nonparametric_samplingareal_grids // define GCV function and grid of \lambda_D values std::size_t seed = 438172; auto GCV = model.gcv(100, seed); - std::vector> lambdas; - for (double x = -6.0; x <= -3.0; x += 0.25) lambdas.push_back(SVector<1>(std::pow(10, x))); + DMatrix lambdas(13, 1); + for (int i = 0; i < 13; ++i) { lambdas(i, 0) = std::pow(10, -6.0 + 0.25 * i); } // optimize GCV Grid opt; opt.optimize(GCV, lambdas); diff --git a/test/src/gsrpde_test.cpp b/test/src/gsrpde_test.cpp index 2635e7b8..b304bc67 100644 --- a/test/src/gsrpde_test.cpp +++ b/test/src/gsrpde_test.cpp @@ -23,6 +23,7 @@ using fdapde::core::fem_order; using fdapde::core::laplacian; using fdapde::core::dt; using fdapde::core::PDE; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/distributions.h" #include "../../fdaPDE/models/regression/gsrpde.h" @@ -55,13 +56,13 @@ using fdapde::testing::read_csv; // distribution: poisson TEST(gsrpde_test, laplacian_nonparametric_samplingatnodes_poisson) { // define domain - MeshLoader domain("unit_square_medium"); + MeshLoader> domain("unit_square_medium"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test1/locs.csv"); DMatrix y = read_csv("../data/models/gsrpde/2D_test1/y.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-3; @@ -89,13 +90,13 @@ TEST(gsrpde_test, laplacian_nonparametric_samplingatnodes_poisson) { // distribution: bernulli TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_bernulli) { // define domain - MeshLoader domain("unit_square_medium"); + MeshLoader> domain("unit_square_medium"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test2/locs.csv"); DMatrix y = read_csv("../data/models/gsrpde/2D_test2/y.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-3; @@ -123,13 +124,13 @@ TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_bernulli) { // distribution: exponential TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_exponential) { // define domain - MeshLoader domain("unit_square_medium"); + MeshLoader> domain("unit_square_medium"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test3/locs.csv"); DMatrix y = read_csv("../data/models/gsrpde/2D_test3/y.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-3; @@ -157,13 +158,13 @@ TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_exponential) { // distribution: gamma TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_gamma) { // define domain - MeshLoader domain("unit_square_medium"); + MeshLoader> domain("unit_square_medium"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test4/locs.csv"); DMatrix y = read_csv("../data/models/gsrpde/2D_test4/y.csv" ); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda_D = 1e-3; @@ -192,19 +193,19 @@ TEST(gsrpde_test, laplacian_nonparametric_samplingatlocations_gamma) { // distribution: gamma TEST(gsrpde_test, laplacian_semiparametric_samplingatlocations_separable_monolithic_gamma) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, 1, 3); - MeshLoader domain("c_shaped"); + Triangulation<1, 1> time_mesh(0, 1, 3); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test5/locs.csv"); DMatrix y = read_csv("../data/models/gsrpde/2D_test5/y.csv" ); DMatrix X = read_csv("../data/models/gsrpde/2D_test5/X.csv" ); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double lambda_D = std::pow(0.1, 2.5); double lambda_T = std::pow(0.1, 2.5); @@ -240,7 +241,7 @@ TEST(gsrpde_test, laplacian_semiparametric_samplingatlocations_parabolic_monolit time_mesh.resize(3); for (std::size_t i = 0; i < 3; ++i) time_mesh[i] = (1. / 3) * i; // define spatial domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/gsrpde/2D_test6/locs.csv"); DMatrix y = read_mtx("../data/models/gsrpde/2D_test6/y.mtx" ); @@ -248,7 +249,7 @@ TEST(gsrpde_test, laplacian_semiparametric_samplingatlocations_parabolic_monolit DMatrix IC = read_mtx("../data/models/gsrpde/2D_test6/IC.mtx" ); // define regularizing PDE auto L = dt() - laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, time_mesh.rows()); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, time_mesh.rows()); PDE, FEM, fem_order<1>> pde(domain.mesh, time_mesh, L, u); pde.set_initial_condition(IC); // define model diff --git a/test/src/inference_test.cpp b/test/src/inference_test.cpp new file mode 100644 index 00000000..c04c2c2c --- /dev/null +++ b/test/src/inference_test.cpp @@ -0,0 +1,329 @@ +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + + +// QUESTO FILE VA SPOSTATO IN FDAPDE-CORE/TEST/SRC +// NEL MAIN.CPP DELLA REPOSITORY FDAPDE-CORE/TEST VA AGGIUNTO +// #include inference_test.cpp +// e la parte che chiama la classe inference_test + + +// questi sono da controllare +#include +#include // testing framework +#include +#include + +#include +#include // testing framework + +#include +using fdapde::core::advection; +using fdapde::core::diffusion; +using fdapde::core::FEM; +using fdapde::core::fem_order; +using fdapde::core::laplacian; +using fdapde::core::DiscretizedMatrixField; +using fdapde::core::PDE; +using fdapde::core::DiscretizedVectorField; +using fdapde::core::Triangulation; + +#include "../../fdaPDE/models/regression/srpde.h" +#include "../../fdaPDE/models/sampling_design.h" +using fdapde::models::SRPDE; +using fdapde::models::Sampling; + +#include "utils/constants.h" +#include "utils/mesh_loader.h" +#include "utils/utils.h" +using fdapde::testing::almost_equal; +using fdapde::testing::MeshLoader; +using fdapde::testing::read_csv; +using fdapde::testing::read_mtx; + + +#include "../../fdaPDE/models/regression/wald.h" +#include "../../fdaPDE/models/regression/speckman.h" +#include "../../fdaPDE/models/regression/esf.h" +#include "../../fdaPDE/models/regression/pesf.h" + +#include <../../../fdaPDE-core/fdaPDE/core.h> +using fdapde::core::DiscretizedMatrixField; +using fdapde::core::DiscretizedVectorField; + + +// test +// domain: c-shaped +// sampling: locations != nodes +// penalization: simple laplacian +// covariates: yes +// BC: no +// order FE: 1 + + + +TEST(inference_test, exact27) { + // define domain + MeshLoader> domain("c_shaped"); + // import data from files + DMatrix locs = read_csv("../data/models/srpde/2D_test2/locs.csv"); + DMatrix y = read_csv("../data/models/srpde/2D_test2/y.csv"); + DMatrix X = read_csv("../data/models/srpde/2D_test2/X.csv"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define statistical model + double lambda = 0.2201047; + SRPDE model(problem, Sampling::pointwise); + model.set_lambda_D(lambda); + model.set_spatial_locations(locs); + // set model's data + BlockFrame df; + df.insert(OBSERVATIONS_BLK, y); + df.insert(DESIGN_MATRIX_BLK, X); + model.set_data(df); + // solve smoothing problem + model.init(); + model.solve(); + + fdapde::models::Wald inferenceWald(model); + fdapde::models::Speckman inferenceSpeck(model); + fdapde::models::ESF inferenceESF(model); + fdapde::models::PESF inferencePESF(model); + + int cols = model.beta().size(); + DMatrix C=DMatrix::Identity(cols, cols); + + inferenceWald.setC(C); + inferenceSpeck.setC(C); + inferenceESF.setC(C); + inferencePESF.setC(C); + + DVector beta0(2); + beta0(0)=2; + beta0(1)=-1; + inferenceWald.setBeta0(beta0); + inferenceSpeck.setBeta0(beta0); + inferenceESF.setBeta0(beta0); + inferencePESF.setBeta0(beta0); + + int n = 100000; + inferenceESF.setNflip(n); + inferenceESF.setseed(46); + inferencePESF.setNflip(n); + inferencePESF.setseed(46); + + inferenceESF.setNflip(10000); + DVector loc_indexes(6); + loc_indexes << 1, 5, 7, 8, 9, 10; + inferenceWald.setLocationsF(loc_indexes); + inferenceESF.setLocationsF(loc_indexes); + + DVector pvalueswald = inferenceWald.p_value(fdapde::models::simultaneous); + DVector pvaluesspeck = inferenceSpeck.p_value(fdapde::models::one_at_the_time); + DVector pvaluesesf = inferenceESF.p_value(fdapde::models::one_at_the_time); + //double waldstatisticf = inferenceWald.f_p_value(); + double pvalueesf_f = inferenceESF.f_p_value(); + + // test correctness Wald + EXPECT_TRUE(almost_equal(pvalueswald(0), 0.411991314607044 , 1e-7)); + + // test correctness Speckman + EXPECT_TRUE(almost_equal(pvaluesspeck(0), 0.0868023617435293, 1e-7)); + EXPECT_TRUE(almost_equal(pvaluesspeck(1), 0.4810795610695496, 1e-7)); + + // test correctness ESF + EXPECT_TRUE(almost_equal(pvaluesesf(0), 0.159 , 1e-7)); + EXPECT_TRUE(almost_equal(pvaluesesf(1), 0.9022 , 1e-7)); + + EXPECT_TRUE(almost_equal(pvalueesf_f, 0.6249 , 1e-7)); + +} + + + +TEST(inference_test, nonexact27) { + // define domain + MeshLoader> domain("c_shaped"); + // import data from files + DMatrix locs = read_csv("../data/models/srpde/2D_test2/locs.csv"); + DMatrix y = read_csv("../data/models/srpde/2D_test2/y.csv"); + DMatrix X = read_csv("../data/models/srpde/2D_test2/X.csv"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); + // define statistical model + double lambda = 0.2201047; + SRPDE model(problem, Sampling::pointwise); + model.set_lambda_D(lambda); + model.set_spatial_locations(locs); + // set model's data + BlockFrame df; + df.insert(OBSERVATIONS_BLK, y); + df.insert(DESIGN_MATRIX_BLK, X); + model.set_data(df); + // solve smoothing problem + model.init(); + model.solve(); + + fdapde::models::Wald inferenceWald(model); + fdapde::models::Speckman inferenceSpeck(model); + + int cols = model.beta().size(); + DMatrix C=DMatrix::Identity(cols, cols); + + inferenceWald.setC(C); + inferenceSpeck.setC(C); + + DVector beta0(2); + beta0(0)=2; + beta0(1)=-1; + inferenceWald.setBeta0(beta0); + inferenceSpeck.setBeta0(beta0); + + DVector pvalueswald = inferenceWald.p_value(fdapde::models::simultaneous); + DVector pvaluesspeck = inferenceSpeck.p_value(fdapde::models::one_at_the_time); + + // test correctness Wald + EXPECT_TRUE(almost_equal(pvalueswald(0), 0.2368866 , 1e-6)); + + // test correctness Speckman + EXPECT_TRUE(almost_equal(pvaluesspeck(0), 0.0903161, 1e-6)); + EXPECT_TRUE(almost_equal(pvaluesspeck(1), 0.6466615, 1e-7)); +} + + + + + +TEST(inference_test, inference25D){ + MeshLoader> domain("horsehoe2.5D"); + // import data from files + DMatrix y = read_csv("../data/models/srpde/25D_test1/y.csv"); + DMatrix X = read_csv("../data/models/srpde/25D_test1/X.csv"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); + double lambda = 0.1; + SRPDE model(problem, Sampling::mesh_nodes); + model.set_lambda_D(lambda); + // set model's data + BlockFrame df; + df.insert(OBSERVATIONS_BLK, y); + df.insert(DESIGN_MATRIX_BLK, X); + model.set_data(df); + // solve smoothing problem + model.init(); + model.solve(); + + fdapde::models::Wald inferenceWald(model); + fdapde::models::Speckman inferenceSpeck(model); + fdapde::models::ESF inferenceESF(model); + + DVector beta0(1); + int cols = model.beta().size(); + DMatrix C = DMatrix::Identity(cols, cols); + beta0(0) = 1; + inferenceWald.setBeta0(beta0); + inferenceSpeck.setBeta0(beta0); + inferenceESF.setBeta0(beta0); + + inferenceWald.setC(C); + inferenceSpeck.setC(C); + inferenceESF.setC(C); + + inferenceESF.setNflip(10000); + + DVector Wald_beta_p = inferenceWald.p_value(fdapde::models::one_at_the_time); + DMatrix Wald_beta_CI = inferenceWald.computeCI(fdapde::models::one_at_the_time); + DVector Speck_beta_p = inferenceSpeck.p_value(fdapde::models::one_at_the_time); + DMatrix Speck_beta_CI = inferenceSpeck.computeCI(fdapde::models::one_at_the_time); + + EXPECT_TRUE(almost_equal(Wald_beta_p(0), 0.01282658 , 1e-7)); + EXPECT_TRUE(almost_equal(Speck_beta_p(0), 0.02520083 , 1e-7)); + +} + + +TEST(inference_test, inference3D){ + + MeshLoader> domain("unit_sphere3D"); + DMatrix y = read_csv("../data/models/srpde/3D_test1/y.csv"); + DMatrix X = read_csv("../data/models/srpde/3D_test1/X.csv"); + // define regularizing PDE + auto L = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 4, 1); + PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); + double lambda = 0.01; + SRPDE model(problem, Sampling::mesh_nodes); + model.set_lambda_D(lambda); + //model.set_spatial_locations(locs); + // set model's data + BlockFrame df; + df.insert(OBSERVATIONS_BLK, y); + df.insert(DESIGN_MATRIX_BLK, X); + model.set_data(df); + + // solve smoothing problem + model.init(); + model.init_psi_esf(problem); + model.solve(); + + fdapde::models::Wald inferenceWald(model); + fdapde::models::Speckman inferenceSpeck(model); + fdapde::models::ESF inferenceESF(model); + + DVector beta0(2); + int cols = model.beta().size(); + DMatrix C = DMatrix::Identity(cols, cols); + beta0(0) = 2; + beta0(1) = -1; + inferenceWald.setBeta0(beta0); + inferenceSpeck.setBeta0(beta0); + inferenceESF.setBeta0(beta0); + + inferenceWald.setC(C); + inferenceSpeck.setC(C); + inferenceESF.setC(C); + + inferenceESF.setNflip(10000); + inferenceESF.setseed(46); + + DVector locs_ind(10); + locs_ind << 1, 6, 8, 11, 16, 18, 20, 21, 23, 24; + inferenceWald.setLocationsF(locs_ind); + inferenceESF.setMesh_loc(locs_ind); + + DVector Wald_beta_p = inferenceWald.p_value(fdapde::models::simultaneous); + //double wald_f_p_val = inferenceWald.f_p_value(); + DVector Speck_beta_p = inferenceSpeck.p_value(fdapde::models::one_at_the_time); + + double pvalueesf_f = inferenceESF.f_p_value(); + double pvalueesf_sf = inferenceESF.sign_flip_p_value(); + + EXPECT_TRUE(almost_equal(Wald_beta_p(0), 0.9684002 , 1e-7)); + EXPECT_TRUE(almost_equal(Speck_beta_p(0), 0.6479218 , 1e-7)); + EXPECT_TRUE(almost_equal(Speck_beta_p(1), 0.4182482 , 1e-7)); + //EXPECT_TRUE(almost_equal(wald_f_p_val, 0.00003363157 , 1e-7)); + EXPECT_TRUE(almost_equal(pvalueesf_f, 0.3525 , 1e-7)); + EXPECT_TRUE(almost_equal(pvalueesf_sf, 0.5488 , 1e-7)); + +} + + diff --git a/test/src/inferencetime_test.cpp b/test/src/inferencetime_test.cpp new file mode 100644 index 00000000..70e04151 --- /dev/null +++ b/test/src/inferencetime_test.cpp @@ -0,0 +1,258 @@ +#include +#include // testing framework + +#include +using fdapde::core::advection; +using fdapde::core::diffusion; +using fdapde::core::dt; +using fdapde::core::FEM; +using fdapde::core::SPLINE; +using fdapde::core::bilaplacian; +using fdapde::core::laplacian; +using fdapde::core::PDE; +using fdapde::core::Triangulation; +using fdapde::core::spline_order; + +#include "../../fdaPDE/models/regression/strpde.h" +#include "../../fdaPDE/models/sampling_design.h" +using fdapde::models::STRPDE; +using fdapde::models::SpaceTimeSeparable; +using fdapde::models::SpaceTimeParabolic; +using fdapde::models::Sampling; + +#include "utils/constants.h" +#include "utils/mesh_loader.h" +#include "utils/utils.h" +using fdapde::testing::almost_equal; +using fdapde::testing::MeshLoader; +using fdapde::testing::read_mtx; +using fdapde::testing::read_csv; + +#include "../../fdaPDE/models/regression/wald.h" +#include "../../fdaPDE/models/regression/speckman.h" +#include "../../fdaPDE/models/regression/esf.h" + + +// questi sono da controllare +#include +#include // testing framework +#include + +using fdapde::core::fem_order; +using fdapde::core::FEM; +using fdapde::core::Newton; +using fdapde::core::laplacian; +using fdapde::core::PDE; +using fdapde::core::advection; +using fdapde::core::diffusion; +using fdapde::core::dt; +using fdapde::core::SPLINE; +using fdapde::core::bilaplacian; +using fdapde::core::spline_order; + +#include "../../fdaPDE/models/regression/srpde.h" +#include "../../fdaPDE/models/regression/gcv.h" +#include "../../fdaPDE/models/sampling_design.h" +#include "../../fdaPDE/models/regression/regression_type_erasure.h" +using fdapde::models::SRPDE; +using fdapde::models::ExactEDF; +using fdapde::models::GCV; +using fdapde::models::StochasticEDF; +using fdapde::models::Sampling; +using fdapde::models::RegressionView; +#include "../../fdaPDE/calibration/gcv.h" + +#include "../../fdaPDE/models/regression/strpde.h" +#include "../../fdaPDE/models/sampling_design.h" +using fdapde::models::STRPDE; +using fdapde::models::SpaceTimeSeparable; +using fdapde::models::SpaceTimeParabolic; +using fdapde::models::Sampling; + +#include "utils/constants.h" +#include "utils/mesh_loader.h" +#include "utils/utils.h" +using fdapde::testing::almost_equal; +using fdapde::testing::MeshLoader; +using fdapde::testing::read_mtx; +using fdapde::testing::read_csv; + +#include "../../fdaPDE/models/regression/wald.h" +#include "../../fdaPDE/models/regression/speckman.h" +#include "../../fdaPDE/models/regression/esf.h" + + + +// This file is part of fdaPDE, a C++ library for physics-informed +// spatial and functional data analysis. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include +#include // testing framework + +#include <../../../fdaPDE-core/fdaPDE/core.h> +using fdapde::core::advection; +using fdapde::core::diffusion; +using fdapde::core::FEM; +using fdapde::core::fem_order; +using fdapde::core::laplacian; +using fdapde::core::DiscretizedMatrixField; +using fdapde::core::PDE; +using fdapde::core::DiscretizedVectorField; + +#include "../../fdaPDE/models/regression/srpde.h" +#include "../../fdaPDE/models/sampling_design.h" +using fdapde::models::SRPDE; +using fdapde::models::Sampling; + +#include "utils/constants.h" +#include "utils/mesh_loader.h" +#include "utils/utils.h" +using fdapde::testing::almost_equal; +using fdapde::testing::MeshLoader; +using fdapde::testing::read_csv; + + +// test 2 +// domain: c-shaped +// sampling: locations != nodes +// penalization: simple laplacian +// covariates: yes +// BC: no +// order FE: 1 +// time penalization: separable (mass penalization) + + +TEST(inferencetime_test, Exact24) { + // define temporal and spatial domain + Triangulation<1, 1> time_mesh(0, fdapde::testing::pi, 4); + MeshLoader> domain("c_shaped"); + // import data from files + DMatrix locs = read_csv("../data/models/strpde/2D_test2/locs.csv"); + DMatrix y = read_csv("../data/models/strpde/2D_test2/y.csv"); + DMatrix X = read_csv("../data/models/strpde/2D_test2/X.csv"); + // define regularizing PDE in space + auto Ld = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + // define regularizing PDE in time + auto Lt = -bilaplacian(); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + // define model + double lambda_D = 0.01; + double lambda_T = 0.01; + STRPDE model(space_penalty, time_penalty, Sampling::pointwise); + model.set_lambda_D(lambda_D); + model.set_lambda_T(lambda_T); + model.set_spatial_locations(locs); + // set model's data + BlockFrame df; + df.stack(OBSERVATIONS_BLK, y); + df.stack(DESIGN_MATRIX_BLK, X); + model.set_data(df); + // solve smoothing problem + model.init(); + model.solve(); + + // test correctness WALD + fdapde::models::Wald, fdapde::models::exact> inferenceW(model); + fdapde::models::Speckman, fdapde::models::exact> inferenceS(model); + fdapde::models::ESF, fdapde::models::exact> inferenceESF(model); + int cols = model.beta().size(); + DMatrix C=DMatrix::Identity(cols, cols); + inferenceW.setC(C); + inferenceS.setC(C); + inferenceESF.setC(C); + DVector beta0(1); + beta0(0)=2; + inferenceW.setBeta0(beta0); + inferenceS.setBeta0(beta0); + inferenceESF.setBeta0(beta0); + inferenceESF.setNflip(10000); + + inferenceESF.setseed(46); + + EXPECT_TRUE(almost_equal(inferenceW.p_value(fdapde::models::one_at_the_time)(0), 0.7660934 , 1e-7)); + EXPECT_TRUE(almost_equal(inferenceS.p_value(fdapde::models::one_at_the_time)(0), 0.715712 , 1e-7)); + //EXPECT_TRUE(almost_equal(inferenceW.f_p_value(), 0.715712 , 1e-7)); + EXPECT_TRUE(almost_equal(inferenceESF.p_value(fdapde::models::one_at_the_time)(0), 0.8168 , 1e-7)); + +} + + + +TEST(inferencetime_test, spacetime25D) { + // define temporal and spatial domain + Triangulation<1, 1> time_mesh(0, 4, 4); + MeshLoader> domain("hub2.5D"); + // import data from files + DMatrix y = read_csv("../data/models/strpde/25D_test1/y.csv"); + DMatrix X = read_csv("../data/models/strpde/25D_test1/X.csv"); + // define regularizing PDE in space + auto Ld = -laplacian(); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + // define regularizing PDE in time + auto Lt = -bilaplacian(); + PDE, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + // define model + double lambda_D = 0.00001; + double lambda_T = 0.00001; + STRPDE model(space_penalty, time_penalty, Sampling::mesh_nodes); + model.set_lambda_D(lambda_D); + model.set_lambda_T(lambda_T); + // set model's data + BlockFrame df; + df.stack(OBSERVATIONS_BLK, y); + df.stack(DESIGN_MATRIX_BLK, X); + model.set_data(df); + // solve smoothing problem + model.init(); + model.solve(); + + // test correctness + fdapde::models::Wald, fdapde::models::exact> inferenceW(model); + fdapde::models::Speckman, fdapde::models::exact> inferenceS(model); + fdapde::models::ESF, fdapde::models::exact> inferenceESF(model); + + // set H0 + DVector beta0(1); + beta0 << 0.45; + inferenceW.setBeta0(beta0); + inferenceS.setBeta0(beta0); + inferenceESF.setBeta0(beta0); + + // set C + DMatrix C = DMatrix::Identity(1, 1); + inferenceW.setC(C); + inferenceS.setC(C); + inferenceESF.setC(C); + + // set N flips + inferenceESF.setNflip(10000); + inferenceESF.setseed(46); + + DVector waldpval = inferenceW.p_value(fdapde::models::one_at_the_time); + DVector speckpval = inferenceS.p_value(fdapde::models::one_at_the_time); + DVector esfpval = inferenceESF.p_value(fdapde::models::one_at_the_time); + + EXPECT_TRUE(almost_equal(waldpval(0), 9.184956e-08 , 1e-7)); + EXPECT_TRUE(almost_equal(speckpval(0), 0.9566908 , 1e-7)); + //EXPECT_TRUE(almost_equal(esfpval(0), 0.5652 , 1e-3)); + + +} + + diff --git a/test/src/kcv_srpde_test.cpp b/test/src/kcv_srpde_test.cpp index def7241f..e67b4f33 100644 --- a/test/src/kcv_srpde_test.cpp +++ b/test/src/kcv_srpde_test.cpp @@ -22,6 +22,7 @@ using fdapde::core::fem_order; using fdapde::core::FEM; using fdapde::core::laplacian; using fdapde::core::PDE; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" #include "../../fdaPDE/models/regression/qsrpde.h" @@ -53,12 +54,12 @@ using fdapde::testing::read_csv; // GCV optimization: grid exact TEST(kcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_rmse) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/gcv/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model SRPDE model(problem, Sampling::mesh_nodes); @@ -84,12 +85,12 @@ TEST(kcv_srpde_test, laplacian_nonparametric_samplingatnodes_spaceonly_rmse) { TEST(kcv_srpde_test, qsrpde_laplacian_nonparametric_samplingatnodes_spaceonly_rmse) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/qsrpde/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda = 1.778279 * std::pow(0.1, 4); diff --git a/test/src/qsrpde_test.cpp b/test/src/qsrpde_test.cpp index 1b096ff5..e4c209c8 100644 --- a/test/src/qsrpde_test.cpp +++ b/test/src/qsrpde_test.cpp @@ -23,7 +23,7 @@ using fdapde::core::fem_order; using fdapde::core::laplacian; using fdapde::core::diffusion; using fdapde::core::PDE; -using fdapde::core::Mesh; +using fdapde::core::Triangulation; using fdapde::core::bilaplacian; using fdapde::core::SPLINE; using fdapde::core::spline_order; @@ -52,12 +52,12 @@ using fdapde::testing::read_csv; // order FE: 1 TEST(qsrpde_test, laplacian_nonparametric_samplingatnodes) { // define domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/qsrpde/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda = 1.778279 * std::pow(0.1, 4); @@ -84,14 +84,14 @@ TEST(qsrpde_test, laplacian_nonparametric_samplingatnodes) { // order FE: 1 TEST(qsrpde_test, laplacian_semiparametric_samplingatlocations) { // define domain and regularizing PDE - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/qsrpde/2D_test2/locs.csv"); DMatrix y = read_csv("../data/models/qsrpde/2D_test2/y.csv"); DMatrix X = read_csv("../data/models/qsrpde/2D_test2/X.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define statistical model double alpha = 0.9; @@ -121,14 +121,14 @@ TEST(qsrpde_test, laplacian_semiparametric_samplingatlocations) { // order FE: 1 TEST(qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes) { // define domain and regularizing PDE - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/qsrpde/2D_test3/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define statistical model double alpha = 0.1; @@ -155,14 +155,14 @@ TEST(qsrpde_test, costantcoefficientspde_nonparametric_samplingatnodes) { // order FE: 1 TEST(qsrpde_test, laplacian_semiparametric_samplingareal) { // define domain and regularizing PDE - MeshLoader domain("c_shaped_areal"); + MeshLoader> domain("c_shaped_areal"); // import data from files DMatrix y = read_csv("../data/models/qsrpde/2D_test4/y.csv"); DMatrix X = read_csv("../data/models/qsrpde/2D_test4/X.csv"); DMatrix subdomains = read_csv("../data/models/qsrpde/2D_test4/incidence_matrix.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define statistical model double alpha = 0.5; @@ -195,19 +195,19 @@ TEST(qsrpde_test, laplacian_semiparametric_samplingareal) { // time penalization: separable (mass penalization) TEST(qsrpde_test, laplacian_nonparametric_samplingatlocations_separable_monolithic) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, fdapde::testing::pi, 6); // interval [0, \pi] with 7 knots - MeshLoader domain("c_shaped_adj"); + Triangulation<1, 1> time_mesh(0, fdapde::testing::pi, 6); // interval [0, \pi] with 7 knots + MeshLoader> domain("c_shaped_adj"); // import data from files DMatrix space_locs = read_csv("../data/models/qsrpde/2D_test5/locs.csv"); DMatrix time_locs = read_csv("../data/models/qsrpde/2D_test5/time_locations.csv"); DMatrix y = read_csv("../data/models/qsrpde/2D_test5/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double alpha = 0.5; double lambda_D = 1e-3; diff --git a/test/src/srpde_test.cpp b/test/src/srpde_test.cpp index d43fc4a7..2f9a6002 100644 --- a/test/src/srpde_test.cpp +++ b/test/src/srpde_test.cpp @@ -26,6 +26,7 @@ using fdapde::core::laplacian; using fdapde::core::DiscretizedMatrixField; using fdapde::core::PDE; using fdapde::core::DiscretizedVectorField; +using fdapde::core::Triangulation; #include "../../fdaPDE/models/regression/srpde.h" #include "../../fdaPDE/models/sampling_design.h" @@ -48,12 +49,12 @@ using fdapde::testing::read_csv; // order FE: 1 TEST(srpde_test, laplacian_nonparametric_samplingatnodes) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix y = read_csv("../data/models/srpde/2D_test1/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda = 5.623413 * std::pow(0.1, 5); @@ -79,14 +80,14 @@ TEST(srpde_test, laplacian_nonparametric_samplingatnodes) { // order FE: 1 TEST(srpde_test, laplacian_semiparametric_samplingatlocations) { // define domain - MeshLoader domain("c_shaped"); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/srpde/2D_test2/locs.csv"); DMatrix y = read_csv("../data/models/srpde/2D_test2/y.csv"); DMatrix X = read_csv("../data/models/srpde/2D_test2/X.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define statistical model double lambda = 0.2201047; @@ -115,14 +116,14 @@ TEST(srpde_test, laplacian_semiparametric_samplingatlocations) { // order FE: 1 TEST(srpde_test, costantcoefficientspde_nonparametric_samplingatnodes) { // define domain - MeshLoader domain("unit_square"); + MeshLoader> domain("unit_square"); // import data from files DMatrix y = read_csv("../data/models/srpde/2D_test3/y.csv"); // define regularizing PDE SMatrix<2> K; K << 1, 0, 0, 4; auto L = -diffusion(K); // anisotropic diffusion - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda = 10; @@ -148,7 +149,7 @@ TEST(srpde_test, costantcoefficientspde_nonparametric_samplingatnodes) { // order FE: 1 TEST(srpde_test, noncostantcoefficientspde_nonparametric_samplingareal) { // define domain - MeshLoader domain("quasi_circle"); + MeshLoader> domain("quasi_circle"); // import data from files DMatrix K_data = read_csv("../data/models/srpde/2D_test4/K.csv"); DMatrix b_data = read_csv("../data/models/srpde/2D_test4/b.csv"); @@ -185,12 +186,12 @@ TEST(srpde_test, noncostantcoefficientspde_nonparametric_samplingareal) { // order FE: 1 TEST(srpde_test, laplacian_nonparametric_samplingatnodes_surface) { // define domain - MeshLoader domain("c_shaped_surface"); + MeshLoader> domain("c_shaped_surface"); // import data from files DMatrix y = read_csv("../data/models/srpde/2D_test5/y.csv"); // define regularizing PDE auto L = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); PDE, FEM, fem_order<1>> problem(domain.mesh, L, u); // define model double lambda = 1e-2; diff --git a/test/src/strpde_test.cpp b/test/src/strpde_test.cpp index 16d333d1..9e82da55 100644 --- a/test/src/strpde_test.cpp +++ b/test/src/strpde_test.cpp @@ -26,7 +26,7 @@ using fdapde::core::SPLINE; using fdapde::core::bilaplacian; using fdapde::core::laplacian; using fdapde::core::PDE; -using fdapde::core::Mesh; +using fdapde::core::Triangulation; using fdapde::core::spline_order; #include "../../fdaPDE/models/regression/strpde.h" @@ -52,19 +52,19 @@ using fdapde::testing::read_csv; // BC: no // order FE: 1 // time penalization: separable (mass penalization) -TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic) { +/*TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, 2, 10); - MeshLoader domain("unit_square_coarse"); + Triangulation<1, 1> time_mesh(0, 2, 10); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_csv("../data/models/strpde/2D_test1/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double lambda_D = 0.01, lambda_T = 0.01; STRPDE model(space_penalty, time_penalty, Sampling::mesh_nodes); @@ -80,7 +80,7 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic) // test correctness EXPECT_TRUE(almost_equal(model.f() , "../data/models/strpde/2D_test1/sol.mtx")); } - +*/ // test 2 // domain: c-shaped // sampling: locations != nodes @@ -91,19 +91,19 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic) // time penalization: separable (mass penalization) TEST(strpde_test, laplacian_semiparametric_samplingatlocations_separable_monolithic) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, fdapde::testing::pi, 4); - MeshLoader domain("c_shaped"); + Triangulation<1, 1> time_mesh(0, fdapde::testing::pi, 4); + MeshLoader> domain("c_shaped"); // import data from files DMatrix locs = read_csv("../data/models/strpde/2D_test2/locs.csv"); DMatrix y = read_csv("../data/models/strpde/2D_test2/y.csv"); DMatrix X = read_csv("../data/models/strpde/2D_test2/X.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double lambda_D = 0.01; double lambda_T = 0.01; @@ -123,7 +123,7 @@ TEST(strpde_test, laplacian_semiparametric_samplingatlocations_separable_monolit EXPECT_TRUE(almost_equal(model.f() , "../data/models/strpde/2D_test2/sol.mtx" )); EXPECT_TRUE(almost_equal(model.beta(), "../data/models/strpde/2D_test2/beta.mtx")); } - +/* // test 3 // domain: quasicircular domain // sampling: areal @@ -138,7 +138,7 @@ TEST(strpde_test, noncostantcoefficientspde_nonparametric_samplingareal_paraboli time_mesh.resize(10); for (int i = 0; i < time_mesh.size(); ++i) time_mesh[i] = 0.4 * i; // define spatial domain - MeshLoader domain("quasi_circle"); + MeshLoader> domain("quasi_circle"); // import data from files DMatrix K_data = read_csv("../data/models/strpde/2D_test3/K.csv"); DMatrix b_data = read_csv("../data/models/strpde/2D_test3/b.csv"); @@ -149,7 +149,7 @@ TEST(strpde_test, noncostantcoefficientspde_nonparametric_samplingareal_paraboli DiscretizedMatrixField<2, 2, 2> K(K_data); DiscretizedVectorField<2, 2> b(b_data); auto L = dt() - diffusion(K) + advection(b); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, time_mesh.rows()); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, time_mesh.rows()); PDE, FEM, fem_order<1>> pde(domain.mesh, time_mesh, L, u); pde.set_initial_condition(IC); // define model @@ -185,13 +185,13 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_parabolic_iterative) { double x = 0; for (int i = 0; i < time_mesh.size(); x += 0.2, ++i) time_mesh[i] = x; // define spatial domain - MeshLoader domain("unit_square_coarse"); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix y = read_mtx("../data/models/strpde/2D_test4/y.mtx" ); DMatrix IC = read_mtx("../data/models/strpde/2D_test4/IC.mtx"); // define regularizing PDE auto L = dt() - laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3, time_mesh.rows()); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3, time_mesh.rows()); PDE, FEM, fem_order<1>> pde(domain.mesh, time_mesh, L, u); pde.set_initial_condition(IC); // define model @@ -224,18 +224,18 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_parabolic_iterative) { // time penalization: separable (mass penalization) TEST(strpde_test, laplacian_nonparametric_samplingatnodes_timelocations_separable_monolithic) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, 2, 10); - MeshLoader domain("unit_square_coarse"); + Triangulation<1, 1> time_mesh(0, 2, 10); + MeshLoader> domain("unit_square_coarse"); // import data from files DMatrix time_locs = read_csv("../data/models/strpde/2D_test5/time_locations.csv"); DMatrix y = read_csv("../data/models/strpde/2D_test5/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model double lambda_D = 0.01; @@ -267,19 +267,19 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_timelocations_separabl // time penalization: separable (mass penalization) TEST(strpde_test, laplacian_nonparametric_samplingatlocations_timelocations_separable_monolithic_missingdata) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, 1, 20); - MeshLoader domain("c_shaped"); + Triangulation<1, 1> time_mesh(0, 1, 20); + MeshLoader> domain("c_shaped"); // import data from files DMatrix time_locs = read_csv("../data/models/strpde/2D_test6/time_locations.csv"); DMatrix space_locs = read_csv("../data/models/strpde/2D_test6/locs.csv"); DMatrix y = read_csv("../data/models/strpde/2D_test6/y.csv" ); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model STRPDE model(space_penalty, time_penalty, Sampling::pointwise); model.set_lambda_D(1e-3); @@ -309,17 +309,17 @@ TEST(strpde_test, laplacian_nonparametric_samplingatlocations_timelocations_sepa // time penalization: separable (mass penalization) TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic_surface) { // define temporal and spatial domain - Mesh<1, 1> time_mesh(0, 4, 4); // points {0, 1, \ldots, 4} - MeshLoader domain("surface"); + Triangulation<1, 1> time_mesh(0, 4, 4); // points {0, 1, \ldots, 4} + MeshLoader> domain("surface"); // import data from files DMatrix y = read_csv("../data/models/strpde/2D_test7/y.csv"); // define regularizing PDE in space auto Ld = -laplacian(); - DMatrix u = DMatrix::Zero(domain.mesh.n_elements() * 3 * time_mesh.n_nodes(), 1); - PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); + DMatrix u = DMatrix::Zero(domain.mesh.n_cells() * 3 * time_mesh.n_nodes(), 1); + PDE, decltype(Ld), DMatrix, FEM, fem_order<1>> space_penalty(domain.mesh, Ld, u); // define regularizing PDE in time auto Lt = -bilaplacian(); - PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); + PDE, decltype(Lt), DMatrix, SPLINE, spline_order<3>> time_penalty(time_mesh, Lt); // define model STRPDE model(space_penalty, time_penalty, Sampling::mesh_nodes); model.set_lambda_D(1e-9); @@ -334,3 +334,4 @@ TEST(strpde_test, laplacian_nonparametric_samplingatnodes_separable_monolithic_s // test correctness EXPECT_TRUE(almost_equal(model.f(), "../data/models/strpde/2D_test7/sol.mtx")); } +*/ diff --git a/test/src/utils/mesh_loader.h b/test/src/utils/mesh_loader.h index b872d1fa..c412dad6 100644 --- a/test/src/utils/mesh_loader.h +++ b/test/src/utils/mesh_loader.h @@ -20,22 +20,15 @@ #include #include #include // testing framework - #include using fdapde::core::CSVReader; -using fdapde::core::Element; -using fdapde::core::is_network; -using fdapde::core::is_manifold; -using fdapde::core::Mesh2D; -using fdapde::core::Mesh3D; -using fdapde::core::NetworkMesh; -using fdapde::core::SurfaceMesh; namespace fdapde { namespace testing { const std::string MESH_PATH = "../data/mesh/"; - using MESH_TYPE_LIST = ::testing::Types; +using MESH_TYPE_LIST = ::testing::Types< + core::Triangulation<2,2>/*, core::Triangulation<2,3>, core::Triangulation<3,3>*//*, core::NetworkMesh*/>; // selects sample mesh depending on the dimensionality of the problem // * 1.5D: 204 2D points, 559 elements, 559 edges. /test/data/mesh/linear_newtwork/*.csv @@ -52,100 +45,81 @@ constexpr auto standard_mesh_selector(unsigned int M, unsigned int N) { } // An utility class to help in the import of sample test meshes from files -template struct MeshLoader { - E mesh; - // expose the dimensionality of the mesh - static constexpr unsigned int M = E::local_dimension; - static constexpr unsigned int N = E::embedding_dimension; - static constexpr bool manifold = is_manifold::value; - +template struct MeshLoader { + using MeshType = MeshType_; + static constexpr int M = MeshType::local_dim; + static constexpr int N = MeshType::embed_dim; + static constexpr bool manifold = core::is_manifold::value; + MeshType mesh; + std::random_device rng; CSVReader double_reader {}; - CSVReader int_reader; // csv parsers - // raw files + CSVReader int_reader; DMatrix points_{}; DMatrix elements_{}, edges_{}, boundary_{}; - typename std::conditional::value, DMatrix, SpMatrix>::type neighbors_; - - // RNG for generation of random elements and points in mesh - std::random_device rng; + typename std::conditional::value, DMatrix, SpMatrix>::type neighbors_; // constructors MeshLoader(const std::string& meshID) { // read data from files - std::string points_file = MESH_PATH + meshID + "/points.csv"; - std::string edges_file = MESH_PATH + meshID + "/edges.csv"; - std::string elements_file = MESH_PATH + meshID + "/elements.csv"; + std::string points_file = MESH_PATH + meshID + "/points.csv"; + std::string edges_file = MESH_PATH + meshID + "/edges.csv"; + std::string elements_file = MESH_PATH + meshID + "/elements.csv"; std::string neighbors_file = MESH_PATH + meshID + "/neigh.csv"; - std::string boundary_file = MESH_PATH + meshID + "/boundary.csv"; + std::string boundary_file = MESH_PATH + meshID + "/boundary.csv"; - points_ = double_reader.parse_file(points_file); + points_ = double_reader.parse_file(points_file); // realign indexes to 0, if requested elements_ = (int_reader.parse_file(elements_file).array() - 1).matrix(); edges_ = (int_reader.parse_file(edges_file).array() > 0) - .select(int_reader.parse_file(edges_file).array()-1, -1).matrix(); + .select(int_reader.parse_file(edges_file).array() - 1, -1) + .matrix(); boundary_ = int_reader.parse_file(boundary_file); - if constexpr (!is_network::value) - neighbors_ = (int_reader.parse_file(neighbors_file).array() > 0) - .select(int_reader.parse_file(neighbors_file).array()-1, -1).matrix(); - else { - neighbors_ = int_reader.parse_file(neighbors_file); - } + if constexpr (!core::is_network::value) + neighbors_ = (int_reader.parse_file(neighbors_file).array() > 0) + .select(int_reader.parse_file(neighbors_file).array() - 1, -1) + .matrix(); + else { neighbors_ = int_reader.parse_file(neighbors_file); } // initialize mesh - mesh = E(points_, elements_, boundary_); + mesh = MeshType(points_, elements_, boundary_); } // load default mesh according to dimensionality - MeshLoader() : MeshLoader(standard_mesh_selector(E::local_dimension, E::embedding_dimension)) {}; - - // some usefull utilities for testing - + MeshLoader() : MeshLoader(standard_mesh_selector(MeshType::local_dim, MeshType::embed_dim)) {}; // generate element at random inside mesh m - const Element& generate_random_element(); + typename MeshType::CellType generate_random_element() { + std::uniform_int_distribution random_id(0, mesh.n_cells() - 1); + int id = random_id(rng); + return mesh.cell(id); + }; // generate point at random inside element e - SVector generate_random_point(const Element& e); - - // generate randomly n pairs on mesh, such that point is contained in the element with identifier ID - std::vector>> sample(std::size_t n); -}; - -template -const Element& MeshLoader::generate_random_element() { - std::uniform_int_distribution random_ID(0, mesh.n_elements() - 1); - int ID = random_ID(rng); - return mesh.element(ID); -} - -template -SVector -MeshLoader::generate_random_point(const Element& e) { - std::uniform_real_distribution T(0, 1); - // let t, s, u ~ U(0,1) and P1, P2, P3, P4 a set of points, observe that: - // * if P1 and P2 are the vertices of a linear element, p = t*P1 + (1-t)*P2 lies into it for any t ~ U(0,1) - // * if P1, P2, P3 are vertices of a triangle, the point P = (1-t)P1 + t((1-s)P2 + sP3) is in the triangle - // for any choice of t, s ~ U(0,1) - // * if P1, P2, P3, P4 are vertices of a tetrahedron, then letting Q = (1-t)P1 + t((1-s)P2 + sP3) and - // P = (1-u)P4 + uQ, P belongs to the tetrahedron for any choice of t, s, u ~ U(0,1) - double t = T(rng); - SVector p = t * e.coords()[0] + (1 - t) * e.coords()[1]; - for (std::size_t j = 1; j < M; ++j) { - t = T(rng); - p = (1 - t) * e.coords()[1 + j] + t * p; + SVector generate_random_point(const typename MeshType::CellType& e) { + std::uniform_real_distribution T(0, 1); + // let t, s, u ~ U(0,1) and P1, P2, P3, P4 a set of points, observe that: + // * if P1 and P2 are the vertices of a linear element, p = t*P1 + (1-t)*P2 lies into it for any t ~ U(0,1) + // * if P1, P2, P3 are vertices of a triangle, the point P = (1-t)P1 + t((1-s)P2 + sP3) is in the triangle + // for any choice of t, s ~ U(0,1) + // * if P1, P2, P3, P4 are vertices of a tetrahedron, then letting Q = (1-t)P1 + t((1-s)P2 + sP3) and + // P = (1-u)P4 + uQ, P belongs to the tetrahedron for any choice of t, s, u ~ U(0,1) + double t = T(rng); + SVector p = t * e.node(0) + (1 - t) * e.node(1); + for (int j = 1; j < M; ++j) { + t = T(rng); + p = (1 - t) * e.node(1 + j) + t * p; + } + return p; } - return p; -} - -template -std::vector>> MeshLoader::sample(std::size_t n) { - // preallocate memory - std::vector>> result {}; - result.resize(n); - // generate sample - for (std::size_t i = 0; i < n; ++i) { - auto e = generate_random_element(); - SVector p = generate_random_point(e); - result[i] = std::make_pair(e.ID(), p); + // generate randomly n pairs on mesh, such that point is contained in the element with identifier ID + std::vector>> sample(int n) { + // preallocate memory + std::vector>> result {}; + result.resize(n); + // generate sample + for (int i = 0; i < n; ++i) { + auto e = generate_random_element(); + result[i] = std::make_pair(e.id(), generate_random_point(e)); + } + return result; } - return result; -} +}; } // namespace testing } // namespace fdapde From 13d98114c89300a6a6b96dff9b27b54377b6aa6c Mon Sep 17 00:00:00 2001 From: RiccardoSena Date: Thu, 30 Jan 2025 19:15:54 +0100 Subject: [PATCH 2/7] Some final (hopefully) minor changes --- fdaPDE/core | 2 +- test/src/inference_test.cpp | 2 +- test/src/inferencetime_test.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fdaPDE/core b/fdaPDE/core index 97829682..8e9728d3 160000 --- a/fdaPDE/core +++ b/fdaPDE/core @@ -1 +1 @@ -Subproject commit 97829682043b05ed4fb088ee3267805a1782c5a3 +Subproject commit 8e9728d3cb8e6120df4be72c33dc309b0f53f804 diff --git a/test/src/inference_test.cpp b/test/src/inference_test.cpp index c04c2c2c..365b425c 100644 --- a/test/src/inference_test.cpp +++ b/test/src/inference_test.cpp @@ -60,7 +60,7 @@ using fdapde::testing::read_mtx; #include "../../fdaPDE/models/regression/esf.h" #include "../../fdaPDE/models/regression/pesf.h" -#include <../../../fdaPDE-core/fdaPDE/core.h> +//#include <../../../fdaPDE-core/fdaPDE/core.h> using fdapde::core::DiscretizedMatrixField; using fdapde::core::DiscretizedVectorField; diff --git a/test/src/inferencetime_test.cpp b/test/src/inferencetime_test.cpp index 70e04151..447d2b2e 100644 --- a/test/src/inferencetime_test.cpp +++ b/test/src/inferencetime_test.cpp @@ -102,7 +102,7 @@ using fdapde::testing::read_csv; #include #include // testing framework -#include <../../../fdaPDE-core/fdaPDE/core.h> +//#include <../../../fdaPDE-core/fdaPDE/core.h> using fdapde::core::advection; using fdapde::core::diffusion; using fdapde::core::FEM; From c991391f134ace2a03adae58674bb8facc810d09 Mon Sep 17 00:00:00 2001 From: RiccardoSena Date: Thu, 30 Jan 2025 19:20:02 +0100 Subject: [PATCH 3/7] Some final (hopefully) minor changes --- test/src/inference_test.cpp | 14 ------- test/src/inferencetime_test.cpp | 70 +-------------------------------- 2 files changed, 1 insertion(+), 83 deletions(-) diff --git a/test/src/inference_test.cpp b/test/src/inference_test.cpp index 365b425c..37f69097 100644 --- a/test/src/inference_test.cpp +++ b/test/src/inference_test.cpp @@ -15,22 +15,12 @@ // along with this program. If not, see . -// QUESTO FILE VA SPOSTATO IN FDAPDE-CORE/TEST/SRC -// NEL MAIN.CPP DELLA REPOSITORY FDAPDE-CORE/TEST VA AGGIUNTO -// #include inference_test.cpp -// e la parte che chiama la classe inference_test - -// questi sono da controllare #include #include // testing framework #include #include -#include -#include // testing framework - -#include using fdapde::core::advection; using fdapde::core::diffusion; using fdapde::core::FEM; @@ -54,15 +44,11 @@ using fdapde::testing::MeshLoader; using fdapde::testing::read_csv; using fdapde::testing::read_mtx; - #include "../../fdaPDE/models/regression/wald.h" #include "../../fdaPDE/models/regression/speckman.h" #include "../../fdaPDE/models/regression/esf.h" #include "../../fdaPDE/models/regression/pesf.h" -//#include <../../../fdaPDE-core/fdaPDE/core.h> -using fdapde::core::DiscretizedMatrixField; -using fdapde::core::DiscretizedVectorField; // test diff --git a/test/src/inferencetime_test.cpp b/test/src/inferencetime_test.cpp index 447d2b2e..9034da39 100644 --- a/test/src/inferencetime_test.cpp +++ b/test/src/inferencetime_test.cpp @@ -32,14 +32,7 @@ using fdapde::testing::read_csv; #include "../../fdaPDE/models/regression/speckman.h" #include "../../fdaPDE/models/regression/esf.h" - -// questi sono da controllare -#include -#include // testing framework -#include - using fdapde::core::fem_order; -using fdapde::core::FEM; using fdapde::core::Newton; using fdapde::core::laplacian; using fdapde::core::PDE; @@ -60,69 +53,8 @@ using fdapde::models::GCV; using fdapde::models::StochasticEDF; using fdapde::models::Sampling; using fdapde::models::RegressionView; -#include "../../fdaPDE/calibration/gcv.h" - -#include "../../fdaPDE/models/regression/strpde.h" -#include "../../fdaPDE/models/sampling_design.h" -using fdapde::models::STRPDE; -using fdapde::models::SpaceTimeSeparable; -using fdapde::models::SpaceTimeParabolic; -using fdapde::models::Sampling; - -#include "utils/constants.h" -#include "utils/mesh_loader.h" -#include "utils/utils.h" -using fdapde::testing::almost_equal; -using fdapde::testing::MeshLoader; -using fdapde::testing::read_mtx; -using fdapde::testing::read_csv; - -#include "../../fdaPDE/models/regression/wald.h" -#include "../../fdaPDE/models/regression/speckman.h" -#include "../../fdaPDE/models/regression/esf.h" - - -// This file is part of fdaPDE, a C++ library for physics-informed -// spatial and functional data analysis. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -#include -#include // testing framework - -//#include <../../../fdaPDE-core/fdaPDE/core.h> -using fdapde::core::advection; -using fdapde::core::diffusion; -using fdapde::core::FEM; -using fdapde::core::fem_order; -using fdapde::core::laplacian; -using fdapde::core::DiscretizedMatrixField; -using fdapde::core::PDE; -using fdapde::core::DiscretizedVectorField; - -#include "../../fdaPDE/models/regression/srpde.h" -#include "../../fdaPDE/models/sampling_design.h" -using fdapde::models::SRPDE; -using fdapde::models::Sampling; - -#include "utils/constants.h" -#include "utils/mesh_loader.h" -#include "utils/utils.h" -using fdapde::testing::almost_equal; -using fdapde::testing::MeshLoader; -using fdapde::testing::read_csv; +#include "../../fdaPDE/calibration/gcv.h" // test 2 From 3e8d7f2f17acdccefc20225807f7eddb82c0becb Mon Sep 17 00:00:00 2001 From: beatricebianchi3 Date: Sat, 1 Feb 2025 08:57:19 +0100 Subject: [PATCH 4/7] last changes --- fdaPDE/core | 2 +- fdaPDE/models/regression/pesf.h | 10 +--------- test/src/inference_test.cpp | 8 +------- test/src/inferencetime_test.cpp | 3 --- 4 files changed, 3 insertions(+), 20 deletions(-) diff --git a/fdaPDE/core b/fdaPDE/core index 8e9728d3..8e17d8ca 160000 --- a/fdaPDE/core +++ b/fdaPDE/core @@ -1 +1 @@ -Subproject commit 8e9728d3cb8e6120df4be72c33dc309b0f53f804 +Subproject commit 8e17d8ca99648988dad2f6d59e5afdfcebddf422 diff --git a/fdaPDE/models/regression/pesf.h b/fdaPDE/models/regression/pesf.h index 438d988c..dc8a56c4 100644 --- a/fdaPDE/models/regression/pesf.h +++ b/fdaPDE/models/regression/pesf.h @@ -91,7 +91,7 @@ template class PESF: public InferenceBase p_value_serial(CIType type){ + DVector p_value(CIType type){ // extract matrix C (in the eigen-sign-flip case we cannot have linear combinations, but we can have at most one 1 for each column of C) fdapde_assert(!is_empty(C_)); // throw an exception if condition is not met @@ -149,7 +149,6 @@ template class PESF: public InferenceBase stat = Xt * Tilder; DVector stat_flip = stat; - //Random sign-flips //Random sign-flips std::default_random_engine eng; std::uniform_int_distribution distr(0, 1); @@ -178,24 +177,19 @@ template class PESF: public InferenceBase(up) / n_flip; double pval_down = static_cast(down) / n_flip; - //std::cout<<"il valore di pvalup è : "< class PESF: public InferenceBase pval_up = up.array() / static_cast(n_flip); DVector pval_down = down.array() / static_cast(n_flip); - //std::cout<<"il valore di pvalup è : "<> domain("c_shaped"); @@ -297,7 +295,6 @@ TEST(inference_test, inference3D){ inferenceESF.setMesh_loc(locs_ind); DVector Wald_beta_p = inferenceWald.p_value(fdapde::models::simultaneous); - //double wald_f_p_val = inferenceWald.f_p_value(); DVector Speck_beta_p = inferenceSpeck.p_value(fdapde::models::one_at_the_time); double pvalueesf_f = inferenceESF.f_p_value(); @@ -306,10 +303,7 @@ TEST(inference_test, inference3D){ EXPECT_TRUE(almost_equal(Wald_beta_p(0), 0.9684002 , 1e-7)); EXPECT_TRUE(almost_equal(Speck_beta_p(0), 0.6479218 , 1e-7)); EXPECT_TRUE(almost_equal(Speck_beta_p(1), 0.4182482 , 1e-7)); - //EXPECT_TRUE(almost_equal(wald_f_p_val, 0.00003363157 , 1e-7)); EXPECT_TRUE(almost_equal(pvalueesf_f, 0.3525 , 1e-7)); EXPECT_TRUE(almost_equal(pvalueesf_sf, 0.5488 , 1e-7)); -} - - +} \ No newline at end of file diff --git a/test/src/inferencetime_test.cpp b/test/src/inferencetime_test.cpp index 9034da39..91ef52db 100644 --- a/test/src/inferencetime_test.cpp +++ b/test/src/inferencetime_test.cpp @@ -118,7 +118,6 @@ TEST(inferencetime_test, Exact24) { EXPECT_TRUE(almost_equal(inferenceW.p_value(fdapde::models::one_at_the_time)(0), 0.7660934 , 1e-7)); EXPECT_TRUE(almost_equal(inferenceS.p_value(fdapde::models::one_at_the_time)(0), 0.715712 , 1e-7)); - //EXPECT_TRUE(almost_equal(inferenceW.f_p_value(), 0.715712 , 1e-7)); EXPECT_TRUE(almost_equal(inferenceESF.p_value(fdapde::models::one_at_the_time)(0), 0.8168 , 1e-7)); } @@ -182,8 +181,6 @@ TEST(inferencetime_test, spacetime25D) { EXPECT_TRUE(almost_equal(waldpval(0), 9.184956e-08 , 1e-7)); EXPECT_TRUE(almost_equal(speckpval(0), 0.9566908 , 1e-7)); - //EXPECT_TRUE(almost_equal(esfpval(0), 0.5652 , 1e-3)); - } From 26a194da9071331d1780856957c02a502fc7f401 Mon Sep 17 00:00:00 2001 From: RiccardoSena Date: Sat, 1 Feb 2025 10:49:10 +0100 Subject: [PATCH 5/7] Linking to last core version --- fdaPDE/core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdaPDE/core b/fdaPDE/core index 8e17d8ca..ec5a765f 160000 --- a/fdaPDE/core +++ b/fdaPDE/core @@ -1 +1 @@ -Subproject commit 8e17d8ca99648988dad2f6d59e5afdfcebddf422 +Subproject commit ec5a765f403b455f5eacd51a27739be64f6a3333 From 79327fb976ef88399ace35a44326709e7d9efb21 Mon Sep 17 00:00:00 2001 From: RiccardoSena Date: Sat, 1 Feb 2025 11:13:03 +0100 Subject: [PATCH 6/7] Comments refinement --- fdaPDE/models/regression/esf.h | 23 ++++++------ fdaPDE/models/regression/pesf.h | 62 ++++++++++++++------------------- 2 files changed, 38 insertions(+), 47 deletions(-) diff --git a/fdaPDE/models/regression/esf.h b/fdaPDE/models/regression/esf.h index a65d3b13..0fcb34df 100644 --- a/fdaPDE/models/regression/esf.h +++ b/fdaPDE/models/regression/esf.h @@ -17,7 +17,6 @@ #ifndef __ESF_H__ #define __ESF_H__ -// questi sono da controllare #include #include @@ -103,11 +102,11 @@ template class ESF: public InferenceBase> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // eigenvectors and eigenvalues of Lambda DMatrix eigenvalues = solver.eigenvalues(); DMatrix eigenvectors = solver.eigenvectors(); - // Store beta_hat + // beta_hat DVector beta_hat = m_.beta(); DVector beta_hat_mod = beta_hat; @@ -128,15 +127,15 @@ template class ESF: public InferenceBase Xt = (C_ * X.transpose()) * eigenvectors * eigenvalues.asDiagonal(); DVector Tilder = eigenvectors.transpose() * res_H0; - // Initialize observed statistic and sign-flipped statistic + // observed and sign-flipped statistic DVector stat = Xt * Tilder; DVector stat_flip = stat; - //Random sign-flips + // Random sign-flips std::default_random_engine eng; std::uniform_int_distribution distr(0, 1); - //if we have a seed + // if we have a seed if(set_seed != 0) { eng.seed(set_seed); } else { @@ -203,7 +202,7 @@ template class ESF: public InferenceBase distr(0, 1); - //if we have a seed + // if we have a seed if(set_seed != 0) { eng.seed(set_seed); } else { @@ -235,7 +234,7 @@ template class ESF: public InferenceBase pval_down = down.array() / static_cast(n_flip); result.resize(p); - result = 2 * min(pval_up, pval_down); // Obtain the bilateral p_value starting from the unilateral + result = 2 * min(pval_up, pval_down); } return result; } @@ -246,7 +245,7 @@ template class ESF: public InferenceBase beta_hat = m_.beta(); // store beta_hat + DVector beta_hat = m_.beta(); // beta_hat DVector beta_hat_mod = beta_hat; fdapde_assert(!is_empty(C_)); @@ -262,15 +261,15 @@ template class ESF: public InferenceBase> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // eigenvectors and eigenvalues of Lambda DMatrix eigenvalues = solver.eigenvalues(); DMatrix eigenvectors = solver.eigenvectors(); - // declare the matrix that will store the intervals + // intervals DMatrix result; result.resize(p, 2); - // compute the initial ranges from speckman's CI (initial guess for CI) + // speckman's CI (initial guess for CI) if(!is_speckman_aux_computed){ Compute_speckman_aux(); } diff --git a/fdaPDE/models/regression/pesf.h b/fdaPDE/models/regression/pesf.h index dc8a56c4..036316f0 100644 --- a/fdaPDE/models/regression/pesf.h +++ b/fdaPDE/models/regression/pesf.h @@ -17,7 +17,6 @@ #ifndef __PESF_H__ #define __PESF_H__ -// questi sono da controllare #include #include @@ -33,10 +32,6 @@ #include -// for parallelization -#include - - namespace fdapde { namespace models { @@ -82,7 +77,6 @@ template class PESF: public InferenceBase::value, ExactInverse, NonExactInverse>::type; Solver s_; - // aggiunta per CI using Base::V_; // constructors @@ -91,8 +85,7 @@ template class PESF: public InferenceBase p_value(CIType type){ - // extract matrix C (in the eigen-sign-flip case we cannot have linear combinations, but we can have at most one 1 for each column of C) + DVector p_value(CIType type){ fdapde_assert(!is_empty(C_)); // throw an exception if condition is not met if(is_empty(beta0_)){ @@ -108,18 +101,18 @@ template class PESF: public InferenceBase> solver(Lambda_); // compute eigenvectors and eigenvalues of Lambda + Eigen::SelfAdjointEigenSolver> solver(Lambda_); // eigenvectors and eigenvalues of Lambda DMatrix eigenvalues = solver.eigenvalues(); DMatrix eigenvectors = solver.eigenvectors(); - // Store beta_hat + // beta_hat DVector beta_hat = m_.beta(); DVector beta_hat_mod = beta_hat; if(type == simultaneous){ // SIMULTANEOUS - // extract the current betas in test + // betas under test for(int i = 0; i < p; ++i){ for(int j = 0; j < C_.cols(); j++){ if(C_(i,j) > 0){ @@ -137,19 +130,19 @@ template class PESF: public InferenceBase Tilder_hat= eigenvectors.transpose()*(m_.y() - m_.X()* beta_hat); - // Estimate the standard error + // standard error estimated DVector eps_hat = m_.y() - m_.fitted(); double SS_res = eps_hat.squaredNorm(); double Sigma_hat = std::sqrt(SS_res/(n_obs-1)); - double threshold = 10*Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error - int N_Eig_Out=0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required + double threshold = 10 * Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error + int N_Eig_Out = 0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required - // Initialize observed statistic and sign-flipped statistic + // observed and sign-flipped statistic DVector stat = Xt * Tilder; DVector stat_flip = stat; - //Random sign-flips + // Random sign-flips std::default_random_engine eng; std::uniform_int_distribution distr(0, 1); @@ -171,19 +164,20 @@ template class PESF: public InferenceBasethreshold)){ flip=1; - }else{ + } + else{ flip=2 * distr(eng) - 1; } Tilder_perm.row(j) = Tilder.row(j) * flip; } - stat_flip = Xt * Tilder_perm; // Flipped statistic + stat_flip = Xt * Tilder_perm; if(is_Unilaterally_Greater(stat_flip, stat)){ up = up + 1; } else{ - if(is_Unilaterally_Smaller(stat_flip, stat)){ - down = down + 1; + if(is_Unilaterally_Smaller(stat_flip, stat)){ + down = down + 1; } } } @@ -191,8 +185,8 @@ template class PESF: public InferenceBase(up) / n_flip; double pval_down = static_cast(down) / n_flip; - result.resize(p); // Allocate more space so that R receives a well defined object (different implementations may require higher number of pvalues) - result(0) = 2 * std::min(pval_up, pval_down); // Obtain the bilateral p_value starting from the unilateral + result.resize(p); + result(0) = 2 * std::min(pval_up, pval_down); for(int k = 1; k < p; k++){ result(k) = 0.0; } @@ -201,7 +195,7 @@ template class PESF: public InferenceBase res_H0(Lambda_.cols(), p); for(int i = 0; i < p; ++i){ - // Extract the current beta in test + // beta under test beta_hat_mod = beta_hat; for(int j = 0; j < C_.cols(); ++j){ @@ -209,7 +203,7 @@ template class PESF: public InferenceBase class PESF: public InferenceBase Tilder_hat= eigenvectors.transpose()*(m_.y() - m_.X()* beta_hat); - // Estimate the standard error + // standard error estimated DVector eps_hat = m_.y() - m_.fitted(); double SS_res = eps_hat.squaredNorm(); double Sigma_hat = std::sqrt(SS_res/(n_obs-1)); - double threshold = 10*Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error - int N_Eig_Out=0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required + double threshold = 10 * Sigma_hat; // This threshold is used to determine how many components will not be flipped: we drop those that show large alpha_hat w.r.t. the expected standar error + int N_Eig_Out = 0; // It will store the number of biased components that will be kept fixed if enhanced-ESF is required // Observed statistic @@ -260,7 +254,7 @@ template class PESF: public InferenceBase stat(k, k)){ @@ -275,7 +269,7 @@ template class PESF: public InferenceBase pval_down = down.array() / static_cast(n_flip); result.resize(p); - result = 2 * min(pval_up, pval_down); // Obtain the blateral p_value starting from the unilateral + result = 2 * min(pval_up, pval_down); } return result; } @@ -286,14 +280,14 @@ template class PESF: public InferenceBase beta_hat = m_.beta(); DVector beta_hat_mod = beta_hat; fdapde_assert(!is_empty(C_)); // throw an exception if condition is not met int p = C_.rows(); - DVector beta_in_test; // In this vector are stored the respective positions of the beta we are testing in the actual test (ie le posizioni dei beta che vengono testate perchè in C abbiamo un 1 nella corrispondente posizione) + DVector beta_in_test; beta_in_test.resize(p); for(int i=0; i class PESF: public InferenceBase eigenvalues = solver.eigenvalues(); DMatrix eigenvectors = solver.eigenvectors(); - // declare the matrix that will store the intervals + // intervals DMatrix result; result.resize(p, 2); - // compute the initial ranges from speckman's CI (initial guess for CI) + // speckman's CI (initial guess for CI) if(!is_speckman_aux_computed){ Compute_speckman_aux(); } @@ -401,8 +395,6 @@ template class PESF: public InferenceBase TildeX_loc= TildeX.row(beta_in_test[i]); From d1038530046ae519d8f943882dad2f11e1c4bbab Mon Sep 17 00:00:00 2001 From: beatricebianchi3 Date: Mon, 3 Feb 2025 20:35:30 +0100 Subject: [PATCH 7/7] fixed read me and run_tests --- .gitignore | 1 + README.md | 30 ++++++++++++++++++++++++++++++ test/run_tests.sh | 32 ++++++++++++++++++++++---------- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index dccc63b0..c00e41b5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.RData *.o *.so +*.Identifier test/fdapde_test test/.cache test/build/ diff --git a/README.md b/README.md index 57063011..0558ac5a 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,33 @@ It is built on top of the [fdaPDE Core Library](https://github.com/fdaPDE/fdaPDE ## Documentation Documentation can be found on our [documentation site](https://fdapde.github.io/) + +## Installation +The source code of this project can be found at [https://github.com/RiccardoSena/fdaPDE-cpp.git](https://github.com/RiccardoSena/fdaPDE-cpp.git), which is a fork of the fdaPDE repository. The prerequisites to install and run test cases are: + +- A C++17 compliant compiler +- Make +- CMake +- The **Eigen** library (at least version 3.3) + +### Instructions to install the library: + +1. Clone the repository: + ```bash + git clone https://github.com/RiccardoSena/fdaPDE-cpp.git +2. Then, navigate into the develop branch and update the core submodule: + ```bash + cd fdaPDE-cpp + git submodule init + git submodule update +3. To run the test cases, use the following commands inside the fdaPDE-cpp directory: + ```bash + cd test + mkdir build + cd build + cmake .. + make + cd .. + ./run_tests.sh +It should be noted that in the test/main.cpp file, one can choose to run all tests about different models and methods. The ones that are compliant to our development are test/src/inference_test.cpp and test/src/inferencetime_test.cpp + diff --git a/test/run_tests.sh b/test/run_tests.sh index 5ee04664..f8cd38ef 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -58,25 +58,37 @@ done ## set CMake compiler if [ "$COMPILER" = "gcc" ]; then - export CC=/usr/local/Cellar/gcc/14.1.0_1/bin/gcc-14 - export CXX=/usr/local/Cellar/gcc/14.1.0_1/bin/g++-14 + # find GCC in the sytem + export CC=$(which gcc) + export CXX=$(which g++) elif [ "$COMPILER" = "clang" ]; then - export CC=/usr/bin/clang - export CXX=/usr/bin/clang++ + # find Clang in the system + export CC=$(which clang) + export CXX=$(which clang++) fi -# cd into build directory -if [ -d "$BUILD_DIR" ]; -then - clean_build_dir + +if [ -d "$BUILD_DIR" ]; then + # If the build directory exists, check if cmake has already been run + if [ ! -f "$BUILD_DIR/CMakeCache.txt" ]; then + echo "CMake not executed. Running configuration..." + clean_build_dir + cmake -Wno-dev ../CMakeLists.txt + fi cd build/ else mkdir build/ cd build/ + cmake -Wno-dev ../CMakeLists.txt +fi + + +# Check if the executable already exists, if so, do not run make +if [ ! -f "./fdapde_test" ]; then + echo "Compilation needed. Running make..." + make fi -cmake -Wno-dev ../CMakeLists.txt -make if [ "$MEMCHECK" = true ]; then valgrind --leak-check=full --track-origins=yes ./fdapde_test